diff options
author | Gary King <gking@nvidia.com> | 2010-06-14 16:24:49 -0700 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-06-15 10:45:02 -0700 |
commit | 079436be7a5e33e46800d228b0ffe84a76a70d46 (patch) | |
tree | d3ba0ff9ecf7b78d4d69510d2a723cf4fe649698 | |
parent | 9ed72b0880a3605863e3ec256fda069ec7165921 (diff) |
[ARM/tegra] dma: clean up APB_DMA_IRQ_MASK_SET usage
since several DMA channels are reserved for the multimedia engine,
restrict block IRQ_MASK_SET to the channels available to the OS
on resume, write the saved IRQ mask value to APB_DMA_IRQ_MASK_SET, not
to APB_DMA_IRQ_MASK
Change-Id: I1e00dc665d93c49f59d75f602e38b67289403a51
Reviewed-on: http://git-master/r/2622
Reviewed-by: Trivikram Kasivajhula <tkasivajhula@nvidia.com>
Reviewed-by: Gary King <gking@nvidia.com>
Tested-by: Gary King <gking@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/dma.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/dma.c b/arch/arm/mach-tegra/dma.c index e14d14f084fb..a6e475ab64a7 100644 --- a/arch/arm/mach-tegra/dma.c +++ b/arch/arm/mach-tegra/dma.c @@ -706,7 +706,8 @@ int __init tegra_dma_init(void) addr = IO_ADDRESS(TEGRA_APB_DMA_BASE); writel(GEN_ENABLE, addr + APB_DMA_GEN); writel(0, addr + APB_DMA_CNTRL); - writel(0xFFFF, addr + APB_DMA_IRQ_MASK_SET); + writel(0xFFFFFFFFul >> (31 - TEGRA_SYSTEM_DMA_CH_MAX), + addr + APB_DMA_IRQ_MASK_SET); memset(channel_usage, 0, sizeof(channel_usage)); memset(dma_channels, 0, sizeof(dma_channels)); @@ -788,7 +789,7 @@ void tegra_dma_resume(void) writel(*ctx++, addr + APB_DMA_GEN); writel(*ctx++, addr + APB_DMA_CNTRL); - writel(*ctx++, addr + APB_DMA_IRQ_MASK); + writel(*ctx++, addr + APB_DMA_IRQ_MASK_SET); for (i=0; i<TEGRA_SYSTEM_DMA_CH_NR; i++) { addr = IO_ADDRESS(TEGRA_APB_DMA_CH0_BASE + |