diff options
Diffstat (limited to 'arch/arm/mach-omap2')
| -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 |
5 files changed, 77 insertions, 5 deletions
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 3c2d325d3dca..29dc6f529058 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
| @@ -8,6 +8,9 @@ | |||
| 8 | * | 8 | * |
| 9 | * Based off of arch/arm/mach-omap/omap1/serial.c | 9 | * Based off of arch/arm/mach-omap/omap1/serial.c |
| 10 | * | 10 | * |
| 11 | * Copyright (C) 2009 Texas Instruments | ||
| 12 | * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com | ||
| 13 | * | ||
| 11 | * This file is subject to the terms and conditions of the GNU General Public | 14 | * This file is subject to the terms and conditions of the GNU General Public |
| 12 | * License. See the file "COPYING" in the main directory of this archive | 15 | * License. See the file "COPYING" in the main directory of this archive |
| 13 | * for more details. | 16 | * for more details. |
| @@ -122,6 +125,10 @@ void __init omap_serial_init(void) | |||
| 122 | 125 | ||
| 123 | if (info == NULL) | 126 | if (info == NULL) |
| 124 | return; | 127 | return; |
| 128 | if (cpu_is_omap44xx()) { | ||
| 129 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) | ||
| 130 | serial_platform_data[i].irq += 32; | ||
| 131 | } | ||
| 125 | 132 | ||
| 126 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { | 133 | for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { |
| 127 | struct plat_serial8250_port *p = serial_platform_data + i; | 134 | 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); |
