Add wakeup callback to port ops for remote wakeup handling. Also add a usb_wakeup() function for devices which want trigger a remote wakeup.
Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- hw/usb.c | 7 +++++++ hw/usb.h | 2 ++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/hw/usb.c b/hw/usb.c index 2eda86a..ba720b4 100644 --- a/hw/usb.c +++ b/hw/usb.c @@ -49,6 +49,13 @@ void usb_attach(USBPort *port, USBDevice *dev) } } +void usb_wakeup(USBDevice *dev) +{ + if (dev->remote_wakeup && dev->port && dev->port->ops->wakeup) { + dev->port->ops->wakeup(dev); + } +} + /**********************/ /* generic USB device helpers (you are not forced to use them when diff --git a/hw/usb.h b/hw/usb.h index 6b008cc..9f454e6 100644 --- a/hw/usb.h +++ b/hw/usb.h @@ -220,6 +220,7 @@ struct USBDeviceInfo { typedef struct USBPortOps { void (*attach)(USBPort *port); void (*detach)(USBPort *port); + void (*wakeup)(USBDevice *dev); } USBPortOps; /* USB port on which a device can be connected */ @@ -274,6 +275,7 @@ static inline void usb_cancel_packet(USBPacket * p) } void usb_attach(USBPort *port, USBDevice *dev); +void usb_wakeup(USBDevice *dev); int usb_generic_handle_packet(USBDevice *s, USBPacket *p); int set_usb_string(uint8_t *buf, const char *str); void usb_send_msg(USBDevice *dev, int msg); -- 1.7.1