]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
bus: mvebu-mbus: Factor out initialization details
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Fri, 26 Jul 2013 13:17:44 +0000 (10:17 -0300)
committerJason Cooper <jason@lakedaemon.net>
Tue, 6 Aug 2013 14:10:22 +0000 (14:10 +0000)
We introduce a common initialization function mvebu_mbus_common_init()
that will be used by both legacy and device-tree initialization code.
This patch is an intermediate step, which will allow to introduce the
DT binding for this driver in a less intrusive way.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: Andrew Lunn <andrew@lunn.ch>
Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
drivers/bus/mvebu-mbus.c

index 827468abb236a62396799fb94a3eff3482a9c786..1b17954600aa5c47a8eb7b7417c6fd9106de6d63 100644 (file)
@@ -847,26 +847,14 @@ static __init int mvebu_mbus_debugfs_init(void)
 }
 fs_initcall(mvebu_mbus_debugfs_init);
 
-int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
-                          size_t mbuswins_size,
-                          phys_addr_t sdramwins_phys_base,
-                          size_t sdramwins_size)
+static int __init mvebu_mbus_common_init(struct mvebu_mbus_state *mbus,
+                                        phys_addr_t mbuswins_phys_base,
+                                        size_t mbuswins_size,
+                                        phys_addr_t sdramwins_phys_base,
+                                        size_t sdramwins_size)
 {
-       struct mvebu_mbus_state *mbus = &mbus_state;
-       const struct of_device_id *of_id;
        int win;
 
-       for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
-               if (!strcmp(of_id->compatible, soc))
-                       break;
-
-       if (!of_id->compatible) {
-               pr_err("could not find a matching SoC family\n");
-               return -ENODEV;
-       }
-
-       mbus->soc = of_id->data;
-
        mbus->mbuswins_base = ioremap(mbuswins_phys_base, mbuswins_size);
        if (!mbus->mbuswins_base)
                return -ENOMEM;
@@ -887,3 +875,28 @@ int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
 
        return 0;
 }
+
+int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
+                          size_t mbuswins_size,
+                          phys_addr_t sdramwins_phys_base,
+                          size_t sdramwins_size)
+{
+       const struct of_device_id *of_id;
+
+       for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
+               if (!strcmp(of_id->compatible, soc))
+                       break;
+
+       if (!of_id->compatible) {
+               pr_err("could not find a matching SoC family\n");
+               return -ENODEV;
+       }
+
+       mbus_state.soc = of_id->data;
+
+       return mvebu_mbus_common_init(&mbus_state,
+                       mbuswins_phys_base,
+                       mbuswins_size,
+                       sdramwins_phys_base,
+                       sdramwins_size);
+}