Эх сурвалжийг харах

Blackfin arch: fix bug - IMDMA is not type struct dma_register

TEMP Workaround - avoid access to PERIPHERAL_MAP

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Michael Hennerich 17 жил өмнө
parent
commit
377d43e7d0

+ 8 - 0
arch/blackfin/kernel/bfin_dma_5xx.c

@@ -477,7 +477,11 @@ int blackfin_dma_suspend(void)
 {
 {
 	int i;
 	int i;
 
 
+#ifdef CONFIG_BF561	/* IMDMA channels doesn't have a PERIPHERAL_MAP */
+	for (i = 0; i <= CH_MEM_STREAM3_SRC; i++) {
+#else
 	for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++) {
 	for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++) {
+#endif
 		if (dma_ch[i].chan_status == DMA_CHANNEL_ENABLED) {
 		if (dma_ch[i].chan_status == DMA_CHANNEL_ENABLED) {
 			printk(KERN_ERR "DMA Channel %d failed to suspend\n", i);
 			printk(KERN_ERR "DMA Channel %d failed to suspend\n", i);
 			return -EBUSY;
 			return -EBUSY;
@@ -493,7 +497,11 @@ void blackfin_dma_resume(void)
 {
 {
 	int i;
 	int i;
 
 
+#ifdef CONFIG_BF561	/* IMDMA channels doesn't have a PERIPHERAL_MAP */
+	for (i = 0; i <= CH_MEM_STREAM3_SRC; i++)
+#else
 	for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++)
 	for (i = 0; i < MAX_BLACKFIN_DMA_CHANNEL; i++)
+#endif
 		dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map;
 		dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map;
 }
 }
 #endif
 #endif