diff options
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.patch | 81 |
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); ++} |