aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dma/ti-dma-crossbar.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/dma/ti-dma-crossbar.c b/drivers/dma/ti-dma-crossbar.c
index 7df910e7c348..9272b173c746 100644
--- a/drivers/dma/ti-dma-crossbar.c
+++ b/drivers/dma/ti-dma-crossbar.c
@@ -54,7 +54,15 @@ struct ti_am335x_xbar_map {
54 54
55static inline void ti_am335x_xbar_write(void __iomem *iomem, int event, u8 val) 55static inline void ti_am335x_xbar_write(void __iomem *iomem, int event, u8 val)
56{ 56{
57 writeb_relaxed(val, iomem + event); 57 /*
58 * TPCC_EVT_MUX_60_63 register layout is different than the
59 * rest, in the sense, that event 63 is mapped to lowest byte
60 * and event 60 is mapped to highest, handle it separately.
61 */
62 if (event >= 60 && event <= 63)
63 writeb_relaxed(val, iomem + (63 - event % 4));
64 else
65 writeb_relaxed(val, iomem + event);
58} 66}
59 67
60static void ti_am335x_xbar_free(struct device *dev, void *route_data) 68static void ti_am335x_xbar_free(struct device *dev, void *route_data)