arm: msm: correctly signal the apps-to-modem irq in smd/proc_comm
authorDima Zavin <dima@android.com>
Fri, 29 Jan 2010 19:43:42 +0000 (11:43 -0800)
committerDaniel Walker <dwalker@codeaurora.org>
Wed, 12 May 2010 16:15:35 +0000 (09:15 -0700)
Signed-off-by: Dima Zavin <dima@android.com>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
arch/arm/mach-msm/include/mach/msm_iomap.h
arch/arm/mach-msm/io.c
arch/arm/mach-msm/proc_comm.c
arch/arm/mach-msm/smd.c

index 9dae1a98c77afdf8acf105e96828dda14b13fca9..ce1effed5894d82e83164bd44a0d0a6f8bc94e07 100644 (file)
 #define MSM_AD5_SIZE          (SZ_1M*13)
 
 
+#if defined(CONFIG_ARCH_MSM7X30)
+#define MSM_GCC_BASE          IOMEM(0xF8009000)
+#define MSM_GCC_PHYS          0xC0182000
+#define MSM_GCC_SIZE          SZ_4K
+#endif
+
 #endif
index 05f96b780aa6a811584fa3d25cfc4e2ce5ce6e0f..fde5e58b51c39bc4fe44da81fcdb6da495d6ecbd 100644 (file)
@@ -44,6 +44,9 @@ static struct map_desc msm_io_desc[] __initdata = {
        MSM_DEVICE(CLK_CTL),
 #ifdef CONFIG_MSM_DEBUG_UART
        MSM_DEVICE(DEBUG_UART),
+#endif
+#ifdef CONFIG_ARCH_MSM7X30
+       MSM_DEVICE(GCC),
 #endif
        {
                .virtual =  (unsigned long) MSM_SHARED_RAM_BASE,
index 915ee704ed3c2d6bc305421c5d02badc0f18bfeb..1cbdebf57c37982130fd682fb800acff1e188abf 100644 (file)
 
 #include "proc_comm.h"
 
-#define MSM_A2M_INT(n) (MSM_CSR_BASE + 0x400 + (n) * 4)
+static inline void msm_a2m_int(uint32_t irq)
+{
+#if defined(CONFIG_ARCH_MSM7X30)
+       writel(1 << irq, MSM_GCC_BASE + 0x8);
+#else
+       writel(1, MSM_CSR_BASE + 0x400 + (irq * 4));
+#endif
+}
 
 static inline void notify_other_proc_comm(void)
 {
-       writel(1, MSM_A2M_INT(6));
+       msm_a2m_int(6);
 }
 
 #define APP_COMMAND 0x00
index 086fd77dc8912b432970dce2aa59d7b8bc3d050f..b6966680a2d8a5e4e7ffe52312b58a6a8026cba7 100644 (file)
@@ -69,24 +69,32 @@ static void smd_diag(void);
 
 static unsigned last_heap_free = 0xffffffff;
 
-#define MSM_A2M_INT(n) (MSM_CSR_BASE + 0x400 + (n) * 4)
+static inline void msm_a2m_int(uint32_t irq)
+{
+#if defined(CONFIG_ARCH_MSM7X30)
+       writel(1 << irq, MSM_GCC_BASE + 0x8);
+#else
+       writel(1, MSM_CSR_BASE + 0x400 + (irq * 4));
+#endif
+}
+
 
 static inline void notify_other_smsm(void)
 {
-       writel(1, MSM_A2M_INT(5));
+       msm_a2m_int(5);
 #ifdef CONFIG_QDSP6
-       writel(1, MSM_A2M_INT(8));
+       msm_a2m_int(8);
 #endif
 }
 
 static inline void notify_modem_smd(void)
 {
-       writel(1, MSM_A2M_INT(0));
+       msm_a2m_int(0);
 }
 
 static inline void notify_dsp_smd(void)
 {
-       writel(1, MSM_A2M_INT(8));
+       msm_a2m_int(8);
 }
 
 static void smd_diag(void)