The sabrelite board code uses a GPIO to enable USB VBUS. The same GPIO
is registered in the device tree as a USB VBUS regulator. This regulator
currently can't probe because the GPIO is busy due to its usage in board
code. Free the GPIO after usage in board code to allow probing the VBUS
regulator.

The board specific code to enable VBUS might not be needed at all
anymore, but I currently do not have the board handy to try out, so
for now just avoid the error messages from failed driver probe.

Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 arch/arm/boards/freescale-mx6-sabrelite/board.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boards/freescale-mx6-sabrelite/board.c 
b/arch/arm/boards/freescale-mx6-sabrelite/board.c
index fe47743540..5982d75e2b 100644
--- a/arch/arm/boards/freescale-mx6-sabrelite/board.c
+++ b/arch/arm/boards/freescale-mx6-sabrelite/board.c
@@ -117,10 +117,16 @@ static int sabrelite_ksz9021rn_setup(void)
 
 static void sabrelite_ehci_init(void)
 {
+       unsigned int vbus_gpio = IMX_GPIO_NR(7, 12);
+
+       gpio_request(vbus_gpio, "usb-vbus");
+
        /* hub reset */
-       gpio_direction_output(IMX_GPIO_NR(7, 12), 0);
+       gpio_direction_output(vbus_gpio, 0);
        udelay(2000);
-       gpio_set_value(IMX_GPIO_NR(7, 12), 1);
+       gpio_set_value(vbus_gpio, 1);
+
+       gpio_free(vbus_gpio);
 }
 
 static int sabrelite_probe(struct device *dev)
-- 
2.39.5


Reply via email to