aboutsummaryrefslogtreecommitdiff
path: root/hw/usb-xhci.c
AgeCommit message (Collapse)Author
2012-02-15Merge remote-tracking branch 'kraxel/usb.38' into stagingAnthony Liguori
* 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() ...
2012-02-15qom: Unify type registrationAndreas Färber
Replace device_init() with generalized type_init(). While at it, unify naming convention: type_init([$prefix_]register_types) Also, type_init() is a function, so add preceding blank line where necessary and don't put a semicolon after the closing brace. Signed-off-by: Andreas Färber <afaerber@suse.de> Cc: Anthony Liguori <anthony@codemonkey.ws> Cc: malc <av1474@comtv.ru> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-02-10xhci: handle USB_RET_NAKGerd Hoffmann
Add a field to XHCITransfer to correctly keep track of NAK'ed usb packets. Retry transfers when the endpoint is kicked again. Implement wakeup_endpoint bus op so we can kick the endpoint when needed. With this patch applied the emulated hid devices are working correctly when hooked up to xhci. usb-tabled without polling, yay! Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10xhci: remote wakeup supportGerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10xhci: kill port arg from xhci_setup_packetGerd Hoffmann
Unused argument, remove it. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10xhci: stop on errorsGerd Hoffmann
When some error happened we'll have to stop processing the endpoint. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10xhci: add trb type name lookup support.Gerd Hoffmann
When logging TRBs add a the type name for more readable debug output. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10xhci: signal low- and fullspeed supportGerd Hoffmann
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10usb: Set USBEndpoint in usb_packet_setup().Gerd Hoffmann
With the separation of the device lookup (via usb_find_device) and packet processing we can lookup device and endpoint before setting up the usb packet. So we can initialize USBPacket->ep early and keep it valid for the whole lifecycle of the USBPacket. Also the devaddr and devep fields are not needed any more. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10usb-xhci: switch to usb_find_device()Gerd Hoffmann
Switch over xHCI to use the new usb_find_device() function for device lookup. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-10usb: kill USB_MSG_RESETGerd Hoffmann
The USB subsystem pipes internal reset notifications through usb_handle_packet() with a special magic PID. This indirection is a pretty pointless excercise as it ends up being handled by usb_generic_handle_packet anyway. Replace the USB_MSG_RESET with a usb_device_reset() function which can be called directly. Also rename the existing usb_reset() function to usb_port_reset() to avoid confusion. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-02-03qdev: register all types natively through QEMU Object ModelAnthony Liguori
This was done in a mostly automated fashion. I did it in three steps and then rebased it into a single step which avoids repeatedly touching every file in the tree. The first step was a sed-based addition of the parent type to the subclass registration functions. The second step was another sed-based removal of subclass registration functions while also adding virtual functions from the base class into a class_init function as appropriate. Finally, a python script was used to convert the DeviceInfo structures and qdev_register_subclass functions to TypeInfo structures, class_init functions, and type_register_static calls. We are almost fully converted to QOM after this commit. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-01-27pci: convert to QEMU Object ModelAnthony Liguori
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-01-27usb: convert to QEMU Object ModelAnthony Liguori
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-01-17xhci: Initial xHCI implementationHector Martin
Based on the implementation from Hector Martin <hector@marcansoft.com> Hectors's implementation completely sidestepped the qemu usb system and used libusb directly for usb device pass through. So I've ripped out the libusb bits (or left them in disabled, as reference for further coding) and hooked up the qemu subsystem instead. That work is not complete yet though, partly due to limitations of the qemu usb subsystem. Nevertheless I think it is better to continue development in-tree, especially as the qemu usb bits need a bunch of improvements too for decent usb 3.0 support. Current state: - usb-storage emulation should work ok. - Devices which need constant polling (HID emulation like usb-tablet) are known to not work. - ISO xfers are not implemented yet. - superspeed ports are not implemented yet. - usb pass-through is completely untested so far. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>