[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>
This commit is contained in:
Graf Yang 2008-04-25 03:10:04 +08:00 committed by Bryan Wu
parent 5be36d22b2
commit 565c0d3ff4
1 changed files with 5 additions and 2 deletions

View File

@ -106,13 +106,16 @@ int request_dma(unsigned int channel, char *device_id)
#ifdef CONFIG_BF54x #ifdef CONFIG_BF54x
if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) { if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) {
if (strncmp(device_id, "BFIN_UART", 9) == 0) if (strncmp(device_id, "BFIN_UART", 9) == 0) {
dma_ch[channel].regs->peripheral_map &= 0x0FFF;
dma_ch[channel].regs->peripheral_map |= dma_ch[channel].regs->peripheral_map |=
((channel - CH_UART2_RX + 0xC)<<12); ((channel - CH_UART2_RX + 0xC)<<12);
else } else {
dma_ch[channel].regs->peripheral_map &= 0x0FFF;
dma_ch[channel].regs->peripheral_map |= dma_ch[channel].regs->peripheral_map |=
((channel - CH_UART2_RX + 0x6)<<12); ((channel - CH_UART2_RX + 0x6)<<12);
} }
}
#endif #endif
dma_ch[channel].device_id = device_id; dma_ch[channel].device_id = device_id;