diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-19 16:35:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-19 16:35:07 -0400 |
commit | e4e47eb15b7884963efe7f98231009c5770a2c3d (patch) | |
tree | ebd3536a3aa728089168f072c88858578535046d /arch/arm/mach-msm/proc_comm.c | |
parent | 711f77f53c5ff6aa61dbe8e5f518e50d6306e89d (diff) | |
parent | 7b52161d14fa8a22a2387f4aa2fb7b854587830d (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.c | 26 |
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) | 26 | static 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 | ||
28 | static inline void notify_other_proc_comm(void) | 35 | static 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 | */ | ||
124 | void __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 | } | ||