diff mbox

OMAP3EVM: ehci: Fix EHCI support

Message ID 1314112595-14849-1-git-send-email-bdefaria@adeneo-embedded.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bryan DE FARIA Aug. 23, 2011, 3:16 p.m. UTC
Set the VAUX2 regulator supply to 1.8V for the HSUSB host interface.
Gpio 2 of the TPS65950 has to be set to zero in order to enable the HSUBS2 clock.

Signed-off-by: Bryan DE FARIA <bdefaria@adeneo-embedded.com>
---
 arch/arm/mach-omap2/board-omap3evm.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

Comments

Igor Grinberg Aug. 24, 2011, 8:07 a.m. UTC | #1
Once again my mailer played me... sending for the second time... sorry

Hi Bryan,

Please, CC linux-arm-kernel@lists.infradead.org for patches like this.
One question below

On 08/23/11 18:16, Bryan DE FARIA wrote:
> Set the VAUX2 regulator supply to 1.8V for the HSUSB host interface.
> Gpio 2 of the TPS65950 has to be set to zero in order to enable the HSUBS2 clock.
> 
> Signed-off-by: Bryan DE FARIA <bdefaria@adeneo-embedded.com>
> ---
>  arch/arm/mach-omap2/board-omap3evm.c |   24 ++++++++++++++++++++++++
>  1 files changed, 24 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
> index c452b3f..ce09e9e 100644
> --- a/arch/arm/mach-omap2/board-omap3evm.c
> +++ b/arch/arm/mach-omap2/board-omap3evm.c
> @@ -377,6 +377,10 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
>  	if (r)
>  		printk(KERN_ERR "failed to get/set lcd_bkl gpio\n");
>  
> +	/* gpio + 2 == HSUSB2 Clock Enable */
> +	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
> +		gpio_request_one(gpio + 2, GPIOF_OUT_INIT_LOW, "EN_HSUSB2_CLK");
> +
>  	/* gpio + 7 == DVI Enable */
>  	gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI");
>  
> @@ -450,6 +454,25 @@ static struct regulator_init_data omap3evm_vio = {
>  	.consumer_supplies	= omap3evm_vio_supply,
>  };
>  
> +/* VAUX2 for EHCI */
> +static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
> +	REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"),
> +};
> +
> +static struct regulator_init_data omap3evm_vaux2 = {
> +	.constraints = {
> +		.min_uV      		= 1800000,
> +		.max_uV      		= 1800000,
> +		.apply_uV    		= true,
> +		.valid_modes_mask  	= REGULATOR_MODE_NORMAL
> +					| REGULATOR_MODE_STANDBY,
> +		.valid_ops_mask  	= REGULATOR_CHANGE_MODE
> +					| REGULATOR_CHANGE_STATUS,
> +	},
> +	.num_consumer_supplies  = ARRAY_SIZE(omap3evm_vaux2_supplies),
> +	.consumer_supplies   	= omap3evm_vaux2_supplies,
> +};
> +
>  #ifdef CONFIG_WL12XX_PLATFORM_DATA
>  
>  #define OMAP3EVM_WLAN_PMENA_GPIO	(150)
> @@ -645,6 +668,7 @@ static void __init omap3_evm_init(void)
>  	usb_nop_xceiv_register();
>  
>  	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
> +		omap3evm_twldata.vaux2 = &omap3evm_vaux2;

Wouldn't it be better to put this inside the omap3_evm_i2c_init() function
so all the initialization of that type be close to each other
and done before the omap3_pmic_init() call?
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index c452b3f..ce09e9e 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -377,6 +377,10 @@  static int omap3evm_twl_gpio_setup(struct device *dev,
 	if (r)
 		printk(KERN_ERR "failed to get/set lcd_bkl gpio\n");
 
+	/* gpio + 2 == HSUSB2 Clock Enable */
+	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
+		gpio_request_one(gpio + 2, GPIOF_OUT_INIT_LOW, "EN_HSUSB2_CLK");
+
 	/* gpio + 7 == DVI Enable */
 	gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI");
 
@@ -450,6 +454,25 @@  static struct regulator_init_data omap3evm_vio = {
 	.consumer_supplies	= omap3evm_vio_supply,
 };
 
+/* VAUX2 for EHCI */
+static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
+	REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"),
+};
+
+static struct regulator_init_data omap3evm_vaux2 = {
+	.constraints = {
+		.min_uV      		= 1800000,
+		.max_uV      		= 1800000,
+		.apply_uV    		= true,
+		.valid_modes_mask  	= REGULATOR_MODE_NORMAL
+					| REGULATOR_MODE_STANDBY,
+		.valid_ops_mask  	= REGULATOR_CHANGE_MODE
+					| REGULATOR_CHANGE_STATUS,
+	},
+	.num_consumer_supplies  = ARRAY_SIZE(omap3evm_vaux2_supplies),
+	.consumer_supplies   	= omap3evm_vaux2_supplies,
+};
+
 #ifdef CONFIG_WL12XX_PLATFORM_DATA
 
 #define OMAP3EVM_WLAN_PMENA_GPIO	(150)
@@ -645,6 +668,7 @@  static void __init omap3_evm_init(void)
 	usb_nop_xceiv_register();
 
 	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
+		omap3evm_twldata.vaux2 = &omap3evm_vaux2;
 		/* enable EHCI VBUS using GPIO22 */
 		omap_mux_init_gpio(OMAP3_EVM_EHCI_VBUS, OMAP_PIN_INPUT_PULLUP);
 		/* Select EHCI port on main board */