From 01eacab6e95267fd894d0c1013aa5bf55c320dc8 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 1 Dec 2010 11:32:45 +0100 Subject: [PATCH] usb: add usb_wakeup() + wakeup callback to port ops 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 --- hw/usb.c | 7 +++++++ hw/usb.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/hw/usb.c b/hw/usb.c index 2eda86a58c..ba720b48e0 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 3744d19be3..250ec71a97 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 */ @@ -275,6 +276,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);