path: root/drivers/bus/mvebu-mbus.c
diff options
authorLinus Torvalds <torvalds@linux-foundation.org>2015-01-25 17:29:06 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2015-01-25 17:29:06 -0800
commit71a59b12727316f6d3c1cf4335bc2eaecb86da25 (patch)
treee61c8caeff395875c87b279d26ec382ea9e9e5c0 /drivers/bus/mvebu-mbus.c
parent80a755545d54c8e9fd801f0de3d015defd825659 (diff)
parent4b3415c9363f828e7f1e45edecb57930849d5d5b (diff)
Merge tag 'armsoc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Olof Johansson: "A week's worth of fixes for various ARM platforms. Diff wise, the largest fix is for OMAP to deal with how GIC now registers interrupts (irq_domain_add_legacy() -> irq_domain_add_linear() changes). Besides this, a few more renesas platforms needed the GIC instatiation done for legacy boards. There's also a fix that disables coherency of mvebu due to issues, and a few other smaller fixes" * tag 'armsoc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: arm64: dts: add baud rate to Juno stdout-path ARM: dts: imx25: Fix PWM "per" clocks bus: mvebu-mbus: fix support of MBus window 13 Merge tag 'mvebu-fixes-3.19-3' of git://git.infradead.org/linux-mvebu into fixes ARM: mvebu: completely disable hardware I/O coherency ARM: OMAP: Work around hardcoded interrupts ARM: shmobile: r8a7779: Instantiate GIC from C board code in legacy builds ARM: shmobile: r8a7778: Instantiate GIC from C board code in legacy builds arm: boot: dts: dra7: enable dwc3 suspend PHY quirk
Diffstat (limited to 'drivers/bus/mvebu-mbus.c')
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index eb7682dc123b..81bf297f1034 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -210,12 +210,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
/* Checks whether the given window number is available */
+/* On Armada XP, 375 and 38x the MBus window 13 has the remap
+ * capability, like windows 0 to 7. However, the mvebu-mbus driver
+ * isn't currently taking into account this special case, which means
+ * that when window 13 is actually used, the remap registers are left
+ * to 0, making the device using this MBus window unavailable. The
+ * quick fix for stable is to not use window 13. A follow up patch
+ * will correctly handle this window.
static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
const int win)
void __iomem *addr = mbus->mbuswins_base +
u32 ctrl = readl(addr + WIN_CTRL_OFF);
+ if (win == 13)
+ return false;
return !(ctrl & WIN_CTRL_ENABLE);

Privacy Policy