diff options
| author | Lee Jones <lee.jones@linaro.org> | 2011-08-26 11:54:07 -0400 |
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2011-08-30 03:22:57 -0400 |
| commit | 110c2c2f40647d31994c09f0afd1411e71f48a32 (patch) | |
| tree | c76703cfaf57605452d29bf0c9f8845d852eb170 | |
| parent | 458eef2f4d73a55efa835ed891922e31efe91920 (diff) | |
mach-ux500: remove most of the ugly machine_is_*() calls
Do more work in the per-machine init calls instead of customizing
each init call.
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500-pins.c | 34 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500-sdi.c | 52 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 78 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 3 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/include/mach/uncompress.h | 10 |
5 files changed, 124 insertions, 53 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index f26fd76f72b4..4108c7bf324e 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c | |||
| @@ -153,7 +153,7 @@ static pin_cfg_t mop500_pins_default[] = { | |||
| 153 | GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, | 153 | GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, |
| 154 | }; | 154 | }; |
| 155 | 155 | ||
| 156 | static pin_cfg_t mop500_pins_hrefv60[] = { | 156 | static pin_cfg_t hrefv60_pins[] = { |
| 157 | /* WLAN */ | 157 | /* WLAN */ |
| 158 | GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ | 158 | GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ |
| 159 | GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ | 159 | GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ |
| @@ -279,14 +279,26 @@ static pin_cfg_t snowball_pins[] = { | |||
| 279 | void __init mop500_pins_init(void) | 279 | void __init mop500_pins_init(void) |
| 280 | { | 280 | { |
| 281 | nmk_config_pins(mop500_pins_common, | 281 | nmk_config_pins(mop500_pins_common, |
| 282 | ARRAY_SIZE(mop500_pins_common)); | 282 | ARRAY_SIZE(mop500_pins_common)); |
| 283 | if (machine_is_hrefv60()) | 283 | |
| 284 | nmk_config_pins(mop500_pins_hrefv60, | 284 | nmk_config_pins(mop500_pins_default, |
| 285 | ARRAY_SIZE(mop500_pins_hrefv60)); | 285 | ARRAY_SIZE(mop500_pins_default)); |
| 286 | else if (machine_is_snowball()) | 286 | } |
| 287 | nmk_config_pins(snowball_pins, | 287 | |
| 288 | ARRAY_SIZE(snowball_pins)); | 288 | void __init snowball_pins_init(void) |
| 289 | else | 289 | { |
| 290 | nmk_config_pins(mop500_pins_default, | 290 | nmk_config_pins(mop500_pins_common, |
| 291 | ARRAY_SIZE(mop500_pins_default)); | 291 | ARRAY_SIZE(mop500_pins_common)); |
| 292 | |||
| 293 | nmk_config_pins(snowball_pins, | ||
| 294 | ARRAY_SIZE(snowball_pins)); | ||
| 295 | } | ||
| 296 | |||
| 297 | void __init hrefv60_pins_init(void) | ||
| 298 | { | ||
| 299 | nmk_config_pins(mop500_pins_common, | ||
| 300 | ARRAY_SIZE(mop500_pins_common)); | ||
| 301 | |||
| 302 | nmk_config_pins(hrefv60_pins, | ||
| 303 | ARRAY_SIZE(hrefv60_pins)); | ||
| 292 | } | 304 | } |
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c index d0cb9e5eb87c..6826faeecc68 100644 --- a/arch/arm/mach-ux500/board-mop500-sdi.c +++ b/arch/arm/mach-ux500/board-mop500-sdi.c | |||
| @@ -216,30 +216,48 @@ void __init mop500_sdi_init(void) | |||
| 216 | /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ | 216 | /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ |
| 217 | if (!cpu_is_u8500v10()) | 217 | if (!cpu_is_u8500v10()) |
| 218 | mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; | 218 | mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; |
| 219 | /* sdi2 on snowball is in ATL_B mode for FSMC (LAN) */ | 219 | |
| 220 | if (!machine_is_snowball()) | 220 | db8500_add_sdi2(&mop500_sdi2_data, periphid); |
| 221 | db8500_add_sdi2(&mop500_sdi2_data, periphid); | ||
| 222 | 221 | ||
| 223 | /* On-board eMMC */ | 222 | /* On-board eMMC */ |
| 224 | db8500_add_sdi4(&mop500_sdi4_data, periphid); | 223 | db8500_add_sdi4(&mop500_sdi4_data, periphid); |
| 225 | 224 | ||
| 226 | if (machine_is_hrefv60() || machine_is_snowball()) { | ||
| 227 | if (machine_is_hrefv60()) { | ||
| 228 | mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; | ||
| 229 | sdi0_en = HREFV60_SDMMC_EN_GPIO; | ||
| 230 | sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; | ||
| 231 | } else if (machine_is_snowball()) { | ||
| 232 | mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; | ||
| 233 | mop500_sdi0_data.cd_invert = true; | ||
| 234 | sdi0_en = SNOWBALL_SDMMC_EN_GPIO; | ||
| 235 | sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; | ||
| 236 | } | ||
| 237 | sdi0_configure(); | ||
| 238 | } | ||
| 239 | |||
| 240 | /* | 225 | /* |
| 241 | * On boards with the TC35892 GPIO expander, sdi0 will finally | 226 | * On boards with the TC35892 GPIO expander, sdi0 will finally |
| 242 | * be added when the TC35892 initializes and calls | 227 | * be added when the TC35892 initializes and calls |
| 243 | * mop500_sdi_tc35892_init() above. | 228 | * mop500_sdi_tc35892_init() above. |
| 244 | */ | 229 | */ |
| 245 | } | 230 | } |
| 231 | |||
| 232 | void __init snowball_sdi_init(void) | ||
| 233 | { | ||
| 234 | u32 periphid = 0x10480180; | ||
| 235 | |||
| 236 | mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; | ||
| 237 | |||
| 238 | /* On-board eMMC */ | ||
| 239 | db8500_add_sdi4(&mop500_sdi4_data, periphid); | ||
| 240 | |||
| 241 | mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; | ||
| 242 | mop500_sdi0_data.cd_invert = true; | ||
| 243 | sdi0_en = SNOWBALL_SDMMC_EN_GPIO; | ||
| 244 | sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; | ||
| 245 | sdi0_configure(); | ||
| 246 | } | ||
| 247 | |||
| 248 | void __init hrefv60_sdi_init(void) | ||
| 249 | { | ||
| 250 | u32 periphid = 0x10480180; | ||
| 251 | |||
| 252 | mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; | ||
| 253 | |||
| 254 | db8500_add_sdi2(&mop500_sdi2_data, periphid); | ||
| 255 | |||
| 256 | /* On-board eMMC */ | ||
| 257 | db8500_add_sdi4(&mop500_sdi4_data, periphid); | ||
| 258 | |||
| 259 | mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; | ||
| 260 | sdi0_en = HREFV60_SDMMC_EN_GPIO; | ||
| 261 | sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; | ||
| 262 | sdi0_configure(); | ||
| 263 | } | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index cd54abaccd96..6c00d4920396 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
| @@ -603,28 +603,72 @@ static void __init mop500_init_machine(void) | |||
| 603 | { | 603 | { |
| 604 | int i2c0_devs; | 604 | int i2c0_devs; |
| 605 | 605 | ||
| 606 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | ||
| 607 | |||
| 608 | u8500_init_devices(); | ||
| 609 | |||
| 610 | mop500_pins_init(); | ||
| 611 | |||
| 612 | platform_add_devices(mop500_platform_devs, | ||
| 613 | ARRAY_SIZE(mop500_platform_devs)); | ||
| 614 | |||
| 615 | mop500_i2c_init(); | ||
| 616 | mop500_sdi_init(); | ||
| 617 | mop500_spi_init(); | ||
| 618 | mop500_uart_init(); | ||
| 619 | |||
| 620 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | ||
| 621 | |||
| 622 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | ||
| 623 | i2c_register_board_info(2, mop500_i2c2_devices, | ||
| 624 | ARRAY_SIZE(mop500_i2c2_devices)); | ||
| 625 | |||
| 626 | /* This board has full regulator constraints */ | ||
| 627 | regulator_has_full_constraints(); | ||
| 628 | } | ||
| 629 | |||
| 630 | static void __init snowball_init_machine(void) | ||
| 631 | { | ||
| 632 | int i2c0_devs; | ||
| 633 | |||
| 634 | u8500_init_devices(); | ||
| 635 | |||
| 636 | snowball_pins_init(); | ||
| 637 | |||
| 638 | platform_add_devices(snowball_platform_devs, | ||
| 639 | ARRAY_SIZE(snowball_platform_devs)); | ||
| 640 | |||
| 641 | mop500_i2c_init(); | ||
| 642 | snowball_sdi_init(); | ||
| 643 | mop500_spi_init(); | ||
| 644 | mop500_uart_init(); | ||
| 645 | |||
| 646 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | ||
| 647 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | ||
| 648 | i2c_register_board_info(2, mop500_i2c2_devices, | ||
| 649 | ARRAY_SIZE(mop500_i2c2_devices)); | ||
| 650 | |||
| 651 | /* This board has full regulator constraints */ | ||
| 652 | regulator_has_full_constraints(); | ||
| 653 | } | ||
| 654 | |||
| 655 | static void __init hrefv60_init_machine(void) | ||
| 656 | { | ||
| 657 | int i2c0_devs; | ||
| 658 | |||
| 606 | /* | 659 | /* |
| 607 | * The HREFv60 board removed a GPIO expander and routed | 660 | * The HREFv60 board removed a GPIO expander and routed |
| 608 | * all these GPIO pins to the internal GPIO controller | 661 | * all these GPIO pins to the internal GPIO controller |
| 609 | * instead. | 662 | * instead. |
| 610 | */ | 663 | */ |
| 611 | if (!machine_is_snowball()) { | 664 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; |
| 612 | if (machine_is_hrefv60()) | ||
| 613 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; | ||
| 614 | else | ||
| 615 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | ||
| 616 | } | ||
| 617 | 665 | ||
| 618 | u8500_init_devices(); | 666 | u8500_init_devices(); |
| 619 | 667 | ||
| 620 | mop500_pins_init(); | 668 | hrefv60_pins_init(); |
| 621 | 669 | ||
| 622 | if (machine_is_snowball()) | 670 | platform_add_devices(mop500_platform_devs, |
| 623 | platform_add_devices(snowball_platform_devs, | 671 | ARRAY_SIZE(mop500_platform_devs)); |
| 624 | ARRAY_SIZE(snowball_platform_devs)); | ||
| 625 | else | ||
| 626 | platform_add_devices(mop500_platform_devs, | ||
| 627 | ARRAY_SIZE(mop500_platform_devs)); | ||
| 628 | 672 | ||
| 629 | mop500_i2c_init(); | 673 | mop500_i2c_init(); |
| 630 | mop500_sdi_init(); | 674 | mop500_sdi_init(); |
| @@ -632,8 +676,8 @@ static void __init mop500_init_machine(void) | |||
| 632 | mop500_uart_init(); | 676 | mop500_uart_init(); |
| 633 | 677 | ||
| 634 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | 678 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); |
| 635 | if (machine_is_hrefv60()) | 679 | |
| 636 | i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; | 680 | i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; |
| 637 | 681 | ||
| 638 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | 682 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); |
| 639 | i2c_register_board_info(2, mop500_i2c2_devices, | 683 | i2c_register_board_info(2, mop500_i2c2_devices, |
| @@ -658,7 +702,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | |||
| 658 | .map_io = u8500_map_io, | 702 | .map_io = u8500_map_io, |
| 659 | .init_irq = ux500_init_irq, | 703 | .init_irq = ux500_init_irq, |
| 660 | .timer = &ux500_timer, | 704 | .timer = &ux500_timer, |
| 661 | .init_machine = mop500_init_machine, | 705 | .init_machine = hrefv60_init_machine, |
| 662 | MACHINE_END | 706 | MACHINE_END |
| 663 | 707 | ||
| 664 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | 708 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") |
| @@ -667,5 +711,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | |||
| 667 | .init_irq = ux500_init_irq, | 711 | .init_irq = ux500_init_irq, |
| 668 | /* we re-use nomadik timer here */ | 712 | /* we re-use nomadik timer here */ |
| 669 | .timer = &ux500_timer, | 713 | .timer = &ux500_timer, |
| 670 | .init_machine = mop500_init_machine, | 714 | .init_machine = snowball_init_machine, |
| 671 | MACHINE_END | 715 | MACHINE_END |
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index ee77a8970c33..de18a2a23e6e 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
| @@ -40,10 +40,13 @@ | |||
| 40 | struct i2c_board_info; | 40 | struct i2c_board_info; |
| 41 | 41 | ||
| 42 | extern void mop500_sdi_init(void); | 42 | extern void mop500_sdi_init(void); |
| 43 | extern void snowball_sdi_init(void); | ||
| 43 | extern void mop500_sdi_tc35892_init(void); | 44 | extern void mop500_sdi_tc35892_init(void); |
| 44 | void __init mop500_u8500uib_init(void); | 45 | void __init mop500_u8500uib_init(void); |
| 45 | void __init mop500_stuib_init(void); | 46 | void __init mop500_stuib_init(void); |
| 46 | void __init mop500_pins_init(void); | 47 | void __init mop500_pins_init(void); |
| 48 | void __init hrefv60_pins_init(void); | ||
| 49 | void __init snowball_pins_init(void); | ||
| 47 | 50 | ||
| 48 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, | 51 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, |
| 49 | unsigned n); | 52 | unsigned n); |
diff --git a/arch/arm/mach-ux500/include/mach/uncompress.h b/arch/arm/mach-ux500/include/mach/uncompress.h index 7dd08074c37b..6fb3c4b0105d 100644 --- a/arch/arm/mach-ux500/include/mach/uncompress.h +++ b/arch/arm/mach-ux500/include/mach/uncompress.h | |||
| @@ -51,15 +51,9 @@ static void flush(void) | |||
| 51 | static inline void arch_decomp_setup(void) | 51 | static inline void arch_decomp_setup(void) |
| 52 | { | 52 | { |
| 53 | /* Check in run time if we run on an U8500 or U5500 */ | 53 | /* Check in run time if we run on an U8500 or U5500 */ |
| 54 | if (machine_is_u8500() || | 54 | if (machine_is_u5500()) |
| 55 | machine_is_svp8500v1() || | ||
| 56 | machine_is_svp8500v2() || | ||
| 57 | machine_is_hrefv60() || | ||
| 58 | machine_is_snowball()) | ||
| 59 | ux500_uart_base = U8500_UART2_BASE; | ||
| 60 | else if (machine_is_u5500()) | ||
| 61 | ux500_uart_base = U5500_UART0_BASE; | 55 | ux500_uart_base = U5500_UART0_BASE; |
| 62 | else /* not much can be done to help here */ | 56 | else |
| 63 | ux500_uart_base = U8500_UART2_BASE; | 57 | ux500_uart_base = U8500_UART2_BASE; |
| 64 | } | 58 | } |
| 65 | 59 | ||
