mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
Merge remote-tracking branch 'kraxel/usb.38' into staging
* kraxel/usb.38: (28 commits) xhci: handle USB_RET_NAK xhci: remote wakeup support xhci: kill port arg from xhci_setup_packet xhci: stop on errors xhci: add trb type name lookup support. xhci: signal low- and fullspeed support usb: add USBBusOps->wakeup_endpoint usb: pass USBEndpoint to usb_wakeup usb: maintain async packet list per endpoint usb: Set USBEndpoint in usb_packet_setup(). usb: add USBEndpoint->{nr,pid} usb: USBPacket: add status, rename owner -> ep usb: fold usb_generic_handle_packet into usb_handle_packet usb: kill handle_packet callback usb-xhci: switch to usb_find_device() usb-musb: switch to usb_find_device() usb-ohci: switch to usb_find_device() usb-ehci: switch to usb_find_device() usb-uhci: switch to usb_find_device() usb: handle dev == NULL in usb_handle_packet() ...
This commit is contained in:
commit
7718564ba1
21 changed files with 728 additions and 400 deletions
|
@ -44,6 +44,7 @@
|
|||
|
||||
typedef struct USBHIDState {
|
||||
USBDevice dev;
|
||||
USBEndpoint *intr;
|
||||
HIDState hid;
|
||||
} USBHIDState;
|
||||
|
||||
|
@ -360,7 +361,7 @@ static void usb_hid_changed(HIDState *hs)
|
|||
{
|
||||
USBHIDState *us = container_of(hs, USBHIDState, hid);
|
||||
|
||||
usb_wakeup(&us->dev);
|
||||
usb_wakeup(us->intr);
|
||||
}
|
||||
|
||||
static void usb_hid_handle_reset(USBDevice *dev)
|
||||
|
@ -463,7 +464,7 @@ static int usb_hid_handle_data(USBDevice *dev, USBPacket *p)
|
|||
|
||||
switch (p->pid) {
|
||||
case USB_TOKEN_IN:
|
||||
if (p->devep == 1) {
|
||||
if (p->ep->nr == 1) {
|
||||
int64_t curtime = qemu_get_clock_ns(vm_clock);
|
||||
if (!hid_has_events(hs) &&
|
||||
(!hs->idle || hs->next_idle_clock - curtime > 0)) {
|
||||
|
@ -501,6 +502,7 @@ static int usb_hid_initfn(USBDevice *dev, int kind)
|
|||
USBHIDState *us = DO_UPCAST(USBHIDState, dev, dev);
|
||||
|
||||
usb_desc_init(dev);
|
||||
us->intr = usb_ep_get(dev, USB_TOKEN_IN, 1);
|
||||
hid_init(&us->hid, kind, usb_hid_changed);
|
||||
return 0;
|
||||
}
|
||||
|
@ -557,7 +559,6 @@ static void usb_hid_class_initfn(ObjectClass *klass, void *data)
|
|||
{
|
||||
USBDeviceClass *uc = USB_DEVICE_CLASS(klass);
|
||||
|
||||
uc->handle_packet = usb_generic_handle_packet;
|
||||
uc->handle_reset = usb_hid_handle_reset;
|
||||
uc->handle_control = usb_hid_handle_control;
|
||||
uc->handle_data = usb_hid_handle_data;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue