Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4de3a8fa authored by Colin Cross's avatar Colin Cross
Browse files

[ARM] tegra: Add APB DMA support



The APB DMA block handles DMA transfers to and from some peripherals
in the Tegra SOC.  It reads from sequential addresses on the memory
bus, and writes repeatedly to the same address on the APB bus.

Two transfer modes are supported, oneshot for transferring a known
size to or from a peripheral, and continuous for streaming data.
In continuous mode, a callback occurs when the buffer is half full
to allow the existing data to be handled and a new request queued.x

v2 changes:
	dma API no longer uses PTR_ERR

Signed-off-by: default avatarErik Gilling <konkers@android.com>
Signed-off-by: default avatarColin Cross <ccross@android.com>
parent 7056d423
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -47,4 +47,11 @@ config TEGRA_DEBUG_UARTE

endchoice

config TEGRA_SYSTEM_DMA
	bool "Enable system DMA driver for NVIDIA Tegra SoCs"
	default y
	help
	  Adds system DMA functionality for NVIDIA Tegra SoCs, used by
	  several Tegra device drivers

endif
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra2_dvfs.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC)		+= pinmux-t2-tables.o
obj-$(CONFIG_SMP)                       += platsmp.o localtimer.o headsmp.o
obj-$(CONFIG_HOTPLUG_CPU)               += hotplug.o
obj-$(CONFIG_TEGRA_SYSTEM_DMA)		+= dma.o
obj-$(CONFIG_CPU_FREQ)                  += cpu-tegra.o

obj-${CONFIG_MACH_HARMONY}              += board-harmony.o
+7 −0
Original line number Diff line number Diff line
@@ -19,10 +19,13 @@

#include <linux/init.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/delay.h>

#include <asm/hardware/cache-l2x0.h>

#include <mach/iomap.h>
#include <mach/dma.h>

#include "board.h"
#include "clock.h"
@@ -52,6 +55,7 @@ void __init tegra_init_cache(void)

	l2x0_init(p, 0x6C080001, 0x8200c3fe);
#endif

}

void __init tegra_common_init(void)
@@ -60,4 +64,7 @@ void __init tegra_common_init(void)
	tegra_init_clock();
	tegra_clk_init_from_table(common_clk_init_table);
	tegra_init_cache();
#ifdef CONFIG_TEGRA_SYSTEM_DMA
	tegra_dma_init();
#endif
}
+752 −0

File added.

Preview size limit exceeded, changes collapsed.

+155 −0

File added.

Preview size limit exceeded, changes collapsed.