فهرست منبع

[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>
Graf Yang 17 سال پیش
والد
کامیت
565c0d3ff4
1فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 5 2
      arch/blackfin/kernel/bfin_dma_5xx.c

+ 5 - 2
arch/blackfin/kernel/bfin_dma_5xx.c

@@ -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