Skip to content

Commit 38bdf45

Browse files
committed
bus: mvebu-mbus: fix support of MBus window 13
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. As a minimal fix for stable, don't use window 13. A full fix will follow later. Fixes: fddddb5 ("bus: introduce an Marvell EBU MBus driver") Cc: <stable@vger.kernel.org> # v3.10+ Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
1 parent 8f1e8ee commit 38bdf45

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

drivers/bus/mvebu-mbus.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
210210
}
211211

212212
/* 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+
*/
213222
static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
214223
const int win)
215224
{
216225
void __iomem *addr = mbus->mbuswins_base +
217226
mbus->soc->win_cfg_offset(win);
218227
u32 ctrl = readl(addr + WIN_CTRL_OFF);
228+
229+
if (win == 13)
230+
return false;
231+
219232
return !(ctrl & WIN_CTRL_ENABLE);
220233
}
221234

0 commit comments

Comments
 (0)