[Blackfin] arch: fix bug - before assign new channel to the map register, need clear...
authorGraf Yang <graf.yang@analog.com>
Thu, 24 Apr 2008 19:10:04 +0000 (03:10 +0800)
committerBryan Wu <cooloney@kernel.org>
Thu, 24 Apr 2008 19:10:04 +0000 (03:10 +0800)
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>
arch/blackfin/kernel/bfin_dma_5xx.c

index df4d2a5..fd5448d 100644 (file)
@@ -106,12 +106,15 @@ int request_dma(unsigned int channel, char *device_id)
 
 #ifdef CONFIG_BF54x
        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 |=
                                ((channel - CH_UART2_RX + 0xC)<<12);
-               else
+               } else {
+                       dma_ch[channel].regs->peripheral_map &= 0x0FFF;
                        dma_ch[channel].regs->peripheral_map |=
                                ((channel - CH_UART2_RX + 0x6)<<12);
+               }
        }
 #endif