diff options
Diffstat (limited to 'arch/arm/mach-omap1')
26 files changed, 293 insertions, 48 deletions
diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig index 10a301e32434..3f325d3718a9 100644 --- a/arch/arm/mach-omap1/Kconfig +++ b/arch/arm/mach-omap1/Kconfig | |||
@@ -7,6 +7,11 @@ config ARCH_OMAP730 | |||
7 | select CPU_ARM926T | 7 | select CPU_ARM926T |
8 | select ARCH_OMAP_OTG | 8 | select ARCH_OMAP_OTG |
9 | 9 | ||
10 | config ARCH_OMAP850 | ||
11 | depends on ARCH_OMAP1 | ||
12 | bool "OMAP850 Based System" | ||
13 | select CPU_ARM926T | ||
14 | |||
10 | config ARCH_OMAP15XX | 15 | config ARCH_OMAP15XX |
11 | depends on ARCH_OMAP1 | 16 | depends on ARCH_OMAP1 |
12 | default y | 17 | default y |
@@ -46,6 +51,12 @@ config MACH_OMAP_H3 | |||
46 | TI OMAP 1710 H3 board support. Say Y here if you have such | 51 | TI OMAP 1710 H3 board support. Say Y here if you have such |
47 | a board. | 52 | a board. |
48 | 53 | ||
54 | config MACH_OMAP_HTCWIZARD | ||
55 | bool "HTC Wizard" | ||
56 | depends on ARCH_OMAP850 | ||
57 | help | ||
58 | HTC Wizard smartphone support (AKA QTEK 9100, ...) | ||
59 | |||
49 | config MACH_OMAP_OSK | 60 | config MACH_OMAP_OSK |
50 | bool "TI OSK Support" | 61 | bool "TI OSK Support" |
51 | depends on ARCH_OMAP1 && ARCH_OMAP16XX | 62 | depends on ARCH_OMAP1 && ARCH_OMAP16XX |
@@ -163,7 +174,7 @@ config OMAP_ARM_216MHZ | |||
163 | 174 | ||
164 | config OMAP_ARM_195MHZ | 175 | config OMAP_ARM_195MHZ |
165 | bool "OMAP ARM 195 MHz CPU" | 176 | bool "OMAP ARM 195 MHz CPU" |
166 | depends on ARCH_OMAP1 && ARCH_OMAP730 | 177 | depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850) |
167 | help | 178 | help |
168 | Enable 195MHz clock for OMAP CPU. If unsure, say N. | 179 | Enable 195MHz clock for OMAP CPU. If unsure, say N. |
169 | 180 | ||
@@ -175,13 +186,13 @@ config OMAP_ARM_192MHZ | |||
175 | 186 | ||
176 | config OMAP_ARM_182MHZ | 187 | config OMAP_ARM_182MHZ |
177 | bool "OMAP ARM 182 MHz CPU" | 188 | bool "OMAP ARM 182 MHz CPU" |
178 | depends on ARCH_OMAP1 && ARCH_OMAP730 | 189 | depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850) |
179 | help | 190 | help |
180 | Enable 182MHz clock for OMAP CPU. If unsure, say N. | 191 | Enable 182MHz clock for OMAP CPU. If unsure, say N. |
181 | 192 | ||
182 | config OMAP_ARM_168MHZ | 193 | config OMAP_ARM_168MHZ |
183 | bool "OMAP ARM 168 MHz CPU" | 194 | bool "OMAP ARM 168 MHz CPU" |
184 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730) | 195 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850) |
185 | help | 196 | help |
186 | Enable 168MHz clock for OMAP CPU. If unsure, say N. | 197 | Enable 168MHz clock for OMAP CPU. If unsure, say N. |
187 | 198 | ||
@@ -193,20 +204,20 @@ config OMAP_ARM_150MHZ | |||
193 | 204 | ||
194 | config OMAP_ARM_120MHZ | 205 | config OMAP_ARM_120MHZ |
195 | bool "OMAP ARM 120 MHz CPU" | 206 | bool "OMAP ARM 120 MHz CPU" |
196 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730) | 207 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850) |
197 | help | 208 | help |
198 | Enable 120MHz clock for OMAP CPU. If unsure, say N. | 209 | Enable 120MHz clock for OMAP CPU. If unsure, say N. |
199 | 210 | ||
200 | config OMAP_ARM_60MHZ | 211 | config OMAP_ARM_60MHZ |
201 | bool "OMAP ARM 60 MHz CPU" | 212 | bool "OMAP ARM 60 MHz CPU" |
202 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730) | 213 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850) |
203 | default y | 214 | default y |
204 | help | 215 | help |
205 | Enable 60MHz clock for OMAP CPU. If unsure, say Y. | 216 | Enable 60MHz clock for OMAP CPU. If unsure, say Y. |
206 | 217 | ||
207 | config OMAP_ARM_30MHZ | 218 | config OMAP_ARM_30MHZ |
208 | bool "OMAP ARM 30 MHz CPU" | 219 | bool "OMAP ARM 30 MHz CPU" |
209 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730) | 220 | depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850) |
210 | help | 221 | help |
211 | Enable 30MHz clock for OMAP CPU. If unsure, say N. | 222 | Enable 30MHz clock for OMAP CPU. If unsure, say N. |
212 | 223 | ||
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 2e618391cc51..8b40aace9db4 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -175,7 +175,6 @@ static struct omap_usb_config ams_delta_usb_config __initdata = { | |||
175 | static struct omap_board_config_kernel ams_delta_config[] = { | 175 | static struct omap_board_config_kernel ams_delta_config[] = { |
176 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, | 176 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, |
177 | { OMAP_TAG_UART, &ams_delta_uart_config }, | 177 | { OMAP_TAG_UART, &ams_delta_uart_config }, |
178 | { OMAP_TAG_USB, &ams_delta_usb_config }, | ||
179 | }; | 178 | }; |
180 | 179 | ||
181 | static struct resource ams_delta_kp_resources[] = { | 180 | static struct resource ams_delta_kp_resources[] = { |
@@ -232,6 +231,7 @@ static void __init ams_delta_init(void) | |||
232 | /* Clear latch2 (NAND, LCD, modem enable) */ | 231 | /* Clear latch2 (NAND, LCD, modem enable) */ |
233 | ams_delta_latch2_write(~0, 0); | 232 | ams_delta_latch2_write(~0, 0); |
234 | 233 | ||
234 | omap_usb_init(&ams_delta_usb_config); | ||
235 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); | 235 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); |
236 | } | 236 | } |
237 | 237 | ||
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 30308294e7c1..19e0e9232336 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -34,7 +34,39 @@ | |||
34 | #include <mach/keypad.h> | 34 | #include <mach/keypad.h> |
35 | #include <mach/common.h> | 35 | #include <mach/common.h> |
36 | #include <mach/board.h> | 36 | #include <mach/board.h> |
37 | #include <mach/board-fsample.h> | 37 | |
38 | /* fsample is pretty close to p2-sample */ | ||
39 | |||
40 | #define fsample_cpld_read(reg) __raw_readb(reg) | ||
41 | #define fsample_cpld_write(val, reg) __raw_writeb(val, reg) | ||
42 | |||
43 | #define FSAMPLE_CPLD_BASE 0xE8100000 | ||
44 | #define FSAMPLE_CPLD_SIZE SZ_4K | ||
45 | #define FSAMPLE_CPLD_START 0x05080000 | ||
46 | |||
47 | #define FSAMPLE_CPLD_REG_A (FSAMPLE_CPLD_BASE + 0x00) | ||
48 | #define FSAMPLE_CPLD_SWITCH (FSAMPLE_CPLD_BASE + 0x02) | ||
49 | #define FSAMPLE_CPLD_UART (FSAMPLE_CPLD_BASE + 0x02) | ||
50 | #define FSAMPLE_CPLD_REG_B (FSAMPLE_CPLD_BASE + 0x04) | ||
51 | #define FSAMPLE_CPLD_VERSION (FSAMPLE_CPLD_BASE + 0x06) | ||
52 | #define FSAMPLE_CPLD_SET_CLR (FSAMPLE_CPLD_BASE + 0x06) | ||
53 | |||
54 | #define FSAMPLE_CPLD_BIT_BT_RESET 0 | ||
55 | #define FSAMPLE_CPLD_BIT_LCD_RESET 1 | ||
56 | #define FSAMPLE_CPLD_BIT_CAM_PWDN 2 | ||
57 | #define FSAMPLE_CPLD_BIT_CHARGER_ENABLE 3 | ||
58 | #define FSAMPLE_CPLD_BIT_SD_MMC_EN 4 | ||
59 | #define FSAMPLE_CPLD_BIT_aGPS_PWREN 5 | ||
60 | #define FSAMPLE_CPLD_BIT_BACKLIGHT 6 | ||
61 | #define FSAMPLE_CPLD_BIT_aGPS_EN_RESET 7 | ||
62 | #define FSAMPLE_CPLD_BIT_aGPS_SLEEPx_N 8 | ||
63 | #define FSAMPLE_CPLD_BIT_OTG_RESET 9 | ||
64 | |||
65 | #define fsample_cpld_set(bit) \ | ||
66 | fsample_cpld_write((((bit) & 15) << 4) | 0x0f, FSAMPLE_CPLD_SET_CLR) | ||
67 | |||
68 | #define fsample_cpld_clear(bit) \ | ||
69 | fsample_cpld_write(0xf0 | ((bit) & 15), FSAMPLE_CPLD_SET_CLR) | ||
38 | 70 | ||
39 | static int fsample_keymap[] = { | 71 | static int fsample_keymap[] = { |
40 | KEY(0,0,KEY_UP), | 72 | KEY(0,0,KEY_UP), |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 7d2670205373..e724940e86f2 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -62,7 +62,6 @@ static struct omap_uart_config generic_uart_config __initdata = { | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | static struct omap_board_config_kernel generic_config[] __initdata = { | 64 | static struct omap_board_config_kernel generic_config[] __initdata = { |
65 | { OMAP_TAG_USB, NULL }, | ||
66 | { OMAP_TAG_UART, &generic_uart_config }, | 65 | { OMAP_TAG_UART, &generic_uart_config }, |
67 | }; | 66 | }; |
68 | 67 | ||
@@ -70,12 +69,12 @@ static void __init omap_generic_init(void) | |||
70 | { | 69 | { |
71 | #ifdef CONFIG_ARCH_OMAP15XX | 70 | #ifdef CONFIG_ARCH_OMAP15XX |
72 | if (cpu_is_omap15xx()) { | 71 | if (cpu_is_omap15xx()) { |
73 | generic_config[0].data = &generic1510_usb_config; | 72 | omap_usb_init(&generic1510_usb_config); |
74 | } | 73 | } |
75 | #endif | 74 | #endif |
76 | #if defined(CONFIG_ARCH_OMAP16XX) | 75 | #if defined(CONFIG_ARCH_OMAP16XX) |
77 | if (!cpu_is_omap1510()) { | 76 | if (!cpu_is_omap1510()) { |
78 | generic_config[0].data = &generic1610_usb_config; | 77 | omap_usb_init(&generic1610_usb_config); |
79 | } | 78 | } |
80 | #endif | 79 | #endif |
81 | 80 | ||
diff --git a/arch/arm/mach-omap1/board-h2-mmc.c b/arch/arm/mach-omap1/board-h2-mmc.c index 409fa56d0a87..44d4a966bed9 100644 --- a/arch/arm/mach-omap1/board-h2-mmc.c +++ b/arch/arm/mach-omap1/board-h2-mmc.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <mach/mmc.h> | 19 | #include <mach/mmc.h> |
20 | #include <mach/gpio.h> | 20 | #include <mach/gpio.h> |
21 | 21 | ||
22 | #include "board-h2.h" | ||
23 | |||
22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 24 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
23 | 25 | ||
24 | static int mmc_set_power(struct device *dev, int slot, int power_on, | 26 | static int mmc_set_power(struct device *dev, int slot, int power_on, |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 0d784a795092..f695aa053ac8 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -46,6 +46,11 @@ | |||
46 | #include <mach/keypad.h> | 46 | #include <mach/keypad.h> |
47 | #include <mach/common.h> | 47 | #include <mach/common.h> |
48 | 48 | ||
49 | #include "board-h2.h" | ||
50 | |||
51 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | ||
52 | #define OMAP1610_ETHR_START 0x04000300 | ||
53 | |||
49 | static int h2_keymap[] = { | 54 | static int h2_keymap[] = { |
50 | KEY(0, 0, KEY_LEFT), | 55 | KEY(0, 0, KEY_LEFT), |
51 | KEY(0, 1, KEY_RIGHT), | 56 | KEY(0, 1, KEY_RIGHT), |
@@ -364,7 +369,6 @@ static struct omap_lcd_config h2_lcd_config __initdata = { | |||
364 | }; | 369 | }; |
365 | 370 | ||
366 | static struct omap_board_config_kernel h2_config[] __initdata = { | 371 | static struct omap_board_config_kernel h2_config[] __initdata = { |
367 | { OMAP_TAG_USB, &h2_usb_config }, | ||
368 | { OMAP_TAG_UART, &h2_uart_config }, | 372 | { OMAP_TAG_UART, &h2_uart_config }, |
369 | { OMAP_TAG_LCD, &h2_lcd_config }, | 373 | { OMAP_TAG_LCD, &h2_lcd_config }, |
370 | }; | 374 | }; |
@@ -413,6 +417,7 @@ static void __init h2_init(void) | |||
413 | omap_serial_init(); | 417 | omap_serial_init(); |
414 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, | 418 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, |
415 | ARRAY_SIZE(h2_i2c_board_info)); | 419 | ARRAY_SIZE(h2_i2c_board_info)); |
420 | omap_usb_init(&h2_usb_config); | ||
416 | h2_mmc_init(); | 421 | h2_mmc_init(); |
417 | } | 422 | } |
418 | 423 | ||
diff --git a/arch/arm/mach-omap1/board-h2.h b/arch/arm/mach-omap1/board-h2.h new file mode 100644 index 000000000000..315e2662547e --- /dev/null +++ b/arch/arm/mach-omap1/board-h2.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap1/board-h2.h | ||
3 | * | ||
4 | * Hardware definitions for TI OMAP1610 H2 board. | ||
5 | * | ||
6 | * Cleanup for Linux-2.6 by Dirk Behme <dirk.behme@de.bosch.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License as published by the | ||
10 | * Free Software Foundation; either version 2 of the License, or (at your | ||
11 | * option) any later version. | ||
12 | * | ||
13 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
14 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
15 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
16 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
17 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
18 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
19 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
20 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
21 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
22 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License along | ||
25 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
26 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
27 | */ | ||
28 | |||
29 | #ifndef __ASM_ARCH_OMAP_H2_H | ||
30 | #define __ASM_ARCH_OMAP_H2_H | ||
31 | |||
32 | #define H2_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
33 | # define H2_TPS_GPIO_MMC_PWR_EN (H2_TPS_GPIO_BASE + 3) | ||
34 | |||
35 | extern void h2_mmc_init(void); | ||
36 | |||
37 | #endif /* __ASM_ARCH_OMAP_H2_H */ | ||
38 | |||
diff --git a/arch/arm/mach-omap1/board-h3-mmc.c b/arch/arm/mach-omap1/board-h3-mmc.c index fdfe793d56f2..0d8a3c195e2e 100644 --- a/arch/arm/mach-omap1/board-h3-mmc.c +++ b/arch/arm/mach-omap1/board-h3-mmc.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <mach/mmc.h> | 19 | #include <mach/mmc.h> |
20 | #include <mach/gpio.h> | 20 | #include <mach/gpio.h> |
21 | 21 | ||
22 | #include "board-h3.h" | ||
23 | |||
22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 24 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
23 | 25 | ||
24 | static int mmc_set_power(struct device *dev, int slot, int power_on, | 26 | static int mmc_set_power(struct device *dev, int slot, int power_on, |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index bf08b6ad22ee..4695965114c4 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -50,6 +50,11 @@ | |||
50 | #include <mach/dma.h> | 50 | #include <mach/dma.h> |
51 | #include <mach/common.h> | 51 | #include <mach/common.h> |
52 | 52 | ||
53 | #include "board-h3.h" | ||
54 | |||
55 | /* In OMAP1710 H3 the Ethernet is directly connected to CS1 */ | ||
56 | #define OMAP1710_ETHR_START 0x04000300 | ||
57 | |||
53 | #define H3_TS_GPIO 48 | 58 | #define H3_TS_GPIO 48 |
54 | 59 | ||
55 | static int h3_keymap[] = { | 60 | static int h3_keymap[] = { |
@@ -418,7 +423,6 @@ static struct omap_lcd_config h3_lcd_config __initdata = { | |||
418 | }; | 423 | }; |
419 | 424 | ||
420 | static struct omap_board_config_kernel h3_config[] __initdata = { | 425 | static struct omap_board_config_kernel h3_config[] __initdata = { |
421 | { OMAP_TAG_USB, &h3_usb_config }, | ||
422 | { OMAP_TAG_UART, &h3_uart_config }, | 426 | { OMAP_TAG_UART, &h3_uart_config }, |
423 | { OMAP_TAG_LCD, &h3_lcd_config }, | 427 | { OMAP_TAG_LCD, &h3_lcd_config }, |
424 | }; | 428 | }; |
@@ -472,6 +476,7 @@ static void __init h3_init(void) | |||
472 | omap_serial_init(); | 476 | omap_serial_init(); |
473 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, | 477 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, |
474 | ARRAY_SIZE(h3_i2c_board_info)); | 478 | ARRAY_SIZE(h3_i2c_board_info)); |
479 | omap_usb_init(&h3_usb_config); | ||
475 | h3_mmc_init(); | 480 | h3_mmc_init(); |
476 | } | 481 | } |
477 | 482 | ||
diff --git a/arch/arm/mach-omap1/board-h3.h b/arch/arm/mach-omap1/board-h3.h new file mode 100644 index 000000000000..78de535be3c5 --- /dev/null +++ b/arch/arm/mach-omap1/board-h3.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap1/board-h3.h | ||
3 | * | ||
4 | * Copyright (C) 2001 RidgeRun, Inc. | ||
5 | * Copyright (C) 2004 Texas Instruments, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | * | ||
12 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
13 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
14 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
15 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
16 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
17 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
18 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
19 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
20 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
21 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
22 | * | ||
23 | * You should have received a copy of the GNU General Public License along | ||
24 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
25 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
26 | */ | ||
27 | #ifndef __ASM_ARCH_OMAP_H3_H | ||
28 | #define __ASM_ARCH_OMAP_H3_H | ||
29 | |||
30 | #define H3_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
31 | # define H3_TPS_GPIO_MMC_PWR_EN (H3_TPS_GPIO_BASE + 4) | ||
32 | |||
33 | extern void h3_mmc_init(void); | ||
34 | |||
35 | #endif /* __ASM_ARCH_OMAP_H3_H */ | ||
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 071cd02a734e..2fd98260ea49 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -39,6 +39,9 @@ | |||
39 | #include <mach/common.h> | 39 | #include <mach/common.h> |
40 | #include <mach/mmc.h> | 40 | #include <mach/mmc.h> |
41 | 41 | ||
42 | /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ | ||
43 | #define INNOVATOR1610_ETHR_START 0x04000300 | ||
44 | |||
42 | static int innovator_keymap[] = { | 45 | static int innovator_keymap[] = { |
43 | KEY(0, 0, KEY_F1), | 46 | KEY(0, 0, KEY_F1), |
44 | KEY(0, 3, KEY_DOWN), | 47 | KEY(0, 3, KEY_DOWN), |
@@ -370,7 +373,6 @@ static struct omap_uart_config innovator_uart_config __initdata = { | |||
370 | }; | 373 | }; |
371 | 374 | ||
372 | static struct omap_board_config_kernel innovator_config[] = { | 375 | static struct omap_board_config_kernel innovator_config[] = { |
373 | { OMAP_TAG_USB, NULL }, | ||
374 | { OMAP_TAG_LCD, NULL }, | 376 | { OMAP_TAG_LCD, NULL }, |
375 | { OMAP_TAG_UART, &innovator_uart_config }, | 377 | { OMAP_TAG_UART, &innovator_uart_config }, |
376 | }; | 378 | }; |
@@ -392,13 +394,13 @@ static void __init innovator_init(void) | |||
392 | 394 | ||
393 | #ifdef CONFIG_ARCH_OMAP15XX | 395 | #ifdef CONFIG_ARCH_OMAP15XX |
394 | if (cpu_is_omap1510()) { | 396 | if (cpu_is_omap1510()) { |
395 | innovator_config[0].data = &innovator1510_usb_config; | 397 | omap_usb_init(&innovator1510_usb_config); |
396 | innovator_config[1].data = &innovator1510_lcd_config; | 398 | innovator_config[1].data = &innovator1510_lcd_config; |
397 | } | 399 | } |
398 | #endif | 400 | #endif |
399 | #ifdef CONFIG_ARCH_OMAP16XX | 401 | #ifdef CONFIG_ARCH_OMAP16XX |
400 | if (cpu_is_omap1610()) { | 402 | if (cpu_is_omap1610()) { |
401 | innovator_config[0].data = &h2_usb_config; | 403 | omap_usb_init(&h2_usb_config); |
402 | innovator_config[1].data = &innovator1610_lcd_config; | 404 | innovator_config[1].data = &innovator1610_lcd_config; |
403 | } | 405 | } |
404 | #endif | 406 | #endif |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index af51e0b180f2..7bc7a3cb9c51 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -233,10 +233,6 @@ static inline void nokia770_mmc_init(void) | |||
233 | } | 233 | } |
234 | #endif | 234 | #endif |
235 | 235 | ||
236 | static struct omap_board_config_kernel nokia770_config[] __initdata = { | ||
237 | { OMAP_TAG_USB, NULL }, | ||
238 | }; | ||
239 | |||
240 | #if defined(CONFIG_OMAP_DSP) | 236 | #if defined(CONFIG_OMAP_DSP) |
241 | /* | 237 | /* |
242 | * audio power control | 238 | * audio power control |
@@ -371,19 +367,16 @@ static __init int omap_dsp_init(void) | |||
371 | 367 | ||
372 | static void __init omap_nokia770_init(void) | 368 | static void __init omap_nokia770_init(void) |
373 | { | 369 | { |
374 | nokia770_config[0].data = &nokia770_usb_config; | ||
375 | |||
376 | platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); | 370 | platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); |
377 | spi_register_board_info(nokia770_spi_board_info, | 371 | spi_register_board_info(nokia770_spi_board_info, |
378 | ARRAY_SIZE(nokia770_spi_board_info)); | 372 | ARRAY_SIZE(nokia770_spi_board_info)); |
379 | omap_board_config = nokia770_config; | ||
380 | omap_board_config_size = ARRAY_SIZE(nokia770_config); | ||
381 | omap_gpio_init(); | 373 | omap_gpio_init(); |
382 | omap_serial_init(); | 374 | omap_serial_init(); |
383 | omap_register_i2c_bus(1, 100, NULL, 0); | 375 | omap_register_i2c_bus(1, 100, NULL, 0); |
384 | omap_dsp_init(); | 376 | omap_dsp_init(); |
385 | ads7846_dev_init(); | 377 | ads7846_dev_init(); |
386 | mipid_dev_init(); | 378 | mipid_dev_init(); |
379 | omap_usb_init(&nokia770_usb_config); | ||
387 | nokia770_mmc_init(); | 380 | nokia770_mmc_init(); |
388 | } | 381 | } |
389 | 382 | ||
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 1a16ecb2ccc8..cf3247b15f87 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -52,6 +52,20 @@ | |||
52 | #include <mach/tc.h> | 52 | #include <mach/tc.h> |
53 | #include <mach/common.h> | 53 | #include <mach/common.h> |
54 | 54 | ||
55 | /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ | ||
56 | #define OMAP_OSK_ETHR_START 0x04800300 | ||
57 | |||
58 | /* TPS65010 has four GPIOs. nPG and LED2 can be treated like GPIOs with | ||
59 | * alternate pin configurations for hardware-controlled blinking. | ||
60 | */ | ||
61 | #define OSK_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
62 | # define OSK_TPS_GPIO_USB_PWR_EN (OSK_TPS_GPIO_BASE + 0) | ||
63 | # define OSK_TPS_GPIO_LED_D3 (OSK_TPS_GPIO_BASE + 1) | ||
64 | # define OSK_TPS_GPIO_LAN_RESET (OSK_TPS_GPIO_BASE + 2) | ||
65 | # define OSK_TPS_GPIO_DSP_PWR_EN (OSK_TPS_GPIO_BASE + 3) | ||
66 | # define OSK_TPS_GPIO_LED_D9 (OSK_TPS_GPIO_BASE + 4) | ||
67 | # define OSK_TPS_GPIO_LED_D2 (OSK_TPS_GPIO_BASE + 5) | ||
68 | |||
55 | static struct mtd_partition osk_partitions[] = { | 69 | static struct mtd_partition osk_partitions[] = { |
56 | /* bootloader (U-Boot, etc) in first sector */ | 70 | /* bootloader (U-Boot, etc) in first sector */ |
57 | { | 71 | { |
@@ -290,7 +304,6 @@ static struct omap_lcd_config osk_lcd_config __initdata = { | |||
290 | #endif | 304 | #endif |
291 | 305 | ||
292 | static struct omap_board_config_kernel osk_config[] __initdata = { | 306 | static struct omap_board_config_kernel osk_config[] __initdata = { |
293 | { OMAP_TAG_USB, &osk_usb_config }, | ||
294 | { OMAP_TAG_UART, &osk_uart_config }, | 307 | { OMAP_TAG_UART, &osk_uart_config }, |
295 | #ifdef CONFIG_OMAP_OSK_MISTRAL | 308 | #ifdef CONFIG_OMAP_OSK_MISTRAL |
296 | { OMAP_TAG_LCD, &osk_lcd_config }, | 309 | { OMAP_TAG_LCD, &osk_lcd_config }, |
@@ -541,6 +554,8 @@ static void __init osk_init(void) | |||
541 | l |= (3 << 1); | 554 | l |= (3 << 1); |
542 | omap_writel(l, USB_TRANSCEIVER_CTRL); | 555 | omap_writel(l, USB_TRANSCEIVER_CTRL); |
543 | 556 | ||
557 | omap_usb_init(&osk_usb_config); | ||
558 | |||
544 | /* irq for tps65010 chip */ | 559 | /* irq for tps65010 chip */ |
545 | /* bootloader effectively does: omap_cfg_reg(U19_1610_MPUIO1); */ | 560 | /* bootloader effectively does: omap_cfg_reg(U19_1610_MPUIO1); */ |
546 | if (gpio_request(OMAP_MPUIO(1), "tps65010") == 0) | 561 | if (gpio_request(OMAP_MPUIO(1), "tps65010") == 0) |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 99f2b43f2541..886b4c0569bd 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -43,6 +43,21 @@ | |||
43 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
44 | #include <mach/common.h> | 44 | #include <mach/common.h> |
45 | 45 | ||
46 | #define PALMTE_USBDETECT_GPIO 0 | ||
47 | #define PALMTE_USB_OR_DC_GPIO 1 | ||
48 | #define PALMTE_TSC_GPIO 4 | ||
49 | #define PALMTE_PINTDAV_GPIO 6 | ||
50 | #define PALMTE_MMC_WP_GPIO 8 | ||
51 | #define PALMTE_MMC_POWER_GPIO 9 | ||
52 | #define PALMTE_HDQ_GPIO 11 | ||
53 | #define PALMTE_HEADPHONES_GPIO 14 | ||
54 | #define PALMTE_SPEAKER_GPIO 15 | ||
55 | #define PALMTE_DC_GPIO OMAP_MPUIO(2) | ||
56 | #define PALMTE_MMC_SWITCH_GPIO OMAP_MPUIO(4) | ||
57 | #define PALMTE_MMC1_GPIO OMAP_MPUIO(6) | ||
58 | #define PALMTE_MMC2_GPIO OMAP_MPUIO(7) | ||
59 | #define PALMTE_MMC3_GPIO OMAP_MPUIO(11) | ||
60 | |||
46 | static void __init omap_palmte_init_irq(void) | 61 | static void __init omap_palmte_init_irq(void) |
47 | { | 62 | { |
48 | omap1_init_common_hw(); | 63 | omap1_init_common_hw(); |
@@ -286,7 +301,6 @@ static void palmte_get_power_status(struct apm_power_info *info, int *battery) | |||
286 | #endif | 301 | #endif |
287 | 302 | ||
288 | static struct omap_board_config_kernel palmte_config[] __initdata = { | 303 | static struct omap_board_config_kernel palmte_config[] __initdata = { |
289 | { OMAP_TAG_USB, &palmte_usb_config }, | ||
290 | { OMAP_TAG_LCD, &palmte_lcd_config }, | 304 | { OMAP_TAG_LCD, &palmte_lcd_config }, |
291 | { OMAP_TAG_UART, &palmte_uart_config }, | 305 | { OMAP_TAG_UART, &palmte_uart_config }, |
292 | }; | 306 | }; |
@@ -341,6 +355,7 @@ static void __init omap_palmte_init(void) | |||
341 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); | 355 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); |
342 | palmte_misc_gpio_setup(); | 356 | palmte_misc_gpio_setup(); |
343 | omap_serial_init(); | 357 | omap_serial_init(); |
358 | omap_usb_init(&palmte_usb_config); | ||
344 | omap_register_i2c_bus(1, 100, NULL, 0); | 359 | omap_register_i2c_bus(1, 100, NULL, 0); |
345 | } | 360 | } |
346 | 361 | ||
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 1cbc1275c95f..4f1b44831d37 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -43,6 +43,13 @@ | |||
43 | #include <linux/spi/spi.h> | 43 | #include <linux/spi/spi.h> |
44 | #include <linux/spi/ads7846.h> | 44 | #include <linux/spi/ads7846.h> |
45 | 45 | ||
46 | #define PALMTT_USBDETECT_GPIO 0 | ||
47 | #define PALMTT_CABLE_GPIO 1 | ||
48 | #define PALMTT_LED_GPIO 3 | ||
49 | #define PALMTT_PENIRQ_GPIO 6 | ||
50 | #define PALMTT_MMC_WP_GPIO 8 | ||
51 | #define PALMTT_HDQ_GPIO 11 | ||
52 | |||
46 | static int palmtt_keymap[] = { | 53 | static int palmtt_keymap[] = { |
47 | KEY(0, 0, KEY_ESC), | 54 | KEY(0, 0, KEY_ESC), |
48 | KEY(0, 1, KEY_SPACE), | 55 | KEY(0, 1, KEY_SPACE), |
@@ -272,7 +279,6 @@ static struct omap_uart_config palmtt_uart_config __initdata = { | |||
272 | }; | 279 | }; |
273 | 280 | ||
274 | static struct omap_board_config_kernel palmtt_config[] __initdata = { | 281 | static struct omap_board_config_kernel palmtt_config[] __initdata = { |
275 | { OMAP_TAG_USB, &palmtt_usb_config }, | ||
276 | { OMAP_TAG_LCD, &palmtt_lcd_config }, | 282 | { OMAP_TAG_LCD, &palmtt_lcd_config }, |
277 | { OMAP_TAG_UART, &palmtt_uart_config }, | 283 | { OMAP_TAG_UART, &palmtt_uart_config }, |
278 | }; | 284 | }; |
@@ -297,6 +303,7 @@ static void __init omap_palmtt_init(void) | |||
297 | 303 | ||
298 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); | 304 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); |
299 | omap_serial_init(); | 305 | omap_serial_init(); |
306 | omap_usb_init(&palmtt_usb_config); | ||
300 | omap_register_i2c_bus(1, 100, NULL, 0); | 307 | omap_register_i2c_bus(1, 100, NULL, 0); |
301 | } | 308 | } |
302 | 309 | ||
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index baf5efbfe3e8..9a55c3c58218 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -46,6 +46,16 @@ | |||
46 | #include <linux/spi/spi.h> | 46 | #include <linux/spi/spi.h> |
47 | #include <linux/spi/ads7846.h> | 47 | #include <linux/spi/ads7846.h> |
48 | 48 | ||
49 | #define PALMZ71_USBDETECT_GPIO 0 | ||
50 | #define PALMZ71_PENIRQ_GPIO 6 | ||
51 | #define PALMZ71_MMC_WP_GPIO 8 | ||
52 | #define PALMZ71_HDQ_GPIO 11 | ||
53 | |||
54 | #define PALMZ71_HOTSYNC_GPIO OMAP_MPUIO(1) | ||
55 | #define PALMZ71_CABLE_GPIO OMAP_MPUIO(2) | ||
56 | #define PALMZ71_SLIDER_GPIO OMAP_MPUIO(3) | ||
57 | #define PALMZ71_MMC_IN_GPIO OMAP_MPUIO(4) | ||
58 | |||
49 | static void __init | 59 | static void __init |
50 | omap_palmz71_init_irq(void) | 60 | omap_palmz71_init_irq(void) |
51 | { | 61 | { |
@@ -239,7 +249,6 @@ static struct omap_uart_config palmz71_uart_config __initdata = { | |||
239 | }; | 249 | }; |
240 | 250 | ||
241 | static struct omap_board_config_kernel palmz71_config[] __initdata = { | 251 | static struct omap_board_config_kernel palmz71_config[] __initdata = { |
242 | {OMAP_TAG_USB, &palmz71_usb_config}, | ||
243 | {OMAP_TAG_LCD, &palmz71_lcd_config}, | 252 | {OMAP_TAG_LCD, &palmz71_lcd_config}, |
244 | {OMAP_TAG_UART, &palmz71_uart_config}, | 253 | {OMAP_TAG_UART, &palmz71_uart_config}, |
245 | }; | 254 | }; |
@@ -313,6 +322,7 @@ omap_palmz71_init(void) | |||
313 | 322 | ||
314 | spi_register_board_info(palmz71_boardinfo, | 323 | spi_register_board_info(palmz71_boardinfo, |
315 | ARRAY_SIZE(palmz71_boardinfo)); | 324 | ARRAY_SIZE(palmz71_boardinfo)); |
325 | omap_usb_init(&palmz71_usb_config); | ||
316 | omap_serial_init(); | 326 | omap_serial_init(); |
317 | omap_register_i2c_bus(1, 100, NULL, 0); | 327 | omap_register_i2c_bus(1, 100, NULL, 0); |
318 | palmz71_gpio_setup(0); | 328 | palmz71_gpio_setup(0); |
diff --git a/arch/arm/mach-omap1/board-sx1-mmc.c b/arch/arm/mach-omap1/board-sx1-mmc.c index 66a4d7d5255d..58a46e4e45c3 100644 --- a/arch/arm/mach-omap1/board-sx1-mmc.c +++ b/arch/arm/mach-omap1/board-sx1-mmc.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | #include <mach/mmc.h> | 18 | #include <mach/mmc.h> |
19 | #include <mach/gpio.h> | 19 | #include <mach/gpio.h> |
20 | #include <mach/board-sx1.h> | ||
20 | 21 | ||
21 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | 22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) |
22 | 23 | ||
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 28c76a1e71c0..c096577695fe 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/board.h> | 41 | #include <mach/board.h> |
42 | #include <mach/common.h> | 42 | #include <mach/common.h> |
43 | #include <mach/keypad.h> | 43 | #include <mach/keypad.h> |
44 | #include <mach/board-sx1.h> | ||
44 | 45 | ||
45 | /* Write to I2C device */ | 46 | /* Write to I2C device */ |
46 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) | 47 | int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) |
@@ -373,7 +374,6 @@ static struct omap_uart_config sx1_uart_config __initdata = { | |||
373 | }; | 374 | }; |
374 | 375 | ||
375 | static struct omap_board_config_kernel sx1_config[] __initdata = { | 376 | static struct omap_board_config_kernel sx1_config[] __initdata = { |
376 | { OMAP_TAG_USB, &sx1_usb_config }, | ||
377 | { OMAP_TAG_LCD, &sx1_lcd_config }, | 377 | { OMAP_TAG_LCD, &sx1_lcd_config }, |
378 | { OMAP_TAG_UART, &sx1_uart_config }, | 378 | { OMAP_TAG_UART, &sx1_uart_config }, |
379 | }; | 379 | }; |
@@ -388,6 +388,7 @@ static void __init omap_sx1_init(void) | |||
388 | omap_board_config_size = ARRAY_SIZE(sx1_config); | 388 | omap_board_config_size = ARRAY_SIZE(sx1_config); |
389 | omap_serial_init(); | 389 | omap_serial_init(); |
390 | omap_register_i2c_bus(1, 100, NULL, 0); | 390 | omap_register_i2c_bus(1, 100, NULL, 0); |
391 | omap_usb_init(&sx1_usb_config); | ||
391 | sx1_mmc_init(); | 392 | sx1_mmc_init(); |
392 | 393 | ||
393 | /* turn on USB power */ | 394 | /* turn on USB power */ |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index a7653542a2b0..98275e03dad1 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -145,7 +145,6 @@ static struct omap_uart_config voiceblue_uart_config __initdata = { | |||
145 | }; | 145 | }; |
146 | 146 | ||
147 | static struct omap_board_config_kernel voiceblue_config[] = { | 147 | static struct omap_board_config_kernel voiceblue_config[] = { |
148 | { OMAP_TAG_USB, &voiceblue_usb_config }, | ||
149 | { OMAP_TAG_UART, &voiceblue_uart_config }, | 148 | { OMAP_TAG_UART, &voiceblue_uart_config }, |
150 | }; | 149 | }; |
151 | 150 | ||
@@ -185,6 +184,7 @@ static void __init voiceblue_init(void) | |||
185 | omap_board_config = voiceblue_config; | 184 | omap_board_config = voiceblue_config; |
186 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); | 185 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); |
187 | omap_serial_init(); | 186 | omap_serial_init(); |
187 | omap_usb_init(&voiceblue_usb_config); | ||
188 | omap_register_i2c_bus(1, 100, NULL, 0); | 188 | omap_register_i2c_bus(1, 100, NULL, 0); |
189 | 189 | ||
190 | /* There is a good chance board is going up, so enable power LED | 190 | /* There is a good chance board is going up, so enable power LED |
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index ba5d7c08dc17..bbbaeb0abcd3 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c | |||
@@ -86,7 +86,7 @@ static struct resource mbox_resources[] = { | |||
86 | }; | 86 | }; |
87 | 87 | ||
88 | static struct platform_device mbox_device = { | 88 | static struct platform_device mbox_device = { |
89 | .name = "mailbox", | 89 | .name = "omap1-mailbox", |
90 | .id = -1, | 90 | .id = -1, |
91 | .num_resources = ARRAY_SIZE(mbox_resources), | 91 | .num_resources = ARRAY_SIZE(mbox_resources), |
92 | .resource = mbox_resources, | 92 | .resource = mbox_resources, |
diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c index 89bb8756f450..4ef26faf083e 100644 --- a/arch/arm/mach-omap1/id.c +++ b/arch/arm/mach-omap1/id.c | |||
@@ -38,6 +38,7 @@ static struct omap_id omap_ids[] __initdata = { | |||
38 | { .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000}, | 38 | { .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000}, |
39 | { .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100}, | 39 | { .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100}, |
40 | { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300}, | 40 | { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300}, |
41 | { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320500, .type = 0x08500000}, | ||
41 | { .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000}, | 42 | { .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000}, |
42 | { .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000}, | 43 | { .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000}, |
43 | { .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000}, | 44 | { .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000}, |
@@ -77,7 +78,7 @@ static u16 __init omap_get_jtag_id(void) | |||
77 | prod_id = omap_readl(OMAP_PRODUCTION_ID_1); | 78 | prod_id = omap_readl(OMAP_PRODUCTION_ID_1); |
78 | omap_id = omap_readl(OMAP32_ID_1); | 79 | omap_id = omap_readl(OMAP32_ID_1); |
79 | 80 | ||
80 | /* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730 */ | 81 | /* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730/850 */ |
81 | if (((prod_id >> 20) == 0) || (prod_id == omap_id)) | 82 | if (((prod_id >> 20) == 0) || (prod_id == omap_id)) |
82 | prod_id = 0; | 83 | prod_id = 0; |
83 | else | 84 | else |
@@ -178,6 +179,7 @@ void __init omap_check_revision(void) | |||
178 | 179 | ||
179 | switch (cpu_type) { | 180 | switch (cpu_type) { |
180 | case 0x07: | 181 | case 0x07: |
182 | case 0x08: | ||
181 | omap_revision |= 0x07; | 183 | omap_revision |= 0x07; |
182 | break; | 184 | break; |
183 | case 0x03: | 185 | case 0x03: |
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 4c3e582f3d3c..3afe540149f7 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -52,6 +52,22 @@ static struct map_desc omap730_io_desc[] __initdata = { | |||
52 | }; | 52 | }; |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | #ifdef CONFIG_ARCH_OMAP850 | ||
56 | static struct map_desc omap850_io_desc[] __initdata = { | ||
57 | { | ||
58 | .virtual = OMAP850_DSP_BASE, | ||
59 | .pfn = __phys_to_pfn(OMAP850_DSP_START), | ||
60 | .length = OMAP850_DSP_SIZE, | ||
61 | .type = MT_DEVICE | ||
62 | }, { | ||
63 | .virtual = OMAP850_DSPREG_BASE, | ||
64 | .pfn = __phys_to_pfn(OMAP850_DSPREG_START), | ||
65 | .length = OMAP850_DSPREG_SIZE, | ||
66 | .type = MT_DEVICE | ||
67 | } | ||
68 | }; | ||
69 | #endif | ||
70 | |||
55 | #ifdef CONFIG_ARCH_OMAP15XX | 71 | #ifdef CONFIG_ARCH_OMAP15XX |
56 | static struct map_desc omap1510_io_desc[] __initdata = { | 72 | static struct map_desc omap1510_io_desc[] __initdata = { |
57 | { | 73 | { |
@@ -109,6 +125,13 @@ void __init omap1_map_common_io(void) | |||
109 | iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc)); | 125 | iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc)); |
110 | } | 126 | } |
111 | #endif | 127 | #endif |
128 | |||
129 | #ifdef CONFIG_ARCH_OMAP850 | ||
130 | if (cpu_is_omap850()) { | ||
131 | iotable_init(omap850_io_desc, ARRAY_SIZE(omap850_io_desc)); | ||
132 | } | ||
133 | #endif | ||
134 | |||
112 | #ifdef CONFIG_ARCH_OMAP15XX | 135 | #ifdef CONFIG_ARCH_OMAP15XX |
113 | if (cpu_is_omap15xx()) { | 136 | if (cpu_is_omap15xx()) { |
114 | iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc)); | 137 | iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc)); |
diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c index 9ad5197075ff..de03c8448994 100644 --- a/arch/arm/mach-omap1/irq.c +++ b/arch/arm/mach-omap1/irq.c | |||
@@ -145,6 +145,14 @@ static struct omap_irq_bank omap730_irq_banks[] = { | |||
145 | }; | 145 | }; |
146 | #endif | 146 | #endif |
147 | 147 | ||
148 | #ifdef CONFIG_ARCH_OMAP850 | ||
149 | static struct omap_irq_bank omap850_irq_banks[] = { | ||
150 | { .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3f8e22f }, | ||
151 | { .base_reg = OMAP_IH2_BASE, .trigger_map = 0xfdb9c1f2 }, | ||
152 | { .base_reg = OMAP_IH2_BASE + 0x100, .trigger_map = 0x800040f3 }, | ||
153 | }; | ||
154 | #endif | ||
155 | |||
148 | #ifdef CONFIG_ARCH_OMAP15XX | 156 | #ifdef CONFIG_ARCH_OMAP15XX |
149 | static struct omap_irq_bank omap1510_irq_banks[] = { | 157 | static struct omap_irq_bank omap1510_irq_banks[] = { |
150 | { .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3febfff }, | 158 | { .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3febfff }, |
@@ -184,6 +192,12 @@ void __init omap_init_irq(void) | |||
184 | irq_bank_count = ARRAY_SIZE(omap730_irq_banks); | 192 | irq_bank_count = ARRAY_SIZE(omap730_irq_banks); |
185 | } | 193 | } |
186 | #endif | 194 | #endif |
195 | #ifdef CONFIG_ARCH_OMAP850 | ||
196 | if (cpu_is_omap850()) { | ||
197 | irq_banks = omap850_irq_banks; | ||
198 | irq_bank_count = ARRAY_SIZE(omap850_irq_banks); | ||
199 | } | ||
200 | #endif | ||
187 | #ifdef CONFIG_ARCH_OMAP15XX | 201 | #ifdef CONFIG_ARCH_OMAP15XX |
188 | if (cpu_is_omap1510()) { | 202 | if (cpu_is_omap1510()) { |
189 | irq_banks = omap1510_irq_banks; | 203 | irq_banks = omap1510_irq_banks; |
@@ -214,9 +228,8 @@ void __init omap_init_irq(void) | |||
214 | irq_bank_writel(0x03, 1, IRQ_CONTROL_REG_OFFSET); | 228 | irq_bank_writel(0x03, 1, IRQ_CONTROL_REG_OFFSET); |
215 | 229 | ||
216 | /* Enable interrupts in global mask */ | 230 | /* Enable interrupts in global mask */ |
217 | if (cpu_is_omap730()) { | 231 | if (cpu_is_omap7xx()) |
218 | irq_bank_writel(0x0, 0, IRQ_GMR_REG_OFFSET); | 232 | irq_bank_writel(0x0, 0, IRQ_GMR_REG_OFFSET); |
219 | } | ||
220 | 233 | ||
221 | /* Install the interrupt handlers for each bank */ | 234 | /* Install the interrupt handlers for each bank */ |
222 | for (i = 0; i < irq_bank_count; i++) { | 235 | for (i = 0; i < irq_bank_count; i++) { |
@@ -236,6 +249,8 @@ void __init omap_init_irq(void) | |||
236 | 249 | ||
237 | if (cpu_is_omap730()) | 250 | if (cpu_is_omap730()) |
238 | omap_unmask_irq(INT_730_IH2_IRQ); | 251 | omap_unmask_irq(INT_730_IH2_IRQ); |
252 | else if (cpu_is_omap850()) | ||
253 | omap_unmask_irq(INT_850_IH2_IRQ); | ||
239 | else if (cpu_is_omap15xx()) | 254 | else if (cpu_is_omap15xx()) |
240 | omap_unmask_irq(INT_1510_IH2_IRQ); | 255 | omap_unmask_irq(INT_1510_IH2_IRQ); |
241 | else if (cpu_is_omap16xx()) | 256 | else if (cpu_is_omap16xx()) |
diff --git a/arch/arm/mach-omap1/mailbox.c b/arch/arm/mach-omap1/mailbox.c index 59abbf331a96..0af4d6c85b47 100644 --- a/arch/arm/mach-omap1/mailbox.c +++ b/arch/arm/mach-omap1/mailbox.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Mailbox reservation modules for DSP | 2 | * Mailbox reservation modules for DSP |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Nokia Corporation | 4 | * Copyright (C) 2006-2009 Nokia Corporation |
5 | * Written by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> | 5 | * Written by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> |
6 | * | 6 | * |
7 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -27,7 +27,7 @@ | |||
27 | #define MAILBOX_DSP2ARM1_Flag 0x1c | 27 | #define MAILBOX_DSP2ARM1_Flag 0x1c |
28 | #define MAILBOX_DSP2ARM2_Flag 0x20 | 28 | #define MAILBOX_DSP2ARM2_Flag 0x20 |
29 | 29 | ||
30 | unsigned long mbox_base; | 30 | static void __iomem *mbox_base; |
31 | 31 | ||
32 | struct omap_mbox1_fifo { | 32 | struct omap_mbox1_fifo { |
33 | unsigned long cmd; | 33 | unsigned long cmd; |
@@ -40,14 +40,14 @@ struct omap_mbox1_priv { | |||
40 | struct omap_mbox1_fifo rx_fifo; | 40 | struct omap_mbox1_fifo rx_fifo; |
41 | }; | 41 | }; |
42 | 42 | ||
43 | static inline int mbox_read_reg(unsigned int reg) | 43 | static inline int mbox_read_reg(size_t ofs) |
44 | { | 44 | { |
45 | return __raw_readw(mbox_base + reg); | 45 | return __raw_readw(mbox_base + ofs); |
46 | } | 46 | } |
47 | 47 | ||
48 | static inline void mbox_write_reg(unsigned int val, unsigned int reg) | 48 | static inline void mbox_write_reg(u32 val, size_t ofs) |
49 | { | 49 | { |
50 | __raw_writew(val, mbox_base + reg); | 50 | __raw_writew(val, mbox_base + ofs); |
51 | } | 51 | } |
52 | 52 | ||
53 | /* msg */ | 53 | /* msg */ |
@@ -143,7 +143,7 @@ struct omap_mbox mbox_dsp_info = { | |||
143 | }; | 143 | }; |
144 | EXPORT_SYMBOL(mbox_dsp_info); | 144 | EXPORT_SYMBOL(mbox_dsp_info); |
145 | 145 | ||
146 | static int __init omap1_mbox_probe(struct platform_device *pdev) | 146 | static int __devinit omap1_mbox_probe(struct platform_device *pdev) |
147 | { | 147 | { |
148 | struct resource *res; | 148 | struct resource *res; |
149 | int ret = 0; | 149 | int ret = 0; |
@@ -170,12 +170,10 @@ static int __init omap1_mbox_probe(struct platform_device *pdev) | |||
170 | } | 170 | } |
171 | mbox_dsp_info.irq = res->start; | 171 | mbox_dsp_info.irq = res->start; |
172 | 172 | ||
173 | ret = omap_mbox_register(&mbox_dsp_info); | 173 | return omap_mbox_register(&pdev->dev, &mbox_dsp_info); |
174 | |||
175 | return ret; | ||
176 | } | 174 | } |
177 | 175 | ||
178 | static int omap1_mbox_remove(struct platform_device *pdev) | 176 | static int __devexit omap1_mbox_remove(struct platform_device *pdev) |
179 | { | 177 | { |
180 | omap_mbox_unregister(&mbox_dsp_info); | 178 | omap_mbox_unregister(&mbox_dsp_info); |
181 | 179 | ||
@@ -184,9 +182,9 @@ static int omap1_mbox_remove(struct platform_device *pdev) | |||
184 | 182 | ||
185 | static struct platform_driver omap1_mbox_driver = { | 183 | static struct platform_driver omap1_mbox_driver = { |
186 | .probe = omap1_mbox_probe, | 184 | .probe = omap1_mbox_probe, |
187 | .remove = omap1_mbox_remove, | 185 | .remove = __devexit_p(omap1_mbox_remove), |
188 | .driver = { | 186 | .driver = { |
189 | .name = "mailbox", | 187 | .name = "omap1-mailbox", |
190 | }, | 188 | }, |
191 | }; | 189 | }; |
192 | 190 | ||
@@ -203,4 +201,7 @@ static void __exit omap1_mbox_exit(void) | |||
203 | module_init(omap1_mbox_init); | 201 | module_init(omap1_mbox_init); |
204 | module_exit(omap1_mbox_exit); | 202 | module_exit(omap1_mbox_exit); |
205 | 203 | ||
206 | MODULE_LICENSE("GPL"); | 204 | MODULE_LICENSE("GPL v2"); |
205 | MODULE_DESCRIPTION("omap mailbox: omap1 architecture specific functions"); | ||
206 | MODULE_AUTHOR("Hiroshi DOYU" <Hiroshi.DOYU@nokia.com>); | ||
207 | MODULE_ALIAS("platform:omap1-mailbox"); | ||
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c index 062c905c2ba6..721e0d9d8b1d 100644 --- a/arch/arm/mach-omap1/mux.c +++ b/arch/arm/mach-omap1/mux.c | |||
@@ -58,6 +58,25 @@ MUX_CFG_730("W17_730_USB_VBUSI", 2, 29, 0, 28, 0, 0) | |||
58 | #define OMAP730_PINS_SZ 0 | 58 | #define OMAP730_PINS_SZ 0 |
59 | #endif /* CONFIG_ARCH_OMAP730 */ | 59 | #endif /* CONFIG_ARCH_OMAP730 */ |
60 | 60 | ||
61 | #ifdef CONFIG_ARCH_OMAP850 | ||
62 | struct pin_config __initdata_or_module omap850_pins[] = { | ||
63 | MUX_CFG_850("E2_850_KBR0", 12, 21, 0, 20, 1, 0) | ||
64 | MUX_CFG_850("J7_850_KBR1", 12, 25, 0, 24, 1, 0) | ||
65 | MUX_CFG_850("E1_850_KBR2", 12, 29, 0, 28, 1, 0) | ||
66 | MUX_CFG_850("F3_850_KBR3", 13, 1, 0, 0, 1, 0) | ||
67 | MUX_CFG_850("D2_850_KBR4", 13, 5, 0, 4, 1, 0) | ||
68 | MUX_CFG_850("C2_850_KBC0", 13, 9, 0, 8, 1, 0) | ||
69 | MUX_CFG_850("D3_850_KBC1", 13, 13, 0, 12, 1, 0) | ||
70 | MUX_CFG_850("E4_850_KBC2", 13, 17, 0, 16, 1, 0) | ||
71 | MUX_CFG_850("F4_850_KBC3", 13, 21, 0, 20, 1, 0) | ||
72 | MUX_CFG_850("E3_850_KBC4", 13, 25, 0, 24, 1, 0) | ||
73 | |||
74 | MUX_CFG_850("AA17_850_USB_DM", 2, 21, 0, 20, 0, 0) | ||
75 | MUX_CFG_850("W16_850_USB_PU_EN", 2, 25, 0, 24, 0, 0) | ||
76 | MUX_CFG_850("W17_850_USB_VBUSI", 2, 29, 0, 28, 0, 0) | ||
77 | }; | ||
78 | #endif | ||
79 | |||
61 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) | 80 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) |
62 | static struct pin_config __initdata_or_module omap1xxx_pins[] = { | 81 | static struct pin_config __initdata_or_module omap1xxx_pins[] = { |
63 | /* | 82 | /* |
@@ -419,6 +438,11 @@ int __init_or_module omap1_cfg_reg(const struct pin_config *cfg) | |||
419 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | 438 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", |
420 | cfg->pull_name, cfg->pull_reg, pull_orig, pull); | 439 | cfg->pull_name, cfg->pull_reg, pull_orig, pull); |
421 | } | 440 | } |
441 | |||
442 | #ifdef CONFIG_ARCH_OMAP850 | ||
443 | omap_mux_register(omap850_pins, ARRAY_SIZE(omap850_pins)); | ||
444 | #endif | ||
445 | |||
422 | #endif | 446 | #endif |
423 | 447 | ||
424 | #ifdef CONFIG_OMAP_MUX_ERRORS | 448 | #ifdef CONFIG_OMAP_MUX_ERRORS |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index 0002084e0655..842090b148f1 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -121,6 +121,13 @@ void __init omap_serial_init(void) | |||
121 | serial_platform_data[1].irq = INT_730_UART_MODEM_IRDA_2; | 121 | serial_platform_data[1].irq = INT_730_UART_MODEM_IRDA_2; |
122 | } | 122 | } |
123 | 123 | ||
124 | if (cpu_is_omap850()) { | ||
125 | serial_platform_data[0].regshift = 0; | ||
126 | serial_platform_data[1].regshift = 0; | ||
127 | serial_platform_data[0].irq = INT_850_UART_MODEM_1; | ||
128 | serial_platform_data[1].irq = INT_850_UART_MODEM_IRDA_2; | ||
129 | } | ||
130 | |||
124 | if (cpu_is_omap15xx()) { | 131 | if (cpu_is_omap15xx()) { |
125 | serial_platform_data[0].uartclk = OMAP1510_BASE_BAUD * 16; | 132 | serial_platform_data[0].uartclk = OMAP1510_BASE_BAUD * 16; |
126 | serial_platform_data[1].uartclk = OMAP1510_BASE_BAUD * 16; | 133 | serial_platform_data[1].uartclk = OMAP1510_BASE_BAUD * 16; |