Commit 5cf920619e06232f9b0f1d9d61e3ae847cac1dfc
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
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>
Showing 1 changed file Side-by-side Diff
drivers/bus/mvebu-mbus.c
... | ... | @@ -210,12 +210,25 @@ |
210 | 210 | } |
211 | 211 | |
212 | 212 | /* Checks whether the given window number is available */ |
213 | + | |
214 | +/* On Armada XP, 375 and 38x the MBus window 13 has the remap | |
215 | + * capability, like windows 0 to 7. However, the mvebu-mbus driver | |
216 | + * isn't currently taking into account this special case, which means | |
217 | + * that when window 13 is actually used, the remap registers are left | |
218 | + * to 0, making the device using this MBus window unavailable. The | |
219 | + * quick fix for stable is to not use window 13. A follow up patch | |
220 | + * will correctly handle this window. | |
221 | +*/ | |
213 | 222 | static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus, |
214 | 223 | const int win) |
215 | 224 | { |
216 | 225 | void __iomem *addr = mbus->mbuswins_base + |
217 | 226 | mbus->soc->win_cfg_offset(win); |
218 | 227 | u32 ctrl = readl(addr + WIN_CTRL_OFF); |
228 | + | |
229 | + if (win == 13) | |
230 | + return false; | |
231 | + | |
219 | 232 | return !(ctrl & WIN_CTRL_ENABLE); |
220 | 233 | } |
221 | 234 |