Commit 34239c7b authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

usb: hub: remote wakeup support.



This patch makes the usb hub handle remote wakeup requests from devices
properly by updating the port status register and forwarding the wakeup
to the upstream port.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 9159f679
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -245,6 +245,17 @@ static void usb_hub_detach(USBPort *port1)
    }
}

static void usb_hub_wakeup(USBDevice *dev)
{
    USBHubState *s = dev->port->opaque;
    USBHubPort *port = &s->ports[dev->port->index];

    if (port->wPortStatus & PORT_STAT_SUSPEND) {
        port->wPortChange |= PORT_STAT_C_SUSPEND;
        usb_wakeup(&s->dev);
    }
}

static void usb_hub_handle_reset(USBDevice *dev)
{
    /* XXX: do it */
@@ -502,6 +513,7 @@ static void usb_hub_handle_destroy(USBDevice *dev)
static USBPortOps usb_hub_port_ops = {
    .attach = usb_hub_attach,
    .detach = usb_hub_detach,
    .wakeup = usb_hub_wakeup,
};

static int usb_hub_initfn(USBDevice *dev)