aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-pxa/balloon3.c4
-rw-r--r--arch/arm/mach-pxa/cm-x2xx.c4
-rw-r--r--arch/arm/mach-pxa/cm-x300.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa270.c3
-rw-r--r--arch/arm/mach-pxa/colibri-pxa300.c4
-rw-r--r--arch/arm/mach-pxa/colibri-pxa320.c4
-rw-r--r--arch/arm/mach-pxa/corgi.c4
-rw-r--r--arch/arm/mach-pxa/csb726.c3
-rw-r--r--arch/arm/mach-pxa/devices.c25
-rw-r--r--arch/arm/mach-pxa/e330.c3
-rw-r--r--arch/arm/mach-pxa/e350.c3
-rw-r--r--arch/arm/mach-pxa/e400.c3
-rw-r--r--arch/arm/mach-pxa/e740.c3
-rw-r--r--arch/arm/mach-pxa/e750.c3
-rw-r--r--arch/arm/mach-pxa/e800.c3
-rw-r--r--arch/arm/mach-pxa/em-x270.c4
-rw-r--r--arch/arm/mach-pxa/ezx.c24
-rw-r--r--arch/arm/mach-pxa/generic.h5
-rw-r--r--arch/arm/mach-pxa/gumstix.c5
-rw-r--r--arch/arm/mach-pxa/h5000.c3
-rw-r--r--arch/arm/mach-pxa/himalaya.c3
-rw-r--r--arch/arm/mach-pxa/hx4700.c4
-rw-r--r--arch/arm/mach-pxa/idp.c3
-rw-r--r--arch/arm/mach-pxa/imote2.c6
-rw-r--r--arch/arm/mach-pxa/littleton.c4
-rw-r--r--arch/arm/mach-pxa/lpd270.c4
-rw-r--r--arch/arm/mach-pxa/lubbock.c4
-rw-r--r--arch/arm/mach-pxa/magician.c4
-rw-r--r--arch/arm/mach-pxa/mainstone.c4
-rw-r--r--arch/arm/mach-pxa/mioa701.c3
-rw-r--r--arch/arm/mach-pxa/mp900.c3
-rw-r--r--arch/arm/mach-pxa/palmld.c4
-rw-r--r--arch/arm/mach-pxa/palmt5.c4
-rw-r--r--arch/arm/mach-pxa/palmtc.c5
-rw-r--r--arch/arm/mach-pxa/palmte2.c4
-rw-r--r--arch/arm/mach-pxa/palmtreo.c4
-rw-r--r--arch/arm/mach-pxa/palmtx.c4
-rw-r--r--arch/arm/mach-pxa/palmz72.c4
-rw-r--r--arch/arm/mach-pxa/pcm027.c4
-rw-r--r--arch/arm/mach-pxa/poodle.c4
-rw-r--r--arch/arm/mach-pxa/pxa25x.c7
-rw-r--r--arch/arm/mach-pxa/pxa27x.c3
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c3
-rw-r--r--arch/arm/mach-pxa/saar.c4
-rw-r--r--arch/arm/mach-pxa/spitz.c4
-rw-r--r--arch/arm/mach-pxa/stargate2.c4
-rw-r--r--arch/arm/mach-pxa/tavorevb.c4
-rw-r--r--arch/arm/mach-pxa/tosa.c5
-rw-r--r--arch/arm/mach-pxa/trizeps4.c4
-rw-r--r--arch/arm/mach-pxa/viper.c4
-rw-r--r--arch/arm/mach-pxa/xcep.c5
-rw-r--r--arch/arm/mach-pxa/zylonite.c4
52 files changed, 230 insertions, 14 deletions
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index f23138b8fca3..b8cd07ca9380 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -306,6 +306,10 @@ static void __init balloon3_init(void)
306 */ 306 */
307 ARB_CNTRL = ARB_CORE_PARK | 0x234; 307 ARB_CNTRL = ARB_CORE_PARK | 0x234;
308 308
309 pxa_set_ffuart_info(NULL);
310 pxa_set_btuart_info(NULL);
311 pxa_set_stuart_info(NULL);
312
309 pxa_set_i2c_info(NULL); 313 pxa_set_i2c_info(NULL);
310 if (balloon3_has(BALLOON3_FEATURE_AUDIO)) 314 if (balloon3_has(BALLOON3_FEATURE_AUDIO))
311 pxa_set_ac97_info(NULL); 315 pxa_set_ac97_info(NULL);
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c
index b50ef39eabfc..bff6e78f033d 100644
--- a/arch/arm/mach-pxa/cm-x2xx.c
+++ b/arch/arm/mach-pxa/cm-x2xx.c
@@ -453,6 +453,10 @@ static inline void cmx2xx_init_ac97(void) {}
453 453
454static void __init cmx2xx_init(void) 454static void __init cmx2xx_init(void)
455{ 455{
456 pxa_set_ffuart_info(NULL);
457 pxa_set_btuart_info(NULL);
458 pxa_set_stuart_info(NULL);
459
456 cmx2xx_pm_init(); 460 cmx2xx_pm_init();
457 461
458 if (cpu_is_pxa25x()) 462 if (cpu_is_pxa25x())
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c
index 06552ca91814..7f2e87839a8f 100644
--- a/arch/arm/mach-pxa/cm-x300.c
+++ b/arch/arm/mach-pxa/cm-x300.c
@@ -438,6 +438,10 @@ static void __init cm_x300_init(void)
438 /* board-processor specific GPIO initialization */ 438 /* board-processor specific GPIO initialization */
439 pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x300_mfp_cfg)); 439 pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x300_mfp_cfg));
440 440
441 pxa_set_ffuart_info(NULL);
442 pxa_set_btuart_info(NULL);
443 pxa_set_stuart_info(NULL);
444
441 cm_x300_init_dm9000(); 445 cm_x300_init_dm9000();
442 cm_x300_init_lcd(); 446 cm_x300_init_lcd();
443 cm_x300_init_ohci(); 447 cm_x300_init_ohci();
diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c
index 01bcfaae75bc..061c45316de8 100644
--- a/arch/arm/mach-pxa/colibri-pxa270.c
+++ b/arch/arm/mach-pxa/colibri-pxa270.c
@@ -130,6 +130,9 @@ static struct platform_device *colibri_pxa270_devices[] __initdata = {
130static void __init colibri_pxa270_init(void) 130static void __init colibri_pxa270_init(void)
131{ 131{
132 pxa2xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa270_pin_config)); 132 pxa2xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa270_pin_config));
133 pxa_set_ffuart_info(NULL);
134 pxa_set_btuart_info(NULL);
135 pxa_set_stuart_info(NULL);
133 platform_add_devices(ARRAY_AND_SIZE(colibri_pxa270_devices)); 136 platform_add_devices(ARRAY_AND_SIZE(colibri_pxa270_devices));
134} 137}
135 138
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
index 37c239c56568..45c23fd6df31 100644
--- a/arch/arm/mach-pxa/colibri-pxa300.c
+++ b/arch/arm/mach-pxa/colibri-pxa300.c
@@ -170,6 +170,10 @@ static inline void colibri_pxa310_init_ac97(void) {}
170 170
171void __init colibri_pxa300_init(void) 171void __init colibri_pxa300_init(void)
172{ 172{
173 pxa_set_ffuart_info(NULL);
174 pxa_set_btuart_info(NULL);
175 pxa_set_stuart_info(NULL);
176
173 colibri_pxa300_init_eth(); 177 colibri_pxa300_init_eth();
174 colibri_pxa300_init_ohci(); 178 colibri_pxa300_init_ohci();
175 colibri_pxa3xx_init_nand(); 179 colibri_pxa3xx_init_nand();
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
index ec0e14b96682..ae835fad7d10 100644
--- a/arch/arm/mach-pxa/colibri-pxa320.c
+++ b/arch/arm/mach-pxa/colibri-pxa320.c
@@ -199,6 +199,10 @@ static void __init colibri_pxa320_init_uart(void)
199 199
200void __init colibri_pxa320_init(void) 200void __init colibri_pxa320_init(void)
201{ 201{
202 pxa_set_ffuart_info(NULL);
203 pxa_set_btuart_info(NULL);
204 pxa_set_stuart_info(NULL);
205
202 colibri_pxa320_init_eth(); 206 colibri_pxa320_init_eth();
203 colibri_pxa320_init_ohci(); 207 colibri_pxa320_init_ohci();
204 colibri_pxa3xx_init_nand(); 208 colibri_pxa3xx_init_nand();
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index b536b5a5a10d..74446cf8ae69 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -671,6 +671,10 @@ static void __init corgi_init(void)
671 671
672 pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config)); 672 pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config));
673 673
674 pxa_set_ffuart_info(NULL);
675 pxa_set_btuart_info(NULL);
676 pxa_set_stuart_info(NULL);
677
674 corgi_init_spi(); 678 corgi_init_spi();
675 679
676 pxa_set_udc_info(&udc_info); 680 pxa_set_udc_info(&udc_info);
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c
index 965480eb4fe6..88575b87bd33 100644
--- a/arch/arm/mach-pxa/csb726.c
+++ b/arch/arm/mach-pxa/csb726.c
@@ -268,6 +268,9 @@ static void __init csb726_init(void)
268/* MSC2 = 0x06697ff4; *//* none/SM501 */ 268/* MSC2 = 0x06697ff4; *//* none/SM501 */
269 MSC2 = (MSC2 & ~0xffff) | 0x7ff4; /* SM501 */ 269 MSC2 = (MSC2 & ~0xffff) | 0x7ff4; /* SM501 */
270 270
271 pxa_set_ffuart_info(NULL);
272 pxa_set_btuart_info(NULL);
273 pxa_set_stuart_info(NULL);
271 pxa_set_i2c_info(NULL); 274 pxa_set_i2c_info(NULL);
272 pxa27x_set_i2c_power_info(NULL); 275 pxa27x_set_i2c_power_info(NULL);
273 pxa_set_mci_info(&csb726_mci); 276 pxa_set_mci_info(&csb726_mci);
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index e2b427fa55e5..d4cc41d04b25 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -167,13 +167,18 @@ static struct resource pxa_resource_ffuart[] = {
167 } 167 }
168}; 168};
169 169
170struct platform_device pxa_device_ffuart= { 170struct platform_device pxa_device_ffuart = {
171 .name = "pxa2xx-uart", 171 .name = "pxa2xx-uart",
172 .id = 0, 172 .id = 0,
173 .resource = pxa_resource_ffuart, 173 .resource = pxa_resource_ffuart,
174 .num_resources = ARRAY_SIZE(pxa_resource_ffuart), 174 .num_resources = ARRAY_SIZE(pxa_resource_ffuart),
175}; 175};
176 176
177void __init pxa_set_ffuart_info(void *info)
178{
179 pxa_register_device(&pxa_device_ffuart, info);
180}
181
177static struct resource pxa_resource_btuart[] = { 182static struct resource pxa_resource_btuart[] = {
178 { 183 {
179 .start = 0x40200000, 184 .start = 0x40200000,
@@ -193,6 +198,11 @@ struct platform_device pxa_device_btuart = {
193 .num_resources = ARRAY_SIZE(pxa_resource_btuart), 198 .num_resources = ARRAY_SIZE(pxa_resource_btuart),
194}; 199};
195 200
201void __init pxa_set_btuart_info(void *info)
202{
203 pxa_register_device(&pxa_device_btuart, info);
204}
205
196static struct resource pxa_resource_stuart[] = { 206static struct resource pxa_resource_stuart[] = {
197 { 207 {
198 .start = 0x40700000, 208 .start = 0x40700000,
@@ -212,6 +222,11 @@ struct platform_device pxa_device_stuart = {
212 .num_resources = ARRAY_SIZE(pxa_resource_stuart), 222 .num_resources = ARRAY_SIZE(pxa_resource_stuart),
213}; 223};
214 224
225void __init pxa_set_stuart_info(void *info)
226{
227 pxa_register_device(&pxa_device_stuart, info);
228}
229
215static struct resource pxa_resource_hwuart[] = { 230static struct resource pxa_resource_hwuart[] = {
216 { 231 {
217 .start = 0x41600000, 232 .start = 0x41600000,
@@ -231,6 +246,14 @@ struct platform_device pxa_device_hwuart = {
231 .num_resources = ARRAY_SIZE(pxa_resource_hwuart), 246 .num_resources = ARRAY_SIZE(pxa_resource_hwuart),
232}; 247};
233 248
249void __init pxa_set_hwuart_info(void *info)
250{
251 if (cpu_is_pxa255())
252 pxa_register_device(&pxa_device_hwuart, info);
253 else
254 pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware");
255}
256
234static struct resource pxai2c_resources[] = { 257static struct resource pxai2c_resources[] = {
235 { 258 {
236 .start = 0x40301680, 259 .start = 0x40301680,
diff --git a/arch/arm/mach-pxa/e330.c b/arch/arm/mach-pxa/e330.c
index 74d3f8987c5c..8fde3387279d 100644
--- a/arch/arm/mach-pxa/e330.c
+++ b/arch/arm/mach-pxa/e330.c
@@ -55,6 +55,9 @@ static struct platform_device *devices[] __initdata = {
55 55
56static void __init e330_init(void) 56static void __init e330_init(void)
57{ 57{
58 pxa_set_ffuart_info(NULL);
59 pxa_set_btuart_info(NULL);
60 pxa_set_stuart_info(NULL);
58 eseries_register_clks(); 61 eseries_register_clks();
59 eseries_get_tmio_gpios(); 62 eseries_get_tmio_gpios();
60 platform_add_devices(devices, ARRAY_SIZE(devices)); 63 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/e350.c b/arch/arm/mach-pxa/e350.c
index 080036272131..f50f055f5720 100644
--- a/arch/arm/mach-pxa/e350.c
+++ b/arch/arm/mach-pxa/e350.c
@@ -56,6 +56,9 @@ static struct platform_device *devices[] __initdata = {
56 56
57static void __init e350_init(void) 57static void __init e350_init(void)
58{ 58{
59 pxa_set_ffuart_info(NULL);
60 pxa_set_btuart_info(NULL);
61 pxa_set_stuart_info(NULL);
59 eseries_register_clks(); 62 eseries_register_clks();
60 eseries_get_tmio_gpios(); 63 eseries_get_tmio_gpios();
61 platform_add_devices(devices, ARRAY_SIZE(devices)); 64 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/e400.c b/arch/arm/mach-pxa/e400.c
index ed9c0c3f64a2..55b950f12844 100644
--- a/arch/arm/mach-pxa/e400.c
+++ b/arch/arm/mach-pxa/e400.c
@@ -130,6 +130,9 @@ static struct platform_device *devices[] __initdata = {
130static void __init e400_init(void) 130static void __init e400_init(void)
131{ 131{
132 pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); 132 pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config));
133 pxa_set_ffuart_info(NULL);
134 pxa_set_btuart_info(NULL);
135 pxa_set_stuart_info(NULL);
133 /* Fixme - e400 may have a switched clock */ 136 /* Fixme - e400 may have a switched clock */
134 eseries_register_clks(); 137 eseries_register_clks();
135 eseries_get_tmio_gpios(); 138 eseries_get_tmio_gpios();
diff --git a/arch/arm/mach-pxa/e740.c b/arch/arm/mach-pxa/e740.c
index 49acdfa6650d..94b23a9e3877 100644
--- a/arch/arm/mach-pxa/e740.c
+++ b/arch/arm/mach-pxa/e740.c
@@ -192,6 +192,9 @@ static struct platform_device *devices[] __initdata = {
192static void __init e740_init(void) 192static void __init e740_init(void)
193{ 193{
194 pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config)); 194 pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config));
195 pxa_set_ffuart_info(NULL);
196 pxa_set_btuart_info(NULL);
197 pxa_set_stuart_info(NULL);
195 eseries_register_clks(); 198 eseries_register_clks();
196 clk_add_alias("CLK_CK48M", e740_t7l66xb_device.name, 199 clk_add_alias("CLK_CK48M", e740_t7l66xb_device.name,
197 "UDCCLK", &pxa25x_device_udc.dev), 200 "UDCCLK", &pxa25x_device_udc.dev),
diff --git a/arch/arm/mach-pxa/e750.c b/arch/arm/mach-pxa/e750.c
index 4052ece3ef49..5eccbce73a33 100644
--- a/arch/arm/mach-pxa/e750.c
+++ b/arch/arm/mach-pxa/e750.c
@@ -194,6 +194,9 @@ static struct platform_device *devices[] __initdata = {
194static void __init e750_init(void) 194static void __init e750_init(void)
195{ 195{
196 pxa2xx_mfp_config(ARRAY_AND_SIZE(e750_pin_config)); 196 pxa2xx_mfp_config(ARRAY_AND_SIZE(e750_pin_config));
197 pxa_set_ffuart_info(NULL);
198 pxa_set_btuart_info(NULL);
199 pxa_set_stuart_info(NULL);
197 clk_add_alias("CLK_CK3P6MI", e750_tc6393xb_device.name, 200 clk_add_alias("CLK_CK3P6MI", e750_tc6393xb_device.name,
198 "GPIO11_CLK", NULL), 201 "GPIO11_CLK", NULL),
199 eseries_get_tmio_gpios(); 202 eseries_get_tmio_gpios();
diff --git a/arch/arm/mach-pxa/e800.c b/arch/arm/mach-pxa/e800.c
index 9866c7b9e784..aad129bed199 100644
--- a/arch/arm/mach-pxa/e800.c
+++ b/arch/arm/mach-pxa/e800.c
@@ -195,6 +195,9 @@ static struct platform_device *devices[] __initdata = {
195 195
196static void __init e800_init(void) 196static void __init e800_init(void)
197{ 197{
198 pxa_set_ffuart_info(NULL);
199 pxa_set_btuart_info(NULL);
200 pxa_set_stuart_info(NULL);
198 clk_add_alias("CLK_CK3P6MI", e800_tc6393xb_device.name, 201 clk_add_alias("CLK_CK3P6MI", e800_tc6393xb_device.name,
199 "GPIO11_CLK", NULL), 202 "GPIO11_CLK", NULL),
200 eseries_get_tmio_gpios(); 203 eseries_get_tmio_gpios();
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index aec7f4214b14..e0b0fda9e67e 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -1286,6 +1286,10 @@ static void __init em_x270_init(void)
1286{ 1286{
1287 pxa2xx_mfp_config(ARRAY_AND_SIZE(common_pin_config)); 1287 pxa2xx_mfp_config(ARRAY_AND_SIZE(common_pin_config));
1288 1288
1289 pxa_set_ffuart_info(NULL);
1290 pxa_set_btuart_info(NULL);
1291 pxa_set_stuart_info(NULL);
1292
1289#ifdef CONFIG_PM 1293#ifdef CONFIG_PM
1290 pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP); 1294 pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP);
1291#endif 1295#endif
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 588b265e5755..48c17372bc1c 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -693,6 +693,10 @@ static void __init a780_init(void)
693 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config)); 693 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
694 pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config)); 694 pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config));
695 695
696 pxa_set_ffuart_info(NULL);
697 pxa_set_btuart_info(NULL);
698 pxa_set_stuart_info(NULL);
699
696 pxa_set_i2c_info(NULL); 700 pxa_set_i2c_info(NULL);
697 701
698 set_pxa_fb_info(&ezx_fb_info_1); 702 set_pxa_fb_info(&ezx_fb_info_1);
@@ -754,6 +758,10 @@ static void __init e680_init(void)
754 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config)); 758 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
755 pxa2xx_mfp_config(ARRAY_AND_SIZE(e680_pin_config)); 759 pxa2xx_mfp_config(ARRAY_AND_SIZE(e680_pin_config));
756 760
761 pxa_set_ffuart_info(NULL);
762 pxa_set_btuart_info(NULL);
763 pxa_set_stuart_info(NULL);
764
757 pxa_set_i2c_info(NULL); 765 pxa_set_i2c_info(NULL);
758 i2c_register_board_info(0, ARRAY_AND_SIZE(e680_i2c_board_info)); 766 i2c_register_board_info(0, ARRAY_AND_SIZE(e680_i2c_board_info));
759 767
@@ -816,6 +824,10 @@ static void __init a1200_init(void)
816 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); 824 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
817 pxa2xx_mfp_config(ARRAY_AND_SIZE(a1200_pin_config)); 825 pxa2xx_mfp_config(ARRAY_AND_SIZE(a1200_pin_config));
818 826
827 pxa_set_ffuart_info(NULL);
828 pxa_set_btuart_info(NULL);
829 pxa_set_stuart_info(NULL);
830
819 pxa_set_i2c_info(NULL); 831 pxa_set_i2c_info(NULL);
820 i2c_register_board_info(0, ARRAY_AND_SIZE(a1200_i2c_board_info)); 832 i2c_register_board_info(0, ARRAY_AND_SIZE(a1200_i2c_board_info));
821 833
@@ -874,6 +886,10 @@ static void __init a910_init(void)
874 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); 886 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
875 pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config)); 887 pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config));
876 888
889 pxa_set_ffuart_info(NULL);
890 pxa_set_btuart_info(NULL);
891 pxa_set_stuart_info(NULL);
892
877 pxa_set_i2c_info(NULL); 893 pxa_set_i2c_info(NULL);
878 894
879 set_pxa_fb_info(&ezx_fb_info_2); 895 set_pxa_fb_info(&ezx_fb_info_2);
@@ -935,6 +951,10 @@ static void __init e6_init(void)
935 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); 951 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
936 pxa2xx_mfp_config(ARRAY_AND_SIZE(e6_pin_config)); 952 pxa2xx_mfp_config(ARRAY_AND_SIZE(e6_pin_config));
937 953
954 pxa_set_ffuart_info(NULL);
955 pxa_set_btuart_info(NULL);
956 pxa_set_stuart_info(NULL);
957
938 pxa_set_i2c_info(NULL); 958 pxa_set_i2c_info(NULL);
939 i2c_register_board_info(0, ARRAY_AND_SIZE(e6_i2c_board_info)); 959 i2c_register_board_info(0, ARRAY_AND_SIZE(e6_i2c_board_info));
940 960
@@ -971,6 +991,10 @@ static void __init e2_init(void)
971 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); 991 pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
972 pxa2xx_mfp_config(ARRAY_AND_SIZE(e2_pin_config)); 992 pxa2xx_mfp_config(ARRAY_AND_SIZE(e2_pin_config));
973 993
994 pxa_set_ffuart_info(NULL);
995 pxa_set_btuart_info(NULL);
996 pxa_set_stuart_info(NULL);
997
974 pxa_set_i2c_info(NULL); 998 pxa_set_i2c_info(NULL);
975 i2c_register_board_info(0, ARRAY_AND_SIZE(e2_i2c_board_info)); 999 i2c_register_board_info(0, ARRAY_AND_SIZE(e2_i2c_board_info));
976 1000
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index 485fede83d97..890fb90a672f 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -67,3 +67,8 @@ extern struct sysdev_class pxa_irq_sysclass;
67extern struct sysdev_class pxa_gpio_sysclass; 67extern struct sysdev_class pxa_gpio_sysclass;
68extern struct sysdev_class pxa2xx_mfp_sysclass; 68extern struct sysdev_class pxa2xx_mfp_sysclass;
69extern struct sysdev_class pxa3xx_mfp_sysclass; 69extern struct sysdev_class pxa3xx_mfp_sysclass;
70
71void __init pxa_set_ffuart_info(void *info);
72void __init pxa_set_btuart_info(void *info);
73void __init pxa_set_stuart_info(void *info);
74void __init pxa_set_hwuart_info(void *info);
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
index 1708c0109844..96c345129135 100644
--- a/arch/arm/mach-pxa/gumstix.c
+++ b/arch/arm/mach-pxa/gumstix.c
@@ -211,6 +211,11 @@ static void __init gumstix_init(void)
211{ 211{
212 pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config)); 212 pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config));
213 213
214 pxa_set_ffuart_info(NULL);
215 pxa_set_btuart_info(NULL);
216 pxa_set_stuart_info(NULL);
217 pxa_set_hwuart_info(NULL);
218
214 gumstix_bluetooth_init(); 219 gumstix_bluetooth_init();
215 gumstix_udc_init(); 220 gumstix_udc_init();
216 gumstix_mmc_init(); 221 gumstix_mmc_init();
diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c
index f3d220c32e07..c1cab0871c99 100644
--- a/arch/arm/mach-pxa/h5000.c
+++ b/arch/arm/mach-pxa/h5000.c
@@ -193,6 +193,9 @@ static void __init h5000_init(void)
193 fix_msc(); 193 fix_msc();
194 194
195 pxa2xx_mfp_config(ARRAY_AND_SIZE(h5000_pin_config)); 195 pxa2xx_mfp_config(ARRAY_AND_SIZE(h5000_pin_config));
196 pxa_set_ffuart_info(NULL);
197 pxa_set_btuart_info(NULL);
198 pxa_set_stuart_info(NULL);
196 pxa_set_udc_info(&h5000_udc_mach_info); 199 pxa_set_udc_info(&h5000_udc_mach_info);
197 platform_add_devices(ARRAY_AND_SIZE(devices)); 200 platform_add_devices(ARRAY_AND_SIZE(devices));
198} 201}
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c
index cea99fe65b97..f9a2e4b0f090 100644
--- a/arch/arm/mach-pxa/himalaya.c
+++ b/arch/arm/mach-pxa/himalaya.c
@@ -150,6 +150,9 @@ static void __init himalaya_lcd_init(void)
150 150
151static void __init himalaya_init(void) 151static void __init himalaya_init(void)
152{ 152{
153 pxa_set_ffuart_info(NULL);
154 pxa_set_btuart_info(NULL);
155 pxa_set_stuart_info(NULL);
153 himalaya_lcd_init(); 156 himalaya_lcd_init();
154 platform_add_devices(devices, ARRAY_SIZE(devices)); 157 platform_add_devices(devices, ARRAY_SIZE(devices));
155} 158}
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index 83bd3c6e3884..6b3c90ed5f28 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -849,6 +849,10 @@ static void __init hx4700_init(void)
849 pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); 849 pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config));
850 hx4700_gpio_request(ARRAY_AND_SIZE(global_gpios)); 850 hx4700_gpio_request(ARRAY_AND_SIZE(global_gpios));
851 851
852 pxa_set_ffuart_info(NULL);
853 pxa_set_btuart_info(NULL);
854 pxa_set_stuart_info(NULL);
855
852 platform_add_devices(devices, ARRAY_SIZE(devices)); 856 platform_add_devices(devices, ARRAY_SIZE(devices));
853 857
854 pxa_set_ficp_info(&ficp_info); 858 pxa_set_ficp_info(&ficp_info);
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index b6486ef20b17..5c9e11d74f49 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -179,6 +179,9 @@ static void __init idp_init(void)
179 printk("idp_init()\n"); 179 printk("idp_init()\n");
180 180
181 pxa2xx_mfp_config(ARRAY_AND_SIZE(idp_pin_config)); 181 pxa2xx_mfp_config(ARRAY_AND_SIZE(idp_pin_config));
182 pxa_set_ffuart_info(NULL);
183 pxa_set_btuart_info(NULL);
184 pxa_set_stuart_info(NULL);
182 185
183 platform_device_register(&smc91x_device); 186 platform_device_register(&smc91x_device);
184 //platform_device_register(&mst_audio_device); 187 //platform_device_register(&mst_audio_device);
diff --git a/arch/arm/mach-pxa/imote2.c b/arch/arm/mach-pxa/imote2.c
index 2a4945db31c5..5b0862df61ab 100644
--- a/arch/arm/mach-pxa/imote2.c
+++ b/arch/arm/mach-pxa/imote2.c
@@ -554,8 +554,12 @@ static struct i2c_pxa_platform_data i2c_pdata = {
554 554
555static void __init imote2_init(void) 555static void __init imote2_init(void)
556{ 556{
557
558 pxa2xx_mfp_config(ARRAY_AND_SIZE(imote2_pin_config)); 557 pxa2xx_mfp_config(ARRAY_AND_SIZE(imote2_pin_config));
558
559 pxa_set_ffuart_info(NULL);
560 pxa_set_btuart_info(NULL);
561 pxa_set_stuart_info(NULL);
562
559 /* SPI chip select directions - all other directions should 563 /* SPI chip select directions - all other directions should
560 * be handled by drivers.*/ 564 * be handled by drivers.*/
561 gpio_direction_output(37, 0); 565 gpio_direction_output(37, 0);
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index ce5e6175a050..f28c1715b910 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -413,6 +413,10 @@ static void __init littleton_init(void)
413 /* initialize MFP configurations */ 413 /* initialize MFP configurations */
414 pxa3xx_mfp_config(ARRAY_AND_SIZE(littleton_mfp_cfg)); 414 pxa3xx_mfp_config(ARRAY_AND_SIZE(littleton_mfp_cfg));
415 415
416 pxa_set_ffuart_info(NULL);
417 pxa_set_btuart_info(NULL);
418 pxa_set_stuart_info(NULL);
419
416 /* 420 /*
417 * Note: we depend bootloader set the correct 421 * Note: we depend bootloader set the correct
418 * value to MSC register for SMC91x. 422 * value to MSC register for SMC91x.
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index d64395f26a3e..1373c22dbb83 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -455,6 +455,10 @@ static void __init lpd270_init(void)
455{ 455{
456 pxa2xx_mfp_config(ARRAY_AND_SIZE(lpd270_pin_config)); 456 pxa2xx_mfp_config(ARRAY_AND_SIZE(lpd270_pin_config));
457 457
458 pxa_set_ffuart_info(NULL);
459 pxa_set_btuart_info(NULL);
460 pxa_set_stuart_info(NULL);
461
458 lpd270_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; 462 lpd270_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4;
459 lpd270_flash_data[1].width = 4; 463 lpd270_flash_data[1].width = 4;
460 464
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index c6a94d3fdd61..98ee7e590299 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -518,6 +518,10 @@ static void __init lubbock_init(void)
518 518
519 pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config)); 519 pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config));
520 520
521 pxa_set_ffuart_info(NULL);
522 pxa_set_btuart_info(NULL);
523 pxa_set_stuart_info(NULL);
524
521 clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL); 525 clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL);
522 pxa_set_udc_info(&udc_info); 526 pxa_set_udc_info(&udc_info);
523 set_pxa_fb_info(&sharp_lm8v31); 527 set_pxa_fb_info(&sharp_lm8v31);
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 5360c07f5138..8a38d604dc77 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -742,6 +742,10 @@ static void __init magician_init(void)
742 742
743 pxa2xx_mfp_config(ARRAY_AND_SIZE(magician_pin_config)); 743 pxa2xx_mfp_config(ARRAY_AND_SIZE(magician_pin_config));
744 744
745 pxa_set_ffuart_info(NULL);
746 pxa_set_btuart_info(NULL);
747 pxa_set_stuart_info(NULL);
748
745 platform_add_devices(ARRAY_AND_SIZE(devices)); 749 platform_add_devices(ARRAY_AND_SIZE(devices));
746 750
747 err = gpio_request(GPIO83_MAGICIAN_nIR_EN, "nIR_EN"); 751 err = gpio_request(GPIO83_MAGICIAN_nIR_EN, "nIR_EN");
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index a4eeae345e64..851ee0fc32e2 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -576,6 +576,10 @@ static void __init mainstone_init(void)
576 576
577 pxa2xx_mfp_config(ARRAY_AND_SIZE(mainstone_pin_config)); 577 pxa2xx_mfp_config(ARRAY_AND_SIZE(mainstone_pin_config));
578 578
579 pxa_set_ffuart_info(NULL);
580 pxa_set_btuart_info(NULL);
581 pxa_set_stuart_info(NULL);
582
579 mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; 583 mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4;
580 mst_flash_data[1].width = 4; 584 mst_flash_data[1].width = 4;
581 585
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index 3cab452e5567..2466a44d8fda 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -798,6 +798,9 @@ static void __init mioa701_machine_init(void)
798 UP2OCR = UP2OCR_HXOE; 798 UP2OCR = UP2OCR_HXOE;
799 799
800 pxa2xx_mfp_config(ARRAY_AND_SIZE(mioa701_pin_config)); 800 pxa2xx_mfp_config(ARRAY_AND_SIZE(mioa701_pin_config));
801 pxa_set_ffuart_info(NULL);
802 pxa_set_btuart_info(NULL);
803 pxa_set_stuart_info(NULL);
801 mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); 804 mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
802 bootstrap_init(); 805 bootstrap_init();
803 set_pxa_fb_info(&mioa701_pxafb_info); 806 set_pxa_fb_info(&mioa701_pxafb_info);
diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c
index a65713ce019e..6d4503927a76 100644
--- a/arch/arm/mach-pxa/mp900.c
+++ b/arch/arm/mach-pxa/mp900.c
@@ -84,6 +84,9 @@ static struct platform_device *devices[] __initdata = {
84static void __init mp900c_init(void) 84static void __init mp900c_init(void)
85{ 85{
86 printk(KERN_INFO "MobilePro 900/C machine init\n"); 86 printk(KERN_INFO "MobilePro 900/C machine init\n");
87 pxa_set_ffuart_info(NULL);
88 pxa_set_btuart_info(NULL);
89 pxa_set_stuart_info(NULL);
87 platform_add_devices(devices, ARRAY_SIZE(devices)); 90 platform_add_devices(devices, ARRAY_SIZE(devices));
88} 91}
89 92
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 1ad029dd4438..59140217890a 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -530,6 +530,10 @@ static void __init palmld_init(void)
530{ 530{
531 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config)); 531 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config));
532 532
533 pxa_set_ffuart_info(NULL);
534 pxa_set_btuart_info(NULL);
535 pxa_set_stuart_info(NULL);
536
533 palmld_pm_init(); 537 palmld_pm_init();
534 set_pxa_fb_info(&palmld_lcd_screen); 538 set_pxa_fb_info(&palmld_lcd_screen);
535 pxa_set_mci_info(&palmld_mci_platform_data); 539 pxa_set_mci_info(&palmld_mci_platform_data);
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 2dd7ce28556b..7f89ca20f13a 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -419,6 +419,10 @@ static void __init palmt5_init(void)
419{ 419{
420 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config)); 420 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
421 421
422 pxa_set_ffuart_info(NULL);
423 pxa_set_btuart_info(NULL);
424 pxa_set_stuart_info(NULL);
425
422 palmt5_pm_init(); 426 palmt5_pm_init();
423 set_pxa_fb_info(&palmt5_lcd_screen); 427 set_pxa_fb_info(&palmt5_lcd_screen);
424 pxa_set_mci_info(&palmt5_mci_platform_data); 428 pxa_set_mci_info(&palmt5_mci_platform_data);
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c
index 0b92291a58f6..308417592007 100644
--- a/arch/arm/mach-pxa/palmtc.c
+++ b/arch/arm/mach-pxa/palmtc.c
@@ -416,6 +416,11 @@ static void __init palmtc_init(void)
416{ 416{
417 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtc_pin_config)); 417 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtc_pin_config));
418 418
419 pxa_set_ffuart_info(NULL);
420 pxa_set_btuart_info(NULL);
421 pxa_set_stuart_info(NULL);
422 pxa_set_hwuart_info(NULL);
423
419 set_pxa_fb_info(&palmtc_lcd_screen); 424 set_pxa_fb_info(&palmtc_lcd_screen);
420 pxa_set_mci_info(&palmtc_mci_platform_data); 425 pxa_set_mci_info(&palmtc_mci_platform_data);
421 pxa_set_udc_info(&palmtc_udc_info); 426 pxa_set_udc_info(&palmtc_udc_info);
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c
index 277c4062e3c6..265d62bae7de 100644
--- a/arch/arm/mach-pxa/palmte2.c
+++ b/arch/arm/mach-pxa/palmte2.c
@@ -373,6 +373,10 @@ static void __init palmte2_init(void)
373{ 373{
374 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config)); 374 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config));
375 375
376 pxa_set_ffuart_info(NULL);
377 pxa_set_btuart_info(NULL);
378 pxa_set_stuart_info(NULL);
379
376 set_pxa_fb_info(&palmte2_lcd_screen); 380 set_pxa_fb_info(&palmte2_lcd_screen);
377 pxa_set_mci_info(&palmte2_mci_platform_data); 381 pxa_set_mci_info(&palmte2_mci_platform_data);
378 palmte2_udc_init(); 382 palmte2_udc_init();
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
index c071b60ebed8..606eb7e8a17e 100644
--- a/arch/arm/mach-pxa/palmtreo.c
+++ b/arch/arm/mach-pxa/palmtreo.c
@@ -653,6 +653,10 @@ static void __init treo_lcd_power_init(void)
653 653
654static void __init treo_init(void) 654static void __init treo_init(void)
655{ 655{
656 pxa_set_ffuart_info(NULL);
657 pxa_set_btuart_info(NULL);
658 pxa_set_stuart_info(NULL);
659
656 treo_pm_init(); 660 treo_pm_init();
657 pxa2xx_mfp_config(ARRAY_AND_SIZE(treo_pin_config)); 661 pxa2xx_mfp_config(ARRAY_AND_SIZE(treo_pin_config));
658 treo_lcd_power_init(); 662 treo_lcd_power_init();
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 76a2b37eaf30..7bf18c2f002f 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -570,6 +570,10 @@ static void __init palmtx_init(void)
570{ 570{
571 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config)); 571 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
572 572
573 pxa_set_ffuart_info(NULL);
574 pxa_set_btuart_info(NULL);
575 pxa_set_stuart_info(NULL);
576
573 palmtx_pm_init(); 577 palmtx_pm_init();
574 set_pxa_fb_info(&palmtx_lcd_screen); 578 set_pxa_fb_info(&palmtx_lcd_screen);
575 pxa_set_mci_info(&palmtx_mci_platform_data); 579 pxa_set_mci_info(&palmtx_mci_platform_data);
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index c2bf493c5f53..d787ac7cfdd8 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -491,6 +491,10 @@ static void __init palmz72_init(void)
491{ 491{
492 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); 492 pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config));
493 493
494 pxa_set_ffuart_info(NULL);
495 pxa_set_btuart_info(NULL);
496 pxa_set_stuart_info(NULL);
497
494 set_pxa_fb_info(&palmz72_lcd_screen); 498 set_pxa_fb_info(&palmz72_lcd_screen);
495 pxa_set_mci_info(&palmz72_mci_platform_data); 499 pxa_set_mci_info(&palmz72_mci_platform_data);
496 palmz72_udc_init(); 500 palmz72_udc_init();
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c
index 6abfa2979c61..2190af066470 100644
--- a/arch/arm/mach-pxa/pcm027.c
+++ b/arch/arm/mach-pxa/pcm027.c
@@ -227,6 +227,10 @@ static void __init pcm027_init(void)
227 227
228 pxa2xx_mfp_config(pcm027_pin_config, ARRAY_SIZE(pcm027_pin_config)); 228 pxa2xx_mfp_config(pcm027_pin_config, ARRAY_SIZE(pcm027_pin_config));
229 229
230 pxa_set_ffuart_info(NULL);
231 pxa_set_btuart_info(NULL);
232 pxa_set_stuart_info(NULL);
233
230 platform_add_devices(devices, ARRAY_SIZE(devices)); 234 platform_add_devices(devices, ARRAY_SIZE(devices));
231 235
232 /* at last call the baseboard to initialize itself */ 236 /* at last call the baseboard to initialize itself */
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index a186994f77fb..e5eeb3a62d01 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -449,6 +449,10 @@ static void __init poodle_init(void)
449 449
450 pxa2xx_mfp_config(ARRAY_AND_SIZE(poodle_pin_config)); 450 pxa2xx_mfp_config(ARRAY_AND_SIZE(poodle_pin_config));
451 451
452 pxa_set_ffuart_info(NULL);
453 pxa_set_btuart_info(NULL);
454 pxa_set_stuart_info(NULL);
455
452 platform_scoop_config = &poodle_pcmcia_config; 456 platform_scoop_config = &poodle_pcmcia_config;
453 457
454 ret = platform_add_devices(devices, ARRAY_SIZE(devices)); 458 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
index 77c2693cfeef..2c1b0b70d01d 100644
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@ -322,9 +322,6 @@ void __init pxa26x_init_irq(void)
322 322
323static struct platform_device *pxa25x_devices[] __initdata = { 323static struct platform_device *pxa25x_devices[] __initdata = {
324 &pxa25x_device_udc, 324 &pxa25x_device_udc,
325 &pxa_device_ffuart,
326 &pxa_device_btuart,
327 &pxa_device_stuart,
328 &pxa_device_i2s, 325 &pxa_device_i2s,
329 &sa1100_device_rtc, 326 &sa1100_device_rtc,
330 &pxa25x_device_ssp, 327 &pxa25x_device_ssp,
@@ -372,10 +369,8 @@ static int __init pxa25x_init(void)
372 } 369 }
373 370
374 /* Only add HWUART for PXA255/26x; PXA210/250 do not have it. */ 371 /* Only add HWUART for PXA255/26x; PXA210/250 do not have it. */
375 if (cpu_is_pxa255()) { 372 if (cpu_is_pxa255())
376 clks_register(&pxa25x_hwuart_clkreg, 1); 373 clks_register(&pxa25x_hwuart_clkreg, 1);
377 ret = platform_device_register(&pxa_device_hwuart);
378 }
379 374
380 return ret; 375 return ret;
381} 376}
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index ec68cc16b4e3..6a0b73167e03 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -364,9 +364,6 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
364 364
365static struct platform_device *devices[] __initdata = { 365static struct platform_device *devices[] __initdata = {
366 &pxa27x_device_udc, 366 &pxa27x_device_udc,
367 &pxa_device_ffuart,
368 &pxa_device_btuart,
369 &pxa_device_stuart,
370 &pxa_device_i2s, 367 &pxa_device_i2s,
371 &sa1100_device_rtc, 368 &sa1100_device_rtc,
372 &pxa_device_rtc, 369 &pxa_device_rtc,
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index ca536f2b2bf9..3198680626ec 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -555,9 +555,6 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info)
555 555
556static struct platform_device *devices[] __initdata = { 556static struct platform_device *devices[] __initdata = {
557 &pxa27x_device_udc, 557 &pxa27x_device_udc,
558 &pxa_device_ffuart,
559 &pxa_device_btuart,
560 &pxa_device_stuart,
561 &pxa_device_i2s, 558 &pxa_device_i2s,
562 &sa1100_device_rtc, 559 &sa1100_device_rtc,
563 &pxa_device_rtc, 560 &pxa_device_rtc,
diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c
index 3cccb085b979..115b6f234bdd 100644
--- a/arch/arm/mach-pxa/saar.c
+++ b/arch/arm/mach-pxa/saar.c
@@ -583,6 +583,10 @@ static void __init saar_init(void)
583 /* initialize MFP configurations */ 583 /* initialize MFP configurations */
584 pxa3xx_mfp_config(ARRAY_AND_SIZE(saar_mfp_cfg)); 584 pxa3xx_mfp_config(ARRAY_AND_SIZE(saar_mfp_cfg));
585 585
586 pxa_set_ffuart_info(NULL);
587 pxa_set_btuart_info(NULL);
588 pxa_set_stuart_info(NULL);
589
586 platform_device_register(&smc91x_device); 590 platform_device_register(&smc91x_device);
587 saar_init_onenand(); 591 saar_init_onenand();
588 592
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 3da45d051743..bbd7a855ae2d 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -768,6 +768,10 @@ static void __init common_init(void)
768 768
769 pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config)); 769 pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config));
770 770
771 pxa_set_ffuart_info(NULL);
772 pxa_set_btuart_info(NULL);
773 pxa_set_stuart_info(NULL);
774
771 spitz_init_spi(); 775 spitz_init_spi();
772 776
773 platform_add_devices(devices, ARRAY_SIZE(devices)); 777 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index 3b205b69f3fb..a98a434f0111 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -760,6 +760,10 @@ static void __init stargate2_init(void)
760 760
761 pxa2xx_mfp_config(ARRAY_AND_SIZE(stargate2_pin_config)); 761 pxa2xx_mfp_config(ARRAY_AND_SIZE(stargate2_pin_config));
762 762
763 pxa_set_ffuart_info(NULL);
764 pxa_set_btuart_info(NULL);
765 pxa_set_stuart_info(NULL);
766
763 /* spi chip selects */ 767 /* spi chip selects */
764 gpio_direction_output(37, 0); 768 gpio_direction_output(37, 0);
765 gpio_direction_output(24, 0); 769 gpio_direction_output(24, 0);
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c
index b75353a2ec75..f02dcb5b4e97 100644
--- a/arch/arm/mach-pxa/tavorevb.c
+++ b/arch/arm/mach-pxa/tavorevb.c
@@ -477,6 +477,10 @@ static void __init tavorevb_init(void)
477 /* initialize MFP configurations */ 477 /* initialize MFP configurations */
478 pxa3xx_mfp_config(ARRAY_AND_SIZE(tavorevb_mfp_cfg)); 478 pxa3xx_mfp_config(ARRAY_AND_SIZE(tavorevb_mfp_cfg));
479 479
480 pxa_set_ffuart_info(NULL);
481 pxa_set_btuart_info(NULL);
482 pxa_set_stuart_info(NULL);
483
480 platform_device_register(&smc91x_device); 484 platform_device_register(&smc91x_device);
481 485
482 tavorevb_init_lcd(); 486 tavorevb_init_lcd();
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index e81a52673d49..c854c168a451 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -825,6 +825,11 @@ static void __init tosa_init(void)
825 int dummy; 825 int dummy;
826 826
827 pxa2xx_mfp_config(ARRAY_AND_SIZE(tosa_pin_config)); 827 pxa2xx_mfp_config(ARRAY_AND_SIZE(tosa_pin_config));
828
829 pxa_set_ffuart_info(NULL);
830 pxa_set_btuart_info(NULL);
831 pxa_set_stuart_info(NULL);
832
828 gpio_set_wake(MFP_PIN_GPIO1, 1); 833 gpio_set_wake(MFP_PIN_GPIO1, 1);
829 /* We can't pass to gpio-keys since it will drop the Reset altfunc */ 834 /* We can't pass to gpio-keys since it will drop the Reset altfunc */
830 835
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 3981e0356d12..0aa858ebc573 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -524,6 +524,10 @@ static void __init trizeps4_init(void)
524 ARRAY_SIZE(trizeps4_devices)); 524 ARRAY_SIZE(trizeps4_devices));
525 } 525 }
526 526
527 pxa_set_ffuart_info(NULL);
528 pxa_set_btuart_info(NULL);
529 pxa_set_stuart_info(NULL);
530
527 if (0) /* dont know how to determine LCD */ 531 if (0) /* dont know how to determine LCD */
528 set_pxa_fb_info(&sharp_lcd); 532 set_pxa_fb_info(&sharp_lcd);
529 else 533 else
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index d33c232b686c..6c36bd9f3b55 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -908,6 +908,10 @@ static void __init viper_init(void)
908 908
909 pxa2xx_mfp_config(ARRAY_AND_SIZE(viper_pin_config)); 909 pxa2xx_mfp_config(ARRAY_AND_SIZE(viper_pin_config));
910 910
911 pxa_set_ffuart_info(NULL);
912 pxa_set_btuart_info(NULL);
913 pxa_set_stuart_info(NULL);
914
911 /* Wake-up serial console */ 915 /* Wake-up serial console */
912 viper_init_serial_gpio(); 916 viper_init_serial_gpio();
913 917
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c
index 3fd79cbb36c8..d3b4e3f2e033 100644
--- a/arch/arm/mach-pxa/xcep.c
+++ b/arch/arm/mach-pxa/xcep.c
@@ -165,6 +165,11 @@ static void __init xcep_init(void)
165{ 165{
166 pxa2xx_mfp_config(ARRAY_AND_SIZE(xcep_pin_config)); 166 pxa2xx_mfp_config(ARRAY_AND_SIZE(xcep_pin_config));
167 167
168 pxa_set_ffuart_info(NULL);
169 pxa_set_btuart_info(NULL);
170 pxa_set_stuart_info(NULL);
171 pxa_set_hwuart_info(NULL);
172
168 /* See Intel XScale Developer's Guide for details */ 173 /* See Intel XScale Developer's Guide for details */
169 /* Set RDF and RDN to appropriate values (chip select 3 (smc91x)) */ 174 /* Set RDF and RDN to appropriate values (chip select 3 (smc91x)) */
170 MSC1 = (MSC1 & 0xffff) | 0xD5540000; 175 MSC1 = (MSC1 & 0xffff) | 0xD5540000;
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 8fcb69411cf7..b66e9e2d06e7 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -444,6 +444,10 @@ static inline void zylonite_init_ohci(void) {}
444 444
445static void __init zylonite_init(void) 445static void __init zylonite_init(void)
446{ 446{
447 pxa_set_ffuart_info(NULL);
448 pxa_set_btuart_info(NULL);
449 pxa_set_stuart_info(NULL);
450
447 /* board-processor specific initialization */ 451 /* board-processor specific initialization */
448 zylonite_pxa300_init(); 452 zylonite_pxa300_init();
449 zylonite_pxa320_init(); 453 zylonite_pxa320_init();