diff mbox

[U-Boot,07/14] imx: ventana: make OTG VBUS power enable board specific

Message ID 1489420274-2691-8-git-send-email-tharvey@gateworks.com
State Accepted
Commit f938500f2c810b7535aa6d7ff6d70ff32608572e
Delegated to: Stefano Babic
Headers show

Commit Message

Tim Harvey March 13, 2017, 3:51 p.m. UTC
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
 board/gateworks/gw_ventana/common.c     | 16 ++++++++++++----
 board/gateworks/gw_ventana/common.h     |  2 +-
 board/gateworks/gw_ventana/gw_ventana.c |  8 +++++---
 3 files changed, 18 insertions(+), 8 deletions(-)

Comments

Stefano Babic March 17, 2017, 11:02 a.m. UTC | #1
On 13/03/2017 16:51, Tim Harvey wrote:
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
>  board/gateworks/gw_ventana/common.c     | 16 ++++++++++++----
>  board/gateworks/gw_ventana/common.h     |  2 +-
>  board/gateworks/gw_ventana/gw_ventana.c |  8 +++++---
>  3 files changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/board/gateworks/gw_ventana/common.c b/board/gateworks/gw_ventana/common.c
> index 49d6e52..a33c112 100644
> --- a/board/gateworks/gw_ventana/common.c
> +++ b/board/gateworks/gw_ventana/common.c
> @@ -586,6 +586,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.rs485en = IMX_GPIO_NR(3, 24),
>  		.dioi2c_en = IMX_GPIO_NR(4,  5),
>  		.pcie_sson = IMX_GPIO_NR(1, 20),
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  
>  	/* GW51xx */
> @@ -604,6 +605,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.gps_shdn = IMX_GPIO_NR(1, 2),
>  		.vidin_en = IMX_GPIO_NR(5, 20),
>  		.wdis = IMX_GPIO_NR(7, 12),
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  
>  	/* GW52xx */
> @@ -626,6 +628,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.wdis = IMX_GPIO_NR(7, 12),
>  		.msata_en = GP_MSATA_SEL,
>  		.rs232_en = GP_RS232_EN,
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  
>  	/* GW53xx */
> @@ -647,6 +650,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.wdis = IMX_GPIO_NR(7, 12),
>  		.msata_en = GP_MSATA_SEL,
>  		.rs232_en = GP_RS232_EN,
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  
>  	/* GW54xx */
> @@ -670,6 +674,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.wdis = IMX_GPIO_NR(5, 17),
>  		.msata_en = GP_MSATA_SEL,
>  		.rs232_en = GP_RS232_EN,
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  
>  	/* GW551x */
> @@ -715,6 +720,7 @@ struct ventana gpio_cfg[GW_UNKNOWN] = {
>  		.pcie_rst = IMX_GPIO_NR(1, 0),
>  		.vidin_en = IMX_GPIO_NR(5, 20),
>  		.wdis = IMX_GPIO_NR(7, 12),
> +		.otgpwr_en = IMX_GPIO_NR(3, 22),
>  	},
>  };
>  
> @@ -725,10 +731,6 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
>  	/* iomux common to all Ventana boards */
>  	SETUP_IOMUX_PADS(gw_gpio_pads);
>  
> -	/* OTG power off */
> -	gpio_request(GP_USB_OTG_PWR, "usbotg_pwr");
> -	gpio_direction_output(GP_USB_OTG_PWR, 0);
> -
>  	if (board >= GW_UNKNOWN)
>  		return;
>  
> @@ -818,6 +820,12 @@ void setup_iomux_gpio(int board, struct ventana_board_info *info)
>  		gpio_direction_output(gpio_cfg[board].wdis, 1);
>  	}
>  
> +	/* OTG power off */
> +	if (gpio_cfg[board].otgpwr_en) {
> +		gpio_request(gpio_cfg[board].otgpwr_en, "usbotg_pwr");
> +		gpio_direction_output(gpio_cfg[board].otgpwr_en, 0);
> +	}
> +
>  	/* sense vselect pin to see if we support uhs-i */
>  	gpio_request(GP_SD3_VSELECT, "sd3_vselect");
>  	gpio_direction_input(GP_SD3_VSELECT);
> diff --git a/board/gateworks/gw_ventana/common.h b/board/gateworks/gw_ventana/common.h
> index 3d7aff1..6939233 100644
> --- a/board/gateworks/gw_ventana/common.h
> +++ b/board/gateworks/gw_ventana/common.h
> @@ -13,7 +13,6 @@
>  
>  /* GPIO's common to all baseboards */
>  #define GP_PHY_RST	IMX_GPIO_NR(1, 30)
> -#define GP_USB_OTG_PWR	IMX_GPIO_NR(3, 22)
>  #define GP_SD3_CD	IMX_GPIO_NR(7, 0)
>  #define GP_RS232_EN	IMX_GPIO_NR(2, 11)
>  #define GP_MSATA_SEL	IMX_GPIO_NR(2, 8)
> @@ -79,6 +78,7 @@ struct ventana {
>  	int wdis;
>  	int msata_en;
>  	int rs232_en;
> +	int otgpwr_en;
>  	/* various features */
>  	bool usd_vsel;
>  };
> diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c
> index 22a3c8e..3f9d2f7 100644
> --- a/board/gateworks/gw_ventana/gw_ventana.c
> +++ b/board/gateworks/gw_ventana/gw_ventana.c
> @@ -175,9 +175,11 @@ int board_ehci_hcd_init(int port)
>  
>  int board_ehci_power(int port, int on)
>  {
> -	if (port)
> -		return 0;
> -	gpio_set_value(GP_USB_OTG_PWR, on);
> +	/* enable OTG VBUS */
> +	if (!port && board_type < GW_UNKNOWN) {
> +		if (gpio_cfg[board_type].otgpwr_en)
> +			gpio_set_value(gpio_cfg[board_type].otgpwr_en, on);
> +	}
>  	return 0;
>  }
>  #endif /* CONFIG_USB_EHCI_MX6 */
> 
Reviewed-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
diff mbox

Patch

diff --git a/board/gateworks/gw_ventana/common.c b/board/gateworks/gw_ventana/common.c
index 49d6e52..a33c112 100644
--- a/board/gateworks/gw_ventana/common.c
+++ b/board/gateworks/gw_ventana/common.c
@@ -586,6 +586,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.rs485en = IMX_GPIO_NR(3, 24),
 		.dioi2c_en = IMX_GPIO_NR(4,  5),
 		.pcie_sson = IMX_GPIO_NR(1, 20),
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 
 	/* GW51xx */
@@ -604,6 +605,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.gps_shdn = IMX_GPIO_NR(1, 2),
 		.vidin_en = IMX_GPIO_NR(5, 20),
 		.wdis = IMX_GPIO_NR(7, 12),
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 
 	/* GW52xx */
@@ -626,6 +628,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.wdis = IMX_GPIO_NR(7, 12),
 		.msata_en = GP_MSATA_SEL,
 		.rs232_en = GP_RS232_EN,
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 
 	/* GW53xx */
@@ -647,6 +650,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.wdis = IMX_GPIO_NR(7, 12),
 		.msata_en = GP_MSATA_SEL,
 		.rs232_en = GP_RS232_EN,
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 
 	/* GW54xx */
@@ -670,6 +674,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.wdis = IMX_GPIO_NR(5, 17),
 		.msata_en = GP_MSATA_SEL,
 		.rs232_en = GP_RS232_EN,
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 
 	/* GW551x */
@@ -715,6 +720,7 @@  struct ventana gpio_cfg[GW_UNKNOWN] = {
 		.pcie_rst = IMX_GPIO_NR(1, 0),
 		.vidin_en = IMX_GPIO_NR(5, 20),
 		.wdis = IMX_GPIO_NR(7, 12),
+		.otgpwr_en = IMX_GPIO_NR(3, 22),
 	},
 };
 
@@ -725,10 +731,6 @@  void setup_iomux_gpio(int board, struct ventana_board_info *info)
 	/* iomux common to all Ventana boards */
 	SETUP_IOMUX_PADS(gw_gpio_pads);
 
-	/* OTG power off */
-	gpio_request(GP_USB_OTG_PWR, "usbotg_pwr");
-	gpio_direction_output(GP_USB_OTG_PWR, 0);
-
 	if (board >= GW_UNKNOWN)
 		return;
 
@@ -818,6 +820,12 @@  void setup_iomux_gpio(int board, struct ventana_board_info *info)
 		gpio_direction_output(gpio_cfg[board].wdis, 1);
 	}
 
+	/* OTG power off */
+	if (gpio_cfg[board].otgpwr_en) {
+		gpio_request(gpio_cfg[board].otgpwr_en, "usbotg_pwr");
+		gpio_direction_output(gpio_cfg[board].otgpwr_en, 0);
+	}
+
 	/* sense vselect pin to see if we support uhs-i */
 	gpio_request(GP_SD3_VSELECT, "sd3_vselect");
 	gpio_direction_input(GP_SD3_VSELECT);
diff --git a/board/gateworks/gw_ventana/common.h b/board/gateworks/gw_ventana/common.h
index 3d7aff1..6939233 100644
--- a/board/gateworks/gw_ventana/common.h
+++ b/board/gateworks/gw_ventana/common.h
@@ -13,7 +13,6 @@ 
 
 /* GPIO's common to all baseboards */
 #define GP_PHY_RST	IMX_GPIO_NR(1, 30)
-#define GP_USB_OTG_PWR	IMX_GPIO_NR(3, 22)
 #define GP_SD3_CD	IMX_GPIO_NR(7, 0)
 #define GP_RS232_EN	IMX_GPIO_NR(2, 11)
 #define GP_MSATA_SEL	IMX_GPIO_NR(2, 8)
@@ -79,6 +78,7 @@  struct ventana {
 	int wdis;
 	int msata_en;
 	int rs232_en;
+	int otgpwr_en;
 	/* various features */
 	bool usd_vsel;
 };
diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c
index 22a3c8e..3f9d2f7 100644
--- a/board/gateworks/gw_ventana/gw_ventana.c
+++ b/board/gateworks/gw_ventana/gw_ventana.c
@@ -175,9 +175,11 @@  int board_ehci_hcd_init(int port)
 
 int board_ehci_power(int port, int on)
 {
-	if (port)
-		return 0;
-	gpio_set_value(GP_USB_OTG_PWR, on);
+	/* enable OTG VBUS */
+	if (!port && board_type < GW_UNKNOWN) {
+		if (gpio_cfg[board_type].otgpwr_en)
+			gpio_set_value(gpio_cfg[board_type].otgpwr_en, on);
+	}
 	return 0;
 }
 #endif /* CONFIG_USB_EHCI_MX6 */