]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: mscc: ocelot: move resource ioremap and regmap init to common code
authorClaudiu Manoil <claudiu.manoil@nxp.com>
Thu, 14 Nov 2019 15:03:20 +0000 (17:03 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Nov 2019 20:32:16 +0000 (12:32 -0800)
Let's make this ioremap and regmap init code common.  It should not
be platform dependent as it should be usable by PCI devices too.
Use better names where necessary to avoid clashes.

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mscc/ocelot.h
drivers/net/ethernet/mscc/ocelot_board.c
drivers/net/ethernet/mscc/ocelot_io.c

index 4d8e769ccad993de2a2081d94b5ee57e8c75c05f..b5802cea7cc47df5914aeec18e8b26c1c484b1d1 100644 (file)
@@ -546,9 +546,7 @@ void ocelot_port_writel(struct ocelot_port *port, u32 val, u32 reg);
 
 int ocelot_regfields_init(struct ocelot *ocelot,
                          const struct reg_field *const regfields);
-struct regmap *ocelot_io_platform_init(struct ocelot *ocelot,
-                                      struct platform_device *pdev,
-                                      const char *name);
+struct regmap *ocelot_regmap_init(struct ocelot *ocelot, struct resource *res);
 
 #define ocelot_field_write(ocelot, reg, val) regmap_field_write((ocelot)->regfields[(reg)], (val))
 #define ocelot_field_read(ocelot, reg, val) regmap_field_read((ocelot)->regfields[(reg)], (val))
index 811599f3291033b62a6fadeec79d83c6c0d262d8..ddb34f17fa5234dcdb3df44b6c710a36f47c1d2b 100644 (file)
@@ -268,7 +268,7 @@ static int mscc_ocelot_probe(struct platform_device *pdev)
                enum ocelot_target id;
                char *name;
                u8 optional:1;
-       } res[] = {
+       } io_target[] = {
                { SYS, "sys" },
                { REW, "rew" },
                { QSYS, "qsys" },
@@ -288,20 +288,23 @@ static int mscc_ocelot_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, ocelot);
        ocelot->dev = &pdev->dev;
 
-       for (i = 0; i < ARRAY_SIZE(res); i++) {
+       for (i = 0; i < ARRAY_SIZE(io_target); i++) {
                struct regmap *target;
+               struct resource *res;
+
+               res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
+                                                  io_target[i].name);
 
-               target = ocelot_io_platform_init(ocelot, pdev, res[i].name);
+               target = ocelot_regmap_init(ocelot, res);
                if (IS_ERR(target)) {
-                       if (res[i].optional) {
-                               ocelot->targets[res[i].id] = NULL;
+                       if (io_target[i].optional) {
+                               ocelot->targets[io_target[i].id] = NULL;
                                continue;
                        }
-
                        return PTR_ERR(target);
                }
 
-               ocelot->targets[res[i].id] = target;
+               ocelot->targets[io_target[i].id] = target;
        }
 
        hsio = syscon_regmap_lookup_by_compatible("mscc,ocelot-hsio");
index c6db8ad31fdfa926c822294a12386bee59ee171a..b229b1cb68ef977b5966f31f4a6814dd8be9ebb9 100644 (file)
@@ -97,20 +97,16 @@ static struct regmap_config ocelot_regmap_config = {
        .reg_stride     = 4,
 };
 
-struct regmap *ocelot_io_platform_init(struct ocelot *ocelot,
-                                      struct platform_device *pdev,
-                                      const char *name)
+struct regmap *ocelot_regmap_init(struct ocelot *ocelot, struct resource *res)
 {
-       struct resource *res;
        void __iomem *regs;
 
-       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
        regs = devm_ioremap_resource(ocelot->dev, res);
        if (IS_ERR(regs))
                return ERR_CAST(regs);
 
-       ocelot_regmap_config.name = name;
-       return devm_regmap_init_mmio(ocelot->dev, regs,
-                                    &ocelot_regmap_config);
+       ocelot_regmap_config.name = res->name;
+
+       return devm_regmap_init_mmio(ocelot->dev, regs, &ocelot_regmap_config);
 }
-EXPORT_SYMBOL(ocelot_io_platform_init);
+EXPORT_SYMBOL(ocelot_regmap_init);