summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/dma.c
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-04-15 16:01:00 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:42:32 -0800
commit11119f27d5051bb676f302f9b5759d1c2997917a (patch)
treeb1a840d5285241c7479efe09af5bf880ae12b537 /arch/arm/mach-tegra/dma.c
parentd579c7f16c5739c4e9846711f39fa46c9eabcc22 (diff)
dma: tegra: Resetting apb dma during kernel init
Resetting the apb dma controller and enabling the clock of the apb dma controller during kernel initialization. Making necessarily entry for the apb dma clock in clock table. Original-Change-Id: Ifaed5a70ed06b162a5015a2eae8bb444b43178c4 Reviewed-on: http://git-master/r/27873 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com> Original-Change-Id: If66c96a5e9cd015086f4d407ed9fc9bd99b6b29f Rebase-Id: R7a8cd4e1f6e3df6bed0f3dbc105bb2c349f9a6cc
Diffstat (limited to 'arch/arm/mach-tegra/dma.c')
-rw-r--r--arch/arm/mach-tegra/dma.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/dma.c b/arch/arm/mach-tegra/dma.c
index 6a7882e1cd0c..6f52ac2500e2 100644
--- a/arch/arm/mach-tegra/dma.c
+++ b/arch/arm/mach-tegra/dma.c
@@ -32,6 +32,7 @@
#include <mach/dma.h>
#include <mach/irqs.h>
#include <mach/iomap.h>
+#include <mach/clk.h>
#define APB_DMA_GEN 0x000
#define GEN_ENABLE (1<<31)
@@ -106,6 +107,7 @@
#define TEGRA_SYSTEM_DMA_CH_MAX \
(TEGRA_SYSTEM_DMA_CH_NR - TEGRA_SYSTEM_DMA_AVP_CH_NUM - 1)
+static struct clk *dma_clk;
const unsigned int ahb_addr_wrap_table[8] = {
0, 32, 64, 128, 256, 512, 1024, 2048
};
@@ -894,6 +896,15 @@ int __init tegra_dma_init(void)
goto fail;
}
+ dma_clk = clk_get_sys("apbdma", "apbdma");
+ if (!IS_ERR_OR_NULL(dma_clk)) {
+ clk_enable(dma_clk);
+ tegra_periph_reset_assert(dma_clk);
+ udelay(10);
+ tegra_periph_reset_deassert(dma_clk);
+ udelay(10);
+ }
+
addr = IO_ADDRESS(TEGRA_APB_DMA_BASE);
writel(GEN_ENABLE, addr + APB_DMA_GEN);
writel(0, addr + APB_DMA_CNTRL);