diff options
author | Tony Lindgren <tony@atomide.com> | 2009-05-28 18:45:14 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-05-28 18:45:14 -0400 |
commit | cd07ecc828486e5887113c7dc4d9f9022145811b (patch) | |
tree | f3950d6077a794d4500244b2f372c6912af15eec /arch/arm/mach-omap2 | |
parent | 4c50d22a0cf240918d53afbf9a8416a9d93aacee (diff) | |
parent | b04e8975e70d9b2bc27c017f92b356b312692544 (diff) |
Merge branch 'omap4' into for-next
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 94 | ||||
-rw-r--r-- | arch/arm/mach-omap2/gpmc.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/id.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/io.c | 52 | ||||
-rw-r--r-- | arch/arm/mach-omap2/serial.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/timer-gp.c | 9 |
8 files changed, 179 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index b5c9088a6a4e..a755eb5e2361 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -25,7 +25,7 @@ config ARCH_OMAP3430 | |||
25 | select ARCH_OMAP_OTG | 25 | select ARCH_OMAP_OTG |
26 | 26 | ||
27 | comment "OMAP Board Type" | 27 | comment "OMAP Board Type" |
28 | depends on ARCH_OMAP2 || ARCH_OMAP3 | 28 | depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP4 |
29 | 29 | ||
30 | config MACH_OMAP_GENERIC | 30 | config MACH_OMAP_GENERIC |
31 | bool "Generic OMAP board" | 31 | bool "Generic OMAP board" |
@@ -75,3 +75,7 @@ config MACH_NOKIA_RX51 | |||
75 | config MACH_OMAP_ZOOM2 | 75 | config MACH_OMAP_ZOOM2 |
76 | bool "OMAP3 Zoom2 board" | 76 | bool "OMAP3 Zoom2 board" |
77 | depends on ARCH_OMAP3 && ARCH_OMAP34XX | 77 | depends on ARCH_OMAP3 && ARCH_OMAP34XX |
78 | |||
79 | config MACH_OMAP_4430SDP | ||
80 | bool "OMAP 4430 SDP board" | ||
81 | depends on ARCH_OMAP4 | ||
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index c48b12c0fe2d..3a48f2fb0ca0 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -60,6 +60,9 @@ obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \ | |||
60 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom2.o \ | 60 | obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom2.o \ |
61 | mmc-twl4030.o \ | 61 | mmc-twl4030.o \ |
62 | board-zoom-debugboard.o | 62 | board-zoom-debugboard.o |
63 | |||
64 | obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o | ||
65 | |||
63 | # Platform specific device init code | 66 | # Platform specific device init code |
64 | obj-y += usb-musb.o | 67 | obj-y += usb-musb.o |
65 | 68 | ||
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c new file mode 100644 index 000000000000..57e477bd89c6 --- /dev/null +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * Board support file for OMAP4430 SDP. | ||
3 | * | ||
4 | * Copyright (C) 2009 Texas Instruments | ||
5 | * | ||
6 | * Author: Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
7 | * | ||
8 | * Based on mach-omap2/board-3430sdp.c | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/io.h> | ||
19 | #include <linux/gpio.h> | ||
20 | |||
21 | #include <mach/hardware.h> | ||
22 | #include <asm/mach-types.h> | ||
23 | #include <asm/mach/arch.h> | ||
24 | #include <asm/mach/map.h> | ||
25 | |||
26 | #include <mach/board.h> | ||
27 | #include <mach/common.h> | ||
28 | #include <mach/control.h> | ||
29 | #include <mach/timer-gp.h> | ||
30 | #include <asm/hardware/gic.h> | ||
31 | |||
32 | static struct platform_device sdp4430_lcd_device = { | ||
33 | .name = "sdp4430_lcd", | ||
34 | .id = -1, | ||
35 | }; | ||
36 | |||
37 | static struct platform_device *sdp4430_devices[] __initdata = { | ||
38 | &sdp4430_lcd_device, | ||
39 | }; | ||
40 | |||
41 | static struct omap_uart_config sdp4430_uart_config __initdata = { | ||
42 | .enabled_uarts = (1 << 0) | (1 << 1) | (1 << 2), | ||
43 | }; | ||
44 | |||
45 | static struct omap_lcd_config sdp4430_lcd_config __initdata = { | ||
46 | .ctrl_name = "internal", | ||
47 | }; | ||
48 | |||
49 | static struct omap_board_config_kernel sdp4430_config[] __initdata = { | ||
50 | { OMAP_TAG_UART, &sdp4430_uart_config }, | ||
51 | { OMAP_TAG_LCD, &sdp4430_lcd_config }, | ||
52 | }; | ||
53 | |||
54 | static void __init gic_init_irq(void) | ||
55 | { | ||
56 | gic_dist_init(0, IO_ADDRESS(OMAP44XX_GIC_DIST_BASE), 29); | ||
57 | gic_cpu_init(0, IO_ADDRESS(OMAP44XX_GIC_CPU_BASE)); | ||
58 | } | ||
59 | |||
60 | static void __init omap_4430sdp_init_irq(void) | ||
61 | { | ||
62 | omap2_init_common_hw(NULL); | ||
63 | #ifdef CONFIG_OMAP_32K_TIMER | ||
64 | omap2_gp_clockevent_set_gptimer(1); | ||
65 | #endif | ||
66 | gic_init_irq(); | ||
67 | omap_gpio_init(); | ||
68 | } | ||
69 | |||
70 | |||
71 | static void __init omap_4430sdp_init(void) | ||
72 | { | ||
73 | platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices)); | ||
74 | omap_board_config = sdp4430_config; | ||
75 | omap_board_config_size = ARRAY_SIZE(sdp4430_config); | ||
76 | omap_serial_init(); | ||
77 | } | ||
78 | |||
79 | static void __init omap_4430sdp_map_io(void) | ||
80 | { | ||
81 | omap2_set_globals_443x(); | ||
82 | omap2_map_common_io(); | ||
83 | } | ||
84 | |||
85 | MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") | ||
86 | /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */ | ||
87 | .phys_io = 0x48000000, | ||
88 | .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, | ||
89 | .boot_params = 0x80000100, | ||
90 | .map_io = omap_4430sdp_map_io, | ||
91 | .init_irq = omap_4430sdp_init_irq, | ||
92 | .init_machine = omap_4430sdp_init, | ||
93 | .timer = &omap_timer, | ||
94 | MACHINE_END | ||
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 2249049c1d5a..f91934b2b092 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -5,6 +5,9 @@ | |||
5 | * | 5 | * |
6 | * Author: Juha Yrjola | 6 | * Author: Juha Yrjola |
7 | * | 7 | * |
8 | * Copyright (C) 2009 Texas Instruments | ||
9 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
10 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
@@ -424,6 +427,9 @@ void __init gpmc_init(void) | |||
424 | } else if (cpu_is_omap34xx()) { | 427 | } else if (cpu_is_omap34xx()) { |
425 | ck = "gpmc_fck"; | 428 | ck = "gpmc_fck"; |
426 | l = OMAP34XX_GPMC_BASE; | 429 | l = OMAP34XX_GPMC_BASE; |
430 | } else if (cpu_is_omap44xx()) { | ||
431 | ck = "gpmc_fck"; | ||
432 | l = OMAP44XX_GPMC_BASE; | ||
427 | } | 433 | } |
428 | 434 | ||
429 | gpmc_l3_clk = clk_get(NULL, ck); | 435 | gpmc_l3_clk = clk_get(NULL, ck); |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 34b5914e0f8b..458990e20c60 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -6,6 +6,9 @@ | |||
6 | * Copyright (C) 2005 Nokia Corporation | 6 | * Copyright (C) 2005 Nokia Corporation |
7 | * Written by Tony Lindgren <tony@atomide.com> | 7 | * Written by Tony Lindgren <tony@atomide.com> |
8 | * | 8 | * |
9 | * Copyright (C) 2009 Texas Instruments | ||
10 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
11 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | 12 | * This program is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License version 2 as | 13 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 14 | * published by the Free Software Foundation. |
@@ -200,7 +203,10 @@ void __init omap2_check_revision(void) | |||
200 | omap24xx_check_revision(); | 203 | omap24xx_check_revision(); |
201 | else if (cpu_is_omap34xx()) | 204 | else if (cpu_is_omap34xx()) |
202 | omap34xx_check_revision(); | 205 | omap34xx_check_revision(); |
203 | else | 206 | else if (cpu_is_omap44xx()) { |
207 | printk(KERN_INFO "FIXME: CPU revision = OMAP4430\n"); | ||
208 | return; | ||
209 | } else | ||
204 | pr_err("OMAP revision unknown, please fix!\n"); | 210 | pr_err("OMAP revision unknown, please fix!\n"); |
205 | 211 | ||
206 | /* | 212 | /* |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 916fcd3a2328..32afd9448216 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -4,12 +4,14 @@ | |||
4 | * OMAP2 I/O mapping code | 4 | * OMAP2 I/O mapping code |
5 | * | 5 | * |
6 | * Copyright (C) 2005 Nokia Corporation | 6 | * Copyright (C) 2005 Nokia Corporation |
7 | * Copyright (C) 2007 Texas Instruments | 7 | * Copyright (C) 2007-2009 Texas Instruments |
8 | * | 8 | * |
9 | * Author: | 9 | * Author: |
10 | * Juha Yrjola <juha.yrjola@nokia.com> | 10 | * Juha Yrjola <juha.yrjola@nokia.com> |
11 | * Syed Khasim <x0khasim@ti.com> | 11 | * Syed Khasim <x0khasim@ti.com> |
12 | * | 12 | * |
13 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
14 | * | ||
13 | * This program is free software; you can redistribute it and/or modify | 15 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License version 2 as | 16 | * it under the terms of the GNU General Public License version 2 as |
15 | * published by the Free Software Foundation. | 17 | * published by the Free Software Foundation. |
@@ -30,6 +32,7 @@ | |||
30 | #include <mach/sdrc.h> | 32 | #include <mach/sdrc.h> |
31 | #include <mach/gpmc.h> | 33 | #include <mach/gpmc.h> |
32 | 34 | ||
35 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once clkdev is ready */ | ||
33 | #include "clock.h" | 36 | #include "clock.h" |
34 | 37 | ||
35 | #include <mach/powerdomain.h> | 38 | #include <mach/powerdomain.h> |
@@ -38,7 +41,7 @@ | |||
38 | 41 | ||
39 | #include <mach/clockdomain.h> | 42 | #include <mach/clockdomain.h> |
40 | #include "clockdomains.h" | 43 | #include "clockdomains.h" |
41 | 44 | #endif | |
42 | /* | 45 | /* |
43 | * The machine specific code may provide the extra mapping besides the | 46 | * The machine specific code may provide the extra mapping besides the |
44 | * default mapping provided here. | 47 | * default mapping provided here. |
@@ -166,6 +169,46 @@ static struct map_desc omap34xx_io_desc[] __initdata = { | |||
166 | }, | 169 | }, |
167 | }; | 170 | }; |
168 | #endif | 171 | #endif |
172 | #ifdef CONFIG_ARCH_OMAP4 | ||
173 | static struct map_desc omap44xx_io_desc[] __initdata = { | ||
174 | { | ||
175 | .virtual = L3_44XX_VIRT, | ||
176 | .pfn = __phys_to_pfn(L3_44XX_PHYS), | ||
177 | .length = L3_44XX_SIZE, | ||
178 | .type = MT_DEVICE, | ||
179 | }, | ||
180 | { | ||
181 | .virtual = L4_44XX_VIRT, | ||
182 | .pfn = __phys_to_pfn(L4_44XX_PHYS), | ||
183 | .length = L4_44XX_SIZE, | ||
184 | .type = MT_DEVICE, | ||
185 | }, | ||
186 | { | ||
187 | .virtual = L4_WK_44XX_VIRT, | ||
188 | .pfn = __phys_to_pfn(L4_WK_44XX_PHYS), | ||
189 | .length = L4_WK_44XX_SIZE, | ||
190 | .type = MT_DEVICE, | ||
191 | }, | ||
192 | { | ||
193 | .virtual = OMAP44XX_GPMC_VIRT, | ||
194 | .pfn = __phys_to_pfn(OMAP44XX_GPMC_PHYS), | ||
195 | .length = OMAP44XX_GPMC_SIZE, | ||
196 | .type = MT_DEVICE, | ||
197 | }, | ||
198 | { | ||
199 | .virtual = L4_PER_44XX_VIRT, | ||
200 | .pfn = __phys_to_pfn(L4_PER_44XX_PHYS), | ||
201 | .length = L4_PER_44XX_SIZE, | ||
202 | .type = MT_DEVICE, | ||
203 | }, | ||
204 | { | ||
205 | .virtual = L4_EMU_44XX_VIRT, | ||
206 | .pfn = __phys_to_pfn(L4_EMU_44XX_PHYS), | ||
207 | .length = L4_EMU_44XX_SIZE, | ||
208 | .type = MT_DEVICE, | ||
209 | }, | ||
210 | }; | ||
211 | #endif | ||
169 | 212 | ||
170 | void __init omap2_map_common_io(void) | 213 | void __init omap2_map_common_io(void) |
171 | { | 214 | { |
@@ -183,6 +226,9 @@ void __init omap2_map_common_io(void) | |||
183 | iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc)); | 226 | iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc)); |
184 | #endif | 227 | #endif |
185 | 228 | ||
229 | #if defined(CONFIG_ARCH_OMAP4) | ||
230 | iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc)); | ||
231 | #endif | ||
186 | /* Normally devicemaps_init() would flush caches and tlb after | 232 | /* Normally devicemaps_init() would flush caches and tlb after |
187 | * mdesc->map_io(), but we must also do it here because of the CPU | 233 | * mdesc->map_io(), but we must also do it here because of the CPU |
188 | * revision check below. | 234 | * revision check below. |
@@ -198,9 +244,11 @@ void __init omap2_map_common_io(void) | |||
198 | void __init omap2_init_common_hw(struct omap_sdrc_params *sp) | 244 | void __init omap2_init_common_hw(struct omap_sdrc_params *sp) |
199 | { | 245 | { |
200 | omap2_mux_init(); | 246 | omap2_mux_init(); |
247 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ | ||
201 | pwrdm_init(powerdomains_omap); | 248 | pwrdm_init(powerdomains_omap); |
202 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); | 249 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); |
203 | omap2_clk_init(); | 250 | omap2_clk_init(); |
204 | omap2_sdrc_init(sp); | 251 | omap2_sdrc_init(sp); |
252 | #endif | ||
205 | gpmc_init(); | 253 | gpmc_init(); |
206 | } | 254 | } |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index fddbc4e1b231..b094c15bfe47 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -10,6 +10,9 @@ | |||
10 | * | 10 | * |
11 | * Based off of arch/arm/mach-omap/omap1/serial.c | 11 | * Based off of arch/arm/mach-omap/omap1/serial.c |
12 | * | 12 | * |
13 | * Copyright (C) 2009 Texas Instruments | ||
14 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com | ||
15 | * | ||
13 | * This file is subject to the terms and conditions of the GNU General Public | 16 | * This file is subject to the terms and conditions of the GNU General Public |
14 | * License. See the file "COPYING" in the main directory of this archive | 17 | * License. See the file "COPYING" in the main directory of this archive |
15 | * for more details. | 18 | * for more details. |
@@ -493,6 +496,10 @@ void __init omap_serial_init(void) | |||
493 | 496 | ||
494 | if (info == NULL) | 497 | if (info == NULL) |
495 | return; | 498 | return; |
499 | if (cpu_is_omap44xx()) { | ||
500 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) | ||
501 | serial_platform_data[i].irq += 32; | ||
502 | } | ||
496 | 503 | ||
497 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { | 504 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { |
498 | struct plat_serial8250_port *p = serial_platform_data + i; | 505 | struct plat_serial8250_port *p = serial_platform_data + i; |
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index f36aba12090e..2ce474a9d2b6 100644 --- a/arch/arm/mach-omap2/timer-gp.c +++ b/arch/arm/mach-omap2/timer-gp.c | |||
@@ -17,9 +17,10 @@ | |||
17 | * | 17 | * |
18 | * Some parts based off of TI's 24xx code: | 18 | * Some parts based off of TI's 24xx code: |
19 | * | 19 | * |
20 | * Copyright (C) 2004 Texas Instruments, Inc. | 20 | * Copyright (C) 2004-2009 Texas Instruments, Inc. |
21 | * | 21 | * |
22 | * Roughly modelled after the OMAP1 MPU timer code. | 22 | * Roughly modelled after the OMAP1 MPU timer code. |
23 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> | ||
23 | * | 24 | * |
24 | * This file is subject to the terms and conditions of the GNU General Public | 25 | * This file is subject to the terms and conditions of the GNU General Public |
25 | * License. See the file "COPYING" in the main directory of this archive | 26 | * License. See the file "COPYING" in the main directory of this archive |
@@ -82,7 +83,8 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode, | |||
82 | case CLOCK_EVT_MODE_PERIODIC: | 83 | case CLOCK_EVT_MODE_PERIODIC: |
83 | period = clk_get_rate(omap_dm_timer_get_fclk(gptimer)) / HZ; | 84 | period = clk_get_rate(omap_dm_timer_get_fclk(gptimer)) / HZ; |
84 | period -= 1; | 85 | period -= 1; |
85 | 86 | if (cpu_is_omap44xx()) | |
87 | period = 0xff; /* FIXME: */ | ||
86 | omap_dm_timer_set_load_start(gptimer, 1, 0xffffffff - period); | 88 | omap_dm_timer_set_load_start(gptimer, 1, 0xffffffff - period); |
87 | break; | 89 | break; |
88 | case CLOCK_EVT_MODE_ONESHOT: | 90 | case CLOCK_EVT_MODE_ONESHOT: |
@@ -145,6 +147,9 @@ static void __init omap2_gp_clockevent_init(void) | |||
145 | "timer-gp: omap_dm_timer_set_source() failed\n"); | 147 | "timer-gp: omap_dm_timer_set_source() failed\n"); |
146 | 148 | ||
147 | tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer)); | 149 | tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer)); |
150 | if (cpu_is_omap44xx()) | ||
151 | /* Assuming 32kHz clk is driving GPT1 */ | ||
152 | tick_rate = 32768; /* FIXME: */ | ||
148 | 153 | ||
149 | pr_info("OMAP clockevent source: GPTIMER%d at %u Hz\n", | 154 | pr_info("OMAP clockevent source: GPTIMER%d at %u Hz\n", |
150 | gptimer_id, tick_rate); | 155 | gptimer_id, tick_rate); |