aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-msm/board-msm8x60.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-msm/board-msm8x60.c')
-rw-r--r--arch/arm/mach-msm/board-msm8x60.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c
index 1163b6fd05d2..106170fb1844 100644
--- a/arch/arm/mach-msm/board-msm8x60.c
+++ b/arch/arm/mach-msm/board-msm8x60.c
@@ -20,14 +20,31 @@
20#include <linux/platform_device.h> 20#include <linux/platform_device.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/irq.h> 22#include <linux/irq.h>
23#include <linux/memblock.h>
23 24
24#include <asm/mach-types.h> 25#include <asm/mach-types.h>
25#include <asm/mach/arch.h> 26#include <asm/mach/arch.h>
26#include <asm/hardware/gic.h> 27#include <asm/hardware/gic.h>
28#include <asm/setup.h>
27 29
28#include <mach/board.h> 30#include <mach/board.h>
29#include <mach/msm_iomap.h> 31#include <mach/msm_iomap.h>
30 32
33static void __init msm8x60_fixup(struct machine_desc *desc, struct tag *tag,
34 char **cmdline, struct meminfo *mi)
35{
36 for (; tag->hdr.size; tag = tag_next(tag))
37 if (tag->hdr.tag == ATAG_MEM &&
38 tag->u.mem.start == 0x40200000) {
39 tag->u.mem.start = 0x40000000;
40 tag->u.mem.size += SZ_2M;
41 }
42}
43
44static void __init msm8x60_reserve(void)
45{
46 memblock_remove(0x40000000, SZ_2M);
47}
31 48
32static void __init msm8x60_map_io(void) 49static void __init msm8x60_map_io(void)
33{ 50{
@@ -36,8 +53,6 @@ static void __init msm8x60_map_io(void)
36 53
37static void __init msm8x60_init_irq(void) 54static void __init msm8x60_init_irq(void)
38{ 55{
39 unsigned int i;
40
41 gic_init(0, GIC_PPI_START, MSM_QGIC_DIST_BASE, 56 gic_init(0, GIC_PPI_START, MSM_QGIC_DIST_BASE,
42 (void *)MSM_QGIC_CPU_BASE); 57 (void *)MSM_QGIC_CPU_BASE);
43 58
@@ -49,15 +64,6 @@ static void __init msm8x60_init_irq(void)
49 */ 64 */
50 if (!machine_is_msm8x60_sim()) 65 if (!machine_is_msm8x60_sim())
51 writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET); 66 writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET);
52
53 /* FIXME: Not installing AVS_SVICINT and AVS_SVICINTSWDONE yet
54 * as they are configured as level, which does not play nice with
55 * handle_percpu_irq.
56 */
57 for (i = GIC_PPI_START; i < GIC_SPI_START; i++) {
58 if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE)
59 irq_set_handler(i, handle_percpu_irq);
60 }
61} 67}
62 68
63static void __init msm8x60_init(void) 69static void __init msm8x60_init(void)
@@ -65,6 +71,8 @@ static void __init msm8x60_init(void)
65} 71}
66 72
67MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3") 73MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
74 .fixup = msm8x60_fixup,
75 .reserve = msm8x60_reserve,
68 .map_io = msm8x60_map_io, 76 .map_io = msm8x60_map_io,
69 .init_irq = msm8x60_init_irq, 77 .init_irq = msm8x60_init_irq,
70 .init_machine = msm8x60_init, 78 .init_machine = msm8x60_init,
@@ -72,6 +80,8 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
72MACHINE_END 80MACHINE_END
73 81
74MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF") 82MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
83 .fixup = msm8x60_fixup,
84 .reserve = msm8x60_reserve,
75 .map_io = msm8x60_map_io, 85 .map_io = msm8x60_map_io,
76 .init_irq = msm8x60_init_irq, 86 .init_irq = msm8x60_init_irq,
77 .init_machine = msm8x60_init, 87 .init_machine = msm8x60_init,
@@ -79,6 +89,8 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
79MACHINE_END 89MACHINE_END
80 90
81MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR") 91MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
92 .fixup = msm8x60_fixup,
93 .reserve = msm8x60_reserve,
82 .map_io = msm8x60_map_io, 94 .map_io = msm8x60_map_io,
83 .init_irq = msm8x60_init_irq, 95 .init_irq = msm8x60_init_irq,
84 .init_machine = msm8x60_init, 96 .init_machine = msm8x60_init,
@@ -86,6 +98,8 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
86MACHINE_END 98MACHINE_END
87 99
88MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA") 100MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA")
101 .fixup = msm8x60_fixup,
102 .reserve = msm8x60_reserve,
89 .map_io = msm8x60_map_io, 103 .map_io = msm8x60_map_io,
90 .init_irq = msm8x60_init_irq, 104 .init_irq = msm8x60_init_irq,
91 .init_machine = msm8x60_init, 105 .init_machine = msm8x60_init,