diff options
| -rw-r--r-- | drivers/dma/ti-dma-crossbar.c | 10 |
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 | ||
| 55 | static inline void ti_am335x_xbar_write(void __iomem *iomem, int event, u8 val) | 55 | static 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 | ||
| 60 | static void ti_am335x_xbar_free(struct device *dev, void *route_data) | 68 | static void ti_am335x_xbar_free(struct device *dev, void *route_data) |
