lkml.org 
[lkml]   [2017]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 3/7] memory: atmel-ebi: Stop using reg_field objects for simple things
Date
Turn the ->ebi_csa reg field into a simple offset that can be used with
with the matrix regmap. Using reg fields was overkill for this use case.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
---
drivers/memory/atmel-ebi.c | 55 +++++++++++-----------------------------------
1 file changed, 13 insertions(+), 42 deletions(-)

diff --git a/drivers/memory/atmel-ebi.c b/drivers/memory/atmel-ebi.c
index 8363735f8aef..6b3c9fc7a602 100644
--- a/drivers/memory/atmel-ebi.c
+++ b/drivers/memory/atmel-ebi.c
@@ -35,7 +35,7 @@ struct at91_ebi_dev {

struct at91_ebi_caps {
unsigned int available_cs;
- const struct reg_field *ebi_csa;
+ unsigned int ebi_csa_offs;
void (*get_config)(struct at91_ebi_dev *ebid,
struct at91_ebi_dev_config *conf);
int (*xlate_config)(struct at91_ebi_dev *ebid,
@@ -52,7 +52,6 @@ struct at91_ebi {
struct regmap *regmap;
struct clk *clk;
} smc;
- struct regmap_field *ebi_csa;

struct device *dev;
const struct at91_ebi_caps *caps;
@@ -354,9 +353,10 @@ static int at91_ebi_dev_setup(struct at91_ebi *ebi, struct device_node *np,
* Attach the EBI device to the generic SMC logic if at least
* one "atmel,smc-" property is present.
*/
- if (ebi->ebi_csa && apply)
- regmap_field_update_bits(ebi->ebi_csa,
- BIT(cs), 0);
+ if (ebi->caps->ebi_csa_offs && apply)
+ regmap_update_bits(ebi->matrix,
+ ebi->caps->ebi_csa_offs,
+ BIT(cs), 0);

i++;
}
@@ -366,73 +366,49 @@ static int at91_ebi_dev_setup(struct at91_ebi *ebi, struct device_node *np,
return 0;
}

-static const struct reg_field at91sam9260_ebi_csa =
- REG_FIELD(AT91SAM9260_MATRIX_EBICSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9260_ebi_caps = {
.available_cs = 0xff,
- .ebi_csa = &at91sam9260_ebi_csa,
+ .ebi_csa_offs = AT91SAM9260_MATRIX_EBICSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
};

-static const struct reg_field at91sam9261_ebi_csa =
- REG_FIELD(AT91SAM9261_MATRIX_EBICSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9261_ebi_caps = {
.available_cs = 0xff,
- .ebi_csa = &at91sam9261_ebi_csa,
+ .ebi_csa_offs = AT91SAM9261_MATRIX_EBICSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
};

-static const struct reg_field at91sam9263_ebi0_csa =
- REG_FIELD(AT91SAM9263_MATRIX_EBI0CSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9263_ebi0_caps = {
.available_cs = 0x3f,
- .ebi_csa = &at91sam9263_ebi0_csa,
+ .ebi_csa_offs = AT91SAM9263_MATRIX_EBI0CSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
};

-static const struct reg_field at91sam9263_ebi1_csa =
- REG_FIELD(AT91SAM9263_MATRIX_EBI1CSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9263_ebi1_caps = {
.available_cs = 0x7,
- .ebi_csa = &at91sam9263_ebi1_csa,
+ .ebi_csa_offs = AT91SAM9263_MATRIX_EBI1CSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
};

-static const struct reg_field at91sam9rl_ebi_csa =
- REG_FIELD(AT91SAM9RL_MATRIX_EBICSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9rl_ebi_caps = {
.available_cs = 0x3f,
- .ebi_csa = &at91sam9rl_ebi_csa,
+ .ebi_csa_offs = AT91SAM9RL_MATRIX_EBICSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
};

-static const struct reg_field at91sam9g45_ebi_csa =
- REG_FIELD(AT91SAM9G45_MATRIX_EBICSA, 0,
- AT91_MATRIX_EBI_NUM_CS - 1);
-
static const struct at91_ebi_caps at91sam9g45_ebi_caps = {
.available_cs = 0x3f,
- .ebi_csa = &at91sam9g45_ebi_csa,
+ .ebi_csa_offs = AT91SAM9G45_MATRIX_EBICSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
@@ -440,7 +416,7 @@ static const struct at91_ebi_caps at91sam9g45_ebi_caps = {

static const struct at91_ebi_caps at91sam9x5_ebi_caps = {
.available_cs = 0x3f,
- .ebi_csa = &at91sam9263_ebi0_csa,
+ .ebi_csa_offs = AT91SAM9X5_MATRIX_EBICSA,
.get_config = at91sam9_ebi_get_config,
.xlate_config = at91_ebi_xslate_smc_config,
.apply_config = at91sam9_ebi_apply_config,
@@ -560,16 +536,11 @@ static int at91_ebi_probe(struct platform_device *pdev)
* The sama5d3 does not provide an EBICSA register and thus does need
* to access the matrix registers.
*/
- if (ebi->caps->ebi_csa) {
+ if (ebi->caps->ebi_csa_offs) {
ebi->matrix =
syscon_regmap_lookup_by_phandle(np, "atmel,matrix");
if (IS_ERR(ebi->matrix))
return PTR_ERR(ebi->matrix);
-
- ebi->ebi_csa = regmap_field_alloc(ebi->matrix,
- *ebi->caps->ebi_csa);
- if (IS_ERR(ebi->ebi_csa))
- return PTR_ERR(ebi->ebi_csa);
}

ret = of_property_read_u32(np, "#address-cells", &val);
--
2.7.4
\
 
 \ /
  Last update: 2017-02-20 18:03    [W:0.295 / U:0.512 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site