kernel: bump 4.4 to 4.4.91
[oweals/openwrt.git] / target / linux / ar71xx / patches-4.4 / 930-chipidea-pullup.patch
index dfa9f6e72f530a01185ed81462f794bbb5aec699..d43e8c7dc528b7f22279bc95a5b8315cc2ae576e 100644 (file)
@@ -18,7 +18,7 @@
  static inline struct ci_role_driver *ci_role(struct ci_hdrc *ci)
 --- a/drivers/usb/chipidea/core.c
 +++ b/drivers/usb/chipidea/core.c
-@@ -883,7 +883,7 @@ static inline void ci_role_destroy(struc
+@@ -851,7 +851,7 @@ static inline void ci_role_destroy(struc
  {
        ci_hdrc_gadget_destroy(ci);
        ci_hdrc_host_destroy(ci);
@@ -27,7 +27,7 @@
                ci_hdrc_otg_destroy(ci);
  }
  
-@@ -934,6 +934,9 @@ static int ci_hdrc_probe(struct platform
+@@ -902,6 +902,9 @@ static int ci_hdrc_probe(struct platform
        ci->supports_runtime_pm = !!(ci->platdata->flags &
                CI_HDRC_SUPPORTS_RUNTIME_PM);
  
@@ -37,7 +37,7 @@
        ret = hw_device_init(ci, base);
        if (ret < 0) {
                dev_err(dev, "can't initialize hardware\n");
-@@ -999,7 +1002,7 @@ static int ci_hdrc_probe(struct platform
+@@ -967,7 +970,7 @@ static int ci_hdrc_probe(struct platform
                goto deinit_phy;
        }
  
@@ -48,7 +48,7 @@
                        dev_err(dev, "init otg fails, ret = %d\n", ret);
 --- a/drivers/usb/chipidea/otg.c
 +++ b/drivers/usb/chipidea/otg.c
-@@ -95,8 +95,10 @@ enum ci_role ci_otg_role(struct ci_hdrc
+@@ -131,8 +131,10 @@ enum ci_role ci_otg_role(struct ci_hdrc
  
  void ci_handle_vbus_change(struct ci_hdrc *ci)
  {
                return;
 +      }
  
-       if (hw_read_otgsc(ci, OTGSC_BSV))
+       if (hw_read_otgsc(ci, OTGSC_BSV) && !ci->vbus_active)
                usb_gadget_vbus_connect(&ci->gadget);
 --- a/include/linux/usb/chipidea.h
 +++ b/include/linux/usb/chipidea.h
-@@ -55,6 +55,7 @@ struct ci_hdrc_platform_data {
+@@ -57,6 +57,7 @@ struct ci_hdrc_platform_data {
  #define CI_HDRC_OVERRIDE_AHB_BURST    BIT(9)
  #define CI_HDRC_OVERRIDE_TX_BURST     BIT(10)
  #define CI_HDRC_OVERRIDE_RX_BURST     BIT(11)