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>
This commit is contained in:
@@ -210,12 +210,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Checks whether the given window number is available */
|
/* 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,
|
static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
|
||||||
const int win)
|
const int win)
|
||||||
{
|
{
|
||||||
void __iomem *addr = mbus->mbuswins_base +
|
void __iomem *addr = mbus->mbuswins_base +
|
||||||
mbus->soc->win_cfg_offset(win);
|
mbus->soc->win_cfg_offset(win);
|
||||||
u32 ctrl = readl(addr + WIN_CTRL_OFF);
|
u32 ctrl = readl(addr + WIN_CTRL_OFF);
|
||||||
|
|
||||||
|
if (win == 13)
|
||||||
|
return false;
|
||||||
|
|
||||||
return !(ctrl & WIN_CTRL_ENABLE);
|
return !(ctrl & WIN_CTRL_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user