summaryrefslogtreecommitdiff
path: root/target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch')
-rw-r--r--target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch b/target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch
new file mode 100644
index 0000000..e6a9032
--- /dev/null
+++ b/target/linux/mvebu/patches-3.10/0043-bus-mvebu-mbus-Factor-out-initialization-details.patch
@@ -0,0 +1,81 @@
+From 5be79ea0d2bcec8c7360cfe3e7a491e5f176fa84 Mon Sep 17 00:00:00 2001
+From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
+Date: Tue, 21 May 2013 10:44:54 -0300
+Subject: [PATCH 043/203] bus: mvebu-mbus: Factor out initialization details
+
+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>
+---
+ drivers/bus/mvebu-mbus.c | 47 ++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 30 insertions(+), 17 deletions(-)
+
+--- a/drivers/bus/mvebu-mbus.c
++++ b/drivers/bus/mvebu-mbus.c
+@@ -847,26 +847,14 @@ static __init int mvebu_mbus_debugfs_ini
+ }
+ 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 *s
+
+ 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);
++}