diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-02-17 16:17:43 -0500 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-02-24 04:07:07 -0500 |
commit | 8735fde2d0c42ae914d3e68d967612ff417f463c (patch) | |
tree | c012be0f6f095b4e33b608d197d60b8392deaa99 /arch/arm/plat-mxc | |
parent | e9f49d4183759e4d8469ac86189ef8bc4374cccc (diff) |
arm/imx/dma-v1: protect #ifdef'd blocks additionally by cpu_is_...
This is necessary for a multi-SoC kernel.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/plat-mxc')
-rw-r--r-- | arch/arm/plat-mxc/dma-mx1-mx2.c | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/arch/arm/plat-mxc/dma-mx1-mx2.c b/arch/arm/plat-mxc/dma-mx1-mx2.c index eddc96594ec6..e16014b0d13c 100644 --- a/arch/arm/plat-mxc/dma-mx1-mx2.c +++ b/arch/arm/plat-mxc/dma-mx1-mx2.c | |||
@@ -476,7 +476,8 @@ void imx_dma_enable(int channel) | |||
476 | CCR_ACRPT, DMA_CCR(channel)); | 476 | CCR_ACRPT, DMA_CCR(channel)); |
477 | 477 | ||
478 | #ifdef CONFIG_ARCH_MX2 | 478 | #ifdef CONFIG_ARCH_MX2 |
479 | if (imxdma->sg && imx_dma_hw_chain(imxdma)) { | 479 | if ((cpu_is_mx21() || cpu_is_mx27()) && |
480 | imxdma->sg && imx_dma_hw_chain(imxdma)) { | ||
480 | imxdma->sg = sg_next(imxdma->sg); | 481 | imxdma->sg = sg_next(imxdma->sg); |
481 | if (imxdma->sg) { | 482 | if (imxdma->sg) { |
482 | u32 tmp; | 483 | u32 tmp; |
@@ -654,7 +655,8 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id) | |||
654 | int i, disr; | 655 | int i, disr; |
655 | 656 | ||
656 | #ifdef CONFIG_ARCH_MX2 | 657 | #ifdef CONFIG_ARCH_MX2 |
657 | dma_err_handler(irq, dev_id); | 658 | if (cpu_is_mx21() || cpu_is_mx27()) |
659 | dma_err_handler(irq, dev_id); | ||
658 | #endif | 660 | #endif |
659 | 661 | ||
660 | disr = imx_dmav1_readl(DMA_DISR); | 662 | disr = imx_dmav1_readl(DMA_DISR); |
@@ -702,17 +704,19 @@ int imx_dma_request(int channel, const char *name) | |||
702 | local_irq_restore(flags); /* request_irq() can block */ | 704 | local_irq_restore(flags); /* request_irq() can block */ |
703 | 705 | ||
704 | #ifdef CONFIG_ARCH_MX2 | 706 | #ifdef CONFIG_ARCH_MX2 |
705 | ret = request_irq(MX2x_INT_DMACH0 + channel, dma_irq_handler, 0, "DMA", | 707 | if (cpu_is_mx21() || cpu_is_mx27()) { |
706 | NULL); | 708 | ret = request_irq(MX2x_INT_DMACH0 + channel, |
707 | if (ret) { | 709 | dma_irq_handler, 0, "DMA", NULL); |
708 | imxdma->name = NULL; | 710 | if (ret) { |
709 | printk(KERN_CRIT "Can't register IRQ %d for DMA channel %d\n", | 711 | imxdma->name = NULL; |
710 | MX2x_INT_DMACH0 + channel, channel); | 712 | pr_crit("Can't register IRQ %d for DMA channel %d\n", |
711 | return ret; | 713 | MX2x_INT_DMACH0 + channel, channel); |
714 | return ret; | ||
715 | } | ||
716 | init_timer(&imxdma->watchdog); | ||
717 | imxdma->watchdog.function = &imx_dma_watchdog; | ||
718 | imxdma->watchdog.data = channel; | ||
712 | } | 719 | } |
713 | init_timer(&imxdma->watchdog); | ||
714 | imxdma->watchdog.function = &imx_dma_watchdog; | ||
715 | imxdma->watchdog.data = channel; | ||
716 | #endif | 720 | #endif |
717 | 721 | ||
718 | return ret; | 722 | return ret; |
@@ -741,7 +745,8 @@ void imx_dma_free(int channel) | |||
741 | imxdma->name = NULL; | 745 | imxdma->name = NULL; |
742 | 746 | ||
743 | #ifdef CONFIG_ARCH_MX2 | 747 | #ifdef CONFIG_ARCH_MX2 |
744 | free_irq(MX2x_INT_DMACH0 + channel, NULL); | 748 | if (cpu_is_mx21() || cpu_is_mx27()) |
749 | free_irq(MX2x_INT_DMACH0 + channel, NULL); | ||
745 | #endif | 750 | #endif |
746 | 751 | ||
747 | local_irq_restore(flags); | 752 | local_irq_restore(flags); |
@@ -823,17 +828,19 @@ static int __init imx_dma_init(void) | |||
823 | imx_dmav1_writel(DCR_DRST, DMA_DCR); | 828 | imx_dmav1_writel(DCR_DRST, DMA_DCR); |
824 | 829 | ||
825 | #ifdef CONFIG_ARCH_MX1 | 830 | #ifdef CONFIG_ARCH_MX1 |
826 | ret = request_irq(DMA_INT, dma_irq_handler, 0, "DMA", NULL); | 831 | if (cpu_is_mx1()) { |
827 | if (ret) { | 832 | ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", NULL); |
828 | printk(KERN_CRIT "Wow! Can't register IRQ for DMA\n"); | 833 | if (ret) { |
829 | return ret; | 834 | pr_crit("Wow! Can't register IRQ for DMA\n"); |
830 | } | 835 | return ret; |
836 | } | ||
831 | 837 | ||
832 | ret = request_irq(DMA_ERR, dma_err_handler, 0, "DMA", NULL); | 838 | ret = request_irq(MX1_DMA_ERR, dma_err_handler, 0, "DMA", NULL); |
833 | if (ret) { | 839 | if (ret) { |
834 | printk(KERN_CRIT "Wow! Can't register ERRIRQ for DMA\n"); | 840 | pr_crit("Wow! Can't register ERRIRQ for DMA\n"); |
835 | free_irq(DMA_INT, NULL); | 841 | free_irq(MX1_DMA_INT, NULL); |
836 | return ret; | 842 | return ret; |
843 | } | ||
837 | } | 844 | } |
838 | #endif | 845 | #endif |
839 | /* enable DMA module */ | 846 | /* enable DMA module */ |