msm: dma: add support for 9615 dma

Signed-off-by: Jeff Ohlstein <johlstei@codeaurora.org>

Conflicts:

	arch/arm/mach-msm/board-9615.c
diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c
index f13e238..297b686 100644
--- a/arch/arm/mach-msm/board-9615.c
+++ b/arch/arm/mach-msm/board-9615.c
@@ -26,6 +26,7 @@
 #include "board-9615.h"
 
 static struct platform_device *common_devices[] = {
+	&msm9615_device_dmov,
 	&msm9615_device_uart_gsbi4,
 	&msm9615_device_ssbi_pmic1,
 	&msm9615_device_qup_i2c_gsbi5,
diff --git a/arch/arm/mach-msm/devices-9615.c b/arch/arm/mach-msm/devices-9615.c
index 0e186d4..0277f28 100644
--- a/arch/arm/mach-msm/devices-9615.c
+++ b/arch/arm/mach-msm/devices-9615.c
@@ -22,6 +22,7 @@
 #include <mach/socinfo.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <mach/msm_sps.h>
+#include <mach/dma.h>
 #include "devices.h"
 #include "acpuclock.h"
 
@@ -46,6 +47,21 @@
 #define MSM_PMIC1_SSBI_CMD_PHYS	0x00500000
 #define MSM_PMIC_SSBI_SIZE	SZ_4K
 
+static struct resource msm_dmov_resource[] = {
+	{
+		.start = ADM_0_SCSS_1_IRQ,
+		.end = (resource_size_t)MSM_DMOV_BASE,
+		.flags = IORESOURCE_IRQ,
+	},
+};
+
+struct platform_device msm9615_device_dmov = {
+	.name	= "msm_dmov",
+	.id	= -1,
+	.resource = msm_dmov_resource,
+	.num_resources = ARRAY_SIZE(msm_dmov_resource),
+};
+
 static struct resource resources_uart_gsbi4[] = {
 	{
 		.start	= GSBI4_UARTDM_IRQ,
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index 3cd7fea..1ab614c 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -113,6 +113,7 @@
 extern struct platform_device msm_device_dmov;
 extern struct platform_device msm8960_device_dmov;
 extern struct platform_device apq8064_device_dmov;
+extern struct platform_device msm9615_device_dmov;
 extern struct platform_device msm_device_dmov_adm0;
 extern struct platform_device msm_device_dmov_adm1;
 
diff --git a/arch/arm/mach-msm/include/mach/dma.h b/arch/arm/mach-msm/include/mach/dma.h
index 144a71c..9c331a4 100644
--- a/arch/arm/mach-msm/include/mach/dma.h
+++ b/arch/arm/mach-msm/include/mach/dma.h
@@ -55,7 +55,7 @@
 #if defined(CONFIG_ARCH_MSM7X30)
 #define DMOV_SD_SIZE 0x400
 #define DMOV_SD_AARM 2
-#elif defined(CONFIG_ARCH_MSM8960)
+#elif defined(CONFIG_ARCH_MSM8960) || defined(CONFIG_ARCH_MSM9615)
 #define DMOV_SD_SIZE 0x800
 #define DMOV_SD_AARM 1
 #elif defined(CONFIG_ARCH_APQ8064)
@@ -205,6 +205,20 @@
 #define DMOV_HSUART_GSBI6_RX_CHAN	8
 #define DMOV_HSUART_GSBI6_RX_CRCI	11
 
+#elif defined(CONFIG_ARCH_MSM9615)
+
+#define DMOV_GP_CHAN          4
+
+#define DMOV_CE_IN_CHAN       0
+#define DMOV_CE_IN_CRCI       12
+
+#define DMOV_CE_OUT_CHAN      1
+#define DMOV_CE_OUT_CRCI      13
+
+#define DMOV_NAND_CHAN        3
+#define DMOV_NAND_CRCI_CMD    15
+#define DMOV_NAND_CRCI_DATA   3
+
 #elif defined(CONFIG_ARCH_FSM9XXX)
 /* defined in dma-fsm9xxx.h */
 
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-9615.h b/arch/arm/mach-msm/include/mach/msm_iomap-9615.h
index ec6f065..446adea 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap-9615.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap-9615.h
@@ -41,7 +41,7 @@
 #define MSM9615_QGIC_CPU_PHYS		0x02002000
 #define MSM9615_QGIC_CPU_SIZE		SZ_4K
 
-#define MSM9615_DMOV_PHYS		0x18300000
+#define MSM9615_DMOV_PHYS		0x18320000
 #define MSM9615_DMOV_SIZE		SZ_1M
 
 #define MSM9615_TLMM_PHYS		0x00800000