Message ID | 20190213085930.31578-3-tudor.ambarus@microchip.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add support for sam9x60 nand controller | expand |
On 13/02/2019 08:59:48+0000, Tudor.Ambarus@microchip.com wrote: > From: Tudor Ambarus <tudor.ambarus@microchip.com> > > The sam9x60 board defines the CCFG_EBICSA register under SFR, > and not as a MATRIX register, as previous boards do. Add a > more generic name for the EBI regmap as a prerequisite for > sam9x60 ebi support. > > Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > drivers/memory/atmel-ebi.c | 23 ++++++++++++++++------- > 1 file changed, 16 insertions(+), 7 deletions(-) > > diff --git a/drivers/memory/atmel-ebi.c b/drivers/memory/atmel-ebi.c > index c3748b414c27..b45914cfa212 100644 > --- a/drivers/memory/atmel-ebi.c > +++ b/drivers/memory/atmel-ebi.c > @@ -36,6 +36,7 @@ struct atmel_ebi_dev { > struct atmel_ebi_caps { > unsigned int available_cs; > unsigned int ebi_csa_offs; > + const char *regmap_name; > void (*get_config)(struct atmel_ebi_dev *ebid, > struct atmel_ebi_dev_config *conf); > int (*xlate_config)(struct atmel_ebi_dev *ebid, > @@ -47,7 +48,7 @@ struct atmel_ebi_caps { > > struct atmel_ebi { > struct clk *clk; > - struct regmap *matrix; > + struct regmap *regmap; > struct { > struct regmap *regmap; > struct clk *clk; > @@ -357,7 +358,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np, > * one "atmel,smc-" property is present. > */ > if (ebi->caps->ebi_csa_offs && apply) > - regmap_update_bits(ebi->matrix, > + regmap_update_bits(ebi->regmap, > ebi->caps->ebi_csa_offs, > BIT(cs), 0); > > @@ -372,6 +373,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np, > static const struct atmel_ebi_caps at91sam9260_ebi_caps = { > .available_cs = 0xff, > .ebi_csa_offs = AT91SAM9260_MATRIX_EBICSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -380,6 +382,7 @@ static const struct atmel_ebi_caps at91sam9260_ebi_caps = { > static const struct atmel_ebi_caps at91sam9261_ebi_caps = { > .available_cs = 0xff, > .ebi_csa_offs = AT91SAM9261_MATRIX_EBICSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -388,6 +391,7 @@ static const struct atmel_ebi_caps at91sam9261_ebi_caps = { > static const struct atmel_ebi_caps at91sam9263_ebi0_caps = { > .available_cs = 0x3f, > .ebi_csa_offs = AT91SAM9263_MATRIX_EBI0CSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -396,6 +400,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi0_caps = { > static const struct atmel_ebi_caps at91sam9263_ebi1_caps = { > .available_cs = 0x7, > .ebi_csa_offs = AT91SAM9263_MATRIX_EBI1CSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -404,6 +409,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi1_caps = { > static const struct atmel_ebi_caps at91sam9rl_ebi_caps = { > .available_cs = 0x3f, > .ebi_csa_offs = AT91SAM9RL_MATRIX_EBICSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -412,6 +418,7 @@ static const struct atmel_ebi_caps at91sam9rl_ebi_caps = { > static const struct atmel_ebi_caps at91sam9g45_ebi_caps = { > .available_cs = 0x3f, > .ebi_csa_offs = AT91SAM9G45_MATRIX_EBICSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -420,6 +427,7 @@ static const struct atmel_ebi_caps at91sam9g45_ebi_caps = { > static const struct atmel_ebi_caps at91sam9x5_ebi_caps = { > .available_cs = 0x3f, > .ebi_csa_offs = AT91SAM9X5_MATRIX_EBICSA, > + .regmap_name = "atmel,matrix", > .get_config = at91sam9_ebi_get_config, > .xlate_config = atmel_ebi_xslate_smc_config, > .apply_config = at91sam9_ebi_apply_config, > @@ -543,13 +551,14 @@ static int atmel_ebi_probe(struct platform_device *pdev) > > /* > * The sama5d3 does not provide an EBICSA register and thus does need > - * to access the matrix registers. > + * to access it. > */ > 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->regmap = > + syscon_regmap_lookup_by_phandle(np, > + ebi->caps->regmap_name); > + if (IS_ERR(ebi->regmap)) > + return PTR_ERR(ebi->regmap); > } > > ret = of_property_read_u32(np, "#address-cells", &val); > -- > 2.9.5 >
diff --git a/drivers/memory/atmel-ebi.c b/drivers/memory/atmel-ebi.c index c3748b414c27..b45914cfa212 100644 --- a/drivers/memory/atmel-ebi.c +++ b/drivers/memory/atmel-ebi.c @@ -36,6 +36,7 @@ struct atmel_ebi_dev { struct atmel_ebi_caps { unsigned int available_cs; unsigned int ebi_csa_offs; + const char *regmap_name; void (*get_config)(struct atmel_ebi_dev *ebid, struct atmel_ebi_dev_config *conf); int (*xlate_config)(struct atmel_ebi_dev *ebid, @@ -47,7 +48,7 @@ struct atmel_ebi_caps { struct atmel_ebi { struct clk *clk; - struct regmap *matrix; + struct regmap *regmap; struct { struct regmap *regmap; struct clk *clk; @@ -357,7 +358,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np, * one "atmel,smc-" property is present. */ if (ebi->caps->ebi_csa_offs && apply) - regmap_update_bits(ebi->matrix, + regmap_update_bits(ebi->regmap, ebi->caps->ebi_csa_offs, BIT(cs), 0); @@ -372,6 +373,7 @@ static int atmel_ebi_dev_setup(struct atmel_ebi *ebi, struct device_node *np, static const struct atmel_ebi_caps at91sam9260_ebi_caps = { .available_cs = 0xff, .ebi_csa_offs = AT91SAM9260_MATRIX_EBICSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -380,6 +382,7 @@ static const struct atmel_ebi_caps at91sam9260_ebi_caps = { static const struct atmel_ebi_caps at91sam9261_ebi_caps = { .available_cs = 0xff, .ebi_csa_offs = AT91SAM9261_MATRIX_EBICSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -388,6 +391,7 @@ static const struct atmel_ebi_caps at91sam9261_ebi_caps = { static const struct atmel_ebi_caps at91sam9263_ebi0_caps = { .available_cs = 0x3f, .ebi_csa_offs = AT91SAM9263_MATRIX_EBI0CSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -396,6 +400,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi0_caps = { static const struct atmel_ebi_caps at91sam9263_ebi1_caps = { .available_cs = 0x7, .ebi_csa_offs = AT91SAM9263_MATRIX_EBI1CSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -404,6 +409,7 @@ static const struct atmel_ebi_caps at91sam9263_ebi1_caps = { static const struct atmel_ebi_caps at91sam9rl_ebi_caps = { .available_cs = 0x3f, .ebi_csa_offs = AT91SAM9RL_MATRIX_EBICSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -412,6 +418,7 @@ static const struct atmel_ebi_caps at91sam9rl_ebi_caps = { static const struct atmel_ebi_caps at91sam9g45_ebi_caps = { .available_cs = 0x3f, .ebi_csa_offs = AT91SAM9G45_MATRIX_EBICSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -420,6 +427,7 @@ static const struct atmel_ebi_caps at91sam9g45_ebi_caps = { static const struct atmel_ebi_caps at91sam9x5_ebi_caps = { .available_cs = 0x3f, .ebi_csa_offs = AT91SAM9X5_MATRIX_EBICSA, + .regmap_name = "atmel,matrix", .get_config = at91sam9_ebi_get_config, .xlate_config = atmel_ebi_xslate_smc_config, .apply_config = at91sam9_ebi_apply_config, @@ -543,13 +551,14 @@ static int atmel_ebi_probe(struct platform_device *pdev) /* * The sama5d3 does not provide an EBICSA register and thus does need - * to access the matrix registers. + * to access it. */ 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->regmap = + syscon_regmap_lookup_by_phandle(np, + ebi->caps->regmap_name); + if (IS_ERR(ebi->regmap)) + return PTR_ERR(ebi->regmap); } ret = of_property_read_u32(np, "#address-cells", &val);