From 53e68f335e05260651aa4315ca17385087d98c02 Mon Sep 17 00:00:00 2001 From: Manikanta Mylavarapu Date: Mon, 11 Jan 2021 16:26:33 +0530 Subject: [PATCH] ipq5018: Enable usb power gpio output Gpio out need to be enabled for re-spin boards. Signed-off-by: Manikanta Mylavarapu Change-Id: I711ed313170fb6268d1d5b9d70f2966bae481241 --- arch/arm/dts/ipq5018-mp03.1.dts | 1 + arch/arm/dts/ipq5018-mp03.3.dts | 1 + arch/arm/dts/ipq5018-mp03.5-c1.dts | 1 + arch/arm/dts/ipq5018-mp03.6-c1.dts | 1 + board/qca/arm/ipq5018/ipq5018.c | 9 +++++++-- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/arm/dts/ipq5018-mp03.1.dts b/arch/arm/dts/ipq5018-mp03.1.dts index b729946822..fe9d12e33b 100644 --- a/arch/arm/dts/ipq5018-mp03.1.dts +++ b/arch/arm/dts/ipq5018-mp03.1.dts @@ -113,6 +113,7 @@ usb0: xhci@8a00000 { ssphy = <1>; + usb_pwr_gpio = <24>; usb_gpio { pwr_gpio { gpio = <24>; diff --git a/arch/arm/dts/ipq5018-mp03.3.dts b/arch/arm/dts/ipq5018-mp03.3.dts index 4eebff1458..5badea7cdb 100644 --- a/arch/arm/dts/ipq5018-mp03.3.dts +++ b/arch/arm/dts/ipq5018-mp03.3.dts @@ -127,6 +127,7 @@ }; usb0: xhci@8a00000 { + usb_pwr_gpio = <24>; usb_gpio { pwr_gpio { gpio = <24>; diff --git a/arch/arm/dts/ipq5018-mp03.5-c1.dts b/arch/arm/dts/ipq5018-mp03.5-c1.dts index 2405f95c1f..45ee452d1a 100644 --- a/arch/arm/dts/ipq5018-mp03.5-c1.dts +++ b/arch/arm/dts/ipq5018-mp03.5-c1.dts @@ -127,6 +127,7 @@ }; usb0: xhci@8a00000 { + usb_pwr_gpio = <24>; usb_gpio { pwr_gpio { gpio = <24>; diff --git a/arch/arm/dts/ipq5018-mp03.6-c1.dts b/arch/arm/dts/ipq5018-mp03.6-c1.dts index 80222b8b5e..ad7aba6e92 100644 --- a/arch/arm/dts/ipq5018-mp03.6-c1.dts +++ b/arch/arm/dts/ipq5018-mp03.6-c1.dts @@ -127,6 +127,7 @@ }; usb0: xhci@8a00000 { + usb_pwr_gpio = <24>; usb_gpio { pwr_gpio { gpio = <24>; diff --git a/board/qca/arm/ipq5018/ipq5018.c b/board/qca/arm/ipq5018/ipq5018.c index 4d661d19da..db16be1e50 100644 --- a/board/qca/arm/ipq5018/ipq5018.c +++ b/board/qca/arm/ipq5018/ipq5018.c @@ -1343,7 +1343,9 @@ void board_usb_deinit(int id) gpio_node, "gpio", 0); unsigned int *gpio_base = (unsigned int *)GPIO_CONFIG_ADDR(gpio); + int usb_pwr_gpio = fdtdec_get_int(gd->fdt_blob, nodeoff, "usb_pwr_gpio", 0); writel(0xC1, gpio_base); + gpio_set_value(usb_pwr_gpio, GPIO_OUT_LOW); } } @@ -1497,7 +1499,7 @@ static void usb_init_phy(int index, int ssphy) int ipq_board_usb_init(void) { - int i, nodeoff, ssphy, gpio_node; + int i, nodeoff, ssphy, gpio_node, usb_pwr_gpio; char node_name[8]; if(readl(EUD_EUD_EN2)) { @@ -1528,8 +1530,11 @@ int ipq_board_usb_init(void) /* USB power GPIO for drive 5V */ gpio_node = fdt_subnode_offset(gd->fdt_blob, nodeoff, "usb_gpio"); - if (gpio_node >= 0) + if (gpio_node >= 0) { qca_gpio_init(gpio_node); + usb_pwr_gpio = fdtdec_get_int(gd->fdt_blob, nodeoff, "usb_pwr_gpio", 0); + gpio_set_value(usb_pwr_gpio, GPIO_OUT_HIGH); + } } return 0;