This bit should be only set when the port enable goes down, for
example, on errors. Not when it gets set after a port reset. Some
USB stacks seem to be sensitive to this and fails enumeration.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
                       USB_PORT_STAT_C_OVERCURRENT |
                       USB_PORT_STAT_C_RESET |
                       USB_PORT_STAT_C_L1;
-               p->change |= chg;
 
+               /*
+                * We only set USB_PORT_STAT_C_ENABLE if we are disabling
+                * the port as per USB spec, otherwise MacOS gets upset
+                */
+               if (p->status & USB_PORT_STAT_ENABLE)
+                       chg &= ~USB_PORT_STAT_C_ENABLE;
+
+               p->change = chg;
                ast_vhub_update_hub_ep1(vhub, port);
        }
 }