[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:
parent
5be36d22b2
commit
565c0d3ff4
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue