diff options
Diffstat (limited to 'arch/arm/mach-pxa')
76 files changed, 846 insertions, 339 deletions
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index 7aefb9074852..dd235ecc9d6c 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -8,19 +8,16 @@ config ARCH_LUBBOCK | |||
8 | bool "Intel DBPXA250 Development Platform (aka Lubbock)" | 8 | bool "Intel DBPXA250 Development Platform (aka Lubbock)" |
9 | select PXA25x | 9 | select PXA25x |
10 | select SA1111 | 10 | select SA1111 |
11 | select PXA_HAVE_BOARD_IRQS | ||
12 | 11 | ||
13 | config MACH_MAINSTONE | 12 | config MACH_MAINSTONE |
14 | bool "Intel HCDDBBVA0 Development Platform (aka Mainstone)" | 13 | bool "Intel HCDDBBVA0 Development Platform (aka Mainstone)" |
15 | select PXA27x | 14 | select PXA27x |
16 | select HAVE_PWM | 15 | select HAVE_PWM |
17 | select PXA_HAVE_BOARD_IRQS | ||
18 | 16 | ||
19 | config MACH_ZYLONITE | 17 | config MACH_ZYLONITE |
20 | bool | 18 | bool |
21 | select PXA3xx | 19 | select PXA3xx |
22 | select HAVE_PWM | 20 | select HAVE_PWM |
23 | select PXA_HAVE_BOARD_IRQS | ||
24 | 21 | ||
25 | config MACH_ZYLONITE300 | 22 | config MACH_ZYLONITE300 |
26 | bool "PXA3xx Development Platform (aka Zylonite) PXA300/310" | 23 | bool "PXA3xx Development Platform (aka Zylonite) PXA300/310" |
@@ -44,6 +41,10 @@ config MACH_TAVOREVB | |||
44 | select PXA3xx | 41 | select PXA3xx |
45 | select CPU_PXA930 | 42 | select CPU_PXA930 |
46 | 43 | ||
44 | config MACH_TAVOREVB3 | ||
45 | bool "PXA95x Development Platform (aka TavorEVB III)" | ||
46 | select CPU_PXA950 | ||
47 | |||
47 | config MACH_SAAR | 48 | config MACH_SAAR |
48 | bool "PXA930 Handheld Platform (aka SAAR)" | 49 | bool "PXA930 Handheld Platform (aka SAAR)" |
49 | select PXA3xx | 50 | select PXA3xx |
@@ -61,7 +62,6 @@ config ARCH_VIPER | |||
61 | select ISA | 62 | select ISA |
62 | select I2C_GPIO | 63 | select I2C_GPIO |
63 | select HAVE_PWM | 64 | select HAVE_PWM |
64 | select PXA_HAVE_BOARD_IRQS | ||
65 | select PXA_HAVE_ISA_IRQS | 65 | select PXA_HAVE_ISA_IRQS |
66 | select ARCOM_PCMCIA | 66 | select ARCOM_PCMCIA |
67 | 67 | ||
@@ -69,7 +69,6 @@ config MACH_ARCOM_ZEUS | |||
69 | bool "Arcom/Eurotech ZEUS SBC" | 69 | bool "Arcom/Eurotech ZEUS SBC" |
70 | select PXA27x | 70 | select PXA27x |
71 | select ISA | 71 | select ISA |
72 | select PXA_HAVE_BOARD_IRQS | ||
73 | select PXA_HAVE_ISA_IRQS | 72 | select PXA_HAVE_ISA_IRQS |
74 | select ARCOM_PCMCIA | 73 | select ARCOM_PCMCIA |
75 | 74 | ||
@@ -77,7 +76,6 @@ config MACH_BALLOON3 | |||
77 | bool "Balloon 3 board" | 76 | bool "Balloon 3 board" |
78 | select PXA27x | 77 | select PXA27x |
79 | select IWMMXT | 78 | select IWMMXT |
80 | select PXA_HAVE_BOARD_IRQS | ||
81 | 79 | ||
82 | config MACH_CSB726 | 80 | config MACH_CSB726 |
83 | bool "Enable Cogent CSB726 System On a Module" | 81 | bool "Enable Cogent CSB726 System On a Module" |
@@ -140,13 +138,11 @@ config MACH_INTELMOTE2 | |||
140 | bool "Intel Mote 2 Platform" | 138 | bool "Intel Mote 2 Platform" |
141 | select PXA27x | 139 | select PXA27x |
142 | select IWMMXT | 140 | select IWMMXT |
143 | select PXA_HAVE_BOARD_IRQS | ||
144 | 141 | ||
145 | config MACH_STARGATE2 | 142 | config MACH_STARGATE2 |
146 | bool "Intel Stargate 2 Platform" | 143 | bool "Intel Stargate 2 Platform" |
147 | select PXA27x | 144 | select PXA27x |
148 | select IWMMXT | 145 | select IWMMXT |
149 | select PXA_HAVE_BOARD_IRQS | ||
150 | 146 | ||
151 | config MACH_XCEP | 147 | config MACH_XCEP |
152 | bool "Iskratel Electronics XCEP" | 148 | bool "Iskratel Electronics XCEP" |
@@ -206,13 +202,11 @@ config MACH_LOGICPD_PXA270 | |||
206 | bool "LogicPD PXA270 Card Engine Development Platform" | 202 | bool "LogicPD PXA270 Card Engine Development Platform" |
207 | select PXA27x | 203 | select PXA27x |
208 | select HAVE_PWM | 204 | select HAVE_PWM |
209 | select PXA_HAVE_BOARD_IRQS | ||
210 | 205 | ||
211 | config MACH_PCM027 | 206 | config MACH_PCM027 |
212 | bool "Phytec phyCORE-PXA270 CPU module (PCM-027)" | 207 | bool "Phytec phyCORE-PXA270 CPU module (PCM-027)" |
213 | select PXA27x | 208 | select PXA27x |
214 | select IWMMXT | 209 | select IWMMXT |
215 | select PXA_HAVE_BOARD_IRQS | ||
216 | 210 | ||
217 | config MACH_PCM990_BASEBOARD | 211 | config MACH_PCM990_BASEBOARD |
218 | bool "PHYTEC PCM-990 development board" | 212 | bool "PHYTEC PCM-990 development board" |
@@ -247,7 +241,6 @@ config MACH_COLIBRI_PXA270_INCOME | |||
247 | depends on MACH_COLIBRI | 241 | depends on MACH_COLIBRI |
248 | select PXA27x | 242 | select PXA27x |
249 | select HAVE_PWM | 243 | select HAVE_PWM |
250 | select PXA_HAVE_BOARD_IRQS | ||
251 | 244 | ||
252 | config MACH_COLIBRI300 | 245 | config MACH_COLIBRI300 |
253 | bool "Toradex Colibri PXA300/310" | 246 | bool "Toradex Colibri PXA300/310" |
@@ -274,7 +267,6 @@ config MACH_H4700 | |||
274 | select PXA27x | 267 | select PXA27x |
275 | select IWMMXT | 268 | select IWMMXT |
276 | select HAVE_PWM | 269 | select HAVE_PWM |
277 | select PXA_HAVE_BOARD_IRQS | ||
278 | 270 | ||
279 | config MACH_H5000 | 271 | config MACH_H5000 |
280 | bool "HP iPAQ h5000" | 272 | bool "HP iPAQ h5000" |
@@ -289,7 +281,6 @@ config MACH_MAGICIAN | |||
289 | select PXA27x | 281 | select PXA27x |
290 | select IWMMXT | 282 | select IWMMXT |
291 | select HAVE_PWM | 283 | select HAVE_PWM |
292 | select PXA_HAVE_BOARD_IRQS | ||
293 | 284 | ||
294 | config MACH_MIOA701 | 285 | config MACH_MIOA701 |
295 | bool "Mitac Mio A701 Support" | 286 | bool "Mitac Mio A701 Support" |
@@ -307,7 +298,6 @@ config PXA_EZX | |||
307 | select PXA27x | 298 | select PXA27x |
308 | select IWMMXT | 299 | select IWMMXT |
309 | select HAVE_PWM | 300 | select HAVE_PWM |
310 | select PXA_HAVE_BOARD_IRQS | ||
311 | 301 | ||
312 | config MACH_EZX_A780 | 302 | config MACH_EZX_A780 |
313 | bool "Motorola EZX A780" | 303 | bool "Motorola EZX A780" |
@@ -478,7 +468,6 @@ config MACH_POODLE | |||
478 | depends on PXA_SHARPSL | 468 | depends on PXA_SHARPSL |
479 | select PXA25x | 469 | select PXA25x |
480 | select SHARP_LOCOMO | 470 | select SHARP_LOCOMO |
481 | select PXA_HAVE_BOARD_IRQS | ||
482 | 471 | ||
483 | config MACH_CORGI | 472 | config MACH_CORGI |
484 | bool "Enable Sharp SL-C700 (Corgi) Support" | 473 | bool "Enable Sharp SL-C700 (Corgi) Support" |
@@ -523,7 +512,6 @@ config MACH_TOSA | |||
523 | bool "Enable Sharp SL-6000x (Tosa) Support" | 512 | bool "Enable Sharp SL-6000x (Tosa) Support" |
524 | depends on PXA_SHARPSL | 513 | depends on PXA_SHARPSL |
525 | select PXA25x | 514 | select PXA25x |
526 | select PXA_HAVE_BOARD_IRQS | ||
527 | 515 | ||
528 | config TOSA_BT | 516 | config TOSA_BT |
529 | tristate "Control the state of built-in bluetooth chip on Sharp SL-6000" | 517 | tristate "Control the state of built-in bluetooth chip on Sharp SL-6000" |
@@ -552,7 +540,6 @@ config MACH_ICONTROL | |||
552 | config ARCH_PXA_ESERIES | 540 | config ARCH_PXA_ESERIES |
553 | bool "PXA based Toshiba e-series PDAs" | 541 | bool "PXA based Toshiba e-series PDAs" |
554 | select PXA25x | 542 | select PXA25x |
555 | select PXA_HAVE_BOARD_IRQS | ||
556 | 543 | ||
557 | config MACH_E330 | 544 | config MACH_E330 |
558 | bool "Toshiba e330" | 545 | bool "Toshiba e330" |
@@ -606,7 +593,6 @@ config MACH_ZIPIT2 | |||
606 | bool "Zipit Z2 Handheld" | 593 | bool "Zipit Z2 Handheld" |
607 | select PXA27x | 594 | select PXA27x |
608 | select HAVE_PWM | 595 | select HAVE_PWM |
609 | select PXA_HAVE_BOARD_IRQS | ||
610 | 596 | ||
611 | endmenu | 597 | endmenu |
612 | 598 | ||
@@ -643,6 +629,7 @@ config CPU_PXA300 | |||
643 | config CPU_PXA310 | 629 | config CPU_PXA310 |
644 | bool | 630 | bool |
645 | select CPU_PXA300 | 631 | select CPU_PXA300 |
632 | select PXA310_ULPI if USB_ULPI | ||
646 | help | 633 | help |
647 | PXA310 (codename Monahans-LV) | 634 | PXA310 (codename Monahans-LV) |
648 | 635 | ||
@@ -692,10 +679,10 @@ config SHARPSL_PM_MAX1111 | |||
692 | select HWMON | 679 | select HWMON |
693 | select SENSORS_MAX1111 | 680 | select SENSORS_MAX1111 |
694 | 681 | ||
695 | config PXA_HAVE_BOARD_IRQS | 682 | config PXA_HAVE_ISA_IRQS |
696 | bool | 683 | bool |
697 | 684 | ||
698 | config PXA_HAVE_ISA_IRQS | 685 | config PXA310_ULPI |
699 | bool | 686 | bool |
700 | 687 | ||
701 | endif | 688 | endif |
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile index 85c7fb324dbb..e2f89c2c6f49 100644 --- a/arch/arm/mach-pxa/Makefile +++ b/arch/arm/mach-pxa/Makefile | |||
@@ -18,7 +18,7 @@ endif | |||
18 | # SoC-specific code | 18 | # SoC-specific code |
19 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o | 19 | obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o |
20 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa2xx.o pxa27x.o | 20 | obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa2xx.o pxa27x.o |
21 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o pxa3xx.o smemc.o | 21 | obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o pxa3xx.o smemc.o pxa3xx-ulpi.o |
22 | obj-$(CONFIG_CPU_PXA300) += pxa300.o | 22 | obj-$(CONFIG_CPU_PXA300) += pxa300.o |
23 | obj-$(CONFIG_CPU_PXA320) += pxa320.o | 23 | obj-$(CONFIG_CPU_PXA320) += pxa320.o |
24 | obj-$(CONFIG_CPU_PXA930) += pxa930.o | 24 | obj-$(CONFIG_CPU_PXA930) += pxa930.o |
@@ -32,6 +32,7 @@ obj-$(CONFIG_MACH_ZYLONITE300) += zylonite.o zylonite_pxa300.o | |||
32 | obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o | 32 | obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o |
33 | obj-$(CONFIG_MACH_LITTLETON) += littleton.o | 33 | obj-$(CONFIG_MACH_LITTLETON) += littleton.o |
34 | obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o | 34 | obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o |
35 | obj-$(CONFIG_MACH_TAVOREVB3) += tavorevb3.o | ||
35 | obj-$(CONFIG_MACH_SAAR) += saar.o | 36 | obj-$(CONFIG_MACH_SAAR) += saar.o |
36 | 37 | ||
37 | # 3rd Party Dev Platforms | 38 | # 3rd Party Dev Platforms |
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index 9041340fee1d..21e188901935 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c | |||
@@ -68,42 +68,6 @@ static unsigned long balloon3_pin_config[] __initdata = { | |||
68 | 68 | ||
69 | /* Reset, configured as GPIO wakeup source */ | 69 | /* Reset, configured as GPIO wakeup source */ |
70 | GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, | 70 | GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, |
71 | |||
72 | /* LEDs */ | ||
73 | GPIO9_GPIO, /* NAND activity LED */ | ||
74 | GPIO10_GPIO, /* Heartbeat LED */ | ||
75 | |||
76 | /* AC97 */ | ||
77 | GPIO28_AC97_BITCLK, | ||
78 | GPIO29_AC97_SDATA_IN_0, | ||
79 | GPIO30_AC97_SDATA_OUT, | ||
80 | GPIO31_AC97_SYNC, | ||
81 | GPIO113_AC97_nRESET, | ||
82 | GPIO95_GPIO, | ||
83 | |||
84 | /* MMC */ | ||
85 | GPIO32_MMC_CLK, | ||
86 | GPIO92_MMC_DAT_0, | ||
87 | GPIO109_MMC_DAT_1, | ||
88 | GPIO110_MMC_DAT_2, | ||
89 | GPIO111_MMC_DAT_3, | ||
90 | GPIO112_MMC_CMD, | ||
91 | |||
92 | /* USB Host */ | ||
93 | GPIO88_USBH1_PWR, | ||
94 | GPIO89_USBH1_PEN, | ||
95 | |||
96 | /* PC Card */ | ||
97 | GPIO48_nPOE, | ||
98 | GPIO49_nPWE, | ||
99 | GPIO50_nPIOR, | ||
100 | GPIO51_nPIOW, | ||
101 | GPIO85_nPCE_1, | ||
102 | GPIO54_nPCE_2, | ||
103 | GPIO79_PSKTSEL, | ||
104 | GPIO55_nPREG, | ||
105 | GPIO56_nPWAIT, | ||
106 | GPIO57_nIOIS16, | ||
107 | }; | 71 | }; |
108 | 72 | ||
109 | /****************************************************************************** | 73 | /****************************************************************************** |
@@ -132,6 +96,34 @@ int __init parse_balloon3_features(char *arg) | |||
132 | early_param("balloon3_features", parse_balloon3_features); | 96 | early_param("balloon3_features", parse_balloon3_features); |
133 | 97 | ||
134 | /****************************************************************************** | 98 | /****************************************************************************** |
99 | * Compact Flash slot | ||
100 | ******************************************************************************/ | ||
101 | #if defined(CONFIG_PCMCIA_PXA2XX) || defined(CONFIG_PCMCIA_PXA2XX_MODULE) | ||
102 | static unsigned long balloon3_cf_pin_config[] __initdata = { | ||
103 | GPIO48_nPOE, | ||
104 | GPIO49_nPWE, | ||
105 | GPIO50_nPIOR, | ||
106 | GPIO51_nPIOW, | ||
107 | GPIO85_nPCE_1, | ||
108 | GPIO54_nPCE_2, | ||
109 | GPIO79_PSKTSEL, | ||
110 | GPIO55_nPREG, | ||
111 | GPIO56_nPWAIT, | ||
112 | GPIO57_nIOIS16, | ||
113 | }; | ||
114 | |||
115 | static void __init balloon3_cf_init(void) | ||
116 | { | ||
117 | if (!balloon3_has(BALLOON3_FEATURE_CF)) | ||
118 | return; | ||
119 | |||
120 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_cf_pin_config)); | ||
121 | } | ||
122 | #else | ||
123 | static inline void balloon3_cf_init(void) {} | ||
124 | #endif | ||
125 | |||
126 | /****************************************************************************** | ||
135 | * NOR Flash | 127 | * NOR Flash |
136 | ******************************************************************************/ | 128 | ******************************************************************************/ |
137 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | 129 | #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) |
@@ -179,6 +171,15 @@ static inline void balloon3_nor_init(void) {} | |||
179 | ******************************************************************************/ | 171 | ******************************************************************************/ |
180 | #if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ | 172 | #if defined(CONFIG_TOUCHSCREEN_UCB1400) || \ |
181 | defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) | 173 | defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE) |
174 | static unsigned long balloon3_ac97_pin_config[] __initdata = { | ||
175 | GPIO28_AC97_BITCLK, | ||
176 | GPIO29_AC97_SDATA_IN_0, | ||
177 | GPIO30_AC97_SDATA_OUT, | ||
178 | GPIO31_AC97_SYNC, | ||
179 | GPIO113_AC97_nRESET, | ||
180 | GPIO95_GPIO, | ||
181 | }; | ||
182 | |||
182 | static struct ucb1400_pdata vpac270_ucb1400_pdata = { | 183 | static struct ucb1400_pdata vpac270_ucb1400_pdata = { |
183 | .irq = IRQ_GPIO(BALLOON3_GPIO_CODEC_IRQ), | 184 | .irq = IRQ_GPIO(BALLOON3_GPIO_CODEC_IRQ), |
184 | }; | 185 | }; |
@@ -197,6 +198,7 @@ static void __init balloon3_ts_init(void) | |||
197 | if (!balloon3_has(BALLOON3_FEATURE_AUDIO)) | 198 | if (!balloon3_has(BALLOON3_FEATURE_AUDIO)) |
198 | return; | 199 | return; |
199 | 200 | ||
201 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_ac97_pin_config)); | ||
200 | pxa_set_ac97_info(NULL); | 202 | pxa_set_ac97_info(NULL); |
201 | platform_device_register(&balloon3_ucb1400_device); | 203 | platform_device_register(&balloon3_ucb1400_device); |
202 | } | 204 | } |
@@ -208,6 +210,11 @@ static inline void balloon3_ts_init(void) {} | |||
208 | * Framebuffer | 210 | * Framebuffer |
209 | ******************************************************************************/ | 211 | ******************************************************************************/ |
210 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) | 212 | #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) |
213 | static unsigned long balloon3_lcd_pin_config[] __initdata = { | ||
214 | GPIOxx_LCD_TFT_16BPP, | ||
215 | GPIO99_GPIO, | ||
216 | }; | ||
217 | |||
211 | static struct pxafb_mode_info balloon3_lcd_modes[] = { | 218 | static struct pxafb_mode_info balloon3_lcd_modes[] = { |
212 | { | 219 | { |
213 | .pixclock = 38000, | 220 | .pixclock = 38000, |
@@ -242,6 +249,8 @@ static void __init balloon3_lcd_init(void) | |||
242 | if (!balloon3_has(BALLOON3_FEATURE_TOPPOLY)) | 249 | if (!balloon3_has(BALLOON3_FEATURE_TOPPOLY)) |
243 | return; | 250 | return; |
244 | 251 | ||
252 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_lcd_pin_config)); | ||
253 | |||
245 | ret = gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT, "BKL-ON"); | 254 | ret = gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT, "BKL-ON"); |
246 | if (ret) { | 255 | if (ret) { |
247 | pr_err("Requesting BKL-ON GPIO failed!\n"); | 256 | pr_err("Requesting BKL-ON GPIO failed!\n"); |
@@ -271,6 +280,15 @@ static inline void balloon3_lcd_init(void) {} | |||
271 | * SD/MMC card controller | 280 | * SD/MMC card controller |
272 | ******************************************************************************/ | 281 | ******************************************************************************/ |
273 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) | 282 | #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) |
283 | static unsigned long balloon3_mmc_pin_config[] __initdata = { | ||
284 | GPIO32_MMC_CLK, | ||
285 | GPIO92_MMC_DAT_0, | ||
286 | GPIO109_MMC_DAT_1, | ||
287 | GPIO110_MMC_DAT_2, | ||
288 | GPIO111_MMC_DAT_3, | ||
289 | GPIO112_MMC_CMD, | ||
290 | }; | ||
291 | |||
274 | static struct pxamci_platform_data balloon3_mci_platform_data = { | 292 | static struct pxamci_platform_data balloon3_mci_platform_data = { |
275 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 293 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
276 | .gpio_card_detect = -1, | 294 | .gpio_card_detect = -1, |
@@ -281,6 +299,7 @@ static struct pxamci_platform_data balloon3_mci_platform_data = { | |||
281 | 299 | ||
282 | static void __init balloon3_mmc_init(void) | 300 | static void __init balloon3_mmc_init(void) |
283 | { | 301 | { |
302 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_mmc_pin_config)); | ||
284 | pxa_set_mci_info(&balloon3_mci_platform_data); | 303 | pxa_set_mci_info(&balloon3_mci_platform_data); |
285 | } | 304 | } |
286 | #else | 305 | #else |
@@ -339,6 +358,11 @@ static inline void balloon3_irda_init(void) {} | |||
339 | * USB Host | 358 | * USB Host |
340 | ******************************************************************************/ | 359 | ******************************************************************************/ |
341 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | 360 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) |
361 | static unsigned long balloon3_uhc_pin_config[] __initdata = { | ||
362 | GPIO88_USBH1_PWR, | ||
363 | GPIO89_USBH1_PEN, | ||
364 | }; | ||
365 | |||
342 | static struct pxaohci_platform_data balloon3_ohci_info = { | 366 | static struct pxaohci_platform_data balloon3_ohci_info = { |
343 | .port_mode = PMM_PERPORT_MODE, | 367 | .port_mode = PMM_PERPORT_MODE, |
344 | .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, | 368 | .flags = ENABLE_PORT_ALL | POWER_CONTROL_LOW | POWER_SENSE_LOW, |
@@ -348,6 +372,7 @@ static void __init balloon3_uhc_init(void) | |||
348 | { | 372 | { |
349 | if (!balloon3_has(BALLOON3_FEATURE_OHCI)) | 373 | if (!balloon3_has(BALLOON3_FEATURE_OHCI)) |
350 | return; | 374 | return; |
375 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_uhc_pin_config)); | ||
351 | pxa_set_ohci_info(&balloon3_ohci_info); | 376 | pxa_set_ohci_info(&balloon3_ohci_info); |
352 | } | 377 | } |
353 | #else | 378 | #else |
@@ -358,6 +383,11 @@ static inline void balloon3_uhc_init(void) {} | |||
358 | * LEDs | 383 | * LEDs |
359 | ******************************************************************************/ | 384 | ******************************************************************************/ |
360 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | 385 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) |
386 | static unsigned long balloon3_led_pin_config[] __initdata = { | ||
387 | GPIO9_GPIO, /* NAND activity LED */ | ||
388 | GPIO10_GPIO, /* Heartbeat LED */ | ||
389 | }; | ||
390 | |||
361 | struct gpio_led balloon3_gpio_leds[] = { | 391 | struct gpio_led balloon3_gpio_leds[] = { |
362 | { | 392 | { |
363 | .name = "balloon3:green:idle", | 393 | .name = "balloon3:green:idle", |
@@ -436,6 +466,7 @@ static struct platform_device balloon3_pcf_leds = { | |||
436 | 466 | ||
437 | static void __init balloon3_leds_init(void) | 467 | static void __init balloon3_leds_init(void) |
438 | { | 468 | { |
469 | pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_led_pin_config)); | ||
439 | platform_device_register(&balloon3_leds); | 470 | platform_device_register(&balloon3_leds); |
440 | platform_device_register(&balloon3_pcf_leds); | 471 | platform_device_register(&balloon3_pcf_leds); |
441 | } | 472 | } |
@@ -757,6 +788,7 @@ static void __init balloon3_init(void) | |||
757 | balloon3_ts_init(); | 788 | balloon3_ts_init(); |
758 | balloon3_udc_init(); | 789 | balloon3_udc_init(); |
759 | balloon3_uhc_init(); | 790 | balloon3_uhc_init(); |
791 | balloon3_cf_init(); | ||
760 | } | 792 | } |
761 | 793 | ||
762 | static struct map_desc balloon3_io_desc[] __initdata = { | 794 | static struct map_desc balloon3_io_desc[] __initdata = { |
@@ -776,9 +808,8 @@ static void __init balloon3_map_io(void) | |||
776 | 808 | ||
777 | MACHINE_START(BALLOON3, "Balloon3") | 809 | MACHINE_START(BALLOON3, "Balloon3") |
778 | /* Maintainer: Nick Bane. */ | 810 | /* Maintainer: Nick Bane. */ |
779 | .phys_io = 0x40000000, | ||
780 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
781 | .map_io = balloon3_map_io, | 811 | .map_io = balloon3_map_io, |
812 | .nr_irqs = BALLOON3_NR_IRQS, | ||
782 | .init_irq = balloon3_init_irq, | 813 | .init_irq = balloon3_init_irq, |
783 | .timer = &pxa_timer, | 814 | .timer = &pxa_timer, |
784 | .init_machine = balloon3_init, | 815 | .init_machine = balloon3_init, |
diff --git a/arch/arm/mach-pxa/capc7117.c b/arch/arm/mach-pxa/capc7117.c index aae544631a8b..4bd7a3cda48c 100644 --- a/arch/arm/mach-pxa/capc7117.c +++ b/arch/arm/mach-pxa/capc7117.c | |||
@@ -148,9 +148,7 @@ static void __init capc7117_init(void) | |||
148 | 148 | ||
149 | MACHINE_START(CAPC7117, | 149 | MACHINE_START(CAPC7117, |
150 | "Embedian CAPC-7117 evaluation kit based on the MXM-8x10 CoM") | 150 | "Embedian CAPC-7117 evaluation kit based on the MXM-8x10 CoM") |
151 | .phys_io = 0x40000000, | ||
152 | .boot_params = 0xa0000100, | 151 | .boot_params = 0xa0000100, |
153 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
154 | .map_io = pxa_map_io, | 152 | .map_io = pxa_map_io, |
155 | .init_irq = pxa3xx_init_irq, | 153 | .init_irq = pxa3xx_init_irq, |
156 | .timer = &pxa_timer, | 154 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c index bff6e78f033d..ac5598ce9724 100644 --- a/arch/arm/mach-pxa/cm-x2xx.c +++ b/arch/arm/mach-pxa/cm-x2xx.c | |||
@@ -33,6 +33,9 @@ | |||
33 | extern void cmx255_init(void); | 33 | extern void cmx255_init(void); |
34 | extern void cmx270_init(void); | 34 | extern void cmx270_init(void); |
35 | 35 | ||
36 | /* reserve IRQs for IT8152 */ | ||
37 | #define CMX2XX_NR_IRQS (IRQ_BOARD_START + 40) | ||
38 | |||
36 | /* virtual addresses for statically mapped regions */ | 39 | /* virtual addresses for statically mapped regions */ |
37 | #define CMX2XX_VIRT_BASE (0xe8000000) | 40 | #define CMX2XX_VIRT_BASE (0xe8000000) |
38 | #define CMX2XX_IT8152_VIRT (CMX2XX_VIRT_BASE) | 41 | #define CMX2XX_IT8152_VIRT (CMX2XX_VIRT_BASE) |
@@ -511,9 +514,8 @@ static void __init cmx2xx_map_io(void) | |||
511 | 514 | ||
512 | MACHINE_START(ARMCORE, "Compulab CM-X2XX") | 515 | MACHINE_START(ARMCORE, "Compulab CM-X2XX") |
513 | .boot_params = 0xa0000100, | 516 | .boot_params = 0xa0000100, |
514 | .phys_io = 0x40000000, | ||
515 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
516 | .map_io = cmx2xx_map_io, | 517 | .map_io = cmx2xx_map_io, |
518 | .nr_irqs = CMX2XX_NR_IRQS, | ||
517 | .init_irq = cmx2xx_init_irq, | 519 | .init_irq = cmx2xx_init_irq, |
518 | .timer = &pxa_timer, | 520 | .timer = &pxa_timer, |
519 | .init_machine = cmx2xx_init, | 521 | .init_machine = cmx2xx_init, |
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c index c70e6c2f4e7c..922b1075b9de 100644 --- a/arch/arm/mach-pxa/cm-x300.c +++ b/arch/arm/mach-pxa/cm-x300.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
22 | #include <linux/clk.h> | ||
22 | 23 | ||
23 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
24 | #include <linux/dm9000.h> | 25 | #include <linux/dm9000.h> |
@@ -50,6 +51,7 @@ | |||
50 | #include <plat/i2c.h> | 51 | #include <plat/i2c.h> |
51 | #include <plat/pxa3xx_nand.h> | 52 | #include <plat/pxa3xx_nand.h> |
52 | #include <mach/audio.h> | 53 | #include <mach/audio.h> |
54 | #include <mach/pxa3xx-u2d.h> | ||
53 | 55 | ||
54 | #include <asm/mach/map.h> | 56 | #include <asm/mach/map.h> |
55 | 57 | ||
@@ -68,6 +70,8 @@ | |||
68 | #define GPIO97_RTC_RD (97) | 70 | #define GPIO97_RTC_RD (97) |
69 | #define GPIO98_RTC_IO (98) | 71 | #define GPIO98_RTC_IO (98) |
70 | 72 | ||
73 | #define GPIO_ULPI_PHY_RST (127) | ||
74 | |||
71 | static mfp_cfg_t cm_x3xx_mfp_cfg[] __initdata = { | 75 | static mfp_cfg_t cm_x3xx_mfp_cfg[] __initdata = { |
72 | /* LCD */ | 76 | /* LCD */ |
73 | GPIO54_LCD_LDD_0, | 77 | GPIO54_LCD_LDD_0, |
@@ -472,6 +476,78 @@ static void __init cm_x300_init_mmc(void) | |||
472 | static inline void cm_x300_init_mmc(void) {} | 476 | static inline void cm_x300_init_mmc(void) {} |
473 | #endif | 477 | #endif |
474 | 478 | ||
479 | #if defined(CONFIG_PXA310_ULPI) | ||
480 | static struct clk *pout_clk; | ||
481 | |||
482 | static int cm_x300_ulpi_phy_reset(void) | ||
483 | { | ||
484 | int err; | ||
485 | |||
486 | /* reset the PHY */ | ||
487 | err = gpio_request(GPIO_ULPI_PHY_RST, "ulpi reset"); | ||
488 | if (err) { | ||
489 | pr_err("%s: failed to request ULPI reset GPIO: %d\n", | ||
490 | __func__, err); | ||
491 | return err; | ||
492 | } | ||
493 | |||
494 | gpio_direction_output(GPIO_ULPI_PHY_RST, 0); | ||
495 | msleep(10); | ||
496 | gpio_set_value(GPIO_ULPI_PHY_RST, 1); | ||
497 | msleep(10); | ||
498 | |||
499 | gpio_free(GPIO_ULPI_PHY_RST); | ||
500 | |||
501 | return 0; | ||
502 | } | ||
503 | |||
504 | static inline int cm_x300_u2d_init(struct device *dev) | ||
505 | { | ||
506 | int err = 0; | ||
507 | |||
508 | if (cpu_is_pxa310()) { | ||
509 | /* CLK_POUT is connected to the ULPI PHY */ | ||
510 | pout_clk = clk_get(NULL, "CLK_POUT"); | ||
511 | if (IS_ERR(pout_clk)) { | ||
512 | err = PTR_ERR(pout_clk); | ||
513 | pr_err("%s: failed to get CLK_POUT: %d\n", | ||
514 | __func__, err); | ||
515 | return err; | ||
516 | } | ||
517 | clk_enable(pout_clk); | ||
518 | |||
519 | err = cm_x300_ulpi_phy_reset(); | ||
520 | if (err) { | ||
521 | clk_disable(pout_clk); | ||
522 | clk_put(pout_clk); | ||
523 | } | ||
524 | } | ||
525 | |||
526 | return err; | ||
527 | } | ||
528 | |||
529 | static void cm_x300_u2d_exit(struct device *dev) | ||
530 | { | ||
531 | if (cpu_is_pxa310()) { | ||
532 | clk_disable(pout_clk); | ||
533 | clk_put(pout_clk); | ||
534 | } | ||
535 | } | ||
536 | |||
537 | static struct pxa3xx_u2d_platform_data cm_x300_u2d_platform_data = { | ||
538 | .ulpi_mode = ULPI_SER_6PIN, | ||
539 | .init = cm_x300_u2d_init, | ||
540 | .exit = cm_x300_u2d_exit, | ||
541 | }; | ||
542 | |||
543 | static void cm_x300_init_u2d(void) | ||
544 | { | ||
545 | pxa3xx_set_u2d_info(&cm_x300_u2d_platform_data); | ||
546 | } | ||
547 | #else | ||
548 | static inline void cm_x300_init_u2d(void) {} | ||
549 | #endif | ||
550 | |||
475 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | 551 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) |
476 | static int cm_x300_ohci_init(struct device *dev) | 552 | static int cm_x300_ohci_init(struct device *dev) |
477 | { | 553 | { |
@@ -754,6 +830,7 @@ static void __init cm_x300_init(void) | |||
754 | cm_x300_init_da9030(); | 830 | cm_x300_init_da9030(); |
755 | cm_x300_init_dm9000(); | 831 | cm_x300_init_dm9000(); |
756 | cm_x300_init_lcd(); | 832 | cm_x300_init_lcd(); |
833 | cm_x300_init_u2d(); | ||
757 | cm_x300_init_ohci(); | 834 | cm_x300_init_ohci(); |
758 | cm_x300_init_mmc(); | 835 | cm_x300_init_mmc(); |
759 | cm_x300_init_nand(); | 836 | cm_x300_init_nand(); |
@@ -779,9 +856,7 @@ static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags, | |||
779 | } | 856 | } |
780 | 857 | ||
781 | MACHINE_START(CM_X300, "CM-X300 module") | 858 | MACHINE_START(CM_X300, "CM-X300 module") |
782 | .phys_io = 0x40000000, | ||
783 | .boot_params = 0xa0000100, | 859 | .boot_params = 0xa0000100, |
784 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
785 | .map_io = pxa_map_io, | 860 | .map_io = pxa_map_io, |
786 | .init_irq = pxa3xx_init_irq, | 861 | .init_irq = pxa3xx_init_irq, |
787 | .timer = &pxa_timer, | 862 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c index 98673ac6efd0..bc045100ec15 100644 --- a/arch/arm/mach-pxa/colibri-pxa270.c +++ b/arch/arm/mach-pxa/colibri-pxa270.c | |||
@@ -207,8 +207,6 @@ static void __init colibri_pxa270_income_init(void) | |||
207 | } | 207 | } |
208 | 208 | ||
209 | MACHINE_START(COLIBRI, "Toradex Colibri PXA270") | 209 | MACHINE_START(COLIBRI, "Toradex Colibri PXA270") |
210 | .phys_io = 0x40000000, | ||
211 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
212 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, | 210 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, |
213 | .init_machine = colibri_pxa270_init, | 211 | .init_machine = colibri_pxa270_init, |
214 | .map_io = pxa_map_io, | 212 | .map_io = pxa_map_io, |
@@ -217,8 +215,6 @@ MACHINE_START(COLIBRI, "Toradex Colibri PXA270") | |||
217 | MACHINE_END | 215 | MACHINE_END |
218 | 216 | ||
219 | MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC") | 217 | MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC") |
220 | .phys_io = 0x40000000, | ||
221 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
222 | .boot_params = 0xa0000100, | 218 | .boot_params = 0xa0000100, |
223 | .init_machine = colibri_pxa270_income_init, | 219 | .init_machine = colibri_pxa270_income_init, |
224 | .map_io = pxa_map_io, | 220 | .map_io = pxa_map_io, |
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c index 40b6ac2de876..a70b256591e6 100644 --- a/arch/arm/mach-pxa/colibri-pxa300.c +++ b/arch/arm/mach-pxa/colibri-pxa300.c | |||
@@ -186,8 +186,6 @@ void __init colibri_pxa300_init(void) | |||
186 | } | 186 | } |
187 | 187 | ||
188 | MACHINE_START(COLIBRI300, "Toradex Colibri PXA300") | 188 | MACHINE_START(COLIBRI300, "Toradex Colibri PXA300") |
189 | .phys_io = 0x40000000, | ||
190 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
191 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, | 189 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, |
192 | .init_machine = colibri_pxa300_init, | 190 | .init_machine = colibri_pxa300_init, |
193 | .map_io = pxa_map_io, | 191 | .map_io = pxa_map_io, |
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c index 99e850d84710..ca5f29e2e9cd 100644 --- a/arch/arm/mach-pxa/colibri-pxa320.c +++ b/arch/arm/mach-pxa/colibri-pxa320.c | |||
@@ -255,8 +255,6 @@ void __init colibri_pxa320_init(void) | |||
255 | } | 255 | } |
256 | 256 | ||
257 | MACHINE_START(COLIBRI320, "Toradex Colibri PXA320") | 257 | MACHINE_START(COLIBRI320, "Toradex Colibri PXA320") |
258 | .phys_io = 0x40000000, | ||
259 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
260 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, | 258 | .boot_params = COLIBRI_SDRAM_BASE + 0x100, |
261 | .init_machine = colibri_pxa320_init, | 259 | .init_machine = colibri_pxa320_init, |
262 | .map_io = pxa_map_io, | 260 | .map_io = pxa_map_io, |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 3fb0fc099080..821229acabe6 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -720,8 +720,6 @@ static void __init fixup_corgi(struct machine_desc *desc, | |||
720 | 720 | ||
721 | #ifdef CONFIG_MACH_CORGI | 721 | #ifdef CONFIG_MACH_CORGI |
722 | MACHINE_START(CORGI, "SHARP Corgi") | 722 | MACHINE_START(CORGI, "SHARP Corgi") |
723 | .phys_io = 0x40000000, | ||
724 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
725 | .fixup = fixup_corgi, | 723 | .fixup = fixup_corgi, |
726 | .map_io = pxa_map_io, | 724 | .map_io = pxa_map_io, |
727 | .init_irq = pxa25x_init_irq, | 725 | .init_irq = pxa25x_init_irq, |
@@ -732,8 +730,6 @@ MACHINE_END | |||
732 | 730 | ||
733 | #ifdef CONFIG_MACH_SHEPHERD | 731 | #ifdef CONFIG_MACH_SHEPHERD |
734 | MACHINE_START(SHEPHERD, "SHARP Shepherd") | 732 | MACHINE_START(SHEPHERD, "SHARP Shepherd") |
735 | .phys_io = 0x40000000, | ||
736 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
737 | .fixup = fixup_corgi, | 733 | .fixup = fixup_corgi, |
738 | .map_io = pxa_map_io, | 734 | .map_io = pxa_map_io, |
739 | .init_irq = pxa25x_init_irq, | 735 | .init_irq = pxa25x_init_irq, |
@@ -744,8 +740,6 @@ MACHINE_END | |||
744 | 740 | ||
745 | #ifdef CONFIG_MACH_HUSKY | 741 | #ifdef CONFIG_MACH_HUSKY |
746 | MACHINE_START(HUSKY, "SHARP Husky") | 742 | MACHINE_START(HUSKY, "SHARP Husky") |
747 | .phys_io = 0x40000000, | ||
748 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
749 | .fixup = fixup_corgi, | 743 | .fixup = fixup_corgi, |
750 | .map_io = pxa_map_io, | 744 | .map_io = pxa_map_io, |
751 | .init_irq = pxa25x_init_irq, | 745 | .init_irq = pxa25x_init_irq, |
diff --git a/arch/arm/mach-pxa/cpufreq-pxa3xx.c b/arch/arm/mach-pxa/cpufreq-pxa3xx.c index 0a0d0fe99220..88fbec05ec50 100644 --- a/arch/arm/mach-pxa/cpufreq-pxa3xx.c +++ b/arch/arm/mach-pxa/cpufreq-pxa3xx.c | |||
@@ -159,7 +159,7 @@ static int pxa3xx_cpufreq_verify(struct cpufreq_policy *policy) | |||
159 | 159 | ||
160 | static unsigned int pxa3xx_cpufreq_get(unsigned int cpu) | 160 | static unsigned int pxa3xx_cpufreq_get(unsigned int cpu) |
161 | { | 161 | { |
162 | return get_clk_frequency_khz(0); | 162 | return pxa3xx_get_clk_frequency_khz(0); |
163 | } | 163 | } |
164 | 164 | ||
165 | static int pxa3xx_cpufreq_set(struct cpufreq_policy *policy, | 165 | static int pxa3xx_cpufreq_set(struct cpufreq_policy *policy, |
@@ -212,7 +212,8 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy) | |||
212 | policy->cpuinfo.min_freq = 104000; | 212 | policy->cpuinfo.min_freq = 104000; |
213 | policy->cpuinfo.max_freq = (cpu_is_pxa320()) ? 806000 : 624000; | 213 | policy->cpuinfo.max_freq = (cpu_is_pxa320()) ? 806000 : 624000; |
214 | policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ | 214 | policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ |
215 | policy->cur = policy->min = policy->max = get_clk_frequency_khz(0); | 215 | policy->max = pxa3xx_get_clk_frequency_khz(0); |
216 | policy->cur = policy->min = policy->max; | ||
216 | 217 | ||
217 | if (cpu_is_pxa300() || cpu_is_pxa310()) | 218 | if (cpu_is_pxa300() || cpu_is_pxa310()) |
218 | ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa300_freqs)); | 219 | ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa300_freqs)); |
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c index 91fd4fea6a54..57cacaff194d 100644 --- a/arch/arm/mach-pxa/csb726.c +++ b/arch/arm/mach-pxa/csb726.c | |||
@@ -272,9 +272,7 @@ static void __init csb726_init(void) | |||
272 | } | 272 | } |
273 | 273 | ||
274 | MACHINE_START(CSB726, "Cogent CSB726") | 274 | MACHINE_START(CSB726, "Cogent CSB726") |
275 | .phys_io = 0x40000000, | ||
276 | .boot_params = 0xa0000100, | 275 | .boot_params = 0xa0000100, |
277 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
278 | .map_io = pxa_map_io, | 276 | .map_io = pxa_map_io, |
279 | .init_irq = pxa27x_init_irq, | 277 | .init_irq = pxa27x_init_irq, |
280 | .init_machine = csb726_init, | 278 | .init_machine = csb726_init, |
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c index 65447dc736c2..08b410343870 100644 --- a/arch/arm/mach-pxa/devices.c +++ b/arch/arm/mach-pxa/devices.c | |||
@@ -6,11 +6,12 @@ | |||
6 | 6 | ||
7 | #include <asm/pmu.h> | 7 | #include <asm/pmu.h> |
8 | #include <mach/udc.h> | 8 | #include <mach/udc.h> |
9 | #include <mach/pxa3xx-u2d.h> | ||
9 | #include <mach/pxafb.h> | 10 | #include <mach/pxafb.h> |
10 | #include <mach/mmc.h> | 11 | #include <mach/mmc.h> |
11 | #include <mach/irda.h> | 12 | #include <mach/irda.h> |
12 | #include <mach/ohci.h> | 13 | #include <mach/ohci.h> |
13 | #include <mach/pxa27x_keypad.h> | 14 | #include <plat/pxa27x_keypad.h> |
14 | #include <mach/pxa2xx_spi.h> | 15 | #include <mach/pxa2xx_spi.h> |
15 | #include <mach/camera.h> | 16 | #include <mach/camera.h> |
16 | #include <mach/audio.h> | 17 | #include <mach/audio.h> |
@@ -134,6 +135,33 @@ struct platform_device pxa27x_device_udc = { | |||
134 | } | 135 | } |
135 | }; | 136 | }; |
136 | 137 | ||
138 | #ifdef CONFIG_PXA3xx | ||
139 | static struct resource pxa3xx_u2d_resources[] = { | ||
140 | [0] = { | ||
141 | .start = 0x54100000, | ||
142 | .end = 0x54100fff, | ||
143 | .flags = IORESOURCE_MEM, | ||
144 | }, | ||
145 | [1] = { | ||
146 | .start = IRQ_USB2, | ||
147 | .end = IRQ_USB2, | ||
148 | .flags = IORESOURCE_IRQ, | ||
149 | }, | ||
150 | }; | ||
151 | |||
152 | struct platform_device pxa3xx_device_u2d = { | ||
153 | .name = "pxa3xx-u2d", | ||
154 | .id = -1, | ||
155 | .resource = pxa3xx_u2d_resources, | ||
156 | .num_resources = ARRAY_SIZE(pxa3xx_u2d_resources), | ||
157 | }; | ||
158 | |||
159 | void __init pxa3xx_set_u2d_info(struct pxa3xx_u2d_platform_data *info) | ||
160 | { | ||
161 | pxa_register_device(&pxa3xx_device_u2d, info); | ||
162 | } | ||
163 | #endif /* CONFIG_PXA3xx */ | ||
164 | |||
137 | static struct resource pxafb_resources[] = { | 165 | static struct resource pxafb_resources[] = { |
138 | [0] = { | 166 | [0] = { |
139 | .start = 0x44000000, | 167 | .start = 0x44000000, |
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h index 50353ea49ba4..715e8bd02e24 100644 --- a/arch/arm/mach-pxa/devices.h +++ b/arch/arm/mach-pxa/devices.h | |||
@@ -4,6 +4,7 @@ extern struct platform_device pxa3xx_device_mci2; | |||
4 | extern struct platform_device pxa3xx_device_mci3; | 4 | extern struct platform_device pxa3xx_device_mci3; |
5 | extern struct platform_device pxa25x_device_udc; | 5 | extern struct platform_device pxa25x_device_udc; |
6 | extern struct platform_device pxa27x_device_udc; | 6 | extern struct platform_device pxa27x_device_udc; |
7 | extern struct platform_device pxa3xx_device_u2d; | ||
7 | extern struct platform_device pxa_device_fb; | 8 | extern struct platform_device pxa_device_fb; |
8 | extern struct platform_device pxa_device_ffuart; | 9 | extern struct platform_device pxa_device_ffuart; |
9 | extern struct platform_device pxa_device_btuart; | 10 | extern struct platform_device pxa_device_btuart; |
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index 0517c17978f3..ab48bb81b570 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <mach/pxafb.h> | 43 | #include <mach/pxafb.h> |
44 | #include <mach/ohci.h> | 44 | #include <mach/ohci.h> |
45 | #include <mach/mmc.h> | 45 | #include <mach/mmc.h> |
46 | #include <mach/pxa27x_keypad.h> | 46 | #include <plat/pxa27x_keypad.h> |
47 | #include <plat/i2c.h> | 47 | #include <plat/i2c.h> |
48 | #include <mach/camera.h> | 48 | #include <mach/camera.h> |
49 | #include <mach/pxa2xx_spi.h> | 49 | #include <mach/pxa2xx_spi.h> |
@@ -1301,8 +1301,6 @@ static void __init em_x270_init(void) | |||
1301 | 1301 | ||
1302 | MACHINE_START(EM_X270, "Compulab EM-X270") | 1302 | MACHINE_START(EM_X270, "Compulab EM-X270") |
1303 | .boot_params = 0xa0000100, | 1303 | .boot_params = 0xa0000100, |
1304 | .phys_io = 0x40000000, | ||
1305 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1306 | .map_io = pxa_map_io, | 1304 | .map_io = pxa_map_io, |
1307 | .init_irq = pxa27x_init_irq, | 1305 | .init_irq = pxa27x_init_irq, |
1308 | .timer = &pxa_timer, | 1306 | .timer = &pxa_timer, |
@@ -1311,8 +1309,6 @@ MACHINE_END | |||
1311 | 1309 | ||
1312 | MACHINE_START(EXEDA, "Compulab eXeda") | 1310 | MACHINE_START(EXEDA, "Compulab eXeda") |
1313 | .boot_params = 0xa0000100, | 1311 | .boot_params = 0xa0000100, |
1314 | .phys_io = 0x40000000, | ||
1315 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1316 | .map_io = pxa_map_io, | 1312 | .map_io = pxa_map_io, |
1317 | .init_irq = pxa27x_init_irq, | 1313 | .init_irq = pxa27x_init_irq, |
1318 | .timer = &pxa_timer, | 1314 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c index 349212a1cbd3..b25690ccadc4 100644 --- a/arch/arm/mach-pxa/eseries.c +++ b/arch/arm/mach-pxa/eseries.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <mach/pxa25x.h> | 30 | #include <mach/pxa25x.h> |
31 | #include <mach/eseries-gpio.h> | 31 | #include <mach/eseries-gpio.h> |
32 | #include <mach/eseries-irq.h> | ||
32 | #include <mach/audio.h> | 33 | #include <mach/audio.h> |
33 | #include <mach/pxafb.h> | 34 | #include <mach/pxafb.h> |
34 | #include <mach/udc.h> | 35 | #include <mach/udc.h> |
@@ -179,10 +180,9 @@ static void __init e330_init(void) | |||
179 | 180 | ||
180 | MACHINE_START(E330, "Toshiba e330") | 181 | MACHINE_START(E330, "Toshiba e330") |
181 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 182 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
182 | .phys_io = 0x40000000, | ||
183 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
184 | .boot_params = 0xa0000100, | 183 | .boot_params = 0xa0000100, |
185 | .map_io = pxa_map_io, | 184 | .map_io = pxa_map_io, |
185 | .nr_irqs = ESERIES_NR_IRQS, | ||
186 | .init_irq = pxa25x_init_irq, | 186 | .init_irq = pxa25x_init_irq, |
187 | .fixup = eseries_fixup, | 187 | .fixup = eseries_fixup, |
188 | .init_machine = e330_init, | 188 | .init_machine = e330_init, |
@@ -229,10 +229,9 @@ static void __init e350_init(void) | |||
229 | 229 | ||
230 | MACHINE_START(E350, "Toshiba e350") | 230 | MACHINE_START(E350, "Toshiba e350") |
231 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 231 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
232 | .phys_io = 0x40000000, | ||
233 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
234 | .boot_params = 0xa0000100, | 232 | .boot_params = 0xa0000100, |
235 | .map_io = pxa_map_io, | 233 | .map_io = pxa_map_io, |
234 | .nr_irqs = ESERIES_NR_IRQS, | ||
236 | .init_irq = pxa25x_init_irq, | 235 | .init_irq = pxa25x_init_irq, |
237 | .fixup = eseries_fixup, | 236 | .fixup = eseries_fixup, |
238 | .init_machine = e350_init, | 237 | .init_machine = e350_init, |
@@ -352,10 +351,9 @@ static void __init e400_init(void) | |||
352 | 351 | ||
353 | MACHINE_START(E400, "Toshiba e400") | 352 | MACHINE_START(E400, "Toshiba e400") |
354 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 353 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
355 | .phys_io = 0x40000000, | ||
356 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
357 | .boot_params = 0xa0000100, | 354 | .boot_params = 0xa0000100, |
358 | .map_io = pxa_map_io, | 355 | .map_io = pxa_map_io, |
356 | .nr_irqs = ESERIES_NR_IRQS, | ||
359 | .init_irq = pxa25x_init_irq, | 357 | .init_irq = pxa25x_init_irq, |
360 | .fixup = eseries_fixup, | 358 | .fixup = eseries_fixup, |
361 | .init_machine = e400_init, | 359 | .init_machine = e400_init, |
@@ -541,10 +539,9 @@ static void __init e740_init(void) | |||
541 | 539 | ||
542 | MACHINE_START(E740, "Toshiba e740") | 540 | MACHINE_START(E740, "Toshiba e740") |
543 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 541 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
544 | .phys_io = 0x40000000, | ||
545 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
546 | .boot_params = 0xa0000100, | 542 | .boot_params = 0xa0000100, |
547 | .map_io = pxa_map_io, | 543 | .map_io = pxa_map_io, |
544 | .nr_irqs = ESERIES_NR_IRQS, | ||
548 | .init_irq = pxa25x_init_irq, | 545 | .init_irq = pxa25x_init_irq, |
549 | .fixup = eseries_fixup, | 546 | .fixup = eseries_fixup, |
550 | .init_machine = e740_init, | 547 | .init_machine = e740_init, |
@@ -733,10 +730,9 @@ static void __init e750_init(void) | |||
733 | 730 | ||
734 | MACHINE_START(E750, "Toshiba e750") | 731 | MACHINE_START(E750, "Toshiba e750") |
735 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 732 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
736 | .phys_io = 0x40000000, | ||
737 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
738 | .boot_params = 0xa0000100, | 733 | .boot_params = 0xa0000100, |
739 | .map_io = pxa_map_io, | 734 | .map_io = pxa_map_io, |
735 | .nr_irqs = ESERIES_NR_IRQS, | ||
740 | .init_irq = pxa25x_init_irq, | 736 | .init_irq = pxa25x_init_irq, |
741 | .fixup = eseries_fixup, | 737 | .fixup = eseries_fixup, |
742 | .init_machine = e750_init, | 738 | .init_machine = e750_init, |
@@ -929,10 +925,9 @@ static void __init e800_init(void) | |||
929 | 925 | ||
930 | MACHINE_START(E800, "Toshiba e800") | 926 | MACHINE_START(E800, "Toshiba e800") |
931 | /* Maintainer: Ian Molton (spyro@f2s.com) */ | 927 | /* Maintainer: Ian Molton (spyro@f2s.com) */ |
932 | .phys_io = 0x40000000, | ||
933 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
934 | .boot_params = 0xa0000100, | 928 | .boot_params = 0xa0000100, |
935 | .map_io = pxa_map_io, | 929 | .map_io = pxa_map_io, |
930 | .nr_irqs = ESERIES_NR_IRQS, | ||
936 | .init_irq = pxa25x_init_irq, | 931 | .init_irq = pxa25x_init_irq, |
937 | .fixup = eseries_fixup, | 932 | .fixup = eseries_fixup, |
938 | .init_machine = e800_init, | 933 | .init_machine = e800_init, |
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c index 626c82b13970..80a9352d43f3 100644 --- a/arch/arm/mach-pxa/ezx.c +++ b/arch/arm/mach-pxa/ezx.c | |||
@@ -32,12 +32,14 @@ | |||
32 | #include <mach/ohci.h> | 32 | #include <mach/ohci.h> |
33 | #include <plat/i2c.h> | 33 | #include <plat/i2c.h> |
34 | #include <mach/hardware.h> | 34 | #include <mach/hardware.h> |
35 | #include <mach/pxa27x_keypad.h> | 35 | #include <plat/pxa27x_keypad.h> |
36 | #include <mach/camera.h> | 36 | #include <mach/camera.h> |
37 | 37 | ||
38 | #include "devices.h" | 38 | #include "devices.h" |
39 | #include "generic.h" | 39 | #include "generic.h" |
40 | 40 | ||
41 | #define EZX_NR_IRQS (IRQ_BOARD_START + 24) | ||
42 | |||
41 | #define GPIO12_A780_FLIP_LID 12 | 43 | #define GPIO12_A780_FLIP_LID 12 |
42 | #define GPIO15_A1200_FLIP_LID 15 | 44 | #define GPIO15_A1200_FLIP_LID 15 |
43 | #define GPIO15_A910_FLIP_LID 15 | 45 | #define GPIO15_A910_FLIP_LID 15 |
@@ -796,10 +798,9 @@ static void __init a780_init(void) | |||
796 | } | 798 | } |
797 | 799 | ||
798 | MACHINE_START(EZX_A780, "Motorola EZX A780") | 800 | MACHINE_START(EZX_A780, "Motorola EZX A780") |
799 | .phys_io = 0x40000000, | ||
800 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
801 | .boot_params = 0xa0000100, | 801 | .boot_params = 0xa0000100, |
802 | .map_io = pxa_map_io, | 802 | .map_io = pxa_map_io, |
803 | .nr_irqs = EZX_NR_IRQS, | ||
803 | .init_irq = pxa27x_init_irq, | 804 | .init_irq = pxa27x_init_irq, |
804 | .timer = &pxa_timer, | 805 | .timer = &pxa_timer, |
805 | .init_machine = a780_init, | 806 | .init_machine = a780_init, |
@@ -862,10 +863,9 @@ static void __init e680_init(void) | |||
862 | } | 863 | } |
863 | 864 | ||
864 | MACHINE_START(EZX_E680, "Motorola EZX E680") | 865 | MACHINE_START(EZX_E680, "Motorola EZX E680") |
865 | .phys_io = 0x40000000, | ||
866 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
867 | .boot_params = 0xa0000100, | 866 | .boot_params = 0xa0000100, |
868 | .map_io = pxa_map_io, | 867 | .map_io = pxa_map_io, |
868 | .nr_irqs = EZX_NR_IRQS, | ||
869 | .init_irq = pxa27x_init_irq, | 869 | .init_irq = pxa27x_init_irq, |
870 | .timer = &pxa_timer, | 870 | .timer = &pxa_timer, |
871 | .init_machine = e680_init, | 871 | .init_machine = e680_init, |
@@ -928,10 +928,9 @@ static void __init a1200_init(void) | |||
928 | } | 928 | } |
929 | 929 | ||
930 | MACHINE_START(EZX_A1200, "Motorola EZX A1200") | 930 | MACHINE_START(EZX_A1200, "Motorola EZX A1200") |
931 | .phys_io = 0x40000000, | ||
932 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
933 | .boot_params = 0xa0000100, | 931 | .boot_params = 0xa0000100, |
934 | .map_io = pxa_map_io, | 932 | .map_io = pxa_map_io, |
933 | .nr_irqs = EZX_NR_IRQS, | ||
935 | .init_irq = pxa27x_init_irq, | 934 | .init_irq = pxa27x_init_irq, |
936 | .timer = &pxa_timer, | 935 | .timer = &pxa_timer, |
937 | .init_machine = a1200_init, | 936 | .init_machine = a1200_init, |
@@ -1120,10 +1119,9 @@ static void __init a910_init(void) | |||
1120 | } | 1119 | } |
1121 | 1120 | ||
1122 | MACHINE_START(EZX_A910, "Motorola EZX A910") | 1121 | MACHINE_START(EZX_A910, "Motorola EZX A910") |
1123 | .phys_io = 0x40000000, | ||
1124 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1125 | .boot_params = 0xa0000100, | 1122 | .boot_params = 0xa0000100, |
1126 | .map_io = pxa_map_io, | 1123 | .map_io = pxa_map_io, |
1124 | .nr_irqs = EZX_NR_IRQS, | ||
1127 | .init_irq = pxa27x_init_irq, | 1125 | .init_irq = pxa27x_init_irq, |
1128 | .timer = &pxa_timer, | 1126 | .timer = &pxa_timer, |
1129 | .init_machine = a910_init, | 1127 | .init_machine = a910_init, |
@@ -1186,10 +1184,9 @@ static void __init e6_init(void) | |||
1186 | } | 1184 | } |
1187 | 1185 | ||
1188 | MACHINE_START(EZX_E6, "Motorola EZX E6") | 1186 | MACHINE_START(EZX_E6, "Motorola EZX E6") |
1189 | .phys_io = 0x40000000, | ||
1190 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1191 | .boot_params = 0xa0000100, | 1187 | .boot_params = 0xa0000100, |
1192 | .map_io = pxa_map_io, | 1188 | .map_io = pxa_map_io, |
1189 | .nr_irqs = EZX_NR_IRQS, | ||
1193 | .init_irq = pxa27x_init_irq, | 1190 | .init_irq = pxa27x_init_irq, |
1194 | .timer = &pxa_timer, | 1191 | .timer = &pxa_timer, |
1195 | .init_machine = e6_init, | 1192 | .init_machine = e6_init, |
@@ -1226,10 +1223,9 @@ static void __init e2_init(void) | |||
1226 | } | 1223 | } |
1227 | 1224 | ||
1228 | MACHINE_START(EZX_E2, "Motorola EZX E2") | 1225 | MACHINE_START(EZX_E2, "Motorola EZX E2") |
1229 | .phys_io = 0x40000000, | ||
1230 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1231 | .boot_params = 0xa0000100, | 1226 | .boot_params = 0xa0000100, |
1232 | .map_io = pxa_map_io, | 1227 | .map_io = pxa_map_io, |
1228 | .nr_irqs = EZX_NR_IRQS, | ||
1233 | .init_irq = pxa27x_init_irq, | 1229 | .init_irq = pxa27x_init_irq, |
1234 | .timer = &pxa_timer, | 1230 | .timer = &pxa_timer, |
1235 | .init_machine = e2_init, | 1231 | .init_machine = e2_init, |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index baabb3ce088e..6451e9c3a93f 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -66,8 +66,7 @@ unsigned int get_clk_frequency_khz(int info) | |||
66 | return pxa25x_get_clk_frequency_khz(info); | 66 | return pxa25x_get_clk_frequency_khz(info); |
67 | else if (cpu_is_pxa27x()) | 67 | else if (cpu_is_pxa27x()) |
68 | return pxa27x_get_clk_frequency_khz(info); | 68 | return pxa27x_get_clk_frequency_khz(info); |
69 | else | 69 | return 0; |
70 | return pxa3xx_get_clk_frequency_khz(info); | ||
71 | } | 70 | } |
72 | EXPORT_SYMBOL(get_clk_frequency_khz); | 71 | EXPORT_SYMBOL(get_clk_frequency_khz); |
73 | 72 | ||
@@ -80,8 +79,7 @@ unsigned int get_memclk_frequency_10khz(void) | |||
80 | return pxa25x_get_memclk_frequency_10khz(); | 79 | return pxa25x_get_memclk_frequency_10khz(); |
81 | else if (cpu_is_pxa27x()) | 80 | else if (cpu_is_pxa27x()) |
82 | return pxa27x_get_memclk_frequency_10khz(); | 81 | return pxa27x_get_memclk_frequency_10khz(); |
83 | else | 82 | return 0; |
84 | return pxa3xx_get_memclk_frequency_10khz(); | ||
85 | } | 83 | } |
86 | EXPORT_SYMBOL(get_memclk_frequency_10khz); | 84 | EXPORT_SYMBOL(get_memclk_frequency_10khz); |
87 | 85 | ||
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h index c6305c5b8a72..4b1ad2769ed7 100644 --- a/arch/arm/mach-pxa/generic.h +++ b/arch/arm/mach-pxa/generic.h | |||
@@ -54,11 +54,9 @@ static inline void pxa2xx_clear_reset_status(unsigned int mask) {} | |||
54 | 54 | ||
55 | #ifdef CONFIG_PXA3xx | 55 | #ifdef CONFIG_PXA3xx |
56 | extern unsigned pxa3xx_get_clk_frequency_khz(int); | 56 | extern unsigned pxa3xx_get_clk_frequency_khz(int); |
57 | extern unsigned pxa3xx_get_memclk_frequency_10khz(void); | ||
58 | extern void pxa3xx_clear_reset_status(unsigned int); | 57 | extern void pxa3xx_clear_reset_status(unsigned int); |
59 | #else | 58 | #else |
60 | #define pxa3xx_get_clk_frequency_khz(x) (0) | 59 | #define pxa3xx_get_clk_frequency_khz(x) (0) |
61 | #define pxa3xx_get_memclk_frequency_10khz() (0) | ||
62 | static inline void pxa3xx_clear_reset_status(unsigned int mask) {} | 60 | static inline void pxa3xx_clear_reset_status(unsigned int mask) {} |
63 | #endif | 61 | #endif |
64 | 62 | ||
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index 96c345129135..1e2a9a13aec1 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c | |||
@@ -224,9 +224,7 @@ static void __init gumstix_init(void) | |||
224 | } | 224 | } |
225 | 225 | ||
226 | MACHINE_START(GUMSTIX, "Gumstix") | 226 | MACHINE_START(GUMSTIX, "Gumstix") |
227 | .phys_io = 0x40000000, | ||
228 | .boot_params = 0xa0000100, /* match u-boot bi_boot_params */ | 227 | .boot_params = 0xa0000100, /* match u-boot bi_boot_params */ |
229 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
230 | .map_io = pxa_map_io, | 228 | .map_io = pxa_map_io, |
231 | .init_irq = pxa25x_init_irq, | 229 | .init_irq = pxa25x_init_irq, |
232 | .timer = &pxa_timer, | 230 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c index c1cab0871c99..7057a1f46db4 100644 --- a/arch/arm/mach-pxa/h5000.c +++ b/arch/arm/mach-pxa/h5000.c | |||
@@ -201,8 +201,6 @@ static void __init h5000_init(void) | |||
201 | } | 201 | } |
202 | 202 | ||
203 | MACHINE_START(H5400, "HP iPAQ H5000") | 203 | MACHINE_START(H5400, "HP iPAQ H5000") |
204 | .phys_io = 0x40000000, | ||
205 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
206 | .boot_params = 0xa0000100, | 204 | .boot_params = 0xa0000100, |
207 | .map_io = pxa_map_io, | 205 | .map_io = pxa_map_io, |
208 | .init_irq = pxa25x_init_irq, | 206 | .init_irq = pxa25x_init_irq, |
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c index f9a2e4b0f090..01b7f07ebad2 100644 --- a/arch/arm/mach-pxa/himalaya.c +++ b/arch/arm/mach-pxa/himalaya.c | |||
@@ -159,8 +159,6 @@ static void __init himalaya_init(void) | |||
159 | 159 | ||
160 | 160 | ||
161 | MACHINE_START(HIMALAYA, "HTC Himalaya") | 161 | MACHINE_START(HIMALAYA, "HTC Himalaya") |
162 | .phys_io = 0x40000000, | ||
163 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
164 | .boot_params = 0xa0000100, | 162 | .boot_params = 0xa0000100, |
165 | .map_io = pxa_map_io, | 163 | .map_io = pxa_map_io, |
166 | .init_irq = pxa25x_init_irq, | 164 | .init_irq = pxa25x_init_irq, |
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index 848c861dd23f..76d93a25bab6 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c | |||
@@ -870,10 +870,9 @@ static void __init hx4700_init(void) | |||
870 | } | 870 | } |
871 | 871 | ||
872 | MACHINE_START(H4700, "HP iPAQ HX4700") | 872 | MACHINE_START(H4700, "HP iPAQ HX4700") |
873 | .phys_io = 0x40000000, | ||
874 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
875 | .boot_params = 0xa0000100, | 873 | .boot_params = 0xa0000100, |
876 | .map_io = pxa_map_io, | 874 | .map_io = pxa_map_io, |
875 | .nr_irqs = HX4700_NR_IRQS, | ||
877 | .init_irq = pxa27x_init_irq, | 876 | .init_irq = pxa27x_init_irq, |
878 | .init_machine = hx4700_init, | 877 | .init_machine = hx4700_init, |
879 | .timer = &pxa_timer, | 878 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c index 5ccb0ceff6c4..d51ee3d25e70 100644 --- a/arch/arm/mach-pxa/icontrol.c +++ b/arch/arm/mach-pxa/icontrol.c | |||
@@ -191,9 +191,7 @@ static void __init icontrol_init(void) | |||
191 | } | 191 | } |
192 | 192 | ||
193 | MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM") | 193 | MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM") |
194 | .phys_io = 0x40000000, | ||
195 | .boot_params = 0xa0000100, | 194 | .boot_params = 0xa0000100, |
196 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
197 | .map_io = pxa_map_io, | 195 | .map_io = pxa_map_io, |
198 | .init_irq = pxa3xx_init_irq, | 196 | .init_irq = pxa3xx_init_irq, |
199 | .timer = &pxa_timer, | 197 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c index bc78c4dc0c66..e773dceeabc6 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c | |||
@@ -194,8 +194,6 @@ static void __init idp_map_io(void) | |||
194 | 194 | ||
195 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") | 195 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") |
196 | /* Maintainer: Vibren Technologies */ | 196 | /* Maintainer: Vibren Technologies */ |
197 | .phys_io = 0x40000000, | ||
198 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
199 | .map_io = idp_map_io, | 197 | .map_io = idp_map_io, |
200 | .init_irq = pxa25x_init_irq, | 198 | .init_irq = pxa25x_init_irq, |
201 | .timer = &pxa_timer, | 199 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/include/mach/balloon3.h b/arch/arm/mach-pxa/include/mach/balloon3.h index eec92e6fd7cf..561562b4360b 100644 --- a/arch/arm/mach-pxa/include/mach/balloon3.h +++ b/arch/arm/mach-pxa/include/mach/balloon3.h | |||
@@ -174,6 +174,8 @@ enum balloon3_features { | |||
174 | #define BALLOON3_CODEC_IRQ IRQ_GPIO(BALLOON3_GPIO_CODEC_IRQ) | 174 | #define BALLOON3_CODEC_IRQ IRQ_GPIO(BALLOON3_GPIO_CODEC_IRQ) |
175 | #define BALLOON3_S0_CD_IRQ IRQ_GPIO(BALLOON3_GPIO_S0_CD) | 175 | #define BALLOON3_S0_CD_IRQ IRQ_GPIO(BALLOON3_GPIO_S0_CD) |
176 | 176 | ||
177 | #define BALLOON3_NR_IRQS (IRQ_BOARD_START + 4) | ||
178 | |||
177 | extern int balloon3_has(enum balloon3_features feature); | 179 | extern int balloon3_has(enum balloon3_features feature); |
178 | 180 | ||
179 | #endif | 181 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/debug-macro.S b/arch/arm/mach-pxa/include/mach/debug-macro.S index 01cf81393fe2..7d5c75125d65 100644 --- a/arch/arm/mach-pxa/include/mach/debug-macro.S +++ b/arch/arm/mach-pxa/include/mach/debug-macro.S | |||
@@ -13,12 +13,10 @@ | |||
13 | 13 | ||
14 | #include "hardware.h" | 14 | #include "hardware.h" |
15 | 15 | ||
16 | .macro addruart, rx, tmp | 16 | .macro addruart, rp, rv |
17 | mrc p15, 0, \rx, c1, c0 | 17 | mov \rp, #0x00100000 |
18 | tst \rx, #1 @ MMU enabled? | 18 | orr \rv, \rp, #io_p2v(0x40000000) @ virtual |
19 | moveq \rx, #0x40000000 @ physical | 19 | orr \rp, \rp, #0x40000000 @ physical |
20 | movne \rx, #io_p2v(0x40000000) @ virtual | ||
21 | orr \rx, \rx, #0x00100000 | ||
22 | .endm | 20 | .endm |
23 | 21 | ||
24 | #define UART_SHIFT 2 | 22 | #define UART_SHIFT 2 |
diff --git a/arch/arm/mach-pxa/include/mach/eseries-irq.h b/arch/arm/mach-pxa/include/mach/eseries-irq.h index f2a93d5e31d3..de292b269c63 100644 --- a/arch/arm/mach-pxa/include/mach/eseries-irq.h +++ b/arch/arm/mach-pxa/include/mach/eseries-irq.h | |||
@@ -25,3 +25,4 @@ | |||
25 | #define TMIO_SD_IRQ IRQ_TMIO(1) | 25 | #define TMIO_SD_IRQ IRQ_TMIO(1) |
26 | #define TMIO_USB_IRQ IRQ_TMIO(2) | 26 | #define TMIO_USB_IRQ IRQ_TMIO(2) |
27 | 27 | ||
28 | #define ESERIES_NR_IRQS (IRQ_BOARD_START + 16) | ||
diff --git a/arch/arm/mach-pxa/include/mach/hx4700.h b/arch/arm/mach-pxa/include/mach/hx4700.h index 9eaeed1f87f1..37408449ec25 100644 --- a/arch/arm/mach-pxa/include/mach/hx4700.h +++ b/arch/arm/mach-pxa/include/mach/hx4700.h | |||
@@ -17,6 +17,7 @@ | |||
17 | 17 | ||
18 | #define HX4700_ASIC3_GPIO_BASE NR_BUILTIN_GPIO | 18 | #define HX4700_ASIC3_GPIO_BASE NR_BUILTIN_GPIO |
19 | #define HX4700_EGPIO_BASE (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS) | 19 | #define HX4700_EGPIO_BASE (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS) |
20 | #define HX4700_NR_IRQS (IRQ_BOARD_START + 70) | ||
20 | 21 | ||
21 | /* | 22 | /* |
22 | * PXA GPIOs | 23 | * PXA GPIOs |
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h index ffc8314520f2..d372caa75dc7 100644 --- a/arch/arm/mach-pxa/include/mach/irqs.h +++ b/arch/arm/mach-pxa/include/mach/irqs.h | |||
@@ -117,48 +117,12 @@ | |||
117 | /* | 117 | /* |
118 | * The following interrupts are for board specific purposes. Since | 118 | * The following interrupts are for board specific purposes. Since |
119 | * the kernel can only run on one machine at a time, we can re-use | 119 | * the kernel can only run on one machine at a time, we can re-use |
120 | * these. There will be 16 IRQs by default. If it is not enough, | 120 | * these. |
121 | * IRQ_BOARD_END is allowed be customized for each board, but keep | 121 | * By default, no board IRQ is reserved. It should be finished in |
122 | * the numbers within sensible limits and in descending order, so | 122 | * custom board since sparse IRQ is already enabled. |
123 | * when multiple config options are selected, the maximum will be | ||
124 | * used. | ||
125 | */ | 123 | */ |
126 | #define IRQ_BOARD_START (PXA_GPIO_IRQ_BASE + PXA_GPIO_IRQ_NUM) | 124 | #define IRQ_BOARD_START (PXA_GPIO_IRQ_BASE + PXA_GPIO_IRQ_NUM) |
127 | 125 | ||
128 | #if defined(CONFIG_MACH_H4700) | ||
129 | #define IRQ_BOARD_END (IRQ_BOARD_START + 70) | ||
130 | #elif defined(CONFIG_MACH_ZYLONITE) | ||
131 | #define IRQ_BOARD_END (IRQ_BOARD_START + 32) | ||
132 | #elif defined(CONFIG_PXA_EZX) | ||
133 | #define IRQ_BOARD_END (IRQ_BOARD_START + 23) | ||
134 | #else | ||
135 | #define IRQ_BOARD_END (IRQ_BOARD_START + 16) | ||
136 | #endif | ||
137 | |||
138 | /* | ||
139 | * Figure out the MAX IRQ number. | ||
140 | * | ||
141 | * If we have an SA1111, the max IRQ is S1_BVD1_STSCHG+1. | ||
142 | * If we have an LoCoMo, the max IRQ is IRQ_LOCOMO_SPI_TEND+1 | ||
143 | * Otherwise, we have the standard IRQs only. | ||
144 | */ | ||
145 | #ifdef CONFIG_SA1111 | ||
146 | #define NR_IRQS (IRQ_BOARD_END + 55) | ||
147 | #elif defined(CONFIG_PXA_HAVE_BOARD_IRQS) | ||
148 | #define NR_IRQS (IRQ_BOARD_END) | ||
149 | #else | ||
150 | #define NR_IRQS (IRQ_BOARD_START) | 126 | #define NR_IRQS (IRQ_BOARD_START) |
151 | #endif | ||
152 | |||
153 | /* add IT8152 IRQs beyond BOARD_END */ | ||
154 | #ifdef CONFIG_PCI_HOST_ITE8152 | ||
155 | #define IT8152_LAST_IRQ (IRQ_BOARD_END + 40) | ||
156 | |||
157 | #if NR_IRQS < (IT8152_LAST_IRQ+1) | ||
158 | #undef NR_IRQS | ||
159 | #define NR_IRQS (IT8152_LAST_IRQ+1) | ||
160 | #endif | ||
161 | |||
162 | #endif /* CONFIG_PCI_HOST_ITE8152 */ | ||
163 | 127 | ||
164 | #endif /* __ASM_MACH_IRQS_H */ | 128 | #endif /* __ASM_MACH_IRQS_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/littleton.h b/arch/arm/mach-pxa/include/mach/littleton.h index 6c9b21c51322..2a5726c15e0e 100644 --- a/arch/arm/mach-pxa/include/mach/littleton.h +++ b/arch/arm/mach-pxa/include/mach/littleton.h | |||
@@ -10,4 +10,6 @@ | |||
10 | #define EXT0_GPIO_BASE (NR_BUILTIN_GPIO) | 10 | #define EXT0_GPIO_BASE (NR_BUILTIN_GPIO) |
11 | #define EXT0_GPIO(x) (EXT0_GPIO_BASE + (x)) | 11 | #define EXT0_GPIO(x) (EXT0_GPIO_BASE + (x)) |
12 | 12 | ||
13 | #define LITTLETON_NR_IRQS (IRQ_BOARD_START + 8) | ||
14 | |||
13 | #endif /* __ASM_ARCH_LITTLETON_H */ | 15 | #endif /* __ASM_ARCH_LITTLETON_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/lpd270.h b/arch/arm/mach-pxa/include/mach/lpd270.h index 0e6440c81683..cd070092b6eb 100644 --- a/arch/arm/mach-pxa/include/mach/lpd270.h +++ b/arch/arm/mach-pxa/include/mach/lpd270.h | |||
@@ -38,5 +38,6 @@ | |||
38 | #define LPD270_USBC_IRQ LPD270_IRQ(2) | 38 | #define LPD270_USBC_IRQ LPD270_IRQ(2) |
39 | #define LPD270_ETHERNET_IRQ LPD270_IRQ(3) | 39 | #define LPD270_ETHERNET_IRQ LPD270_IRQ(3) |
40 | #define LPD270_AC97_IRQ LPD270_IRQ(4) | 40 | #define LPD270_AC97_IRQ LPD270_IRQ(4) |
41 | #define LPD270_NR_IRQS (IRQ_BOARD_START + 5) | ||
41 | 42 | ||
42 | #endif | 43 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/lubbock.h b/arch/arm/mach-pxa/include/mach/lubbock.h index a0d4247f08fc..2a086e8373eb 100644 --- a/arch/arm/mach-pxa/include/mach/lubbock.h +++ b/arch/arm/mach-pxa/include/mach/lubbock.h | |||
@@ -45,6 +45,9 @@ | |||
45 | #define LUBBOCK_USB_DISC_IRQ LUBBOCK_IRQ(6) /* usb disconnect */ | 45 | #define LUBBOCK_USB_DISC_IRQ LUBBOCK_IRQ(6) /* usb disconnect */ |
46 | #define LUBBOCK_LAST_IRQ LUBBOCK_IRQ(6) | 46 | #define LUBBOCK_LAST_IRQ LUBBOCK_IRQ(6) |
47 | 47 | ||
48 | #define LUBBOCK_SA1111_IRQ_BASE (IRQ_BOARD_START + 16) | ||
49 | #define LUBBOCK_NR_IRQS (IRQ_BOARD_START + 16 + 55) | ||
50 | |||
48 | #ifndef __ASSEMBLY__ | 51 | #ifndef __ASSEMBLY__ |
49 | extern void lubbock_set_misc_wr(unsigned int mask, unsigned int set); | 52 | extern void lubbock_set_misc_wr(unsigned int mask, unsigned int set); |
50 | #endif | 53 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h index 20ef37d4a9a7..0a2efcf7947c 100644 --- a/arch/arm/mach-pxa/include/mach/magician.h +++ b/arch/arm/mach-pxa/include/mach/magician.h | |||
@@ -71,6 +71,8 @@ | |||
71 | #define IRQ_MAGICIAN_BT (IRQ_BOARD_START + 2) | 71 | #define IRQ_MAGICIAN_BT (IRQ_BOARD_START + 2) |
72 | #define IRQ_MAGICIAN_VBUS (IRQ_BOARD_START + 3) | 72 | #define IRQ_MAGICIAN_VBUS (IRQ_BOARD_START + 3) |
73 | 73 | ||
74 | #define MAGICIAN_NR_IRQS (IRQ_BOARD_START + 8) | ||
75 | |||
74 | /* | 76 | /* |
75 | * CPLD EGPIOs | 77 | * CPLD EGPIOs |
76 | */ | 78 | */ |
diff --git a/arch/arm/mach-pxa/include/mach/mainstone.h b/arch/arm/mach-pxa/include/mach/mainstone.h index 86e623abd64d..4c2d11cd824d 100644 --- a/arch/arm/mach-pxa/include/mach/mainstone.h +++ b/arch/arm/mach-pxa/include/mach/mainstone.h | |||
@@ -134,4 +134,6 @@ | |||
134 | #define MAINSTONE_S1_STSCHG_IRQ MAINSTONE_IRQ(14) | 134 | #define MAINSTONE_S1_STSCHG_IRQ MAINSTONE_IRQ(14) |
135 | #define MAINSTONE_S1_IRQ MAINSTONE_IRQ(15) | 135 | #define MAINSTONE_S1_IRQ MAINSTONE_IRQ(15) |
136 | 136 | ||
137 | #define MAINSTONE_NR_IRQS (IRQ_BOARD_START + 16) | ||
138 | |||
137 | #endif | 139 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa930.h b/arch/arm/mach-pxa/include/mach/mfp-pxa930.h index 0d119d3b9221..04f7c97044f3 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa930.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa930.h | |||
@@ -69,6 +69,7 @@ | |||
69 | #define nBE0_GPIO_60 MFP_CFG(nBE0, AF0) | 69 | #define nBE0_GPIO_60 MFP_CFG(nBE0, AF0) |
70 | #define nBE1_GPIO_61 MFP_CFG(nBE1, AF0) | 70 | #define nBE1_GPIO_61 MFP_CFG(nBE1, AF0) |
71 | #define RDY_GPIO_62 MFP_CFG(RDY, AF0) | 71 | #define RDY_GPIO_62 MFP_CFG(RDY, AF0) |
72 | #define PMIC_INT_GPIO83 MFP_CFG_LPM(PMIC_INT, AF0, PULL_HIGH) | ||
72 | 73 | ||
73 | /* Chip Select */ | 74 | /* Chip Select */ |
74 | #define DF_nCS0_nCS2 MFP_CFG_LPM(DF_nCS0, AF3, PULL_HIGH) | 75 | #define DF_nCS0_nCS2 MFP_CFG_LPM(DF_nCS0, AF3, PULL_HIGH) |
@@ -92,6 +93,9 @@ | |||
92 | #define GPIO63_CI2C_SCL MFP_CFG_LPM(GPIO63, AF4, PULL_HIGH) | 93 | #define GPIO63_CI2C_SCL MFP_CFG_LPM(GPIO63, AF4, PULL_HIGH) |
93 | #define GPIO64_CI2C_SDA MFP_CFG_LPM(GPIO64, AF4, PULL_HIGH) | 94 | #define GPIO64_CI2C_SDA MFP_CFG_LPM(GPIO64, AF4, PULL_HIGH) |
94 | 95 | ||
96 | #define GPIO73_CI2C_SCL MFP_CFG_LPM(GPIO73, AF1, PULL_HIGH) | ||
97 | #define GPIO74_CI2C_SDA MFP_CFG_LPM(GPIO74, AF1, PULL_HIGH) | ||
98 | |||
95 | #define GPIO77_CI2C_SCL MFP_CFG_LPM(GPIO77, AF2, PULL_HIGH) | 99 | #define GPIO77_CI2C_SCL MFP_CFG_LPM(GPIO77, AF2, PULL_HIGH) |
96 | #define GPIO78_CI2C_SDA MFP_CFG_LPM(GPIO78, AF2, PULL_HIGH) | 100 | #define GPIO78_CI2C_SDA MFP_CFG_LPM(GPIO78, AF2, PULL_HIGH) |
97 | 101 | ||
@@ -345,6 +349,9 @@ | |||
345 | #define GPIO69_UART1_CTS MFP_CFG(GPIO69, AF2) | 349 | #define GPIO69_UART1_CTS MFP_CFG(GPIO69, AF2) |
346 | #define GPIO70_UART1_RTS MFP_CFG(GPIO70, AF2) | 350 | #define GPIO70_UART1_RTS MFP_CFG(GPIO70, AF2) |
347 | 351 | ||
352 | #define GPIO53_UART1_TXD MFP_CFG(GPIO53, AF2) | ||
353 | #define GPIO54_UART1_RXD MFP_CFG(GPIO54, AF2) | ||
354 | |||
348 | /* UART2 - BTUART */ | 355 | /* UART2 - BTUART */ |
349 | #define GPIO91_UART2_RXD MFP_CFG(GPIO91, AF1) | 356 | #define GPIO91_UART2_RXD MFP_CFG(GPIO91, AF1) |
350 | #define GPIO92_UART2_TXD MFP_CFG(GPIO92, AF1) | 357 | #define GPIO92_UART2_TXD MFP_CFG(GPIO92, AF1) |
diff --git a/arch/arm/mach-pxa/include/mach/pcm027.h b/arch/arm/mach-pxa/include/mach/pcm027.h index 04083263167e..4bac588478a8 100644 --- a/arch/arm/mach-pxa/include/mach/pcm027.h +++ b/arch/arm/mach-pxa/include/mach/pcm027.h | |||
@@ -30,6 +30,8 @@ | |||
30 | #define PCM027_MMCDET_IRQ PCM027_IRQ(2) | 30 | #define PCM027_MMCDET_IRQ PCM027_IRQ(2) |
31 | #define PCM027_PM_5V_IRQ PCM027_IRQ(3) | 31 | #define PCM027_PM_5V_IRQ PCM027_IRQ(3) |
32 | 32 | ||
33 | #define PCM027_NR_IRQS (IRQ_BOARD_START + 32) | ||
34 | |||
33 | /* I2C RTC */ | 35 | /* I2C RTC */ |
34 | #define PCM027_RTC_IRQ_GPIO 0 | 36 | #define PCM027_RTC_IRQ_GPIO 0 |
35 | #define PCM027_RTC_IRQ IRQ_GPIO(PCM027_RTC_IRQ_GPIO) | 37 | #define PCM027_RTC_IRQ IRQ_GPIO(PCM027_RTC_IRQ_GPIO) |
diff --git a/arch/arm/mach-pxa/include/mach/poodle.h b/arch/arm/mach-pxa/include/mach/poodle.h index 0b3e6d051c64..83d1cfd00fc9 100644 --- a/arch/arm/mach-pxa/include/mach/poodle.h +++ b/arch/arm/mach-pxa/include/mach/poodle.h | |||
@@ -85,6 +85,8 @@ | |||
85 | #define POODLE_LOCOMO_GPIO_232VCC_ON LOCOMO_GPIO(12) | 85 | #define POODLE_LOCOMO_GPIO_232VCC_ON LOCOMO_GPIO(12) |
86 | #define POODLE_LOCOMO_GPIO_JK_B LOCOMO_GPIO(13) | 86 | #define POODLE_LOCOMO_GPIO_JK_B LOCOMO_GPIO(13) |
87 | 87 | ||
88 | #define POODLE_NR_IRQS (IRQ_BOARD_START + 4) /* 4 for LoCoMo */ | ||
89 | |||
88 | extern struct platform_device poodle_locomo_device; | 90 | extern struct platform_device poodle_locomo_device; |
89 | 91 | ||
90 | #endif /* __ASM_ARCH_POODLE_H */ | 92 | #endif /* __ASM_ARCH_POODLE_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h deleted file mode 100644 index 7b4eadc6df3a..000000000000 --- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_PXA27x_KEYPAD_H | ||
2 | #define __ASM_ARCH_PXA27x_KEYPAD_H | ||
3 | |||
4 | #include <linux/input.h> | ||
5 | #include <linux/input/matrix_keypad.h> | ||
6 | |||
7 | #define MAX_MATRIX_KEY_ROWS (8) | ||
8 | #define MAX_MATRIX_KEY_COLS (8) | ||
9 | #define MATRIX_ROW_SHIFT (3) | ||
10 | #define MAX_DIRECT_KEY_NUM (8) | ||
11 | |||
12 | /* pxa3xx keypad platform specific parameters | ||
13 | * | ||
14 | * NOTE: | ||
15 | * 1. direct_key_num indicates the number of keys in the direct keypad | ||
16 | * _plus_ the number of rotary-encoder sensor inputs, this can be | ||
17 | * left as 0 if only rotary encoders are enabled, the driver will | ||
18 | * automatically calculate this | ||
19 | * | ||
20 | * 2. direct_key_map is the key code map for the direct keys, if rotary | ||
21 | * encoder(s) are enabled, direct key 0/1(2/3) will be ignored | ||
22 | * | ||
23 | * 3. rotary can be either interpreted as a relative input event (e.g. | ||
24 | * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT) | ||
25 | * | ||
26 | * 4. matrix key and direct key will use the same debounce_interval by | ||
27 | * default, which should be sufficient in most cases | ||
28 | */ | ||
29 | struct pxa27x_keypad_platform_data { | ||
30 | |||
31 | /* code map for the matrix keys */ | ||
32 | unsigned int matrix_key_rows; | ||
33 | unsigned int matrix_key_cols; | ||
34 | unsigned int *matrix_key_map; | ||
35 | int matrix_key_map_size; | ||
36 | |||
37 | /* direct keys */ | ||
38 | int direct_key_num; | ||
39 | unsigned int direct_key_map[MAX_DIRECT_KEY_NUM]; | ||
40 | |||
41 | /* rotary encoders 0 */ | ||
42 | int enable_rotary0; | ||
43 | int rotary0_rel_code; | ||
44 | int rotary0_up_key; | ||
45 | int rotary0_down_key; | ||
46 | |||
47 | /* rotary encoders 1 */ | ||
48 | int enable_rotary1; | ||
49 | int rotary1_rel_code; | ||
50 | int rotary1_up_key; | ||
51 | int rotary1_down_key; | ||
52 | |||
53 | /* key debounce interval */ | ||
54 | unsigned int debounce_interval; | ||
55 | }; | ||
56 | |||
57 | extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info); | ||
58 | |||
59 | #endif /* __ASM_ARCH_PXA27x_KEYPAD_H */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h b/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h new file mode 100644 index 000000000000..9d82cb65ea56 --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/pxa3xx-u2d.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * PXA3xx U2D header | ||
3 | * | ||
4 | * Copyright (C) 2010 CompuLab Ltd. | ||
5 | * | ||
6 | * Igor Grinberg <grinberg@compulab.co.il> | ||
7 | * | ||
8 | * 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 | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | #ifndef __PXA310_U2D__ | ||
13 | #define __PXA310_U2D__ | ||
14 | |||
15 | #include <linux/usb/ulpi.h> | ||
16 | |||
17 | struct pxa3xx_u2d_platform_data { | ||
18 | |||
19 | #define ULPI_SER_6PIN (1 << 0) | ||
20 | #define ULPI_SER_3PIN (1 << 1) | ||
21 | unsigned int ulpi_mode; | ||
22 | |||
23 | int (*init)(struct device *); | ||
24 | void (*exit)(struct device *); | ||
25 | }; | ||
26 | |||
27 | |||
28 | /* Start PXA3xx U2D host */ | ||
29 | int pxa3xx_u2d_start_hc(struct usb_bus *host); | ||
30 | /* Stop PXA3xx U2D host */ | ||
31 | void pxa3xx_u2d_stop_hc(struct usb_bus *host); | ||
32 | |||
33 | extern void pxa3xx_set_u2d_info(struct pxa3xx_u2d_platform_data *info); | ||
34 | |||
35 | #endif /* __PXA310_U2D__ */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/tosa.h b/arch/arm/mach-pxa/include/mach/tosa.h index 1bbd1f2e4beb..1272c4b56ceb 100644 --- a/arch/arm/mach-pxa/include/mach/tosa.h +++ b/arch/arm/mach-pxa/include/mach/tosa.h | |||
@@ -20,6 +20,7 @@ | |||
20 | /* Jacket Scoop */ | 20 | /* Jacket Scoop */ |
21 | #define TOSA_SCOOP_PHYS (PXA_CS5_PHYS + 0x00800000) | 21 | #define TOSA_SCOOP_PHYS (PXA_CS5_PHYS + 0x00800000) |
22 | 22 | ||
23 | #define TOSA_NR_IRQS (IRQ_BOARD_START + TC6393XB_NR_IRQS) | ||
23 | /* | 24 | /* |
24 | * SCOOP2 internal GPIOs | 25 | * SCOOP2 internal GPIOs |
25 | */ | 26 | */ |
diff --git a/arch/arm/mach-pxa/include/mach/zeus.h b/arch/arm/mach-pxa/include/mach/zeus.h index 6e119976003e..faa408ab7ad7 100644 --- a/arch/arm/mach-pxa/include/mach/zeus.h +++ b/arch/arm/mach-pxa/include/mach/zeus.h | |||
@@ -15,6 +15,8 @@ | |||
15 | #ifndef _MACH_ZEUS_H | 15 | #ifndef _MACH_ZEUS_H |
16 | #define _MACH_ZEUS_H | 16 | #define _MACH_ZEUS_H |
17 | 17 | ||
18 | #define ZEUS_NR_IRQS (IRQ_BOARD_START + 48) | ||
19 | |||
18 | /* Physical addresses */ | 20 | /* Physical addresses */ |
19 | #define ZEUS_FLASH_PHYS PXA_CS0_PHYS | 21 | #define ZEUS_FLASH_PHYS PXA_CS0_PHYS |
20 | #define ZEUS_ETH0_PHYS PXA_CS1_PHYS | 22 | #define ZEUS_ETH0_PHYS PXA_CS1_PHYS |
diff --git a/arch/arm/mach-pxa/include/mach/zylonite.h b/arch/arm/mach-pxa/include/mach/zylonite.h index 9edf645368d6..ea24998b923c 100644 --- a/arch/arm/mach-pxa/include/mach/zylonite.h +++ b/arch/arm/mach-pxa/include/mach/zylonite.h | |||
@@ -5,6 +5,8 @@ | |||
5 | 5 | ||
6 | #define EXT_GPIO(x) (128 + (x)) | 6 | #define EXT_GPIO(x) (128 + (x)) |
7 | 7 | ||
8 | #define ZYLONITE_NR_IRQS (IRQ_BOARD_START + 32) | ||
9 | |||
8 | /* the following variables are processor specific and initialized | 10 | /* the following variables are processor specific and initialized |
9 | * by the corresponding zylonite_pxa3xx_init() | 11 | * by the corresponding zylonite_pxa3xx_init() |
10 | */ | 12 | */ |
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c index 9b9046185b00..41aa89e35772 100644 --- a/arch/arm/mach-pxa/littleton.c +++ b/arch/arm/mach-pxa/littleton.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <mach/pxafb.h> | 43 | #include <mach/pxafb.h> |
44 | #include <mach/mmc.h> | 44 | #include <mach/mmc.h> |
45 | #include <mach/pxa2xx_spi.h> | 45 | #include <mach/pxa2xx_spi.h> |
46 | #include <mach/pxa27x_keypad.h> | 46 | #include <plat/pxa27x_keypad.h> |
47 | #include <mach/littleton.h> | 47 | #include <mach/littleton.h> |
48 | #include <plat/i2c.h> | 48 | #include <plat/i2c.h> |
49 | #include <plat/pxa3xx_nand.h> | 49 | #include <plat/pxa3xx_nand.h> |
@@ -437,10 +437,9 @@ static void __init littleton_init(void) | |||
437 | } | 437 | } |
438 | 438 | ||
439 | MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleton)") | 439 | MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleton)") |
440 | .phys_io = 0x40000000, | ||
441 | .boot_params = 0xa0000100, | 440 | .boot_params = 0xa0000100, |
442 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
443 | .map_io = pxa_map_io, | 441 | .map_io = pxa_map_io, |
442 | .nr_irqs = LITTLETON_NR_IRQS, | ||
444 | .init_irq = pxa3xx_init_irq, | 443 | .init_irq = pxa3xx_init_irq, |
445 | .timer = &pxa_timer, | 444 | .timer = &pxa_timer, |
446 | .init_machine = littleton_init, | 445 | .init_machine = littleton_init, |
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index d279507fc748..623af0232a54 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c | |||
@@ -505,10 +505,9 @@ static void __init lpd270_map_io(void) | |||
505 | 505 | ||
506 | MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine") | 506 | MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine") |
507 | /* Maintainer: Peter Barada */ | 507 | /* Maintainer: Peter Barada */ |
508 | .phys_io = 0x40000000, | ||
509 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
510 | .boot_params = 0xa0000100, | 508 | .boot_params = 0xa0000100, |
511 | .map_io = lpd270_map_io, | 509 | .map_io = lpd270_map_io, |
510 | .nr_irqs = LPD270_NR_IRQS, | ||
512 | .init_irq = lpd270_init_irq, | 511 | .init_irq = lpd270_init_irq, |
513 | .timer = &pxa_timer, | 512 | .timer = &pxa_timer, |
514 | .init_machine = lpd270_init, | 513 | .init_machine = lpd270_init, |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 330c3282856e..1499493cd070 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -229,7 +229,7 @@ static struct resource sa1111_resources[] = { | |||
229 | }; | 229 | }; |
230 | 230 | ||
231 | static struct sa1111_platform_data sa1111_info = { | 231 | static struct sa1111_platform_data sa1111_info = { |
232 | .irq_base = IRQ_BOARD_END, | 232 | .irq_base = LUBBOCK_SA1111_IRQ_BASE, |
233 | }; | 233 | }; |
234 | 234 | ||
235 | static struct platform_device sa1111_device = { | 235 | static struct platform_device sa1111_device = { |
@@ -557,9 +557,8 @@ static void __init lubbock_map_io(void) | |||
557 | 557 | ||
558 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") | 558 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") |
559 | /* Maintainer: MontaVista Software Inc. */ | 559 | /* Maintainer: MontaVista Software Inc. */ |
560 | .phys_io = 0x40000000, | ||
561 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
562 | .map_io = lubbock_map_io, | 560 | .map_io = lubbock_map_io, |
561 | .nr_irqs = LUBBOCK_NR_IRQS, | ||
563 | .init_irq = lubbock_init_irq, | 562 | .init_irq = lubbock_init_irq, |
564 | .timer = &pxa_timer, | 563 | .timer = &pxa_timer, |
565 | .init_machine = lubbock_init, | 564 | .init_machine = lubbock_init, |
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index e81dd0c8e40d..90663760307a 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c | |||
@@ -764,10 +764,9 @@ static void __init magician_init(void) | |||
764 | 764 | ||
765 | 765 | ||
766 | MACHINE_START(MAGICIAN, "HTC Magician") | 766 | MACHINE_START(MAGICIAN, "HTC Magician") |
767 | .phys_io = 0x40000000, | ||
768 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
769 | .boot_params = 0xa0000100, | 767 | .boot_params = 0xa0000100, |
770 | .map_io = pxa_map_io, | 768 | .map_io = pxa_map_io, |
769 | .nr_irqs = MAGICIAN_NR_IRQS, | ||
771 | .init_irq = pxa27x_init_irq, | 770 | .init_irq = pxa27x_init_irq, |
772 | .init_machine = magician_init, | 771 | .init_machine = magician_init, |
773 | .timer = &pxa_timer, | 772 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 5543c64da9ef..a980a5c93e49 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -50,7 +50,7 @@ | |||
50 | #include <mach/mmc.h> | 50 | #include <mach/mmc.h> |
51 | #include <mach/irda.h> | 51 | #include <mach/irda.h> |
52 | #include <mach/ohci.h> | 52 | #include <mach/ohci.h> |
53 | #include <mach/pxa27x_keypad.h> | 53 | #include <plat/pxa27x_keypad.h> |
54 | 54 | ||
55 | #include "generic.h" | 55 | #include "generic.h" |
56 | #include "devices.h" | 56 | #include "devices.h" |
@@ -624,10 +624,9 @@ static void __init mainstone_map_io(void) | |||
624 | 624 | ||
625 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | 625 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") |
626 | /* Maintainer: MontaVista Software Inc. */ | 626 | /* Maintainer: MontaVista Software Inc. */ |
627 | .phys_io = 0x40000000, | ||
628 | .boot_params = 0xa0000100, /* BLOB boot parameter setting */ | 627 | .boot_params = 0xa0000100, /* BLOB boot parameter setting */ |
629 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
630 | .map_io = mainstone_map_io, | 628 | .map_io = mainstone_map_io, |
629 | .nr_irqs = MAINSTONE_NR_IRQS, | ||
631 | .init_irq = mainstone_init_irq, | 630 | .init_irq = mainstone_init_irq, |
632 | .timer = &pxa_timer, | 631 | .timer = &pxa_timer, |
633 | .init_machine = mainstone_init, | 632 | .init_machine = mainstone_init, |
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c index dc66942ef9ab..0c31fabfc7fd 100644 --- a/arch/arm/mach-pxa/mioa701.c +++ b/arch/arm/mach-pxa/mioa701.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | #include <mach/pxa27x.h> | 46 | #include <mach/pxa27x.h> |
47 | #include <mach/regs-rtc.h> | 47 | #include <mach/regs-rtc.h> |
48 | #include <mach/pxa27x_keypad.h> | 48 | #include <plat/pxa27x_keypad.h> |
49 | #include <mach/pxafb.h> | 49 | #include <mach/pxafb.h> |
50 | #include <mach/mmc.h> | 50 | #include <mach/mmc.h> |
51 | #include <mach/udc.h> | 51 | #include <mach/udc.h> |
@@ -819,8 +819,6 @@ static void mioa701_machine_exit(void) | |||
819 | } | 819 | } |
820 | 820 | ||
821 | MACHINE_START(MIOA701, "MIO A701") | 821 | MACHINE_START(MIOA701, "MIO A701") |
822 | .phys_io = 0x40000000, | ||
823 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
824 | .boot_params = 0xa0000100, | 822 | .boot_params = 0xa0000100, |
825 | .map_io = &pxa_map_io, | 823 | .map_io = &pxa_map_io, |
826 | .init_irq = &pxa27x_init_irq, | 824 | .init_irq = &pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c index 6d4503927a76..116167aaba68 100644 --- a/arch/arm/mach-pxa/mp900.c +++ b/arch/arm/mach-pxa/mp900.c | |||
@@ -92,9 +92,7 @@ static void __init mp900c_init(void) | |||
92 | 92 | ||
93 | /* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */ | 93 | /* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */ |
94 | MACHINE_START(NEC_MP900, "MobilePro900/C") | 94 | MACHINE_START(NEC_MP900, "MobilePro900/C") |
95 | .phys_io = 0x40000000, | ||
96 | .boot_params = 0xa0220100, | 95 | .boot_params = 0xa0220100, |
97 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
98 | .timer = &pxa_timer, | 96 | .timer = &pxa_timer, |
99 | .map_io = pxa_map_io, | 97 | .map_io = pxa_map_io, |
100 | .init_irq = pxa25x_init_irq, | 98 | .init_irq = pxa25x_init_irq, |
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c index 91038eeafe44..ce092c521e6d 100644 --- a/arch/arm/mach-pxa/palmld.c +++ b/arch/arm/mach-pxa/palmld.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <mach/mmc.h> | 39 | #include <mach/mmc.h> |
40 | #include <mach/pxafb.h> | 40 | #include <mach/pxafb.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <mach/pxa27x_keypad.h> | 42 | #include <plat/pxa27x_keypad.h> |
43 | #include <mach/palmasoc.h> | 43 | #include <mach/palmasoc.h> |
44 | #include <mach/palm27x.h> | 44 | #include <mach/palm27x.h> |
45 | 45 | ||
@@ -343,8 +343,6 @@ static void __init palmld_init(void) | |||
343 | } | 343 | } |
344 | 344 | ||
345 | MACHINE_START(PALMLD, "Palm LifeDrive") | 345 | MACHINE_START(PALMLD, "Palm LifeDrive") |
346 | .phys_io = PALMLD_PHYS_IO_START, | ||
347 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
348 | .boot_params = 0xa0000100, | 346 | .boot_params = 0xa0000100, |
349 | .map_io = palmld_map_io, | 347 | .map_io = palmld_map_io, |
350 | .init_irq = pxa27x_init_irq, | 348 | .init_irq = pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index 1c281995f658..862da812cd10 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <mach/mmc.h> | 39 | #include <mach/mmc.h> |
40 | #include <mach/pxafb.h> | 40 | #include <mach/pxafb.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <mach/pxa27x_keypad.h> | 42 | #include <plat/pxa27x_keypad.h> |
43 | #include <mach/udc.h> | 43 | #include <mach/udc.h> |
44 | #include <mach/palmasoc.h> | 44 | #include <mach/palmasoc.h> |
45 | #include <mach/palm27x.h> | 45 | #include <mach/palm27x.h> |
@@ -202,8 +202,6 @@ static void __init palmt5_init(void) | |||
202 | } | 202 | } |
203 | 203 | ||
204 | MACHINE_START(PALMT5, "Palm Tungsten|T5") | 204 | MACHINE_START(PALMT5, "Palm Tungsten|T5") |
205 | .phys_io = PALMT5_PHYS_IO_START, | ||
206 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
207 | .boot_params = 0xa0000100, | 205 | .boot_params = 0xa0000100, |
208 | .map_io = pxa_map_io, | 206 | .map_io = pxa_map_io, |
209 | .reserve = palmt5_reserve, | 207 | .reserve = palmt5_reserve, |
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index ce1104d1bc17..2131d5860919 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c | |||
@@ -412,9 +412,7 @@ static void __init palmtc_init(void) | |||
412 | }; | 412 | }; |
413 | 413 | ||
414 | MACHINE_START(PALMTC, "Palm Tungsten|C") | 414 | MACHINE_START(PALMTC, "Palm Tungsten|C") |
415 | .phys_io = 0x40000000, | ||
416 | .boot_params = 0xa0000100, | 415 | .boot_params = 0xa0000100, |
417 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
418 | .map_io = pxa_map_io, | 416 | .map_io = pxa_map_io, |
419 | .init_irq = pxa25x_init_irq, | 417 | .init_irq = pxa25x_init_irq, |
420 | .timer = &pxa_timer, | 418 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c index 93c11a0438d5..a9dae7bc35d9 100644 --- a/arch/arm/mach-pxa/palmte2.c +++ b/arch/arm/mach-pxa/palmte2.c | |||
@@ -373,8 +373,6 @@ static void __init palmte2_init(void) | |||
373 | } | 373 | } |
374 | 374 | ||
375 | MACHINE_START(PALMTE2, "Palm Tungsten|E2") | 375 | MACHINE_START(PALMTE2, "Palm Tungsten|E2") |
376 | .phys_io = 0x40000000, | ||
377 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
378 | .boot_params = 0xa0000100, | 376 | .boot_params = 0xa0000100, |
379 | .map_io = pxa_map_io, | 377 | .map_io = pxa_map_io, |
380 | .init_irq = pxa25x_init_irq, | 378 | .init_irq = pxa25x_init_irq, |
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c index 52defd5e42e5..00e2d7ba84ed 100644 --- a/arch/arm/mach-pxa/palmtreo.c +++ b/arch/arm/mach-pxa/palmtreo.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <mach/mmc.h> | 39 | #include <mach/mmc.h> |
40 | #include <mach/pxafb.h> | 40 | #include <mach/pxafb.h> |
41 | #include <mach/irda.h> | 41 | #include <mach/irda.h> |
42 | #include <mach/pxa27x_keypad.h> | 42 | #include <plat/pxa27x_keypad.h> |
43 | #include <mach/udc.h> | 43 | #include <mach/udc.h> |
44 | #include <mach/ohci.h> | 44 | #include <mach/ohci.h> |
45 | #include <mach/pxa2xx-regs.h> | 45 | #include <mach/pxa2xx-regs.h> |
@@ -441,8 +441,6 @@ static void __init centro_init(void) | |||
441 | } | 441 | } |
442 | 442 | ||
443 | MACHINE_START(TREO680, "Palm Treo 680") | 443 | MACHINE_START(TREO680, "Palm Treo 680") |
444 | .phys_io = TREO_PHYS_IO_START, | ||
445 | .io_pg_offst = io_p2v(0x40000000), | ||
446 | .boot_params = 0xa0000100, | 444 | .boot_params = 0xa0000100, |
447 | .map_io = pxa_map_io, | 445 | .map_io = pxa_map_io, |
448 | .reserve = treo_reserve, | 446 | .reserve = treo_reserve, |
@@ -452,8 +450,6 @@ MACHINE_START(TREO680, "Palm Treo 680") | |||
452 | MACHINE_END | 450 | MACHINE_END |
453 | 451 | ||
454 | MACHINE_START(CENTRO, "Palm Centro 685") | 452 | MACHINE_START(CENTRO, "Palm Centro 685") |
455 | .phys_io = TREO_PHYS_IO_START, | ||
456 | .io_pg_offst = io_p2v(0x40000000), | ||
457 | .boot_params = 0xa0000100, | 453 | .boot_params = 0xa0000100, |
458 | .map_io = pxa_map_io, | 454 | .map_io = pxa_map_io, |
459 | .reserve = treo_reserve, | 455 | .reserve = treo_reserve, |
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c index 144dc2b6911f..d2060a1d1d68 100644 --- a/arch/arm/mach-pxa/palmtx.c +++ b/arch/arm/mach-pxa/palmtx.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <mach/mmc.h> | 43 | #include <mach/mmc.h> |
44 | #include <mach/pxafb.h> | 44 | #include <mach/pxafb.h> |
45 | #include <mach/irda.h> | 45 | #include <mach/irda.h> |
46 | #include <mach/pxa27x_keypad.h> | 46 | #include <plat/pxa27x_keypad.h> |
47 | #include <mach/udc.h> | 47 | #include <mach/udc.h> |
48 | #include <mach/palmasoc.h> | 48 | #include <mach/palmasoc.h> |
49 | #include <mach/palm27x.h> | 49 | #include <mach/palm27x.h> |
@@ -363,8 +363,6 @@ static void __init palmtx_init(void) | |||
363 | } | 363 | } |
364 | 364 | ||
365 | MACHINE_START(PALMTX, "Palm T|X") | 365 | MACHINE_START(PALMTX, "Palm T|X") |
366 | .phys_io = PALMTX_PHYS_IO_START, | ||
367 | .io_pg_offst = io_p2v(0x40000000), | ||
368 | .boot_params = 0xa0000100, | 366 | .boot_params = 0xa0000100, |
369 | .map_io = palmtx_map_io, | 367 | .map_io = palmtx_map_io, |
370 | .init_irq = pxa27x_init_irq, | 368 | .init_irq = pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c index 87e4b1044e0b..af6203fbca9c 100644 --- a/arch/arm/mach-pxa/palmz72.c +++ b/arch/arm/mach-pxa/palmz72.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #include <mach/mmc.h> | 41 | #include <mach/mmc.h> |
42 | #include <mach/pxafb.h> | 42 | #include <mach/pxafb.h> |
43 | #include <mach/irda.h> | 43 | #include <mach/irda.h> |
44 | #include <mach/pxa27x_keypad.h> | 44 | #include <plat/pxa27x_keypad.h> |
45 | #include <mach/udc.h> | 45 | #include <mach/udc.h> |
46 | #include <mach/palmasoc.h> | 46 | #include <mach/palmasoc.h> |
47 | #include <mach/palm27x.h> | 47 | #include <mach/palm27x.h> |
@@ -279,8 +279,6 @@ static void __init palmz72_init(void) | |||
279 | } | 279 | } |
280 | 280 | ||
281 | MACHINE_START(PALMZ72, "Palm Zire72") | 281 | MACHINE_START(PALMZ72, "Palm Zire72") |
282 | .phys_io = 0x40000000, | ||
283 | .io_pg_offst = io_p2v(0x40000000), | ||
284 | .boot_params = 0xa0000100, | 282 | .boot_params = 0xa0000100, |
285 | .map_io = pxa_map_io, | 283 | .map_io = pxa_map_io, |
286 | .init_irq = pxa27x_init_irq, | 284 | .init_irq = pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c index 2190af066470..c77e8f30a439 100644 --- a/arch/arm/mach-pxa/pcm027.c +++ b/arch/arm/mach-pxa/pcm027.c | |||
@@ -259,9 +259,8 @@ static void __init pcm027_map_io(void) | |||
259 | MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270") | 259 | MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270") |
260 | /* Maintainer: Pengutronix */ | 260 | /* Maintainer: Pengutronix */ |
261 | .boot_params = 0xa0000100, | 261 | .boot_params = 0xa0000100, |
262 | .phys_io = 0x40000000, | ||
263 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
264 | .map_io = pcm027_map_io, | 262 | .map_io = pcm027_map_io, |
263 | .nr_irqs = PCM027_NR_IRQS, | ||
265 | .init_irq = pxa27x_init_irq, | 264 | .init_irq = pxa27x_init_irq, |
266 | .timer = &pxa_timer, | 265 | .timer = &pxa_timer, |
267 | .init_machine = pcm027_init, | 266 | .init_machine = pcm027_init, |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 55e8fcde0141..93a191c889df 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -465,10 +465,9 @@ static void __init fixup_poodle(struct machine_desc *desc, | |||
465 | } | 465 | } |
466 | 466 | ||
467 | MACHINE_START(POODLE, "SHARP Poodle") | 467 | MACHINE_START(POODLE, "SHARP Poodle") |
468 | .phys_io = 0x40000000, | ||
469 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
470 | .fixup = fixup_poodle, | 468 | .fixup = fixup_poodle, |
471 | .map_io = pxa_map_io, | 469 | .map_io = pxa_map_io, |
470 | .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */ | ||
472 | .init_irq = pxa25x_init_irq, | 471 | .init_irq = pxa25x_init_irq, |
473 | .timer = &pxa_timer, | 472 | .timer = &pxa_timer, |
474 | .init_machine = poodle_init, | 473 | .init_machine = poodle_init, |
diff --git a/arch/arm/mach-pxa/pxa3xx-ulpi.c b/arch/arm/mach-pxa/pxa3xx-ulpi.c new file mode 100644 index 000000000000..ce7168b233e2 --- /dev/null +++ b/arch/arm/mach-pxa/pxa3xx-ulpi.c | |||
@@ -0,0 +1,400 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/pxa3xx-ulpi.c | ||
3 | * | ||
4 | * code specific to pxa3xx aka Monahans | ||
5 | * | ||
6 | * Copyright (C) 2010 CompuLab Ltd. | ||
7 | * | ||
8 | * 2010-13-07: Igor Grinberg <grinberg@compulab.co.il> | ||
9 | * initial version: pxa310 USB Host mode support | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License version 2 as | ||
13 | * published by the Free Software Foundation. | ||
14 | */ | ||
15 | |||
16 | #include <linux/module.h> | ||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/slab.h> | ||
19 | #include <linux/device.h> | ||
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/err.h> | ||
22 | #include <linux/io.h> | ||
23 | #include <linux/delay.h> | ||
24 | #include <linux/clk.h> | ||
25 | #include <linux/usb.h> | ||
26 | #include <linux/usb/otg.h> | ||
27 | |||
28 | #include <mach/hardware.h> | ||
29 | #include <mach/regs-u2d.h> | ||
30 | #include <mach/pxa3xx-u2d.h> | ||
31 | |||
32 | struct pxa3xx_u2d_ulpi { | ||
33 | struct clk *clk; | ||
34 | void __iomem *mmio_base; | ||
35 | |||
36 | struct otg_transceiver *otg; | ||
37 | unsigned int ulpi_mode; | ||
38 | }; | ||
39 | |||
40 | static struct pxa3xx_u2d_ulpi *u2d; | ||
41 | |||
42 | static inline u32 u2d_readl(u32 reg) | ||
43 | { | ||
44 | return __raw_readl(u2d->mmio_base + reg); | ||
45 | } | ||
46 | |||
47 | static inline void u2d_writel(u32 reg, u32 val) | ||
48 | { | ||
49 | __raw_writel(val, u2d->mmio_base + reg); | ||
50 | } | ||
51 | |||
52 | #if defined(CONFIG_PXA310_ULPI) | ||
53 | enum u2d_ulpi_phy_mode { | ||
54 | SYNCH = 0, | ||
55 | CARKIT = (1 << 0), | ||
56 | SER_3PIN = (1 << 1), | ||
57 | SER_6PIN = (1 << 2), | ||
58 | LOWPOWER = (1 << 3), | ||
59 | }; | ||
60 | |||
61 | static inline enum u2d_ulpi_phy_mode pxa310_ulpi_get_phymode(void) | ||
62 | { | ||
63 | return (u2d_readl(U2DOTGUSR) >> 28) & 0xF; | ||
64 | } | ||
65 | |||
66 | static int pxa310_ulpi_poll(void) | ||
67 | { | ||
68 | int timeout = 50000; | ||
69 | |||
70 | while (timeout--) { | ||
71 | if (!(u2d_readl(U2DOTGUCR) & U2DOTGUCR_RUN)) | ||
72 | return 0; | ||
73 | |||
74 | cpu_relax(); | ||
75 | } | ||
76 | |||
77 | pr_warning("%s: ULPI access timed out!\n", __func__); | ||
78 | |||
79 | return -ETIMEDOUT; | ||
80 | } | ||
81 | |||
82 | static int pxa310_ulpi_read(struct otg_transceiver *otg, u32 reg) | ||
83 | { | ||
84 | int err; | ||
85 | |||
86 | if (pxa310_ulpi_get_phymode() != SYNCH) { | ||
87 | pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); | ||
88 | return -EBUSY; | ||
89 | } | ||
90 | |||
91 | u2d_writel(U2DOTGUCR, U2DOTGUCR_RUN | U2DOTGUCR_RNW | (reg << 16)); | ||
92 | msleep(5); | ||
93 | |||
94 | err = pxa310_ulpi_poll(); | ||
95 | if (err) | ||
96 | return err; | ||
97 | |||
98 | return u2d_readl(U2DOTGUCR) & U2DOTGUCR_RDATA; | ||
99 | } | ||
100 | |||
101 | static int pxa310_ulpi_write(struct otg_transceiver *otg, u32 val, u32 reg) | ||
102 | { | ||
103 | if (pxa310_ulpi_get_phymode() != SYNCH) { | ||
104 | pr_warning("%s: PHY is not in SYNCH mode!\n", __func__); | ||
105 | return -EBUSY; | ||
106 | } | ||
107 | |||
108 | u2d_writel(U2DOTGUCR, U2DOTGUCR_RUN | (reg << 16) | (val << 8)); | ||
109 | msleep(5); | ||
110 | |||
111 | return pxa310_ulpi_poll(); | ||
112 | } | ||
113 | |||
114 | struct otg_io_access_ops pxa310_ulpi_access_ops = { | ||
115 | .read = pxa310_ulpi_read, | ||
116 | .write = pxa310_ulpi_write, | ||
117 | }; | ||
118 | |||
119 | static void pxa310_otg_transceiver_rtsm(void) | ||
120 | { | ||
121 | u32 u2dotgcr; | ||
122 | |||
123 | /* put PHY to sync mode */ | ||
124 | u2dotgcr = u2d_readl(U2DOTGCR); | ||
125 | u2dotgcr |= U2DOTGCR_RTSM | U2DOTGCR_UTMID; | ||
126 | u2d_writel(U2DOTGCR, u2dotgcr); | ||
127 | msleep(10); | ||
128 | |||
129 | /* setup OTG sync mode */ | ||
130 | u2dotgcr = u2d_readl(U2DOTGCR); | ||
131 | u2dotgcr |= U2DOTGCR_ULAF; | ||
132 | u2dotgcr &= ~(U2DOTGCR_SMAF | U2DOTGCR_CKAF); | ||
133 | u2d_writel(U2DOTGCR, u2dotgcr); | ||
134 | } | ||
135 | |||
136 | static int pxa310_start_otg_host_transcvr(struct usb_bus *host) | ||
137 | { | ||
138 | int err; | ||
139 | |||
140 | pxa310_otg_transceiver_rtsm(); | ||
141 | |||
142 | err = otg_init(u2d->otg); | ||
143 | if (err) { | ||
144 | pr_err("OTG transceiver init failed"); | ||
145 | return err; | ||
146 | } | ||
147 | |||
148 | err = otg_set_vbus(u2d->otg, 1); | ||
149 | if (err) { | ||
150 | pr_err("OTG transceiver VBUS set failed"); | ||
151 | return err; | ||
152 | } | ||
153 | |||
154 | err = otg_set_host(u2d->otg, host); | ||
155 | if (err) | ||
156 | pr_err("OTG transceiver Host mode set failed"); | ||
157 | |||
158 | return err; | ||
159 | } | ||
160 | |||
161 | static int pxa310_start_otg_hc(struct usb_bus *host) | ||
162 | { | ||
163 | u32 u2dotgcr; | ||
164 | int err; | ||
165 | |||
166 | /* disable USB device controller */ | ||
167 | u2d_writel(U2DCR, u2d_readl(U2DCR) & ~U2DCR_UDE); | ||
168 | u2d_writel(U2DOTGCR, u2d_readl(U2DOTGCR) | U2DOTGCR_UTMID); | ||
169 | u2d_writel(U2DOTGICR, u2d_readl(U2DOTGICR) & ~0x37F7F); | ||
170 | |||
171 | err = pxa310_start_otg_host_transcvr(host); | ||
172 | if (err) | ||
173 | return err; | ||
174 | |||
175 | /* set xceiver mode */ | ||
176 | if (u2d->ulpi_mode & ULPI_IC_6PIN_SERIAL) | ||
177 | u2d_writel(U2DP3CR, u2d_readl(U2DP3CR) & ~U2DP3CR_P2SS); | ||
178 | else if (u2d->ulpi_mode & ULPI_IC_3PIN_SERIAL) | ||
179 | u2d_writel(U2DP3CR, u2d_readl(U2DP3CR) | U2DP3CR_P2SS); | ||
180 | |||
181 | /* start OTG host controller */ | ||
182 | u2dotgcr = u2d_readl(U2DOTGCR) | U2DOTGCR_SMAF; | ||
183 | u2d_writel(U2DOTGCR, u2dotgcr & ~(U2DOTGCR_ULAF | U2DOTGCR_CKAF)); | ||
184 | |||
185 | return 0; | ||
186 | } | ||
187 | |||
188 | static void pxa310_stop_otg_hc(void) | ||
189 | { | ||
190 | pxa310_otg_transceiver_rtsm(); | ||
191 | |||
192 | otg_set_host(u2d->otg, NULL); | ||
193 | otg_set_vbus(u2d->otg, 0); | ||
194 | otg_shutdown(u2d->otg); | ||
195 | } | ||
196 | |||
197 | static void pxa310_u2d_setup_otg_hc(void) | ||
198 | { | ||
199 | u32 u2dotgcr; | ||
200 | |||
201 | u2dotgcr = u2d_readl(U2DOTGCR); | ||
202 | u2dotgcr |= U2DOTGCR_ULAF | U2DOTGCR_UTMID; | ||
203 | u2dotgcr &= ~(U2DOTGCR_SMAF | U2DOTGCR_CKAF); | ||
204 | u2d_writel(U2DOTGCR, u2dotgcr); | ||
205 | msleep(5); | ||
206 | u2d_writel(U2DOTGCR, u2dotgcr | U2DOTGCR_ULE); | ||
207 | msleep(5); | ||
208 | u2d_writel(U2DOTGICR, u2d_readl(U2DOTGICR) & ~0x37F7F); | ||
209 | } | ||
210 | |||
211 | static int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata) | ||
212 | { | ||
213 | unsigned int ulpi_mode = ULPI_OTG_DRVVBUS; | ||
214 | |||
215 | if (pdata) { | ||
216 | if (pdata->ulpi_mode & ULPI_SER_6PIN) | ||
217 | ulpi_mode |= ULPI_IC_6PIN_SERIAL; | ||
218 | else if (pdata->ulpi_mode & ULPI_SER_3PIN) | ||
219 | ulpi_mode |= ULPI_IC_3PIN_SERIAL; | ||
220 | } | ||
221 | |||
222 | u2d->ulpi_mode = ulpi_mode; | ||
223 | |||
224 | u2d->otg = otg_ulpi_create(&pxa310_ulpi_access_ops, ulpi_mode); | ||
225 | if (!u2d->otg) | ||
226 | return -ENOMEM; | ||
227 | |||
228 | u2d->otg->io_priv = u2d->mmio_base; | ||
229 | |||
230 | return 0; | ||
231 | } | ||
232 | |||
233 | static void pxa310_otg_exit(void) | ||
234 | { | ||
235 | kfree(u2d->otg); | ||
236 | } | ||
237 | #else | ||
238 | static inline void pxa310_u2d_setup_otg_hc(void) {} | ||
239 | static inline int pxa310_start_otg_hc(struct usb_bus *host) | ||
240 | { | ||
241 | return 0; | ||
242 | } | ||
243 | static inline void pxa310_stop_otg_hc(void) {} | ||
244 | static inline int pxa310_otg_init(struct pxa3xx_u2d_platform_data *pdata) | ||
245 | { | ||
246 | return 0; | ||
247 | } | ||
248 | static inline void pxa310_otg_exit(void) {} | ||
249 | #endif /* CONFIG_PXA310_ULPI */ | ||
250 | |||
251 | int pxa3xx_u2d_start_hc(struct usb_bus *host) | ||
252 | { | ||
253 | int err = 0; | ||
254 | |||
255 | /* In case the PXA3xx ULPI isn't used, do nothing. */ | ||
256 | if (!u2d) | ||
257 | return 0; | ||
258 | |||
259 | clk_enable(u2d->clk); | ||
260 | |||
261 | if (cpu_is_pxa310()) { | ||
262 | pxa310_u2d_setup_otg_hc(); | ||
263 | err = pxa310_start_otg_hc(host); | ||
264 | } | ||
265 | |||
266 | return err; | ||
267 | } | ||
268 | |||
269 | void pxa3xx_u2d_stop_hc(struct usb_bus *host) | ||
270 | { | ||
271 | /* In case the PXA3xx ULPI isn't used, do nothing. */ | ||
272 | if (!u2d) | ||
273 | return; | ||
274 | |||
275 | if (cpu_is_pxa310()) | ||
276 | pxa310_stop_otg_hc(); | ||
277 | |||
278 | clk_disable(u2d->clk); | ||
279 | } | ||
280 | |||
281 | static int pxa3xx_u2d_probe(struct platform_device *pdev) | ||
282 | { | ||
283 | struct pxa3xx_u2d_platform_data *pdata = pdev->dev.platform_data; | ||
284 | struct resource *r; | ||
285 | int err; | ||
286 | |||
287 | u2d = kzalloc(sizeof(struct pxa3xx_u2d_ulpi), GFP_KERNEL); | ||
288 | if (!u2d) { | ||
289 | dev_err(&pdev->dev, "failed to allocate memory\n"); | ||
290 | return -ENOMEM; | ||
291 | } | ||
292 | |||
293 | u2d->clk = clk_get(&pdev->dev, NULL); | ||
294 | if (IS_ERR(u2d->clk)) { | ||
295 | dev_err(&pdev->dev, "failed to get u2d clock\n"); | ||
296 | err = PTR_ERR(u2d->clk); | ||
297 | goto err_free_mem; | ||
298 | } | ||
299 | |||
300 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
301 | if (!r) { | ||
302 | dev_err(&pdev->dev, "no IO memory resource defined\n"); | ||
303 | err = -ENODEV; | ||
304 | goto err_put_clk; | ||
305 | } | ||
306 | |||
307 | r = request_mem_region(r->start, resource_size(r), pdev->name); | ||
308 | if (!r) { | ||
309 | dev_err(&pdev->dev, "failed to request memory resource\n"); | ||
310 | err = -EBUSY; | ||
311 | goto err_put_clk; | ||
312 | } | ||
313 | |||
314 | u2d->mmio_base = ioremap(r->start, resource_size(r)); | ||
315 | if (!u2d->mmio_base) { | ||
316 | dev_err(&pdev->dev, "ioremap() failed\n"); | ||
317 | err = -ENODEV; | ||
318 | goto err_free_res; | ||
319 | } | ||
320 | |||
321 | if (pdata->init) { | ||
322 | err = pdata->init(&pdev->dev); | ||
323 | if (err) | ||
324 | goto err_free_io; | ||
325 | } | ||
326 | |||
327 | /* Only PXA310 U2D has OTG functionality */ | ||
328 | if (cpu_is_pxa310()) { | ||
329 | err = pxa310_otg_init(pdata); | ||
330 | if (err) | ||
331 | goto err_free_plat; | ||
332 | } | ||
333 | |||
334 | platform_set_drvdata(pdev, &u2d); | ||
335 | |||
336 | return 0; | ||
337 | |||
338 | err_free_plat: | ||
339 | if (pdata->exit) | ||
340 | pdata->exit(&pdev->dev); | ||
341 | err_free_io: | ||
342 | iounmap(u2d->mmio_base); | ||
343 | err_free_res: | ||
344 | release_mem_region(r->start, resource_size(r)); | ||
345 | err_put_clk: | ||
346 | clk_put(u2d->clk); | ||
347 | err_free_mem: | ||
348 | kfree(u2d); | ||
349 | return err; | ||
350 | } | ||
351 | |||
352 | static int pxa3xx_u2d_remove(struct platform_device *pdev) | ||
353 | { | ||
354 | struct pxa3xx_u2d_platform_data *pdata = pdev->dev.platform_data; | ||
355 | struct resource *r; | ||
356 | |||
357 | if (cpu_is_pxa310()) { | ||
358 | pxa310_stop_otg_hc(); | ||
359 | pxa310_otg_exit(); | ||
360 | } | ||
361 | |||
362 | if (pdata->exit) | ||
363 | pdata->exit(&pdev->dev); | ||
364 | |||
365 | platform_set_drvdata(pdev, NULL); | ||
366 | iounmap(u2d->mmio_base); | ||
367 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
368 | release_mem_region(r->start, resource_size(r)); | ||
369 | |||
370 | clk_put(u2d->clk); | ||
371 | |||
372 | kfree(u2d); | ||
373 | |||
374 | return 0; | ||
375 | } | ||
376 | |||
377 | static struct platform_driver pxa3xx_u2d_ulpi_driver = { | ||
378 | .driver = { | ||
379 | .name = "pxa3xx-u2d", | ||
380 | .owner = THIS_MODULE, | ||
381 | }, | ||
382 | .probe = pxa3xx_u2d_probe, | ||
383 | .remove = pxa3xx_u2d_remove, | ||
384 | }; | ||
385 | |||
386 | static int pxa3xx_u2d_ulpi_init(void) | ||
387 | { | ||
388 | return platform_driver_register(&pxa3xx_u2d_ulpi_driver); | ||
389 | } | ||
390 | module_init(pxa3xx_u2d_ulpi_init); | ||
391 | |||
392 | static void __exit pxa3xx_u2d_ulpi_exit(void) | ||
393 | { | ||
394 | platform_driver_unregister(&pxa3xx_u2d_ulpi_driver); | ||
395 | } | ||
396 | module_exit(pxa3xx_u2d_ulpi_exit); | ||
397 | |||
398 | MODULE_DESCRIPTION("PXA3xx U2D ULPI driver"); | ||
399 | MODULE_AUTHOR("Igor Grinberg"); | ||
400 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index fa0014847c71..c85c3a7abd31 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -98,23 +98,6 @@ unsigned int pxa3xx_get_clk_frequency_khz(int info) | |||
98 | return CLK / 1000; | 98 | return CLK / 1000; |
99 | } | 99 | } |
100 | 100 | ||
101 | /* | ||
102 | * Return the current static memory controller clock frequency | ||
103 | * in units of 10kHz | ||
104 | */ | ||
105 | unsigned int pxa3xx_get_memclk_frequency_10khz(void) | ||
106 | { | ||
107 | unsigned long acsr; | ||
108 | unsigned int smcfs, clk = 0; | ||
109 | |||
110 | acsr = ACSR; | ||
111 | |||
112 | smcfs = (acsr >> 23) & 0x7; | ||
113 | clk = (acsr & ACCR_D0CS) ? RO_CLK : smcfs_mult[smcfs] * BASE_CLK; | ||
114 | |||
115 | return (clk / 10000); | ||
116 | } | ||
117 | |||
118 | void pxa3xx_clear_reset_status(unsigned int mask) | 101 | void pxa3xx_clear_reset_status(unsigned int mask) |
119 | { | 102 | { |
120 | /* RESET_STATUS_* has a 1:1 mapping with ARSR */ | 103 | /* RESET_STATUS_* has a 1:1 mapping with ARSR */ |
@@ -265,7 +248,7 @@ static struct clk_lookup pxa3xx_clkregs[] = { | |||
265 | INIT_CLKREG(&clk_pxa3xx_i2c, "pxa2xx-i2c.0", NULL), | 248 | INIT_CLKREG(&clk_pxa3xx_i2c, "pxa2xx-i2c.0", NULL), |
266 | INIT_CLKREG(&clk_pxa3xx_udc, "pxa27x-udc", NULL), | 249 | INIT_CLKREG(&clk_pxa3xx_udc, "pxa27x-udc", NULL), |
267 | INIT_CLKREG(&clk_pxa3xx_usbh, "pxa27x-ohci", NULL), | 250 | INIT_CLKREG(&clk_pxa3xx_usbh, "pxa27x-ohci", NULL), |
268 | INIT_CLKREG(&clk_pxa3xx_u2d, NULL, "U2DCLK"), | 251 | INIT_CLKREG(&clk_pxa3xx_u2d, "pxa3xx-u2d", NULL), |
269 | INIT_CLKREG(&clk_pxa3xx_keypad, "pxa27x-keypad", NULL), | 252 | INIT_CLKREG(&clk_pxa3xx_keypad, "pxa27x-keypad", NULL), |
270 | INIT_CLKREG(&clk_pxa3xx_ssp1, "pxa27x-ssp.0", NULL), | 253 | INIT_CLKREG(&clk_pxa3xx_ssp1, "pxa27x-ssp.0", NULL), |
271 | INIT_CLKREG(&clk_pxa3xx_ssp2, "pxa27x-ssp.1", NULL), | 254 | INIT_CLKREG(&clk_pxa3xx_ssp2, "pxa27x-ssp.1", NULL), |
diff --git a/arch/arm/mach-pxa/pxa930.c b/arch/arm/mach-pxa/pxa930.c index 064292008288..7d29dd3af79d 100644 --- a/arch/arm/mach-pxa/pxa930.c +++ b/arch/arm/mach-pxa/pxa930.c | |||
@@ -192,7 +192,7 @@ static struct mfp_addr_map pxa935_mfp_addr_map[] __initdata = { | |||
192 | 192 | ||
193 | static int __init pxa930_init(void) | 193 | static int __init pxa930_init(void) |
194 | { | 194 | { |
195 | if (cpu_is_pxa930() || cpu_is_pxa935()) { | 195 | if (cpu_is_pxa930() || cpu_is_pxa935() || cpu_is_pxa950()) { |
196 | mfp_init_base(io_p2v(MFPR_BASE)); | 196 | mfp_init_base(io_p2v(MFPR_BASE)); |
197 | mfp_init_addr(pxa930_mfp_addr_map); | 197 | mfp_init_addr(pxa930_mfp_addr_map); |
198 | } | 198 | } |
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 67e04f4e07c1..4121d03ea2c3 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
@@ -1083,8 +1083,6 @@ static void __init raumfeld_speaker_init(void) | |||
1083 | 1083 | ||
1084 | #ifdef CONFIG_MACH_RAUMFELD_RC | 1084 | #ifdef CONFIG_MACH_RAUMFELD_RC |
1085 | MACHINE_START(RAUMFELD_RC, "Raumfeld Controller") | 1085 | MACHINE_START(RAUMFELD_RC, "Raumfeld Controller") |
1086 | .phys_io = 0x40000000, | ||
1087 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1088 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, | 1086 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, |
1089 | .init_machine = raumfeld_controller_init, | 1087 | .init_machine = raumfeld_controller_init, |
1090 | .map_io = pxa_map_io, | 1088 | .map_io = pxa_map_io, |
@@ -1095,8 +1093,6 @@ MACHINE_END | |||
1095 | 1093 | ||
1096 | #ifdef CONFIG_MACH_RAUMFELD_CONNECTOR | 1094 | #ifdef CONFIG_MACH_RAUMFELD_CONNECTOR |
1097 | MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector") | 1095 | MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector") |
1098 | .phys_io = 0x40000000, | ||
1099 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1100 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, | 1096 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, |
1101 | .init_machine = raumfeld_connector_init, | 1097 | .init_machine = raumfeld_connector_init, |
1102 | .map_io = pxa_map_io, | 1098 | .map_io = pxa_map_io, |
@@ -1107,8 +1103,6 @@ MACHINE_END | |||
1107 | 1103 | ||
1108 | #ifdef CONFIG_MACH_RAUMFELD_SPEAKER | 1104 | #ifdef CONFIG_MACH_RAUMFELD_SPEAKER |
1109 | MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker") | 1105 | MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker") |
1110 | .phys_io = 0x40000000, | ||
1111 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1112 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, | 1106 | .boot_params = RAUMFELD_SDRAM_BASE + 0x100, |
1113 | .init_machine = raumfeld_speaker_init, | 1107 | .init_machine = raumfeld_speaker_init, |
1114 | .map_io = pxa_map_io, | 1108 | .map_io = pxa_map_io, |
diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c index 115b6f234bdd..4b521e045d75 100644 --- a/arch/arm/mach-pxa/saar.c +++ b/arch/arm/mach-pxa/saar.c | |||
@@ -596,9 +596,7 @@ static void __init saar_init(void) | |||
596 | 596 | ||
597 | MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)") | 597 | MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)") |
598 | /* Maintainer: Eric Miao <eric.miao@marvell.com> */ | 598 | /* Maintainer: Eric Miao <eric.miao@marvell.com> */ |
599 | .phys_io = 0x40000000, | ||
600 | .boot_params = 0xa0000100, | 599 | .boot_params = 0xa0000100, |
601 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
602 | .map_io = pxa_map_io, | 600 | .map_io = pxa_map_io, |
603 | .init_irq = pxa3xx_init_irq, | 601 | .init_irq = pxa3xx_init_irq, |
604 | .timer = &pxa_timer, | 602 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 1cd99cb87bb1..f736119f1ebf 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -979,8 +979,6 @@ static void __init spitz_fixup(struct machine_desc *desc, | |||
979 | 979 | ||
980 | #ifdef CONFIG_MACH_SPITZ | 980 | #ifdef CONFIG_MACH_SPITZ |
981 | MACHINE_START(SPITZ, "SHARP Spitz") | 981 | MACHINE_START(SPITZ, "SHARP Spitz") |
982 | .phys_io = 0x40000000, | ||
983 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
984 | .fixup = spitz_fixup, | 982 | .fixup = spitz_fixup, |
985 | .map_io = pxa_map_io, | 983 | .map_io = pxa_map_io, |
986 | .init_irq = pxa27x_init_irq, | 984 | .init_irq = pxa27x_init_irq, |
@@ -991,8 +989,6 @@ MACHINE_END | |||
991 | 989 | ||
992 | #ifdef CONFIG_MACH_BORZOI | 990 | #ifdef CONFIG_MACH_BORZOI |
993 | MACHINE_START(BORZOI, "SHARP Borzoi") | 991 | MACHINE_START(BORZOI, "SHARP Borzoi") |
994 | .phys_io = 0x40000000, | ||
995 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
996 | .fixup = spitz_fixup, | 992 | .fixup = spitz_fixup, |
997 | .map_io = pxa_map_io, | 993 | .map_io = pxa_map_io, |
998 | .init_irq = pxa27x_init_irq, | 994 | .init_irq = pxa27x_init_irq, |
@@ -1003,8 +999,6 @@ MACHINE_END | |||
1003 | 999 | ||
1004 | #ifdef CONFIG_MACH_AKITA | 1000 | #ifdef CONFIG_MACH_AKITA |
1005 | MACHINE_START(AKITA, "SHARP Akita") | 1001 | MACHINE_START(AKITA, "SHARP Akita") |
1006 | .phys_io = 0x40000000, | ||
1007 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1008 | .fixup = spitz_fixup, | 1002 | .fixup = spitz_fixup, |
1009 | .map_io = pxa_map_io, | 1003 | .map_io = pxa_map_io, |
1010 | .init_irq = pxa27x_init_irq, | 1004 | .init_irq = pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c index a654d1e6b38a..738adc1773fd 100644 --- a/arch/arm/mach-pxa/stargate2.c +++ b/arch/arm/mach-pxa/stargate2.c | |||
@@ -56,6 +56,8 @@ | |||
56 | #include "devices.h" | 56 | #include "devices.h" |
57 | #include "generic.h" | 57 | #include "generic.h" |
58 | 58 | ||
59 | #define STARGATE_NR_IRQS (IRQ_BOARD_START + 8) | ||
60 | |||
59 | /* Bluetooth */ | 61 | /* Bluetooth */ |
60 | #define SG2_BT_RESET 81 | 62 | #define SG2_BT_RESET 81 |
61 | 63 | ||
@@ -996,8 +998,6 @@ static void __init stargate2_init(void) | |||
996 | 998 | ||
997 | #ifdef CONFIG_MACH_INTELMOTE2 | 999 | #ifdef CONFIG_MACH_INTELMOTE2 |
998 | MACHINE_START(INTELMOTE2, "IMOTE 2") | 1000 | MACHINE_START(INTELMOTE2, "IMOTE 2") |
999 | .phys_io = 0x40000000, | ||
1000 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1001 | .map_io = pxa_map_io, | 1001 | .map_io = pxa_map_io, |
1002 | .init_irq = pxa27x_init_irq, | 1002 | .init_irq = pxa27x_init_irq, |
1003 | .timer = &pxa_timer, | 1003 | .timer = &pxa_timer, |
@@ -1008,9 +1008,8 @@ MACHINE_END | |||
1008 | 1008 | ||
1009 | #ifdef CONFIG_MACH_STARGATE2 | 1009 | #ifdef CONFIG_MACH_STARGATE2 |
1010 | MACHINE_START(STARGATE2, "Stargate 2") | 1010 | MACHINE_START(STARGATE2, "Stargate 2") |
1011 | .phys_io = 0x40000000, | ||
1012 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
1013 | .map_io = pxa_map_io, | 1011 | .map_io = pxa_map_io, |
1012 | .nr_irqs = STARGATE_NR_IRQS, | ||
1014 | .init_irq = pxa27x_init_irq, | 1013 | .init_irq = pxa27x_init_irq, |
1015 | .timer = &pxa_timer, | 1014 | .timer = &pxa_timer, |
1016 | .init_machine = stargate2_init, | 1015 | .init_machine = stargate2_init, |
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c index f02dcb5b4e97..2ea7545273ad 100644 --- a/arch/arm/mach-pxa/tavorevb.c +++ b/arch/arm/mach-pxa/tavorevb.c | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #include <mach/pxa930.h> | 26 | #include <mach/pxa930.h> |
27 | #include <mach/pxafb.h> | 27 | #include <mach/pxafb.h> |
28 | #include <mach/pxa27x_keypad.h> | 28 | #include <plat/pxa27x_keypad.h> |
29 | 29 | ||
30 | #include "devices.h" | 30 | #include "devices.h" |
31 | #include "generic.h" | 31 | #include "generic.h" |
@@ -489,9 +489,7 @@ static void __init tavorevb_init(void) | |||
489 | 489 | ||
490 | MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)") | 490 | MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)") |
491 | /* Maintainer: Eric Miao <eric.miao@marvell.com> */ | 491 | /* Maintainer: Eric Miao <eric.miao@marvell.com> */ |
492 | .phys_io = 0x40000000, | ||
493 | .boot_params = 0xa0000100, | 492 | .boot_params = 0xa0000100, |
494 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
495 | .map_io = pxa_map_io, | 493 | .map_io = pxa_map_io, |
496 | .init_irq = pxa3xx_init_irq, | 494 | .init_irq = pxa3xx_init_irq, |
497 | .timer = &pxa_timer, | 495 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/tavorevb3.c b/arch/arm/mach-pxa/tavorevb3.c new file mode 100644 index 000000000000..dc3011697bbf --- /dev/null +++ b/arch/arm/mach-pxa/tavorevb3.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-pxa/tavorevb3.c | ||
3 | * | ||
4 | * Support for the Marvell EVB3 Development Platform. | ||
5 | * | ||
6 | * Copyright: (C) Copyright 2008-2010 Marvell International Ltd. | ||
7 | * | ||
8 | * 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 | ||
10 | * publishhed by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/platform_device.h> | ||
16 | #include <linux/interrupt.h> | ||
17 | #include <linux/i2c.h> | ||
18 | #include <linux/gpio.h> | ||
19 | #include <linux/mfd/88pm860x.h> | ||
20 | |||
21 | #include <asm/mach-types.h> | ||
22 | #include <asm/mach/arch.h> | ||
23 | |||
24 | #include <mach/pxa930.h> | ||
25 | |||
26 | #include <plat/i2c.h> | ||
27 | |||
28 | #include "devices.h" | ||
29 | #include "generic.h" | ||
30 | |||
31 | #define TAVOREVB3_NR_IRQS (IRQ_BOARD_START + 24) | ||
32 | |||
33 | static mfp_cfg_t evb3_mfp_cfg[] __initdata = { | ||
34 | /* UART */ | ||
35 | GPIO53_UART1_TXD, | ||
36 | GPIO54_UART1_RXD, | ||
37 | |||
38 | /* PMIC */ | ||
39 | PMIC_INT_GPIO83, | ||
40 | }; | ||
41 | |||
42 | #if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) | ||
43 | static struct pm860x_touch_pdata evb3_touch = { | ||
44 | .gpadc_prebias = 1, | ||
45 | .slot_cycle = 1, | ||
46 | .tsi_prebias = 6, | ||
47 | .pen_prebias = 16, | ||
48 | .pen_prechg = 2, | ||
49 | .res_x = 300, | ||
50 | }; | ||
51 | |||
52 | static struct pm860x_backlight_pdata evb3_backlight[] = { | ||
53 | { | ||
54 | .id = PM8606_ID_BACKLIGHT, | ||
55 | .iset = PM8606_WLED_CURRENT(24), | ||
56 | .flags = PM8606_BACKLIGHT1, | ||
57 | }, | ||
58 | {}, | ||
59 | }; | ||
60 | |||
61 | static struct pm860x_led_pdata evb3_led[] = { | ||
62 | { | ||
63 | .id = PM8606_ID_LED, | ||
64 | .iset = PM8606_LED_CURRENT(12), | ||
65 | .flags = PM8606_LED1_RED, | ||
66 | }, { | ||
67 | .id = PM8606_ID_LED, | ||
68 | .iset = PM8606_LED_CURRENT(12), | ||
69 | .flags = PM8606_LED1_GREEN, | ||
70 | }, { | ||
71 | .id = PM8606_ID_LED, | ||
72 | .iset = PM8606_LED_CURRENT(12), | ||
73 | .flags = PM8606_LED1_BLUE, | ||
74 | }, { | ||
75 | .id = PM8606_ID_LED, | ||
76 | .iset = PM8606_LED_CURRENT(12), | ||
77 | .flags = PM8606_LED2_RED, | ||
78 | }, { | ||
79 | .id = PM8606_ID_LED, | ||
80 | .iset = PM8606_LED_CURRENT(12), | ||
81 | .flags = PM8606_LED2_GREEN, | ||
82 | }, { | ||
83 | .id = PM8606_ID_LED, | ||
84 | .iset = PM8606_LED_CURRENT(12), | ||
85 | .flags = PM8606_LED2_BLUE, | ||
86 | }, | ||
87 | }; | ||
88 | |||
89 | static struct pm860x_platform_data evb3_pm8607_info = { | ||
90 | .touch = &evb3_touch, | ||
91 | .backlight = &evb3_backlight[0], | ||
92 | .led = &evb3_led[0], | ||
93 | .companion_addr = 0x10, | ||
94 | .irq_mode = 0, | ||
95 | .irq_base = IRQ_BOARD_START, | ||
96 | |||
97 | .i2c_port = GI2C_PORT, | ||
98 | }; | ||
99 | |||
100 | static struct i2c_board_info evb3_i2c_info[] = { | ||
101 | { | ||
102 | .type = "88PM860x", | ||
103 | .addr = 0x34, | ||
104 | .platform_data = &evb3_pm8607_info, | ||
105 | .irq = gpio_to_irq(mfp_to_gpio(MFP_PIN_GPIO83)), | ||
106 | }, | ||
107 | }; | ||
108 | |||
109 | static void __init evb3_init_i2c(void) | ||
110 | { | ||
111 | pxa_set_i2c_info(NULL); | ||
112 | i2c_register_board_info(0, ARRAY_AND_SIZE(evb3_i2c_info)); | ||
113 | } | ||
114 | #else | ||
115 | static inline void evb3_init_i2c(void) {} | ||
116 | #endif | ||
117 | |||
118 | static void __init evb3_init(void) | ||
119 | { | ||
120 | /* initialize MFP configurations */ | ||
121 | pxa3xx_mfp_config(ARRAY_AND_SIZE(evb3_mfp_cfg)); | ||
122 | |||
123 | pxa_set_ffuart_info(NULL); | ||
124 | |||
125 | evb3_init_i2c(); | ||
126 | } | ||
127 | |||
128 | MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)") | ||
129 | .boot_params = 0xa0000100, | ||
130 | .map_io = pxa_map_io, | ||
131 | .nr_irqs = TAVOREVB3_NR_IRQS, | ||
132 | .init_irq = pxa3xx_init_irq, | ||
133 | .timer = &pxa_timer, | ||
134 | .init_machine = evb3_init, | ||
135 | MACHINE_END | ||
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 83cc3a18c2e9..0ee1df49606d 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -952,10 +952,9 @@ static void __init fixup_tosa(struct machine_desc *desc, | |||
952 | } | 952 | } |
953 | 953 | ||
954 | MACHINE_START(TOSA, "SHARP Tosa") | 954 | MACHINE_START(TOSA, "SHARP Tosa") |
955 | .phys_io = 0x40000000, | ||
956 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
957 | .fixup = fixup_tosa, | 955 | .fixup = fixup_tosa, |
958 | .map_io = pxa_map_io, | 956 | .map_io = pxa_map_io, |
957 | .nr_irqs = TOSA_NR_IRQS, | ||
959 | .init_irq = pxa25x_init_irq, | 958 | .init_irq = pxa25x_init_irq, |
960 | .init_machine = tosa_init, | 959 | .init_machine = tosa_init, |
961 | .timer = &pxa_timer, | 960 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index 0acff172ef22..565d062f51d5 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c | |||
@@ -555,8 +555,6 @@ static void __init trizeps4_map_io(void) | |||
555 | 555 | ||
556 | MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module") | 556 | MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module") |
557 | /* MAINTAINER("Jürgen Schindele") */ | 557 | /* MAINTAINER("Jürgen Schindele") */ |
558 | .phys_io = 0x40000000, | ||
559 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
560 | .boot_params = TRIZEPS4_SDRAM_BASE + 0x100, | 558 | .boot_params = TRIZEPS4_SDRAM_BASE + 0x100, |
561 | .init_machine = trizeps4_init, | 559 | .init_machine = trizeps4_init, |
562 | .map_io = trizeps4_map_io, | 560 | .map_io = trizeps4_map_io, |
@@ -566,8 +564,6 @@ MACHINE_END | |||
566 | 564 | ||
567 | MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module") | 565 | MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module") |
568 | /* MAINTAINER("Jürgen Schindele") */ | 566 | /* MAINTAINER("Jürgen Schindele") */ |
569 | .phys_io = 0x40000000, | ||
570 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
571 | .boot_params = TRIZEPS4_SDRAM_BASE + 0x100, | 567 | .boot_params = TRIZEPS4_SDRAM_BASE + 0x100, |
572 | .init_machine = trizeps4_init, | 568 | .init_machine = trizeps4_init, |
573 | .map_io = trizeps4_map_io, | 569 | .map_io = trizeps4_map_io, |
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index e90114a7e246..438fc9a5ed59 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -992,8 +992,6 @@ static void __init viper_map_io(void) | |||
992 | 992 | ||
993 | MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC") | 993 | MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC") |
994 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ | 994 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ |
995 | .phys_io = 0x40000000, | ||
996 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
997 | .boot_params = 0xa0000100, | 995 | .boot_params = 0xa0000100, |
998 | .map_io = viper_map_io, | 996 | .map_io = viper_map_io, |
999 | .init_irq = viper_init_irq, | 997 | .init_irq = viper_init_irq, |
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c index 37d6173bbb66..f45ac0961778 100644 --- a/arch/arm/mach-pxa/vpac270.c +++ b/arch/arm/mach-pxa/vpac270.c | |||
@@ -718,8 +718,6 @@ static void __init vpac270_init(void) | |||
718 | } | 718 | } |
719 | 719 | ||
720 | MACHINE_START(VPAC270, "Voipac PXA270") | 720 | MACHINE_START(VPAC270, "Voipac PXA270") |
721 | .phys_io = 0x40000000, | ||
722 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
723 | .boot_params = 0xa0000100, | 721 | .boot_params = 0xa0000100, |
724 | .map_io = pxa_map_io, | 722 | .map_io = pxa_map_io, |
725 | .init_irq = pxa27x_init_irq, | 723 | .init_irq = pxa27x_init_irq, |
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c index d3b4e3f2e033..3260ce73d327 100644 --- a/arch/arm/mach-pxa/xcep.c +++ b/arch/arm/mach-pxa/xcep.c | |||
@@ -181,8 +181,6 @@ static void __init xcep_init(void) | |||
181 | } | 181 | } |
182 | 182 | ||
183 | MACHINE_START(XCEP, "Iskratel XCEP") | 183 | MACHINE_START(XCEP, "Iskratel XCEP") |
184 | .phys_io = 0x40000000, | ||
185 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
186 | .boot_params = 0xa0000100, | 184 | .boot_params = 0xa0000100, |
187 | .init_machine = xcep_init, | 185 | .init_machine = xcep_init, |
188 | .map_io = pxa_map_io, | 186 | .map_io = pxa_map_io, |
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c index f0d02288b4ca..fefde9848d82 100644 --- a/arch/arm/mach-pxa/z2.c +++ b/arch/arm/mach-pxa/z2.c | |||
@@ -37,7 +37,7 @@ | |||
37 | #include <mach/z2.h> | 37 | #include <mach/z2.h> |
38 | #include <mach/pxafb.h> | 38 | #include <mach/pxafb.h> |
39 | #include <mach/mmc.h> | 39 | #include <mach/mmc.h> |
40 | #include <mach/pxa27x_keypad.h> | 40 | #include <plat/pxa27x_keypad.h> |
41 | #include <mach/pxa2xx_spi.h> | 41 | #include <mach/pxa2xx_spi.h> |
42 | 42 | ||
43 | #include <plat/i2c.h> | 43 | #include <plat/i2c.h> |
@@ -703,9 +703,7 @@ static void __init z2_init(void) | |||
703 | } | 703 | } |
704 | 704 | ||
705 | MACHINE_START(ZIPIT2, "Zipit Z2") | 705 | MACHINE_START(ZIPIT2, "Zipit Z2") |
706 | .phys_io = 0x40000000, | ||
707 | .boot_params = 0xa0000100, | 706 | .boot_params = 0xa0000100, |
708 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
709 | .map_io = pxa_map_io, | 707 | .map_io = pxa_map_io, |
710 | .init_irq = pxa27x_init_irq, | 708 | .init_irq = pxa27x_init_irq, |
711 | .timer = &pxa_timer, | 709 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c index 03b9cb910e08..dea46a2d089b 100644 --- a/arch/arm/mach-pxa/zeus.c +++ b/arch/arm/mach-pxa/zeus.c | |||
@@ -900,10 +900,9 @@ static void __init zeus_map_io(void) | |||
900 | 900 | ||
901 | MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS") | 901 | MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS") |
902 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ | 902 | /* Maintainer: Marc Zyngier <maz@misterjones.org> */ |
903 | .phys_io = 0x40000000, | ||
904 | .io_pg_offst = ((io_p2v(0x40000000) >> 18) & 0xfffc), | ||
905 | .boot_params = 0xa0000100, | 903 | .boot_params = 0xa0000100, |
906 | .map_io = zeus_map_io, | 904 | .map_io = zeus_map_io, |
905 | .nr_irqs = ZEUS_NR_IRQS, | ||
907 | .init_irq = zeus_init_irq, | 906 | .init_irq = zeus_init_irq, |
908 | .timer = &pxa_timer, | 907 | .timer = &pxa_timer, |
909 | .init_machine = zeus_init, | 908 | .init_machine = zeus_init, |
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c index c479cbecf784..f25fb6245bd7 100644 --- a/arch/arm/mach-pxa/zylonite.c +++ b/arch/arm/mach-pxa/zylonite.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <mach/zylonite.h> | 30 | #include <mach/zylonite.h> |
31 | #include <mach/mmc.h> | 31 | #include <mach/mmc.h> |
32 | #include <mach/ohci.h> | 32 | #include <mach/ohci.h> |
33 | #include <mach/pxa27x_keypad.h> | 33 | #include <plat/pxa27x_keypad.h> |
34 | #include <plat/pxa3xx_nand.h> | 34 | #include <plat/pxa3xx_nand.h> |
35 | 35 | ||
36 | #include "devices.h" | 36 | #include "devices.h" |
@@ -411,10 +411,9 @@ static void __init zylonite_init(void) | |||
411 | } | 411 | } |
412 | 412 | ||
413 | MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") | 413 | MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") |
414 | .phys_io = 0x40000000, | ||
415 | .boot_params = 0xa0000100, | 414 | .boot_params = 0xa0000100, |
416 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
417 | .map_io = pxa_map_io, | 415 | .map_io = pxa_map_io, |
416 | .nr_irqs = ZYLONITE_NR_IRQS, | ||
418 | .init_irq = pxa3xx_init_irq, | 417 | .init_irq = pxa3xx_init_irq, |
419 | .timer = &pxa_timer, | 418 | .timer = &pxa_timer, |
420 | .init_machine = zylonite_init, | 419 | .init_machine = zylonite_init, |