omap3: Various fixes and improvements for IGEP v2 board.
Subsystems (3)
v4 cover omap3: Various fixes and improvements for IGEP v2 board.
Hello,
This is the version 4 of patch series to fix and improve the IGEP v2 board support.
Thanks for all your comments.
CHANGES
- since v3:
- [3/6] fix igep2_get_revision function
- [3/6] fix typo - Unknow
- [5/6] check for return value omap_register_i2c_bus
- since v2:
- [1/6] check the result value of gpio_request and gpio_direction_*
- [2/6] align the igep2_gpio_leds with tabs.
- cc linux-arm-kernel
Kind regards,
Enric
PATCH v4 1/6 omap3: Add external VBUS power switch and overcurrent detect on IGEP v2 board.
GPIO for various devices are missing from the board initialization. This patch adds support for the VBUS and over current gpios. Without this patch, input/outputs from these two sources are ignored.
--- arch/arm/mach-omap2/board-igep0020.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +16 -0
@@ -274,6 +274,22 @@ static int igep2_twl_gpio_setup(struct device *dev, igep2_vmmc1_supply.dev = mmc[0 ].dev; igep2_vmmc2_supply.dev = mmc[1 ].dev; +/* +* REVISIT: need ehci-omap hooks for external VBUS +* power switch and overcurrent detect +*/ +if ((gpio_request (gpio +1 ,"GPIO_EHCI_NOC" ) <0 ) || + (gpio_direction_input (gpio +1 ) <0 )) +pr_err ("IGEP2: Could not obtain gpio for EHCI NOC" ); + +/* +* TWL4030_GPIO_MAX + 0 == ledA, GPIO_USBH_CPEN +* (out, active low) +*/ +if ((gpio_request (gpio +TWL4030_GPIO_MAX ,"GPIO_USBH_CPEN" ) <0 ) || + (gpio_direction_output (gpio +TWL4030_GPIO_MAX ,0 ) <0 )) +pr_err ("IGEP2: Could not obtain gpio for USBH_CPEN" ); +return 0 ; };
Signature · 1 line
1.7.0.4
PATCH v4 2/6 omap3: fix and improve the LED handling on IGEP v2 board.
In reply to Enric Balletbo i SerraThe IGEP v2 board has four leds, this patch allows control all of these LEDs using the LED class if CONFIG_LEDS_GPIO is selected or using the General Purpose Input/Output (GPIO) interface if CONFIG_LEDS_GPIO is not selected.
--- arch/arm/mach-omap2/board-igep0020.c | 156 +++++++++++++++++++--------------- 1 files changed, 87 insertions(+), 69 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +87 -69
@@ -261,6 +261,77 @@ static struct omap2_hsmmc_info mmc[] = { {}/* Terminator */ }; +#if defined(CONFIG_LEDS_GPIO ) || defined(CONFIG_LEDS_GPIO_MODULE ) +#include <linux/leds.h> + +static struct gpio_led igep2_gpio_leds[] = { + [0 ] = { + .name ="gpio-led:red:d0" , + .gpio =IGEP2_GPIO_LED0_RED , + .default_trigger ="default-off" + }, + [1 ] = { + .name ="gpio-led:green:d0" , + .gpio =IGEP2_GPIO_LED0_GREEN , + .default_trigger ="default-off" , + }, + [2 ] = { + .name ="gpio-led:red:d1" , + .gpio =IGEP2_GPIO_LED1_RED , + .default_trigger ="default-off" , + }, + [3 ] = { + .name ="gpio-led:green:d1" , + .default_trigger ="heartbeat" , + .gpio = -EINVAL ,/* gets replaced */ + }, +}; + +static struct gpio_led_platform_data igep2_led_pdata = { + .leds = igep2_gpio_leds, + .num_leds =ARRAY_SIZE (igep2_gpio_leds), +}; + +static struct platform_device igep2_led_device = { + .name ="leds-gpio" , + .id =-1 , + .dev = { + .platform_data = &igep2_led_pdata, + }, +}; + +static void __init igep2_leds_init (void ) +{ +platform_device_register (&igep2_led_device); +} + +#else +static inline void igep2_leds_init (void ) +{ +if ((gpio_request (IGEP2_GPIO_LED0_RED ,"gpio-led:red:d0" ) ==0 ) && + (gpio_direction_output (IGEP2_GPIO_LED0_RED ,1 ) ==0 )) { +gpio_export (IGEP2_GPIO_LED0_RED ,0 ); +gpio_set_value (IGEP2_GPIO_LED0_RED ,0 ); + }else +pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n" ); + +if ((gpio_request (IGEP2_GPIO_LED0_GREEN ,"gpio-led:green:d0" ) ==0 ) && + (gpio_direction_output (IGEP2_GPIO_LED0_GREEN ,1 ) ==0 )) { +gpio_export (IGEP2_GPIO_LED0_GREEN ,0 ); +gpio_set_value (IGEP2_GPIO_LED0_GREEN ,0 ); + }else +pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n" ); + +if ((gpio_request (IGEP2_GPIO_LED1_RED ,"gpio-led:red:d1" ) ==0 ) && + (gpio_direction_output (IGEP2_GPIO_LED1_RED ,1 ) ==0 )) { +gpio_export (IGEP2_GPIO_LED1_RED ,0 ); +gpio_set_value (IGEP2_GPIO_LED1_RED ,0 ); + }else +pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n" ); + +} +#endif +static int igep2_twl_gpio_setup (struct device *dev,unsigned gpio,unsigned ngpio) {
@@ -290,14 +361,26 @@ static int igep2_twl_gpio_setup(struct device *dev, (gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0) < 0))pr_err ("IGEP2: Could not obtain gpio for USBH_CPEN" ); +/* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ +#if !defined(CONFIG_LEDS_GPIO ) && !defined(CONFIG_LEDS_GPIO_MODULE ) +if ((gpio_request (gpio+TWL4030_GPIO_MAX +1 ,"gpio-led:green:d1" ) ==0 ) + && (gpio_direction_output (gpio +TWL4030_GPIO_MAX +1 ,1 ) ==0 )) { +gpio_export (gpio +TWL4030_GPIO_MAX +1 ,0 ); +gpio_set_value (gpio +TWL4030_GPIO_MAX +1 ,0 ); + }else +pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED1_GREEN\n" ); +#else + igep2_gpio_leds[3 ].gpio = gpio +TWL4030_GPIO_MAX +1 ; +#endif +return 0 ; }; -static struct twl4030_gpio_platform_data igep2_gpio_data = { +static struct twl4030_gpio_platform_data igep2_twl4030_gpio_pdata = { .gpio_base =OMAP_MAX_GPIO_LINES , .irq_base =TWL4030_GPIO_IRQ_BASE , .irq_end =TWL4030_GPIO_IRQ_END , - .use_leds = false, + .use_leds = true, .setup = igep2_twl_gpio_setup, };
@@ -371,47 +454,6 @@ static void __init igep2_display_init(void)pr_err ("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n" ); } -#if defined(CONFIG_LEDS_GPIO ) || defined(CONFIG_LEDS_GPIO_MODULE ) -#include <linux/leds.h> - -static struct gpio_led igep2_gpio_leds[] = { - { - .name ="led0:red" , - .gpio =IGEP2_GPIO_LED0_RED , - }, - { - .name ="led0:green" , - .default_trigger ="heartbeat" , - .gpio =IGEP2_GPIO_LED0_GREEN , - }, - { - .name ="led1:red" , - .gpio =IGEP2_GPIO_LED1_RED , - }, -}; - -static struct gpio_led_platform_data igep2_led_pdata = { - .leds = igep2_gpio_leds, - .num_leds =ARRAY_SIZE (igep2_gpio_leds), -}; - -static struct platform_device igep2_led_device = { - .name ="leds-gpio" , - .id =-1 , - .dev = { - .platform_data = &igep2_led_pdata, - }, -}; - -static void __init igep2_init_led (void ) -{ -platform_device_register (&igep2_led_device); -} - -#else -static inline void igep2_init_led (void ) {} -#endif -static struct platform_device *igep2_devices[]__initdata = { &igep2_dss_device, };
@@ -441,7 +483,7 @@ static struct twl4030_platform_data igep2_twldata = {/* platform_data for children goes here */ .usb = &igep2_usb_data, .codec = &igep2_codec_data, - .gpio = &igep2_gpio_data, + .gpio = &igep2_twl4030_gpio_pdata, .vmmc1 = &igep2_vmmc1, .vmmc2 = &igep2_vmmc2, .vpll2 = &igep2_vpll2,
@@ -502,34 +544,10 @@ static void __init igep2_init(void)usb_ehci_init (&ehci_pdata);igep2_flash_init (); -igep2_init_led (); +igep2_leds_init ();igep2_display_init ();igep2_init_smsc911x (); -/* GPIO userspace leds */ -#if !defined(CONFIG_LEDS_GPIO ) && !defined(CONFIG_LEDS_GPIO_MODULE ) -if ((gpio_request (IGEP2_GPIO_LED0_RED ,"led0:red" ) ==0 ) && - (gpio_direction_output (IGEP2_GPIO_LED0_RED ,1 ) ==0 )) { -gpio_export (IGEP2_GPIO_LED0_RED ,0 ); -gpio_set_value (IGEP2_GPIO_LED0_RED ,0 ); - }else -pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n" ); - -if ((gpio_request (IGEP2_GPIO_LED0_GREEN ,"led0:green" ) ==0 ) && - (gpio_direction_output (IGEP2_GPIO_LED0_GREEN ,1 ) ==0 )) { -gpio_export (IGEP2_GPIO_LED0_GREEN ,0 ); -gpio_set_value (IGEP2_GPIO_LED0_GREEN ,0 ); - }else -pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n" ); - -if ((gpio_request (IGEP2_GPIO_LED1_RED ,"led1:red" ) ==0 ) && - (gpio_direction_output (IGEP2_GPIO_LED1_RED ,1 ) ==0 )) { -gpio_export (IGEP2_GPIO_LED1_RED ,0 ); -gpio_set_value (IGEP2_GPIO_LED1_RED ,0 ); - }else -pr_warning ("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n" ); -#endif -/* GPIO W-LAN + Bluetooth combo module */ if ((gpio_request (IGEP2_GPIO_WIFI_NPD ,"GPIO_WIFI_NPD" ) ==0 ) && (gpio_direction_output (IGEP2_GPIO_WIFI_NPD ,1 ) ==0 )) {
Signature · 1 line
1.7.0.4
PATCH v4 3/6 omap3: Introduce function to detect the IGEP v2 hardware revision.
In reply to Enric Balletbo i SerraThere are currently two versions of IGEP v2 board, this patch introduces a function to detect the hardware revision of IGEP board.
--------------------------
| Id. | Hw Rev. | GPIO 28 |
--------------------------
| 0 | B/C | high | | 1 | C | low |
--------------------------
--- arch/arm/mach-omap2/board-igep0020.c | 47 ++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +47 -0
@@ -45,6 +45,49 @@#define IGEP2_GPIO_WIFI_NPD 94#define IGEP2_GPIO_WIFI_NRESET 95 +/* +* IGEP2 Hardware Revision Table +* +* -------------------------- +* | Id. | Hw Rev. | HW0 (28) | +* -------------------------- +* | 0 | B/C | high | +* | 1 | C | low | +* -------------------------- +*/ + +#define IGEP2_BOARD_HWREV_B 0 +#define IGEP2_BOARD_HWREV_C 1 + +static u8 hwrev; + +static void __init igep2_get_revision (void ) +{ +u8 ret; + +omap_mux_init_gpio (IGEP2_GPIO_LED1_RED ,OMAP_PIN_INPUT ); + +if ((gpio_request (IGEP2_GPIO_LED1_RED ,"GPIO_HW0_REV" ) ==0 ) && + (gpio_direction_input (IGEP2_GPIO_LED1_RED ) ==0 )) { + ret =gpio_get_value (IGEP2_GPIO_LED1_RED ); +if (ret ==0 ) { +pr_info ("IGEP2: Hardware Revision C (B-NON compatible)\n" ); + hwrev =IGEP2_BOARD_HWREV_C ; + }else if (ret ==1 ) { +pr_info ("IGEP2: Hardware Revision B/C (B compatible)\n" ); + hwrev =IGEP2_BOARD_HWREV_B ; + }else { +pr_err ("IGEP2: Unknown Hardware Revision\n" ); + hwrev =-1 ; + } + }else { +pr_warning ("IGEP2: Could not obtain gpio GPIO_HW0_REV\n" ); +pr_err ("IGEP2: Unknown Hardware Revision\n" ); + } + +gpio_free (IGEP2_GPIO_LED1_RED ); +} +#if defined(CONFIG_MTD_ONENAND_OMAP2 ) || \ defined(CONFIG_MTD_ONENAND_OMAP2_MODULE )
@@ -537,6 +580,10 @@ static struct omap_board_mux board_mux[] __initdata = {static void __init igep2_init (void ) {omap3_mux_init (board_mux,OMAP_PACKAGE_CBB ); + +/* Get IGEP2 hardware revision */ +igep2_get_revision (); +igep2_i2c_init ();platform_add_devices (igep2_devices,ARRAY_SIZE (igep2_devices));omap_serial_init ();
Signature · 1 line
1.7.0.4
PATCH v4 4/6 omap3: Fix handling some GPIO's for WLAN-BT combo on IGEP v2.
In reply to Enric Balletbo i SerraSome GPIO's used by WLAN-BT combo on IGEP v2 depends on hardware revision. This patch handles these GPIO's.
----------------------------------------------------------
| Hw Rev. | WIFI_NPD | WIFI_NRESET | BT_NRESET |
----------------------------------------------------------
| B | gpio94 | gpio95 | - | | B/C (B-compatible) | gpio94 | gpio95 | gpio137 | | C | gpio138 | gpio139 | gpio137 |
----------------------------------------------------------
--- arch/arm/mach-omap2/board-igep0020.c | 96 ++++++++++++++++++++++++---------- 1 files changed, 69 insertions(+), 27 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +69 -27
@@ -38,22 +38,28 @@#define IGEP2_SMSC911X_CS 5#define IGEP2_SMSC911X_GPIO 176#define IGEP2_GPIO_USBH_NRESET 24 -#define IGEP2_GPIO_LED0_GREEN 26 -#define IGEP2_GPIO_LED0_RED 27 -#define IGEP2_GPIO_LED1_RED 28 -#define IGEP2_GPIO_DVI_PUP 170 -#define IGEP2_GPIO_WIFI_NPD 94 -#define IGEP2_GPIO_WIFI_NRESET 95 +#define IGEP2_GPIO_LED0_GREEN 26 +#define IGEP2_GPIO_LED0_RED 27 +#define IGEP2_GPIO_LED1_RED 28 +#define IGEP2_GPIO_DVI_PUP 170 + +#define IGEP2_RB_GPIO_WIFI_NPD 94 +#define IGEP2_RB_GPIO_WIFI_NRESET 95 +#define IGEP2_RB_GPIO_BT_NRESET 137 +#define IGEP2_RC_GPIO_WIFI_NPD 138 +#define IGEP2_RC_GPIO_WIFI_NRESET 139 +#define IGEP2_RC_GPIO_BT_NRESET 137/* * IGEP2 Hardware Revision Table * -* -------------------------- -* | Id. | Hw Rev. | HW0 (28) | -* -------------------------- -* | 0 | B/C | high | -* | 1 | C | low | -* -------------------------- +* -------------------------------------------------------------------------- +* | Id. | Hw Rev. | HW0 (28) | WIFI_NPD | WIFI_NRESET | BT_NRESET | +* -------------------------------------------------------------------------- +* | 0 | B | high | gpio94 | gpio95 | - | +* | 0 | B/C (B-compatible) | high | gpio94 | gpio95 | gpio137 | +* | 1 | C | low | gpio138 | gpio139 | gpio137 | +* -------------------------------------------------------------------------- */ #define IGEP2_BOARD_HWREV_B 0
@@ -295,12 +301,14 @@ static struct omap2_hsmmc_info mmc[] = { .gpio_cd = -EINVAL, .gpio_wp = -EINVAL, }, +#if defined(CONFIG_LIBERTAS_SDIO ) || defined(CONFIG_LIBERTAS_SDIO_MODULE ) { .mmc = 2, .wires = 4, .gpio_cd = -EINVAL, .gpio_wp = -EINVAL, }, +#endif {}/* Terminator */ };
@@ -577,6 +585,50 @@ static struct omap_board_mux board_mux[] __initdata = {#define board_mux NULL#endif +#if defined(CONFIG_LIBERTAS_SDIO ) || defined(CONFIG_LIBERTAS_SDIO_MODULE ) + +static void __init igep2_wlan_bt_init (void ) +{ +unsigned npd, wreset, btreset; + +/* GPIO's for WLAN-BT combo depends on hardware revision */ +if (hwrev ==IGEP2_BOARD_HWREV_B ) { + npd =IGEP2_RB_GPIO_WIFI_NPD ; + wreset =IGEP2_RB_GPIO_WIFI_NRESET ; + btreset =IGEP2_RB_GPIO_BT_NRESET ; + }else if (hwrev ==IGEP2_BOARD_HWREV_C ) { + npd =IGEP2_RC_GPIO_WIFI_NPD ; + wreset =IGEP2_RC_GPIO_WIFI_NRESET ; + btreset =IGEP2_RC_GPIO_BT_NRESET ; + }else +return ; + +/* Set GPIO's for WLAN-BT combo module */ +if ((gpio_request (npd,"GPIO_WIFI_NPD" ) ==0 ) && + (gpio_direction_output (npd,1 ) ==0 )) { +gpio_export (npd,0 ); + }else +pr_warning ("IGEP2: Could not obtain gpio GPIO_WIFI_NPD\n" ); + +if ((gpio_request (wreset,"GPIO_WIFI_NRESET" ) ==0 ) && + (gpio_direction_output (wreset,1 ) ==0 )) { +gpio_export (wreset,0 ); +gpio_set_value (wreset,0 ); +udelay (10 ); +gpio_set_value (wreset,1 ); + }else +pr_warning ("IGEP2: Could not obtain gpio GPIO_WIFI_NRESET\n" ); + +if ((gpio_request (btreset,"GPIO_BT_NRESET" ) ==0 ) && + (gpio_direction_output (btreset,1 ) ==0 )) { +gpio_export (btreset,0 ); + }else +pr_warning ("IGEP2: Could not obtain gpio GPIO_BT_NRESET\n" ); +} +#else +static inline void __init igep2_wlan_bt_init (void ) { } +#endif +static void __init igep2_init (void ) {omap3_mux_init (board_mux,OMAP_PACKAGE_CBB );
@@ -595,22 +647,12 @@ static void __init igep2_init(void)igep2_display_init ();igep2_init_smsc911x (); -/* GPIO W-LAN + Bluetooth combo module */ -if ((gpio_request (IGEP2_GPIO_WIFI_NPD ,"GPIO_WIFI_NPD" ) ==0 ) && - (gpio_direction_output (IGEP2_GPIO_WIFI_NPD ,1 ) ==0 )) { -gpio_export (IGEP2_GPIO_WIFI_NPD ,0 ); -/* gpio_set_value(IGEP2_GPIO_WIFI_NPD, 0); */ - }else -pr_warning ("IGEP v2: Could not obtain gpio GPIO_WIFI_NPD\n" ); +/* +* WLAN-BT combo module from MuRata wich has a Marvell WLAN +* (88W8686) + CSR Bluetooth chipset. Uses SDIO interface. +*/ +igep2_wlan_bt_init (); -if ((gpio_request (IGEP2_GPIO_WIFI_NRESET ,"GPIO_WIFI_NRESET" ) ==0 ) && - (gpio_direction_output (IGEP2_GPIO_WIFI_NRESET ,1 ) ==0 )) { -gpio_export (IGEP2_GPIO_WIFI_NRESET ,0 ); -gpio_set_value (IGEP2_GPIO_WIFI_NRESET ,0 ); -udelay (10 ); -gpio_set_value (IGEP2_GPIO_WIFI_NRESET ,1 ); - }else -pr_warning ("IGEP v2: Could not obtain gpio GPIO_WIFI_NRESET\n" ); }MACHINE_START (IGEP0020 ,"IGEP v2 board" )
Signature · 1 line
1.7.0.4
PATCH v4 5/6 omap3: Add i2c eeprom driver to read EDID on IGEP v2.
In reply to Enric Balletbo i SerraAdd i2c eeprom driver to access monitor EDID binary information from user space, something that is required by 'decode-edid' and 'parse-edid'.
--- arch/arm/mach-omap2/board-igep0020.c | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +24 -9
@@ -541,7 +541,7 @@ static struct twl4030_platform_data igep2_twldata = { }; -static struct i2c_board_info __initdata igep2_i2c_boardinfo[] = { +static struct i2c_board_info __initdata igep2_i2c1_boardinfo[] = { {I2C_BOARD_INFO ("twl4030" ,0x48 ), .flags =I2C_CLIENT_WAKE ,
@@ -550,14 +550,29 @@ static struct i2c_board_info __initdata igep2_i2c_boardinfo[] = { }, }; -static int __init igep2_i2c_init (void ) +static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = { + { +I2C_BOARD_INFO ("eeprom" ,0x50 ), + }, +}; + +static void __init igep2_i2c_init (void ) { -omap_register_i2c_bus (1 ,2600 , igep2_i2c_boardinfo, -ARRAY_SIZE (igep2_i2c_boardinfo)); -/* Bus 3 is attached to the DVI port where devices like the pico DLP -* projector don't work reliably with 400kHz */ -omap_register_i2c_bus (3 ,100 ,NULL ,0 ); -return 0 ; +int ret; + + ret =omap_register_i2c_bus (1 ,2600 , igep2_i2c1_boardinfo, +ARRAY_SIZE (igep2_i2c1_boardinfo)); +if (ret) +pr_warning ("IGEP2: Could not register I2C1 bus (%d)\n" , ret); + +/* +* Bus 3 is attached to the DVI port where devices like the pico DLP +* projector don't work reliably with 400kHz +*/ + ret =omap_register_i2c_bus (3 ,100 , igep2_i2c3_boardinfo, +ARRAY_SIZE (igep2_i2c3_boardinfo)); +if (ret) +pr_warning ("IGEP2: Could not register I2C3 bus (%d)\n" , ret); }static struct omap_musb_board_data musb_board_data = {
@@ -635,7 +650,7 @@ static void __init igep2_init(void)/* Get IGEP2 hardware revision */ igep2_get_revision (); - +/* Register I2C busses and drivers */ igep2_i2c_init ();platform_add_devices (igep2_devices,ARRAY_SIZE (igep2_devices));omap_serial_init ();
Signature · 1 line
1.7.0.4
PATCH v4 6/6 omap3: Remove VMMC2 regulator on IGEP v2.
In reply to Enric Balletbo i SerraVMMC2 regulator is configured but it's not used for the IGEP v2, so remove this regulator from board.
--- arch/arm/mach-omap2/board-igep0020.c | 26 +++----------------------- 1 files changed, 3 insertions(+), 23 deletions(-)
arch/arm/mach-omap2/board-igep0020.c +3 -23
@@ -260,10 +260,6 @@ static struct regulator_consumer_supply igep2_vmmc1_supply = { .supply = "vmmc", }; -static struct regulator_consumer_supply igep2_vmmc2_supply = { - .supply ="vmmc" , -}; -/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ static struct regulator_init_data igep2_vmmc1 = { .constraints = {
@@ -279,21 +275,6 @@ static struct regulator_init_data igep2_vmmc1 = { .consumer_supplies = &igep2_vmmc1_supply, }; -/* VMMC2 for OMAP VDD_MMC2 (i/o) and MMC2 WIFI */ -static struct regulator_init_data igep2_vmmc2 = { - .constraints = { - .min_uV =1850000 , - .max_uV =3150000 , - .valid_modes_mask =REGULATOR_MODE_NORMAL - |REGULATOR_MODE_STANDBY , - .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE - |REGULATOR_CHANGE_MODE - |REGULATOR_CHANGE_STATUS , - }, - .num_consumer_supplies =1 , - .consumer_supplies = &igep2_vmmc2_supply, -}; -static struct omap2_hsmmc_info mmc[] = { { .mmc =1 ,
@@ -390,11 +371,11 @@ static int igep2_twl_gpio_setup(struct device *dev, mmc[0 ].gpio_cd = gpio +0 ;omap2_hsmmc_init (mmc); -/* link regulators to MMC adapters ... we "know" the +/* +* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. -*/ +*/ igep2_vmmc1_supply.dev = mmc[0 ].dev; - igep2_vmmc2_supply.dev = mmc[1 ].dev;/* * REVISIT: need ehci-omap hooks for external VBUS
@@ -536,7 +517,6 @@ static struct twl4030_platform_data igep2_twldata = { .codec = &igep2_codec_data, .gpio = &igep2_twl4030_gpio_pdata, .vmmc1 = &igep2_vmmc1, - .vmmc2 = &igep2_vmmc2, .vpll2 = &igep2_vpll2, };
Signature · 1 line
1.7.0.4
Tony Lindgren
maintainerv4 cover omap3: Various fixes and improvements for IGEP v2 board.
In reply to Enric Balletbo i SerraQuoted 4 lines · Enric Balletbo i Serra
Hello,
This is the version 4 of patch series to fix and improve the IGEP v2 board support.
Thanks, adding these into omap-for-linus.
Regards,
Tony