aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-msm/proc_comm.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-19 16:35:07 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-19 16:35:07 -0400
commite4e47eb15b7884963efe7f98231009c5770a2c3d (patch)
treeebd3536a3aa728089168f072c88858578535046d /arch/arm/mach-msm/proc_comm.c
parent711f77f53c5ff6aa61dbe8e5f518e50d6306e89d (diff)
parent7b52161d14fa8a22a2387f4aa2fb7b854587830d (diff)
Merge branch 'msm-core' of git://codeaurora.org/quic/kernel/dwalker/linux-msm
* 'msm-core' of git://codeaurora.org/quic/kernel/dwalker/linux-msm: (72 commits) msm: 7x30 Kconfig and makefile changes msm: clock support for the MSM7x30 CPU. msm: physical offset for MSM7X30 msm: io: add io support for 7x30 msm: Add extern for 7x30 clock list. msm: dma: add 7x30 security domain abstraction msm: update basic board layout for MSM7x30 msm: add devices-msm7x30.c msm: add msm_iomap-7x30.h for MSM7x30 support msm: irqs: add irqs-7x30.h for MSM7x30 support msm: 8x50 Kconfig changes msm: physical offset for QSD8x50 msm: io: add io support for 8x50 msm: add extern for 8x50 clock list. msm: add devices-qsd8x50.c msm: update basic board layout for QSD8x50 msm: add msm_iomap-8x50.h for QSD8x50 support msm: irqs: add irqs-8x50.h for QSD8x50 support msm: timer: allow MSM_DGT_BASE to be overriden msm: add Qualcomm 7x30 interrupt controller driver. ...
Diffstat (limited to 'arch/arm/mach-msm/proc_comm.c')
-rw-r--r--arch/arm/mach-msm/proc_comm.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/arch/arm/mach-msm/proc_comm.c b/arch/arm/mach-msm/proc_comm.c
index 915ee704ed3c..67e701c7f183 100644
--- a/arch/arm/mach-msm/proc_comm.c
+++ b/arch/arm/mach-msm/proc_comm.c
@@ -23,11 +23,18 @@
23 23
24#include "proc_comm.h" 24#include "proc_comm.h"
25 25
26#define MSM_A2M_INT(n) (MSM_CSR_BASE + 0x400 + (n) * 4) 26static inline void msm_a2m_int(uint32_t irq)
27{
28#if defined(CONFIG_ARCH_MSM7X30)
29 writel(1 << irq, MSM_GCC_BASE + 0x8);
30#else
31 writel(1, MSM_CSR_BASE + 0x400 + (irq * 4));
32#endif
33}
27 34
28static inline void notify_other_proc_comm(void) 35static inline void notify_other_proc_comm(void)
29{ 36{
30 writel(1, MSM_A2M_INT(6)); 37 msm_a2m_int(6);
31} 38}
32 39
33#define APP_COMMAND 0x00 40#define APP_COMMAND 0x00
@@ -107,4 +114,17 @@ int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2)
107 return ret; 114 return ret;
108} 115}
109 116
110 117/*
118 * We need to wait for the ARM9 to at least partially boot
119 * up before we can continue. Since the ARM9 does resource
120 * allocation, if we dont' wait we could end up crashing or in
121 * and unknown state. This function should be called early to
122 * wait on the ARM9.
123 */
124void __init proc_comm_boot_wait(void)
125{
126 void __iomem *base = MSM_SHARED_RAM_BASE;
127
128 proc_comm_wait_for(base + MDM_STATUS, PCOM_READY);
129
130}