69d323f231
This is a backport of the patches accepted to the Linux mainline related to mvebu SoC (Armada XP and Armada 370) between Linux v3.10, and Linux v3.11. This work mainly covers: * Enabling USB storage, and PCI to mvebu_defconfig. * Add support for NOR flash. * Some PCI device tree related updates, and bus parsing. * Adding Armada XP & 370 PCI driver, and update some clock gating specifics. * Introduce Marvell EBU Device Bus driver. * Enaling USB in the armada*.dts. * Enabling, and updating the mvebu-mbus. * Some SATA and Ethernet related fixes. Signed-off-by: Seif Mazareeb <seif.mazareeb@gmail.com> CC: Luka Perkov <luka@openwrt.org> SVN-Revision: 39564
82 lines
2.5 KiB
Diff
82 lines
2.5 KiB
Diff
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);
|
|
+}
|