diff options
author | Tony Lindgren <tony@atomide.com> | 2005-09-08 18:07:38 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-09-08 18:07:38 -0400 |
commit | 7c38cf021b42a4297bc8f860ab627734bdd6c8d1 (patch) | |
tree | 89c3b807ca90f5c7e5692ddbcd388511dc289530 /arch/arm/mach-omap1/io.c | |
parent | d7b6b3589471c3856f1e6dc9c77abc4af962ffdb (diff) |
[ARM] 2890/1: OMAP 1/4: Update omap1 specific files, take 2
Patch from Tony Lindgren
This patch syncs the mainline kernel with linux-omap tree.
The highlights of the patch are:
- Convert more drivers to register resources in board-*.c to take
advantage of the driver model by David Brownell and Ladislav Michl
- Use set_irq_type() for GPIO interrupts instead of
omap_set_gpio_edge_ctrl() by David Brownell
- Add minimal support for handling optional add-on boards, such as
OSK Mistral board with LCD and keypad, by David Brownell
- Minimal support for loading functions to SRAM by Tony Lindgren
- Wake up from serial port by muxing RX lines temporarily into GPIO
interrupts by Tony Lindgren
- 32KHz sched_clock by Tony Lindgren and Juha Yrjola
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-omap1/io.c')
-rw-r--r-- | arch/arm/mach-omap1/io.c | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 207df0fe934d..eb8261d7dead 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | extern int clk_init(void); | 20 | extern int clk_init(void); |
21 | extern void omap_check_revision(void); | 21 | extern void omap_check_revision(void); |
22 | extern void omap_sram_init(void); | ||
22 | 23 | ||
23 | /* | 24 | /* |
24 | * The machine specific code may provide the extra mapping besides the | 25 | * The machine specific code may provide the extra mapping besides the |
@@ -32,7 +33,6 @@ static struct map_desc omap_io_desc[] __initdata = { | |||
32 | static struct map_desc omap730_io_desc[] __initdata = { | 33 | static struct map_desc omap730_io_desc[] __initdata = { |
33 | { OMAP730_DSP_BASE, OMAP730_DSP_START, OMAP730_DSP_SIZE, MT_DEVICE }, | 34 | { OMAP730_DSP_BASE, OMAP730_DSP_START, OMAP730_DSP_SIZE, MT_DEVICE }, |
34 | { OMAP730_DSPREG_BASE, OMAP730_DSPREG_START, OMAP730_DSPREG_SIZE, MT_DEVICE }, | 35 | { OMAP730_DSPREG_BASE, OMAP730_DSPREG_START, OMAP730_DSPREG_SIZE, MT_DEVICE }, |
35 | { OMAP730_SRAM_BASE, OMAP730_SRAM_START, OMAP730_SRAM_SIZE, MT_DEVICE } | ||
36 | }; | 36 | }; |
37 | #endif | 37 | #endif |
38 | 38 | ||
@@ -40,27 +40,13 @@ static struct map_desc omap730_io_desc[] __initdata = { | |||
40 | static struct map_desc omap1510_io_desc[] __initdata = { | 40 | static struct map_desc omap1510_io_desc[] __initdata = { |
41 | { OMAP1510_DSP_BASE, OMAP1510_DSP_START, OMAP1510_DSP_SIZE, MT_DEVICE }, | 41 | { OMAP1510_DSP_BASE, OMAP1510_DSP_START, OMAP1510_DSP_SIZE, MT_DEVICE }, |
42 | { OMAP1510_DSPREG_BASE, OMAP1510_DSPREG_START, OMAP1510_DSPREG_SIZE, MT_DEVICE }, | 42 | { OMAP1510_DSPREG_BASE, OMAP1510_DSPREG_START, OMAP1510_DSPREG_SIZE, MT_DEVICE }, |
43 | { OMAP1510_SRAM_BASE, OMAP1510_SRAM_START, OMAP1510_SRAM_SIZE, MT_DEVICE } | ||
44 | }; | 43 | }; |
45 | #endif | 44 | #endif |
46 | 45 | ||
47 | #if defined(CONFIG_ARCH_OMAP16XX) | 46 | #if defined(CONFIG_ARCH_OMAP16XX) |
48 | static struct map_desc omap1610_io_desc[] __initdata = { | 47 | static struct map_desc omap16xx_io_desc[] __initdata = { |
49 | { OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE }, | 48 | { OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE }, |
50 | { OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE }, | 49 | { OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE }, |
51 | { OMAP16XX_SRAM_BASE, OMAP16XX_SRAM_START, OMAP1610_SRAM_SIZE, MT_DEVICE } | ||
52 | }; | ||
53 | |||
54 | static struct map_desc omap5912_io_desc[] __initdata = { | ||
55 | { OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE }, | ||
56 | { OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE }, | ||
57 | /* | ||
58 | * The OMAP5912 has 250kByte internal SRAM. Because the mapping is baseed on page | ||
59 | * size (4kByte), it seems that the last 2kByte (=0x800) of the 250kByte are not mapped. | ||
60 | * Add additional 2kByte (0x800) so that the last page is mapped and the last 2kByte | ||
61 | * can be used. | ||
62 | */ | ||
63 | { OMAP16XX_SRAM_BASE, OMAP16XX_SRAM_START, OMAP5912_SRAM_SIZE + 0x800, MT_DEVICE } | ||
64 | }; | 50 | }; |
65 | #endif | 51 | #endif |
66 | 52 | ||
@@ -86,14 +72,13 @@ static void __init _omap_map_io(void) | |||
86 | } | 72 | } |
87 | #endif | 73 | #endif |
88 | #if defined(CONFIG_ARCH_OMAP16XX) | 74 | #if defined(CONFIG_ARCH_OMAP16XX) |
89 | if (cpu_is_omap1610() || cpu_is_omap1710()) { | 75 | if (cpu_is_omap16xx()) { |
90 | iotable_init(omap1610_io_desc, ARRAY_SIZE(omap1610_io_desc)); | 76 | iotable_init(omap16xx_io_desc, ARRAY_SIZE(omap16xx_io_desc)); |
91 | } | ||
92 | if (cpu_is_omap5912()) { | ||
93 | iotable_init(omap5912_io_desc, ARRAY_SIZE(omap5912_io_desc)); | ||
94 | } | 77 | } |
95 | #endif | 78 | #endif |
96 | 79 | ||
80 | omap_sram_init(); | ||
81 | |||
97 | /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort | 82 | /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort |
98 | * on a Posted Write in the TIPB Bridge". | 83 | * on a Posted Write in the TIPB Bridge". |
99 | */ | 84 | */ |
@@ -108,8 +93,9 @@ static void __init _omap_map_io(void) | |||
108 | /* | 93 | /* |
109 | * This should only get called from board specific init | 94 | * This should only get called from board specific init |
110 | */ | 95 | */ |
111 | void omap_map_common_io(void) | 96 | void __init omap_map_common_io(void) |
112 | { | 97 | { |
113 | if (!initialized) | 98 | if (!initialized) |
114 | _omap_map_io(); | 99 | _omap_map_io(); |
115 | } | 100 | } |
101 | |||