Commit 5cf920619e06232f9b0f1d9d61e3ae847cac1dfc

Authored by Olof Johansson

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