diff options
Diffstat (limited to 'arch/arm/mach-msm/board-msm8x60.c')
-rw-r--r-- | arch/arm/mach-msm/board-msm8x60.c | 36 |
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 | ||
33 | static 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 | |||
44 | static void __init msm8x60_reserve(void) | ||
45 | { | ||
46 | memblock_remove(0x40000000, SZ_2M); | ||
47 | } | ||
31 | 48 | ||
32 | static void __init msm8x60_map_io(void) | 49 | static void __init msm8x60_map_io(void) |
33 | { | 50 | { |
@@ -36,8 +53,6 @@ static void __init msm8x60_map_io(void) | |||
36 | 53 | ||
37 | static void __init msm8x60_init_irq(void) | 54 | static 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 | ||
63 | static void __init msm8x60_init(void) | 69 | static void __init msm8x60_init(void) |
@@ -65,6 +71,8 @@ static void __init msm8x60_init(void) | |||
65 | } | 71 | } |
66 | 72 | ||
67 | MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3") | 73 | MACHINE_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") | |||
72 | MACHINE_END | 80 | MACHINE_END |
73 | 81 | ||
74 | MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF") | 82 | MACHINE_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") | |||
79 | MACHINE_END | 89 | MACHINE_END |
80 | 90 | ||
81 | MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR") | 91 | MACHINE_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") | |||
86 | MACHINE_END | 98 | MACHINE_END |
87 | 99 | ||
88 | MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA") | 100 | MACHINE_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, |