diff options
author | Afzal Mohammed <afzal@ti.com> | 2011-12-13 13:46:43 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2011-12-13 13:46:43 -0500 |
commit | 1e6cb146c39cdef1ffc340c13637fce2ba5575be (patch) | |
tree | 405d04dd8310f3445d83f47fda1b7bcda47daaa8 /arch/arm | |
parent | 995411953604e3c973328dda8c7807e45aca0f2b (diff) |
ARM: OMAP: am33xx: Update common OMAP machine specific sources
This patch updates the common machine specific source files for
support for AM33XX/AM335x with cpu type, macros for identification of
AM33XX/AM335X device.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
[tony@atomide.com: updated for map_io and common.h changes, dropped CK_AM33XX]
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap2/clock3xxx_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/common.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-omap2/common.h | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/id.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/io.c | 24 | ||||
-rw-r--r-- | arch/arm/mach-omap2/serial.c | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/am33xx.h | 25 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/hardware.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/io.h | 12 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/omap34xx.h | 2 |
11 files changed, 105 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index 5d0064a4fb5a..3d56d8a2b86e 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -3517,6 +3517,8 @@ int __init omap3xxx_clk_init(void) | |||
3517 | } else if (cpu_is_ti816x()) { | 3517 | } else if (cpu_is_ti816x()) { |
3518 | cpu_mask = RATE_IN_TI816X; | 3518 | cpu_mask = RATE_IN_TI816X; |
3519 | cpu_clkflg = CK_TI816X; | 3519 | cpu_clkflg = CK_TI816X; |
3520 | } else if (cpu_is_am33xx()) { | ||
3521 | cpu_mask = RATE_IN_AM33XX; | ||
3520 | } else if (cpu_is_omap34xx()) { | 3522 | } else if (cpu_is_omap34xx()) { |
3521 | if (omap_rev() == OMAP3430_REV_ES1_0) { | 3523 | if (omap_rev() == OMAP3430_REV_ES1_0) { |
3522 | cpu_mask = RATE_IN_3430ES1; | 3524 | cpu_mask = RATE_IN_3430ES1; |
diff --git a/arch/arm/mach-omap2/common.c b/arch/arm/mach-omap2/common.c index 684b8a7cd401..c900dcb6f1fd 100644 --- a/arch/arm/mach-omap2/common.c +++ b/arch/arm/mach-omap2/common.c | |||
@@ -128,6 +128,27 @@ void __init omap2_set_globals_ti816x(void) | |||
128 | { | 128 | { |
129 | __omap2_set_globals(&ti816x_globals); | 129 | __omap2_set_globals(&ti816x_globals); |
130 | } | 130 | } |
131 | |||
132 | #define AM33XX_TAP_BASE (AM33XX_CTRL_BASE + \ | ||
133 | TI816X_CONTROL_DEVICE_ID - 0x204) | ||
134 | |||
135 | static struct omap_globals am33xx_globals = { | ||
136 | .class = AM335X_CLASS, | ||
137 | .tap = AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE), | ||
138 | .ctrl = AM33XX_L4_WK_IO_ADDRESS(AM33XX_CTRL_BASE), | ||
139 | .prm = AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), | ||
140 | .cm = AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), | ||
141 | }; | ||
142 | |||
143 | void __init omap2_set_globals_am33xx(void) | ||
144 | { | ||
145 | __omap2_set_globals(&am33xx_globals); | ||
146 | } | ||
147 | |||
148 | void __init am33xx_map_io(void) | ||
149 | { | ||
150 | omapam33xx_map_common_io(); | ||
151 | } | ||
131 | #endif | 152 | #endif |
132 | 153 | ||
133 | #if defined(CONFIG_ARCH_OMAP4) | 154 | #if defined(CONFIG_ARCH_OMAP4) |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 012bac7d56a5..9b733e343bf5 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -60,6 +60,14 @@ static inline void omapti816x_map_common_io(void) | |||
60 | } | 60 | } |
61 | #endif | 61 | #endif |
62 | 62 | ||
63 | #ifdef CONFIG_SOC_OMAPAM33XX | ||
64 | extern void omapam33xx_map_common_io(void); | ||
65 | #else | ||
66 | static inline void omapam33xx_map_common_io(void) | ||
67 | { | ||
68 | } | ||
69 | #endif | ||
70 | |||
63 | #ifdef CONFIG_ARCH_OMAP4 | 71 | #ifdef CONFIG_ARCH_OMAP4 |
64 | extern void omap44xx_map_common_io(void); | 72 | extern void omap44xx_map_common_io(void); |
65 | #else | 73 | #else |
@@ -107,6 +115,7 @@ void omap2_set_globals_243x(void); | |||
107 | void omap2_set_globals_3xxx(void); | 115 | void omap2_set_globals_3xxx(void); |
108 | void omap2_set_globals_443x(void); | 116 | void omap2_set_globals_443x(void); |
109 | void omap2_set_globals_ti816x(void); | 117 | void omap2_set_globals_ti816x(void); |
118 | void omap2_set_globals_am33xx(void); | ||
110 | 119 | ||
111 | /* These get called from omap2_set_globals_xxxx(), do not call these */ | 120 | /* These get called from omap2_set_globals_xxxx(), do not call these */ |
112 | void omap2_set_globals_tap(struct omap_globals *); | 121 | void omap2_set_globals_tap(struct omap_globals *); |
@@ -117,6 +126,7 @@ void omap2_set_globals_prcm(struct omap_globals *); | |||
117 | void omap242x_map_io(void); | 126 | void omap242x_map_io(void); |
118 | void omap243x_map_io(void); | 127 | void omap243x_map_io(void); |
119 | void omap3_map_io(void); | 128 | void omap3_map_io(void); |
129 | void am33xx_map_io(void); | ||
120 | void omap4_map_io(void); | 130 | void omap4_map_io(void); |
121 | 131 | ||
122 | /** | 132 | /** |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 27ad722df637..7ab09f764600 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -340,6 +340,10 @@ static void __init omap3_check_revision(const char **cpu_rev) | |||
340 | break; | 340 | break; |
341 | } | 341 | } |
342 | break; | 342 | break; |
343 | case 0xb944: | ||
344 | omap_revision = AM335X_REV_ES1_0; | ||
345 | *cpu_rev = "1.0"; | ||
346 | break; | ||
343 | default: | 347 | default: |
344 | /* Unknown default to latest silicon rev as default */ | 348 | /* Unknown default to latest silicon rev as default */ |
345 | omap_revision = OMAP3630_REV_ES1_2; | 349 | omap_revision = OMAP3630_REV_ES1_2; |
@@ -432,6 +436,8 @@ static void __init omap3_cpuinfo(const char *cpu_rev) | |||
432 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; | 436 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; |
433 | } else if (cpu_is_ti816x()) { | 437 | } else if (cpu_is_ti816x()) { |
434 | cpu_name = "TI816X"; | 438 | cpu_name = "TI816X"; |
439 | } else if (cpu_is_am335x()) { | ||
440 | cpu_name = "AM335X"; | ||
435 | } else if (omap3_has_iva() && omap3_has_sgx()) { | 441 | } else if (omap3_has_iva() && omap3_has_sgx()) { |
436 | /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ | 442 | /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ |
437 | cpu_name = "OMAP3430/3530"; | 443 | cpu_name = "OMAP3430/3530"; |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 3f565dd2ea8d..088d2ba60eff 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -183,7 +183,24 @@ static struct map_desc omapti816x_io_desc[] __initdata = { | |||
183 | .pfn = __phys_to_pfn(L4_34XX_PHYS), | 183 | .pfn = __phys_to_pfn(L4_34XX_PHYS), |
184 | .length = L4_34XX_SIZE, | 184 | .length = L4_34XX_SIZE, |
185 | .type = MT_DEVICE | 185 | .type = MT_DEVICE |
186 | } | ||
187 | }; | ||
188 | #endif | ||
189 | |||
190 | #ifdef CONFIG_SOC_OMAPAM33XX | ||
191 | static struct map_desc omapam33xx_io_desc[] __initdata = { | ||
192 | { | ||
193 | .virtual = L4_34XX_VIRT, | ||
194 | .pfn = __phys_to_pfn(L4_34XX_PHYS), | ||
195 | .length = L4_34XX_SIZE, | ||
196 | .type = MT_DEVICE | ||
186 | }, | 197 | }, |
198 | { | ||
199 | .virtual = L4_WK_AM33XX_VIRT, | ||
200 | .pfn = __phys_to_pfn(L4_WK_AM33XX_PHYS), | ||
201 | .length = L4_WK_AM33XX_SIZE, | ||
202 | .type = MT_DEVICE | ||
203 | } | ||
187 | }; | 204 | }; |
188 | #endif | 205 | #endif |
189 | 206 | ||
@@ -270,6 +287,13 @@ void __init omapti816x_map_common_io(void) | |||
270 | } | 287 | } |
271 | #endif | 288 | #endif |
272 | 289 | ||
290 | #ifdef CONFIG_SOC_OMAPAM33XX | ||
291 | void __init omapam33xx_map_common_io(void) | ||
292 | { | ||
293 | iotable_init(omapam33xx_io_desc, ARRAY_SIZE(omapam33xx_io_desc)); | ||
294 | } | ||
295 | #endif | ||
296 | |||
273 | #ifdef CONFIG_ARCH_OMAP4 | 297 | #ifdef CONFIG_ARCH_OMAP4 |
274 | void __init omap44xx_map_common_io(void) | 298 | void __init omap44xx_map_common_io(void) |
275 | { | 299 | { |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index 42c326732a29..9770c7624aa0 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -464,7 +464,7 @@ static void omap_uart_idle_init(struct omap_uart_state *uart) | |||
464 | mod_timer(&uart->timer, jiffies + uart->timeout); | 464 | mod_timer(&uart->timer, jiffies + uart->timeout); |
465 | omap_uart_smart_idle_enable(uart, 0); | 465 | omap_uart_smart_idle_enable(uart, 0); |
466 | 466 | ||
467 | if (cpu_is_omap34xx() && !cpu_is_ti816x()) { | 467 | if (cpu_is_omap34xx() && !(cpu_is_ti816x() || cpu_is_am33xx())) { |
468 | u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD; | 468 | u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD; |
469 | u32 wk_mask = 0; | 469 | u32 wk_mask = 0; |
470 | u32 padconf = 0; | 470 | u32 padconf = 0; |
@@ -828,7 +828,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata) | |||
828 | } | 828 | } |
829 | 829 | ||
830 | /* Enable the MDR1 errata for OMAP3 */ | 830 | /* Enable the MDR1 errata for OMAP3 */ |
831 | if (cpu_is_omap34xx() && !cpu_is_ti816x()) | 831 | if (cpu_is_omap34xx() && !(cpu_is_ti816x() || cpu_is_am33xx())) |
832 | uart->errata |= UART_ERRATA_i202_MDR1_ACCESS; | 832 | uart->errata |= UART_ERRATA_i202_MDR1_ACCESS; |
833 | } | 833 | } |
834 | 834 | ||
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index 3df04d944e4d..9a584614e7e6 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile | |||
@@ -19,7 +19,6 @@ obj-$(CONFIG_ARCH_OMAP4) += omap_device.o | |||
19 | 19 | ||
20 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o | 20 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o |
21 | 21 | ||
22 | obj-$(CONFIG_CPU_FREQ) += cpu-omap.o | ||
23 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o | 22 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o |
24 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o | 23 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o |
25 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o | 24 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o |
diff --git a/arch/arm/plat-omap/include/plat/am33xx.h b/arch/arm/plat-omap/include/plat/am33xx.h new file mode 100644 index 000000000000..06c19bb7bca6 --- /dev/null +++ b/arch/arm/plat-omap/include/plat/am33xx.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * This file contains the address info for various AM33XX modules. | ||
3 | * | ||
4 | * Copyright (C) 2011 Texas Instruments, Inc. - http://www.ti.com/ | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License as | ||
8 | * published by the Free Software Foundation version 2. | ||
9 | * | ||
10 | * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||
11 | * kind, whether express or implied; without even the implied warranty | ||
12 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_AM33XX_H | ||
17 | #define __ASM_ARCH_AM33XX_H | ||
18 | |||
19 | #define L4_SLOW_AM33XX_BASE 0x48000000 | ||
20 | |||
21 | #define AM33XX_SCM_BASE 0x44E10000 | ||
22 | #define AM33XX_CTRL_BASE AM33XX_SCM_BASE | ||
23 | #define AM33XX_PRCM_BASE 0x44E00000 | ||
24 | |||
25 | #endif /* __ASM_ARCH_AM33XX_H */ | ||
diff --git a/arch/arm/plat-omap/include/plat/hardware.h b/arch/arm/plat-omap/include/plat/hardware.h index e87efe1499b8..e6521e120d9f 100644 --- a/arch/arm/plat-omap/include/plat/hardware.h +++ b/arch/arm/plat-omap/include/plat/hardware.h | |||
@@ -287,5 +287,6 @@ | |||
287 | #include <plat/omap34xx.h> | 287 | #include <plat/omap34xx.h> |
288 | #include <plat/omap44xx.h> | 288 | #include <plat/omap44xx.h> |
289 | #include <plat/ti816x.h> | 289 | #include <plat/ti816x.h> |
290 | #include <plat/am33xx.h> | ||
290 | 291 | ||
291 | #endif /* __ASM_ARCH_OMAP_HARDWARE_H */ | 292 | #endif /* __ASM_ARCH_OMAP_HARDWARE_H */ |
diff --git a/arch/arm/plat-omap/include/plat/io.h b/arch/arm/plat-omap/include/plat/io.h index 1234944a4da0..0696bae1818b 100644 --- a/arch/arm/plat-omap/include/plat/io.h +++ b/arch/arm/plat-omap/include/plat/io.h | |||
@@ -73,6 +73,9 @@ | |||
73 | #define OMAP4_L3_IO_OFFSET 0xb4000000 | 73 | #define OMAP4_L3_IO_OFFSET 0xb4000000 |
74 | #define OMAP4_L3_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_IO_OFFSET) /* L3 */ | 74 | #define OMAP4_L3_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_IO_OFFSET) /* L3 */ |
75 | 75 | ||
76 | #define AM33XX_L4_WK_IO_OFFSET 0xb5000000 | ||
77 | #define AM33XX_L4_WK_IO_ADDRESS(pa) IOMEM((pa) + AM33XX_L4_WK_IO_OFFSET) | ||
78 | |||
76 | #define OMAP4_L3_PER_IO_OFFSET 0xb1100000 | 79 | #define OMAP4_L3_PER_IO_OFFSET 0xb1100000 |
77 | #define OMAP4_L3_PER_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) | 80 | #define OMAP4_L3_PER_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) |
78 | 81 | ||
@@ -154,6 +157,15 @@ | |||
154 | #define L4_34XX_SIZE SZ_4M /* 1MB of 128MB used, want 1MB sect */ | 157 | #define L4_34XX_SIZE SZ_4M /* 1MB of 128MB used, want 1MB sect */ |
155 | 158 | ||
156 | /* | 159 | /* |
160 | * ---------------------------------------------------------------------------- | ||
161 | * AM33XX specific IO mapping | ||
162 | * ---------------------------------------------------------------------------- | ||
163 | */ | ||
164 | #define L4_WK_AM33XX_PHYS L4_WK_AM33XX_BASE | ||
165 | #define L4_WK_AM33XX_VIRT (L4_WK_AM33XX_PHYS + AM33XX_L4_WK_IO_OFFSET) | ||
166 | #define L4_WK_AM33XX_SIZE SZ_4M /* 1MB of 128MB used, want 1MB sect */ | ||
167 | |||
168 | /* | ||
157 | * Need to look at the Size 4M for L4. | 169 | * Need to look at the Size 4M for L4. |
158 | * VPOM3430 was not working for Int controller | 170 | * VPOM3430 was not working for Int controller |
159 | */ | 171 | */ |
diff --git a/arch/arm/plat-omap/include/plat/omap34xx.h b/arch/arm/plat-omap/include/plat/omap34xx.h index b9e85886b9d6..0d818acf3917 100644 --- a/arch/arm/plat-omap/include/plat/omap34xx.h +++ b/arch/arm/plat-omap/include/plat/omap34xx.h | |||
@@ -35,6 +35,8 @@ | |||
35 | #define L4_EMU_34XX_BASE 0x54000000 | 35 | #define L4_EMU_34XX_BASE 0x54000000 |
36 | #define L3_34XX_BASE 0x68000000 | 36 | #define L3_34XX_BASE 0x68000000 |
37 | 37 | ||
38 | #define L4_WK_AM33XX_BASE 0x44C00000 | ||
39 | |||
38 | #define OMAP3430_32KSYNCT_BASE 0x48320000 | 40 | #define OMAP3430_32KSYNCT_BASE 0x48320000 |
39 | #define OMAP3430_CM_BASE 0x48004800 | 41 | #define OMAP3430_CM_BASE 0x48004800 |
40 | #define OMAP3430_PRM_BASE 0x48306800 | 42 | #define OMAP3430_PRM_BASE 0x48306800 |