msm: smd: add support for 9615

Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>

Conflicts:

	arch/arm/mach-msm/board-9615.c
	arch/arm/mach-msm/devices-9615.c
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 3612df7..083ba3e 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -940,7 +940,7 @@
 	  via muxing than BAM could without muxing.
 
 config MSM_N_WAY_SMD
-	depends on (MSM_SMD && (ARCH_MSM_SCORPION || ARCH_MSM8960 || ARCH_MSM7X27 || ARCH_MSM7X25))
+	depends on (MSM_SMD && (ARCH_MSM_SCORPION || ARCH_MSM8960 || ARCH_MSM7X27 || ARCH_MSM7X25 || ARCH_MSM9615))
 	default y
 	bool "MSM N-WAY SMD support"
 	help
@@ -948,7 +948,7 @@
 	  normal APPS-MODEM SMD communication.
 
 config MSM_N_WAY_SMSM
-	depends on (MSM_SMD && (ARCH_MSM_SCORPION || ARCH_MSM8960 || ARCH_MSM7X27 || ARCH_MSM7X25))
+	depends on (MSM_SMD && (ARCH_MSM_SCORPION || ARCH_MSM8960 || ARCH_MSM7X27 || ARCH_MSM7X25 || ARCH_MSM9615))
 	default y
 	bool "MSM N-WAY SMSM support"
 	help
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
index 22d640a..db154de 100644
--- a/arch/arm/mach-msm/Makefile
+++ b/arch/arm/mach-msm/Makefile
@@ -73,6 +73,7 @@
 obj-$(CONFIG_MSM_SMD_LOGGING) += smem_log.o
 obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o remote_spinlock.o
         obj-y += socinfo.o
+ifndef CONFIG_ARCH_MSM9615
 ifndef CONFIG_ARCH_MSM8960
 ifndef CONFIG_ARCH_MSM8X60
 	obj-$(CONFIG_MSM_SMD) += pmic.o
@@ -82,6 +83,7 @@
 	obj-$(CONFIG_MSM_ONCRPCROUTER) += rpc_hsusb.o rpc_pmapp.o rpc_fsusb.o
 endif
 endif
+endif
 obj-$(CONFIG_MSM_SDIO_TTY) += sdio_tty.o sdio_tty_ciq.o
 obj-$(CONFIG_MSM_SMD_TTY) += smd_tty.o
 obj-$(CONFIG_MSM_SMD_QMI) += smd_qmi.o
diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c
index 1901c03..230c887 100644
--- a/arch/arm/mach-msm/board-9615.c
+++ b/arch/arm/mach-msm/board-9615.c
@@ -27,6 +27,7 @@
 
 static struct platform_device *common_devices[] = {
 	&msm9615_device_dmov,
+	&msm_device_smd,
 	&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 5805ecd..c389819 100644
--- a/arch/arm/mach-msm/devices-9615.c
+++ b/arch/arm/mach-msm/devices-9615.c
@@ -247,6 +247,11 @@
 	},
 };
 
+struct platform_device msm_device_smd = {
+	.name		= "msm_smd",
+	.id		= -1,
+};
+
 #ifdef CONFIG_CACHE_L2X0
 static int __init l2x0_cache_init(void)
 {
@@ -278,8 +283,10 @@
 	acpuclk_init(&acpuclk_9615_soc_data);
 }
 
+#define MSM_SHARED_RAM_PHYS 0x40000000
 void __init msm9615_map_io(void)
 {
+	msm_shared_ram_phys = MSM_SHARED_RAM_PHYS;
 	msm_map_msm9615_io();
 	l2x0_cache_init();
 }
diff --git a/arch/arm/mach-msm/include/mach/irqs-9615.h b/arch/arm/mach-msm/include/mach/irqs-9615.h
index 8972148..8b62632 100644
--- a/arch/arm/mach-msm/include/mach/irqs-9615.h
+++ b/arch/arm/mach-msm/include/mach/irqs-9615.h
@@ -73,16 +73,16 @@
 #define SLIMBUS0_BAM_EE1_IRQ			(GIC_SPI_START + 34)
 #define Q6FW_WDOG_EXPIRED			(GIC_SPI_START + 35)
 #define Q6SW_WDOG_EXPIRED			(GIC_SPI_START + 36)
-#define GSS_TO_APPS_IRQ_0			(GIC_SPI_START + 37)
-#define GSS_TO_APPS_IRQ_1			(GIC_SPI_START + 38)
-#define GSS_TO_APPS_IRQ_2			(GIC_SPI_START + 39)
-#define GSS_TO_APPS_IRQ_3			(GIC_SPI_START + 40)
-#define GSS_TO_APPS_IRQ_4			(GIC_SPI_START + 41)
-#define GSS_TO_APPS_IRQ_5			(GIC_SPI_START + 42)
-#define GSS_TO_APPS_IRQ_6			(GIC_SPI_START + 43)
-#define GSS_TO_APPS_IRQ_7			(GIC_SPI_START + 44)
-#define GSS_TO_APPS_IRQ_8			(GIC_SPI_START + 45)
-#define GSS_TO_APPS_IRQ_9			(GIC_SPI_START + 46)
+#define MSS_TO_APPS_IRQ_0			(GIC_SPI_START + 37)
+#define MSS_TO_APPS_IRQ_1			(GIC_SPI_START + 38)
+#define MSS_TO_APPS_IRQ_2			(GIC_SPI_START + 39)
+#define MSS_TO_APPS_IRQ_3			(GIC_SPI_START + 40)
+#define MSS_TO_APPS_IRQ_4			(GIC_SPI_START + 41)
+#define MSS_TO_APPS_IRQ_5			(GIC_SPI_START + 42)
+#define MSS_TO_APPS_IRQ_6			(GIC_SPI_START + 43)
+#define MSS_TO_APPS_IRQ_7			(GIC_SPI_START + 44)
+#define MSS_TO_APPS_IRQ_8			(GIC_SPI_START + 45)
+#define MSS_TO_APPS_IRQ_9			(GIC_SPI_START + 46)
 /* 47-84  Reserved */
 #define LPASS_SCSS_AUDIO_IF_OUT0_IRQ		(GIC_SPI_START + 85)
 #define LPASS_SCSS_MIDI_IRQ			(GIC_SPI_START + 86)
@@ -195,8 +195,5 @@
 #define INT_A9_M2A_5                    MSS_TO_APPS_IRQ_1
 #define INT_ADSP_A11                    LPASS_SCSS_GP_HIGH_IRQ
 #define INT_ADSP_A11_SMSM               LPASS_SCSS_GP_MEDIUM_IRQ
-#define INT_DSPS_A11                    SPS_MTI_31
-#define INT_WCNSS_A11                   RIVA_APSS_SPARE_IRQ
-#define INT_WCNSS_A11_SMSM              RIVA_APPS_WLAN_SMSM_IRQ
 
 #endif
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h
index 2ba3f9c..df19606 100644
--- a/arch/arm/mach-msm/include/mach/msm_iomap.h
+++ b/arch/arm/mach-msm/include/mach/msm_iomap.h
@@ -76,7 +76,11 @@
 #define MSM_L2CC_BASE		IOMEM(0xFA701000)	/* 4K */
 #define MSM_APCS_GLB_BASE	IOMEM(0xFA702000)	/* 4K */
 
+#if defined(CONFIG_ARCH_MSM9615)
+#define MSM_SHARED_RAM_SIZE	SZ_1M
+#else
 #define MSM_SHARED_RAM_SIZE	SZ_2M
+#endif
 
 #include "msm_iomap-8960.h"
 #include "msm_iomap-8064.h"
diff --git a/arch/arm/mach-msm/smd.c b/arch/arm/mach-msm/smd.c
index 1b68560..3db19b6 100644
--- a/arch/arm/mach-msm/smd.c
+++ b/arch/arm/mach-msm/smd.c
@@ -42,7 +42,8 @@
 #include "modem_notifier.h"
 
 #if defined(CONFIG_ARCH_QSD8X50) || defined(CONFIG_ARCH_MSM8X60) \
-	|| defined(CONFIG_ARCH_MSM8960) || defined(CONFIG_ARCH_FSM9XXX)
+	|| defined(CONFIG_ARCH_MSM8960) || defined(CONFIG_ARCH_FSM9XXX) \
+	|| defined(CONFIG_ARCH_MSM9615)
 #define CONFIG_QDSP6 1
 #endif
 
@@ -186,6 +187,19 @@
 			(smd_write_intr(1 << 25, MSM_APCS_GCC_BASE + 0x8))
 #define MSM_TRIG_A2WCNSS_SMSM_INT  \
 			(smd_write_intr(1 << 23, MSM_APCS_GCC_BASE + 0x8))
+#elif defined(CONFIG_ARCH_MSM9615)
+#define MSM_TRIG_A2M_SMD_INT     \
+			(smd_write_intr(1 << 3, MSM_APCS_GCC_BASE + 0x8))
+#define MSM_TRIG_A2Q6_SMD_INT    \
+			(smd_write_intr(1 << 15, MSM_APCS_GCC_BASE + 0x8))
+#define MSM_TRIG_A2M_SMSM_INT    \
+			(smd_write_intr(1 << 4, MSM_APCS_GCC_BASE + 0x8))
+#define MSM_TRIG_A2Q6_SMSM_INT   \
+			(smd_write_intr(1 << 14, MSM_APCS_GCC_BASE + 0x8))
+#define MSM_TRIG_A2DSPS_SMD_INT
+#define MSM_TRIG_A2DSPS_SMSM_INT
+#define MSM_TRIG_A2WCNSS_SMD_INT
+#define MSM_TRIG_A2WCNSS_SMSM_INT
 #elif defined(CONFIG_ARCH_FSM9XXX)
 #define MSM_TRIG_A2Q6_SMD_INT	\
 			(smd_write_intr(1 << 10, MSM_GCC_BASE + 0x8))