lantiq: Add support for linux 4.4
[openwrt.git] / target / linux / lantiq / patches-4.4 / 0040-USB-DWC2-enable-usb-power-gpio.patch
diff --git a/target/linux/lantiq/patches-4.4/0040-USB-DWC2-enable-usb-power-gpio.patch b/target/linux/lantiq/patches-4.4/0040-USB-DWC2-enable-usb-power-gpio.patch
new file mode 100644 (file)
index 0000000..5f26784
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/drivers/usb/dwc2/platform.c
++++ b/drivers/usb/dwc2/platform.c
+@@ -42,6 +42,7 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/of_device.h>
+ #include <linux/mutex.h>
++#include <linux/of_gpio.h>
+ #include <linux/platform_device.h>
+ #include <linux/phy/phy.h>
+ #include <linux/platform_data/s3c-hsotg.h>
+@@ -336,6 +337,7 @@ static int dwc2_driver_probe(struct plat
+       struct resource *res;
+       int retval;
+       int irq;
++      int gpio_count;
+       match = of_match_device(dwc2_of_match_table, &dev->dev);
+       if (match && match->data) {
+@@ -352,6 +354,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;