History | View | Annotate | Download (70.8 kB)
ehci: add EHCIPacket
Add a separate EHCIPacket struct and move fields over from EHCIQueue.Preparing for supporting multiple packets per queue being in flight atthe same time. No functional changes yet.
Fix some codestyle issues along the way.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
ehci: make ehci_execute work on EHCIPacket instead of EHCIQueue
This way it is possible to use ehci_execute to submit others than thefirst EHCIPacket of the EHCIQueue.
ehci: cache USBDevice in EHCIQueue
Keep a USBDevice pointer in EHCIQueue so we don't have to lookup thedevice on each usb packet submission.
ehci: move ehci_flush_qh
Move ehci_flush_qh() function up in the source code.No code change.
ehci: add queuing support
Add packet queuing. Follow the qTD chain to see if there are morepackets we can submit. Improves performance on larger transfers,especially with usb-host, as we don't have to wait for a packet tofinish before sending the next one to the host for processing....
ehci: tweak queue initialization
Little tweak for the queue initialization, set the QH address in theallocation function.
ehci: add async field to EHCIQueue
Keep track whenever a EHCIQueue is part of the async or periodicschedule. This way we don't have to pass around the async flageverywhere but can look it up from the EHCIQueue struct when needed.
ehci: move async schedule to bottom half
This way we can kick the async schedule independant from theperiodic frame timer.
ehci: schedule async bh on async packet completion
When a packet completes which happens to be part of the async schedulekick the async bottom half for processing,
ehci: kick async schedule on wakeup
Kick async schedule when we get a wakeupnotification from a usb device.
ehci: fix reset
Check for the reset bit first when processing USBCMD register writes.Also break out of the switch, there is no need to check the other bits.
fix some common typos
These were identified using: http://github.com/lyda/misspell-checkand run like this to create a bourne shell script using GNU sed's-i option:
git ls-files|grep -vF .bin | misspellings -f - |grep -v '^ERROR:' |perl \-pe 's/^(.*?)\[(\d+)\]: (\w+) -> "(.*?)"$/sed -i '\''${2}s!$3!$4!'\'' $1/'...
usb-ehci: remove hack
To answer the question in the comment removed by this patch: I thinkthis was needed because several places in the ehci emulation did notcheck the T bit of link entries correctly and thus might have followedinvalid references. See commit 2a5ff735dc1074171a0cbb1dc228d6d6e907f571...
usb-ehci: add missing usb_packet_init() call
usb-ehci: Ensure frindex writes leave a valid frindex value
frindex is a 14 bits counter, so bits 31-14 should always be 0, andafter the commit titled "usb-ehci: frindex always is a 14 bits counter" we rely on frindex always being a multiple of 8. I've not seen this in...
usb-ehci: drop assert()
Not sure what the purpose of the assert() was, in any case it is bogous.We can arrive there if transfer descriptors passed to us from the guestfailed to pass sanity checks, i.e. it is guest-triggerable. We dealwith that case by resetting the host controller. Everything is ok, no...
usb-ehci: fix ehci_child_detach
Looks like a cut+paste bug from ehci_detach. When the device itself isdetached from a ehci port (ehci_detach op) we have to clear thedevice pointer for the companion port too. When a device gets removedfrom a downstream port of a usb hub (ehci_child_detach op) the ehci port...
usb-ehci: frindex always is a 14 bits counter
frindex always is a 14 bits counter, and not a 13 bits one as we wereemulating. There are some subtle hints to this in the spec, first of all"Table 2-12. FRINDEX - Frame Index Register" says:"Bit 13:0 Frame Index. The value in this register increments at the end of...
usb-ehci: Drop unused sofv value
The sofv value only ever gets a value assigned and is never used (read)anywhere, so we can just drop it.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
usb: the big rename
Reorganize usb source files. Create a new hw/usb/ directory and moveall usb source code to that place. Also make filenames a bit moredescriptive. Host adapters are prefixed with "hch-" now, usb deviceemulations are prefixed with "dev-". Fixup paths Makefile and include...
usb-ehci: drop unused isoch_pause variable