--- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -154,6 +155,7 @@ static int dwc2_driver_probe(struct plat struct resource *res; int retval; int irq; + int gpio_count; if (usb_disabled()) return -ENODEV; @@ -173,6 +175,16 @@ static int dwc2_driver_probe(struct plat defparams.dma_desc_enable = 0; } + gpio_count = of_gpio_count(dev->dev.of_node); + while (gpio_count > 0) { + enum of_gpio_flags flags; + int gpio = of_get_gpio_flags(dev->dev.of_node, --gpio_count, &flags); + if (gpio_request(gpio, "usb")) + continue; + dev_info(&dev->dev, "requested GPIO %d\n", gpio); + gpio_direction_output(gpio, (flags & OF_GPIO_ACTIVE_LOW) ? (0) : (1)); + } + hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL); if (!hsotg) return -ENOMEM;