diff options
author | Olof Johansson <olof@lixom.net> | 2015-01-23 14:08:13 -0800 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2015-01-23 14:08:13 -0800 |
commit | 5cf920619e06232f9b0f1d9d61e3ae847cac1dfc (patch) | |
tree | 7ec0f1c564a1f3fad5ca1f026111d2b30b942b89 /drivers/bus | |
parent | 604beee8646d94a199f1771cdae4f923b05f0e6c (diff) | |
parent | 38bdf45f4aa5cb6186d50a29e6cbbd9d486a1519 (diff) | |
download | linux-5cf920619e06232f9b0f1d9d61e3ae847cac1dfc.tar.gz linux-5cf920619e06232f9b0f1d9d61e3ae847cac1dfc.tar.bz2 linux-5cf920619e06232f9b0f1d9d61e3ae847cac1dfc.zip |
Merge tag 'mvebu-fixes-3.19-4' of git://git.infradead.org/linux-mvebu into fixes
Merge "mvebu/fixes #3" from Andrew Lunn:
mvebu fixes for 3.19. (Part 4)
bus: mvebu-mbus: fix support of MBus window 13
* tag 'mvebu-fixes-3.19-4' of git://git.infradead.org/linux-mvebu:
bus: mvebu-mbus: fix support of MBus window 13
ARM: mvebu: completely disable hardware I/O coherency
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/bus')
-rw-r--r-- | drivers/bus/mvebu-mbus.c | 13 |
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 + mbus->soc->win_cfg_offset(win); u32 ctrl = readl(addr + WIN_CTRL_OFF); + + if (win == 13) + return false; + return !(ctrl & WIN_CTRL_ENABLE); } |