Loading arch/arm/mach-ux500/Makefile +1 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,7 @@ obj-y := clock.o cpu.o devices.o devices-common.o \ obj-y := clock.o cpu.o devices.o devices-common.o \ id.o usb.o id.o usb.o obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o obj-$(CONFIG_MACH_U8500) += board-mop500.o board-mop500-sdi.o \ obj-$(CONFIG_MACH_U8500) += board-mop500.o board-mop500-sdi.o \ Loading arch/arm/mach-ux500/board-mop500-pins.c +23 −11 Original line number Original line Diff line number Diff line Loading @@ -153,7 +153,7 @@ static pin_cfg_t mop500_pins_default[] = { GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, }; }; static pin_cfg_t mop500_pins_hrefv60[] = { static pin_cfg_t hrefv60_pins[] = { /* WLAN */ /* WLAN */ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ Loading Loading @@ -280,13 +280,25 @@ void __init mop500_pins_init(void) { { nmk_config_pins(mop500_pins_common, nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); ARRAY_SIZE(mop500_pins_common)); if (machine_is_hrefv60()) nmk_config_pins(mop500_pins_hrefv60, ARRAY_SIZE(mop500_pins_hrefv60)); else if (machine_is_snowball()) nmk_config_pins(snowball_pins, ARRAY_SIZE(snowball_pins)); else nmk_config_pins(mop500_pins_default, nmk_config_pins(mop500_pins_default, ARRAY_SIZE(mop500_pins_default)); ARRAY_SIZE(mop500_pins_default)); } } void __init snowball_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(snowball_pins, ARRAY_SIZE(snowball_pins)); } void __init hrefv60_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(hrefv60_pins, ARRAY_SIZE(hrefv60_pins)); } arch/arm/mach-ux500/board-mop500-sdi.c +35 −17 Original line number Original line Diff line number Diff line Loading @@ -216,30 +216,48 @@ void __init mop500_sdi_init(void) /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ if (!cpu_is_u8500v10()) if (!cpu_is_u8500v10()) mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; /* sdi2 on snowball is in ATL_B mode for FSMC (LAN) */ if (!machine_is_snowball()) db8500_add_sdi2(&mop500_sdi2_data, periphid); db8500_add_sdi2(&mop500_sdi2_data, periphid); /* On-board eMMC */ /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); db8500_add_sdi4(&mop500_sdi4_data, periphid); if (machine_is_hrefv60() || machine_is_snowball()) { /* if (machine_is_hrefv60()) { * On boards with the TC35892 GPIO expander, sdi0 will finally mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; * be added when the TC35892 initializes and calls sdi0_en = HREFV60_SDMMC_EN_GPIO; * mop500_sdi_tc35892_init() above. sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; */ } else if (machine_is_snowball()) { } void __init snowball_sdi_init(void) { u32 periphid = 0x10480180; mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; mop500_sdi0_data.cd_invert = true; mop500_sdi0_data.cd_invert = true; sdi0_en = SNOWBALL_SDMMC_EN_GPIO; sdi0_en = SNOWBALL_SDMMC_EN_GPIO; sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; } sdi0_configure(); sdi0_configure(); } } /* void __init hrefv60_sdi_init(void) * On boards with the TC35892 GPIO expander, sdi0 will finally { * be added when the TC35892 initializes and calls u32 periphid = 0x10480180; * mop500_sdi_tc35892_init() above. */ mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; db8500_add_sdi2(&mop500_sdi2_data, periphid); /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; sdi0_en = HREFV60_SDMMC_EN_GPIO; sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; sdi0_configure(); } } arch/arm/mach-ux500/board-mop500.c +61 −17 Original line number Original line Diff line number Diff line Loading @@ -603,26 +603,70 @@ static void __init mop500_init_machine(void) { { int i2c0_devs; int i2c0_devs; mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; u8500_init_devices(); mop500_pins_init(); platform_add_devices(mop500_platform_devs, ARRAY_SIZE(mop500_platform_devs)); mop500_i2c_init(); mop500_sdi_init(); mop500_spi_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices, ARRAY_SIZE(mop500_i2c2_devices)); /* This board has full regulator constraints */ regulator_has_full_constraints(); } static void __init snowball_init_machine(void) { int i2c0_devs; u8500_init_devices(); snowball_pins_init(); platform_add_devices(snowball_platform_devs, ARRAY_SIZE(snowball_platform_devs)); mop500_i2c_init(); snowball_sdi_init(); mop500_spi_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices, ARRAY_SIZE(mop500_i2c2_devices)); /* This board has full regulator constraints */ regulator_has_full_constraints(); } static void __init hrefv60_init_machine(void) { int i2c0_devs; /* /* * The HREFv60 board removed a GPIO expander and routed * The HREFv60 board removed a GPIO expander and routed * all these GPIO pins to the internal GPIO controller * all these GPIO pins to the internal GPIO controller * instead. * instead. */ */ if (!machine_is_snowball()) { if (machine_is_hrefv60()) mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; else mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; } u8500_init_devices(); u8500_init_devices(); mop500_pins_init(); hrefv60_pins_init(); if (machine_is_snowball()) platform_add_devices(snowball_platform_devs, ARRAY_SIZE(snowball_platform_devs)); else platform_add_devices(mop500_platform_devs, platform_add_devices(mop500_platform_devs, ARRAY_SIZE(mop500_platform_devs)); ARRAY_SIZE(mop500_platform_devs)); Loading @@ -632,7 +676,7 @@ static void __init mop500_init_machine(void) mop500_uart_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); if (machine_is_hrefv60()) i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); Loading @@ -658,7 +702,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") .map_io = u8500_map_io, .map_io = u8500_map_io, .init_irq = ux500_init_irq, .init_irq = ux500_init_irq, .timer = &ux500_timer, .timer = &ux500_timer, .init_machine = mop500_init_machine, .init_machine = hrefv60_init_machine, MACHINE_END MACHINE_END MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") Loading @@ -667,5 +711,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") .init_irq = ux500_init_irq, .init_irq = ux500_init_irq, /* we re-use nomadik timer here */ /* we re-use nomadik timer here */ .timer = &ux500_timer, .timer = &ux500_timer, .init_machine = mop500_init_machine, .init_machine = snowball_init_machine, MACHINE_END MACHINE_END arch/arm/mach-ux500/board-mop500.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -40,10 +40,13 @@ struct i2c_board_info; struct i2c_board_info; extern void mop500_sdi_init(void); extern void mop500_sdi_init(void); extern void snowball_sdi_init(void); extern void mop500_sdi_tc35892_init(void); extern void mop500_sdi_tc35892_init(void); void __init mop500_u8500uib_init(void); void __init mop500_u8500uib_init(void); void __init mop500_stuib_init(void); void __init mop500_stuib_init(void); void __init mop500_pins_init(void); void __init mop500_pins_init(void); void __init hrefv60_pins_init(void); void __init snowball_pins_init(void); void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, unsigned n); unsigned n); Loading Loading
arch/arm/mach-ux500/Makefile +1 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,7 @@ obj-y := clock.o cpu.o devices.o devices-common.o \ obj-y := clock.o cpu.o devices.o devices-common.o \ id.o usb.o id.o usb.o obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o obj-$(CONFIG_MACH_U8500) += board-mop500.o board-mop500-sdi.o \ obj-$(CONFIG_MACH_U8500) += board-mop500.o board-mop500-sdi.o \ Loading
arch/arm/mach-ux500/board-mop500-pins.c +23 −11 Original line number Original line Diff line number Diff line Loading @@ -153,7 +153,7 @@ static pin_cfg_t mop500_pins_default[] = { GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, }; }; static pin_cfg_t mop500_pins_hrefv60[] = { static pin_cfg_t hrefv60_pins[] = { /* WLAN */ /* WLAN */ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ Loading Loading @@ -280,13 +280,25 @@ void __init mop500_pins_init(void) { { nmk_config_pins(mop500_pins_common, nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); ARRAY_SIZE(mop500_pins_common)); if (machine_is_hrefv60()) nmk_config_pins(mop500_pins_hrefv60, ARRAY_SIZE(mop500_pins_hrefv60)); else if (machine_is_snowball()) nmk_config_pins(snowball_pins, ARRAY_SIZE(snowball_pins)); else nmk_config_pins(mop500_pins_default, nmk_config_pins(mop500_pins_default, ARRAY_SIZE(mop500_pins_default)); ARRAY_SIZE(mop500_pins_default)); } } void __init snowball_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(snowball_pins, ARRAY_SIZE(snowball_pins)); } void __init hrefv60_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(hrefv60_pins, ARRAY_SIZE(hrefv60_pins)); }
arch/arm/mach-ux500/board-mop500-sdi.c +35 −17 Original line number Original line Diff line number Diff line Loading @@ -216,30 +216,48 @@ void __init mop500_sdi_init(void) /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ /* PoP:ed eMMC on top of DB8500 v1.0 has problems with high speed */ if (!cpu_is_u8500v10()) if (!cpu_is_u8500v10()) mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; /* sdi2 on snowball is in ATL_B mode for FSMC (LAN) */ if (!machine_is_snowball()) db8500_add_sdi2(&mop500_sdi2_data, periphid); db8500_add_sdi2(&mop500_sdi2_data, periphid); /* On-board eMMC */ /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); db8500_add_sdi4(&mop500_sdi4_data, periphid); if (machine_is_hrefv60() || machine_is_snowball()) { /* if (machine_is_hrefv60()) { * On boards with the TC35892 GPIO expander, sdi0 will finally mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; * be added when the TC35892 initializes and calls sdi0_en = HREFV60_SDMMC_EN_GPIO; * mop500_sdi_tc35892_init() above. sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; */ } else if (machine_is_snowball()) { } void __init snowball_sdi_init(void) { u32 periphid = 0x10480180; mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO; mop500_sdi0_data.cd_invert = true; mop500_sdi0_data.cd_invert = true; sdi0_en = SNOWBALL_SDMMC_EN_GPIO; sdi0_en = SNOWBALL_SDMMC_EN_GPIO; sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; sdi0_vsel = SNOWBALL_SDMMC_1V8_3V_GPIO; } sdi0_configure(); sdi0_configure(); } } /* void __init hrefv60_sdi_init(void) * On boards with the TC35892 GPIO expander, sdi0 will finally { * be added when the TC35892 initializes and calls u32 periphid = 0x10480180; * mop500_sdi_tc35892_init() above. */ mop500_sdi2_data.capabilities |= MMC_CAP_MMC_HIGHSPEED; db8500_add_sdi2(&mop500_sdi2_data, periphid); /* On-board eMMC */ db8500_add_sdi4(&mop500_sdi4_data, periphid); mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO; sdi0_en = HREFV60_SDMMC_EN_GPIO; sdi0_vsel = HREFV60_SDMMC_1V8_3V_GPIO; sdi0_configure(); } }
arch/arm/mach-ux500/board-mop500.c +61 −17 Original line number Original line Diff line number Diff line Loading @@ -603,26 +603,70 @@ static void __init mop500_init_machine(void) { { int i2c0_devs; int i2c0_devs; mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; u8500_init_devices(); mop500_pins_init(); platform_add_devices(mop500_platform_devs, ARRAY_SIZE(mop500_platform_devs)); mop500_i2c_init(); mop500_sdi_init(); mop500_spi_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices, ARRAY_SIZE(mop500_i2c2_devices)); /* This board has full regulator constraints */ regulator_has_full_constraints(); } static void __init snowball_init_machine(void) { int i2c0_devs; u8500_init_devices(); snowball_pins_init(); platform_add_devices(snowball_platform_devs, ARRAY_SIZE(snowball_platform_devs)); mop500_i2c_init(); snowball_sdi_init(); mop500_spi_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(2, mop500_i2c2_devices, ARRAY_SIZE(mop500_i2c2_devices)); /* This board has full regulator constraints */ regulator_has_full_constraints(); } static void __init hrefv60_init_machine(void) { int i2c0_devs; /* /* * The HREFv60 board removed a GPIO expander and routed * The HREFv60 board removed a GPIO expander and routed * all these GPIO pins to the internal GPIO controller * all these GPIO pins to the internal GPIO controller * instead. * instead. */ */ if (!machine_is_snowball()) { if (machine_is_hrefv60()) mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; else mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; } u8500_init_devices(); u8500_init_devices(); mop500_pins_init(); hrefv60_pins_init(); if (machine_is_snowball()) platform_add_devices(snowball_platform_devs, ARRAY_SIZE(snowball_platform_devs)); else platform_add_devices(mop500_platform_devs, platform_add_devices(mop500_platform_devs, ARRAY_SIZE(mop500_platform_devs)); ARRAY_SIZE(mop500_platform_devs)); Loading @@ -632,7 +676,7 @@ static void __init mop500_init_machine(void) mop500_uart_init(); mop500_uart_init(); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); if (machine_is_hrefv60()) i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES; i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); Loading @@ -658,7 +702,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") .map_io = u8500_map_io, .map_io = u8500_map_io, .init_irq = ux500_init_irq, .init_irq = ux500_init_irq, .timer = &ux500_timer, .timer = &ux500_timer, .init_machine = mop500_init_machine, .init_machine = hrefv60_init_machine, MACHINE_END MACHINE_END MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") Loading @@ -667,5 +711,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") .init_irq = ux500_init_irq, .init_irq = ux500_init_irq, /* we re-use nomadik timer here */ /* we re-use nomadik timer here */ .timer = &ux500_timer, .timer = &ux500_timer, .init_machine = mop500_init_machine, .init_machine = snowball_init_machine, MACHINE_END MACHINE_END
arch/arm/mach-ux500/board-mop500.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -40,10 +40,13 @@ struct i2c_board_info; struct i2c_board_info; extern void mop500_sdi_init(void); extern void mop500_sdi_init(void); extern void snowball_sdi_init(void); extern void mop500_sdi_tc35892_init(void); extern void mop500_sdi_tc35892_init(void); void __init mop500_u8500uib_init(void); void __init mop500_u8500uib_init(void); void __init mop500_stuib_init(void); void __init mop500_stuib_init(void); void __init mop500_pins_init(void); void __init mop500_pins_init(void); void __init hrefv60_pins_init(void); void __init snowball_pins_init(void); void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, unsigned n); unsigned n); Loading