|
@@ -419,6 +419,7 @@ static void set_link_state_by_speed(struct dummy_hcd *dum_hcd)
|
|
|
static void set_link_state(struct dummy_hcd *dum_hcd)
|
|
|
{
|
|
|
struct dummy *dum = dum_hcd->dum;
|
|
|
+ unsigned int power_bit;
|
|
|
|
|
|
dum_hcd->active = 0;
|
|
|
if (dum->pullup)
|
|
@@ -429,17 +430,19 @@ static void set_link_state(struct dummy_hcd *dum_hcd)
|
|
|
return;
|
|
|
|
|
|
set_link_state_by_speed(dum_hcd);
|
|
|
+ power_bit = (dummy_hcd_to_hcd(dum_hcd)->speed == HCD_USB3 ?
|
|
|
+ USB_SS_PORT_STAT_POWER : USB_PORT_STAT_POWER);
|
|
|
|
|
|
if ((dum_hcd->port_status & USB_PORT_STAT_ENABLE) == 0 ||
|
|
|
dum_hcd->active)
|
|
|
dum_hcd->resuming = 0;
|
|
|
|
|
|
/* Currently !connected or in reset */
|
|
|
- if ((dum_hcd->port_status & USB_PORT_STAT_CONNECTION) == 0 ||
|
|
|
+ if ((dum_hcd->port_status & power_bit) == 0 ||
|
|
|
(dum_hcd->port_status & USB_PORT_STAT_RESET) != 0) {
|
|
|
- unsigned disconnect = USB_PORT_STAT_CONNECTION &
|
|
|
+ unsigned int disconnect = power_bit &
|
|
|
dum_hcd->old_status & (~dum_hcd->port_status);
|
|
|
- unsigned reset = USB_PORT_STAT_RESET &
|
|
|
+ unsigned int reset = USB_PORT_STAT_RESET &
|
|
|
(~dum_hcd->old_status) & dum_hcd->port_status;
|
|
|
|
|
|
/* Report reset and disconnect events to the driver */
|