diff options
author | Graf Yang <graf.yang@analog.com> | 2008-04-24 15:10:04 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-04-24 15:10:04 -0400 |
commit | 565c0d3ff438d18aa8c3201979fb1f5d1872ab11 (patch) | |
tree | 8a9984e69dbc4f03fd985b8b013361c89177f550 | |
parent | 5be36d22b28f01e5074f78b29aa6128da0a53641 (diff) |
[Blackfin] arch: fix bug - before assign new channel to the map register, need clear the bits first.
http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=2445
Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
-rw-r--r-- | arch/blackfin/kernel/bfin_dma_5xx.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index df4d2a5b8e30..fd5448d6107c 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -106,12 +106,15 @@ int request_dma(unsigned int channel, char *device_id) | |||
106 | 106 | ||
107 | #ifdef CONFIG_BF54x | 107 | #ifdef CONFIG_BF54x |
108 | if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) { | 108 | if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) { |
109 | if (strncmp(device_id, "BFIN_UART", 9) == 0) | 109 | if (strncmp(device_id, "BFIN_UART", 9) == 0) { |
110 | dma_ch[channel].regs->peripheral_map &= 0x0FFF; | ||
110 | dma_ch[channel].regs->peripheral_map |= | 111 | dma_ch[channel].regs->peripheral_map |= |
111 | ((channel - CH_UART2_RX + 0xC)<<12); | 112 | ((channel - CH_UART2_RX + 0xC)<<12); |
112 | else | 113 | } else { |
114 | dma_ch[channel].regs->peripheral_map &= 0x0FFF; | ||
113 | dma_ch[channel].regs->peripheral_map |= | 115 | dma_ch[channel].regs->peripheral_map |= |
114 | ((channel - CH_UART2_RX + 0x6)<<12); | 116 | ((channel - CH_UART2_RX + 0x6)<<12); |
117 | } | ||
115 | } | 118 | } |
116 | #endif | 119 | #endif |
117 | 120 | ||