summaryrefslogtreecommitdiff
path: root/target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch
diff options
context:
space:
mode:
authorLuka Perkov <luka@openwrt.org>2014-02-11 02:07:38 +0000
committerLuka Perkov <luka@openwrt.org>2014-02-11 02:07:38 +0000
commit69d323f23119ce6986c2803f34d95869144a00e6 (patch)
tree15747b34c6f9a8dfb622f3d61cbffe043f67e573 /target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch
parent31fb795fd01ac711ff6ca881271fdd4268e34570 (diff)
downloadmtk-20170518-69d323f23119ce6986c2803f34d95869144a00e6.zip
mtk-20170518-69d323f23119ce6986c2803f34d95869144a00e6.tar.gz
mtk-20170518-69d323f23119ce6986c2803f34d95869144a00e6.tar.bz2
mvebu: backport mainline patches from kernel 3.11
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
Diffstat (limited to 'target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch')
-rw-r--r--target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch b/target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch
new file mode 100644
index 0000000..1983016
--- /dev/null
+++ b/target/linux/mvebu/patches-3.10/0037-memory-mvebu-devbus-Remove-address-decoding-window-w.patch
@@ -0,0 +1,109 @@
+From 9760aafa716292050a96d71a4bd7bd4e66053975 Mon Sep 17 00:00:00 2001
+From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
+Date: Tue, 21 May 2013 10:24:48 -0300
+Subject: [PATCH 037/203] memory: mvebu-devbus: Remove address decoding window
+ workaround
+
+Now that mbus device tree binding has been introduced, remove the address
+decoding window management from this driver.
+A suitable 'ranges' entry should be added to the devbus-compatible node in
+the device tree, as described by the mbus binding documentation.
+
+Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+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/memory/mvebu-devbus.c | 64 ++-----------------------------------------
+ 1 file changed, 2 insertions(+), 62 deletions(-)
+
+--- a/drivers/memory/mvebu-devbus.c
++++ b/drivers/memory/mvebu-devbus.c
+@@ -208,16 +208,11 @@ static int mvebu_devbus_probe(struct pla
+ {
+ struct device *dev = &pdev->dev;
+ struct device_node *node = pdev->dev.of_node;
+- struct device_node *parent;
+ struct devbus *devbus;
+ struct resource *res;
+ struct clk *clk;
+ unsigned long rate;
+- const __be32 *ranges;
+- int err, cs;
+- int addr_cells, p_addr_cells, size_cells;
+- int ranges_len, tuple_len;
+- u32 base, size;
++ int err;
+
+ devbus = devm_kzalloc(&pdev->dev, sizeof(struct devbus), GFP_KERNEL);
+ if (!devbus)
+@@ -248,68 +243,13 @@ static int mvebu_devbus_probe(struct pla
+ return err;
+
+ /*
+- * Allocate an address window for this device.
+- * If the device probing fails, then we won't be able to
+- * remove the allocated address decoding window.
+- *
+- * FIXME: This is only a temporary hack! We need to do this here
+- * because we still don't have device tree bindings for mbus.
+- * Once that support is added, we will declare these address windows
+- * statically in the device tree, and remove the window configuration
+- * from here.
+- */
+-
+- /*
+- * Get the CS to choose the window string.
+- * This is a bit hacky, but it will be removed once the
+- * address windows are declared in the device tree.
+- */
+- cs = (((unsigned long)devbus->base) % 0x400) / 8;
+-
+- /*
+- * Parse 'ranges' property to obtain a (base,size) window tuple.
+- * This will be removed once the address windows
+- * are declared in the device tree.
+- */
+- parent = of_get_parent(node);
+- if (!parent)
+- return -EINVAL;
+-
+- p_addr_cells = of_n_addr_cells(parent);
+- of_node_put(parent);
+-
+- addr_cells = of_n_addr_cells(node);
+- size_cells = of_n_size_cells(node);
+- tuple_len = (p_addr_cells + addr_cells + size_cells) * sizeof(__be32);
+-
+- ranges = of_get_property(node, "ranges", &ranges_len);
+- if (ranges == NULL || ranges_len != tuple_len)
+- return -EINVAL;
+-
+- base = of_translate_address(node, ranges + addr_cells);
+- if (base == OF_BAD_ADDR)
+- return -EINVAL;
+- size = of_read_number(ranges + addr_cells + p_addr_cells, size_cells);
+-
+- /*
+- * Create an mbus address windows.
+- * FIXME: Remove this, together with the above code, once the
+- * address windows are declared in the device tree.
+- */
+- err = mvebu_mbus_add_window(devbus_wins[cs], base, size);
+- if (err < 0)
+- return err;
+-
+- /*
+ * We need to create a child device explicitly from here to
+ * guarantee that the child will be probed after the timing
+ * parameters for the bus are written.
+ */
+ err = of_platform_populate(node, NULL, NULL, dev);
+- if (err < 0) {
+- mvebu_mbus_del_window(base, size);
++ if (err < 0)
+ return err;
+- }
+
+ return 0;
+ }