summaryrefslogtreecommitdiffstats
path: root/hw/usb-hid.c
Commit message (Collapse)AuthorAgeFilesLines
* Use qemu-common.h or qemu-timer.h in place of sysemu.hBlue Swirl2011-04-151-1/+1
| | | | | | | In some cases qemu-common.h or qemu-timer.h can be used in place of sysemu.h. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* change all other clock references to use nanosecond resolution accessorsPaolo Bonzini2011-03-211-3/+3
| | | | | | | | | | | | | | | | | | | | | | This was done with: sed -i 's/qemu_get_clock\>/qemu_get_clock_ns/' \ $(git grep -l 'qemu_get_clock\>' ) sed -i 's/qemu_new_timer\>/qemu_new_timer_ns/' \ $(git grep -l 'qemu_new_timer\>' ) after checking that get_clock and new_timer never occur twice on the same line. There were no missed occurrences; however, even if there had been, they would have been caught by the compiler. There was exactly one false positive in qemu_run_timers: - current_time = qemu_get_clock (clock); + current_time = qemu_get_clock_ns (clock); which is of course not in this patch. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
* usb hid: add migration supportGerd Hoffmann2011-01-241-2/+64
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* usb hid: move head+n to common structGerd Hoffmann2011-01-241-24/+22
| | | | | | | This patch moves the 'head' and 'n' fields from USBMouseState and USBKeyboardState to the common USBHIDState struct. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* usb keyboard: add event event queueGerd Hoffmann2011-01-241-6/+32
| | | | | | | | | | | This patch adds a event queue to the usb keyboard. This makes sure the guest will see all key events even if they come in bursts. With this patch applied sending Ctrl-Alt-Del using vncviewer's F8 menu works. Also with autosuspend enabled the first keypress on a suspended keyboard takes a little longer to be delivered to the guest because the usb bus must be resumed first. Without event queue this easily gets lost. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* add event queueing to USB HIDPaolo Bonzini2011-01-241-94/+127
| | | | | | | | | | | | | | The polling nature of the USB HID device makes it very hard to double click or drag while on a high-latency VNC connection. This patch, based on work done in the Xen qemu-dm tree by Ian Jackson, fixes this bug by adding an event queue to the device. The event queue associates each movement with the correct button state, and remembers all button presses and releases as well. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Gerd Hoffman <kraxel@redhat.com>
* Merge branch 'usb.4' of git://anongit.freedesktop.org/spice/qemuAurelien Jarno2011-01-211-277/+209
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'usb.4' of git://anongit.freedesktop.org/spice/qemu: (32 commits) usb: zap pdev from usbport usb: rewrite fw path, fix numbering usb: add port property. usb: keep track of physical port address. usb storage: handle long responses usb storage: fix status reporting usb storage: high speed support usb: add device qualifier support usb: add usb_desc_attach usb: add attach callback usb: add speed mask to ports usb: hid: change serial number to "42". usb: hid: remote wakeup support. usb: hub: remote wakeup support. usb: uhci: remote wakeup support. usb: add usb_wakeup() + wakeup callback to port ops usb: rework attach/detach workflow usb: create USBPortOps, move attach there. usb: move remote wakeup handling to common code usb: move USB_REQ_{GET,SET}_CONFIGURATION handling to common code ...
| * usb: hid: change serial number to "42".Gerd Hoffmann2011-01-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It would be nice to have some way to signal our hid devices support remote wakeup. There is a descriptor bit for that of course. Problem with using is one is that older qemu versions used to set the bit even though they did *not* support remote wakeup. Bummer. This patch changes the serial number of our hid devices from "1" to "42" to signal "it is safe to enable remote wakeup". The serial number was choosen because it isn't used for anything and it is available in sysfs so it is easy to match it using udev rules like this: ACTION=="add", SUBSYSTEM=="usb", \ ATTR{product}=="QEMU USB Tablet", ATTR{serial}=="42", \ RUN+="usb_enable_autosuspend %p" Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
| * usb: hid: remote wakeup support.Gerd Hoffmann2011-01-111-0/+2
| | | | | | | | | | | | Add usb_wakeup() call to the hid driver so remote wakeup actually works. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
| * usb: move remote wakeup handling to common codeGerd Hoffmann2011-01-111-22/+0
| | | | | | | | | | | | | | | | This patch moves setting and clearing the remote_wakeup feature bit (via USB_REQ_{SET,CLEAR}_FEATURE) to common code. Also USB_REQ_GET_STATUS handling is moved to common code. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
| * usb: move USB_REQ_{GET,SET}_CONFIGURATION handling to common codeGerd Hoffmann2011-01-111-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds fields to the USBDevice struct for the current speed (hard-wired to full speed for now) and current device configuration. Also a init function is added which inializes these fields. This allows USB_REQ_{GET,SET}_CONFIGURATION handling to be moved to common code. For most drivers the conversion is trivial ad they support a single configuration only anyway. One exception is bluetooth where some device-specific setup code runs after get/set configuration. The other is usb-net which actually has two configurations so the the code to check for the active configuration has been adapted. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
| * usb: move USB_REQ_SET_ADDRESS handling to common codeGerd Hoffmann2011-01-111-4/+0
| | | | | | | | | | | | | | USB_REQ_SET_ADDRESS handling is identical in *all* emulated devices. Move it to common code. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
| * usb hid: use new descriptor infrastructure.Gerd Hoffmann2011-01-111-243/+205
| | | | | | | | | | | | | | Switch the usb hid drivers (keyboard, mouse, tablet) over to the new descriptor infrastructure. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* | usb-hid: modifiers should generate an eventAurelien Jarno2011-01-201-0/+3
| | | | | | | | | | | | | | | | | | | | When a modifier key is pressed or released, the USB HID keyboard still answers NAK, unless another key is also pressed or released. The patch fixes that by calling usb_hid_changed() when a modifier key is pressed or released. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* | USB keyboard emulation key mapping errorMichael Tokarev2011-01-161-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | The USB keyboard emulation's translation table in hw/usb-hid.c doesn't match the codes actually sent for the Logo (a.k.a. "Windows") or Menu keys. This results in the guest OS not being able to receive these keys at all when the USB keyboard emulation is being used. In particular, both the keymap in /usr/share/kvm/keymaps/modifiers and the evdev table in x_keymap.c map these keys to 0xdb, 0xdc, and 0xdd, while usb_hid_usage_keys[] seems to be expecting them to be mapped to 0x7d, 0x7e, and 0x7f. The attached patch seems to fix the problem, at least in my (limited) testing. http://bugs.debian.org/578846 http://bugs.debian.org/600593 (cloned from the above against different pkg) https://bugs.launchpad.net/qemu/+bug/584139 Signed-Off-By: Brad Jorsch <anomie@users.sourceforge.net> Signed-Off-By: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* un-register kbd driver in case of USB kbd unplug.Jes Sorensen2010-06-141-2/+6
| | | | | | | | | If a USB keyboard is unplugged, the keyboard eventhandler is never removed, and events will continue to be passed through to the device, causing crashes or memory corruption. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* blockdev: Collect block device code in new blockdev.cMarkus Armbruster2010-06-041-0/+1
| | | | | | | Anything that moves hundreds of lines out of vl.c can't be all bad. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
* Rewrite mouse handlers to use QTAILQ and to have an activation functionAnthony Liguori2010-03-191-4/+11
| | | | | | | | | | | | | | | | | | | | | And convert usb-hid to use it (to avoid regression with bisection) Right now, when we do info mice and we've added a usb tablet, we don't see it until the guest starts using the tablet. We implement this behavior in order to provide a means to delay registration of a mouse handler since we treat the last registered handler as the current handler. This is a usability problem though as we would like to give the user feedback that they've either 1) not added an absolute device 2) there is an absolute device but the guest isn't using it 3) we have an absolute device and it's active. By using QTAILQ and having an explicit activation function that moves the handler to the front of the queue, we can implement the same semantics as before with respect to automatically switching to usb tablet while providing the user with a whole lot more information. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* kbd leds: usb kbdGerd Hoffmann2010-03-091-0/+8
| | | | | | | Add led status notification support to the usb kbd driver. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* USB HID does not support Set_IdleKevin O'Connor2010-02-191-2/+10
| | | | | | | | | | | | | | | I found that the QEMU USB keyboard support does not work properly with the Set_Idle command. Once a non-zero value is given to Set_Idle, then the keyboard reports an event on every poll - not based on the time issued in the Set_Idle command. I changed the code (see patch below) and it works for me. I'm not that familiar with the qemu internals, so I'm not sure if this is the best way to implement this feature. -Kevin Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* Make USB hid devices self-poweredRiku Voipio2009-12-181-1/+1
| | | | | | | Simplifies power budget negotiation. Signed-off-by: Riku Voipio <riku.voipio@nokia.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* qdev: Replace device names containing whitespaceMarkus Armbruster2009-12-121-6/+3
| | | | | | | | | | | | Device names with whitespace require quoting in the shell and in the monitor. Some of the offenders are also overly long. Some have a more convenient alias, some don't. The place for verbose device names is DeviceInfo member desc. The name should be short & sweet. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* qdev: Separate USB product description from qdev nameMarkus Armbruster2009-12-121-0/+3
| | | | | | | | | | | | Using the qdev name for the product description makes for inconvenient qdev names. Put the product description in new USBDeviceInfo member product_desc. Make usb_qdev_init() use it. No user or guest visible change, since the value is still the same. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* qdev: Rename USBDevice member devname to product_descMarkus Armbruster2009-12-121-1/+1
| | | | | | | It's not a device name, it's the USB product description string. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* usb-hid: use qdev for -usbdeviceGerd Hoffmann2009-10-301-0/+3
| | | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* usb: hook unplug into qdev, cleanups + fixes.Gerd Hoffmann2009-10-051-1/+0
| | | | | | | | | | | | | | | Hook into DeviceInfo->exit(). handle_destroy() must not free the state struct, this is handled by the new usb_qdev_exit() function now. qdev_free(usb_device) works now. Fix usb hub to qdev_free() all connected devices on unplug. Unplugging a usb hub works now. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* qdev/usb: add some convinience aliases.Gerd Hoffmann2009-09-091-0/+3
| | | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* qdev/usb: make qemu aware of usb busses.Gerd Hoffmann2009-09-091-15/+0
| | | | | | | | | | | | | | Move usb code from vl.c to usb-bus.c and make it use the new data structures added by qdev conversion. qemu usb core should be able to handle multiple USB busses just fine now (untested though). Kill some usb_*_init() legacy functions, use usb_create_simple() instead. Kill some FIXMEs added by the first qdev/usb patch. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* qdev/usb: add usb bus support to qdev, convert drivers.Gerd Hoffmann2009-09-091-44/+62
| | | | | | | | | | | | | | * Add USBBus. * Add USBDeviceInfo, move device callbacks here. * Add usb-qdev helper functions. * Switch drivers to qdev. TODO: * make the rest of qemu aware of usb busses and kill the FIXMEs added by this patch. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* hw: remove error handling from qemu_malloc() callers (Avi Kivity)aliguori2009-02-051-6/+0
| | | | | | | | Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6529 c046a42c-6fe2-441c-8c8c-71466251a162
* fix usb-hid SET_IDLE behaviour (Stefano Stabellini)aliguori2009-01-071-2/+2
| | | | | | | | | | | | | | | | | | | the usb-hid spec states that the SET_IDLE request has a 16bit value, where the upper byte specifies the idle rate (currently unimplemented, we handle only the 0 case, meaning infinite duration) and the lower byte specifies the report id (0 means all reports). In our code we do idle = value, while it should be idle = "upper byte", especially if the guest issues a GET_IDLE, we should return only the idle rate while we are returning only the report id. In practice it doesn't make much difference because I have only seen SET_VALUE with both bytes set to 0 so far, but still it is wrong. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6211 c046a42c-6fe2-441c-8c8c-71466251a162
* Bluetooth HIDP emulation on top of usb-hid.c and L2CAP and SDP.balrog2008-09-291-8/+34
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5347 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix range in the hid report descriptor for USB tablet.balrog2008-09-151-2/+2
| | | | | | | | Should prevent the ugly wrapping due to a typo in an earlier commit. Fix by Gregor (gg@seh.de). git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5232 c046a42c-6fe2-441c-8c8c-71466251a162
* Try to fix USB HID and make the HID reports readable.balrog2008-05-171-48/+71
| | | | | | | | | Decode HID report Items in the comments. Invert mouse wheel direction as per Alexander Graf's report and as we already do in the tablet. Clamp the Relative values to -127:127 as we claimed in the HID descriptors. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4482 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix USB and HID report descriptors for mouse and tablet.balrog2008-04-261-18/+17
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4253 c046a42c-6fe2-441c-8c8c-71466251a162
* Add mouse wheel in the usb-mouse HID Report (by Daniel Godás).balrog2008-01-141-1/+3
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3906 c046a42c-6fe2-441c-8c8c-71466251a162
* Break up vl.h.pbrook2007-11-171-1/+3
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3674 c046a42c-6fe2-441c-8c8c-71466251a162
* Pass correct pointer to HID keyboard event handler, fixes regression from ↵balrog2007-09-171-1/+1
| | | | | | IDLE mode introduction. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3180 c046a42c-6fe2-441c-8c8c-71466251a162
* find -type f | xargs sed -i 's/[\t ]*$//g' # Yes, again. Note the star in ↵ths2007-09-171-7/+7
| | | | | | the regex. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3177 c046a42c-6fe2-441c-8c8c-71466251a162
* find -type f | xargs sed -i 's/[\t ]$//g' # on most filesths2007-09-161-22/+22
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3173 c046a42c-6fe2-441c-8c8c-71466251a162
* Implement HID idle mode (avoids flooding guest with useless updates).pbrook2007-09-091-11/+29
| | | | | | | Fix UHCI NACK bug. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3157 c046a42c-6fe2-441c-8c8c-71466251a162
* Add USB HID keyboard.balrog2007-06-221-45/+344
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2996 c046a42c-6fe2-441c-8c8c-71466251a162
* Fix usb hid and mass-storage protocol revision, by Juergen Keil.ths2007-03-311-1/+1
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2558 c046a42c-6fe2-441c-8c8c-71466251a162
* increase USB table poll intervalbellard2007-02-111-1/+1
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2422 c046a42c-6fe2-441c-8c8c-71466251a162
* Dynamic handling of guest mice, by Lonnie Mendez.ths2007-01-051-3/+6
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2290 c046a42c-6fe2-441c-8c8c-71466251a162
* SCSI and USB async IO support.pbrook2006-08-121-6/+5
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2107 c046a42c-6fe2-441c-8c8c-71466251a162
* usb destroy API change (Lonnie Mendez)bellard2006-07-191-7/+11
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2066 c046a42c-6fe2-441c-8c8c-71466251a162
* display device identifier string for user with info usb (Lonnie Mendez)bellard2006-06-261-0/+4
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2029 c046a42c-6fe2-441c-8c8c-71466251a162
* Rearrange SCSI disk emulation code.pbrook2006-05-251-1/+7
| | | | | | | Add USB mass storage device emulation. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1940 c046a42c-6fe2-441c-8c8c-71466251a162
* USB tablet support (Brad Campbell, Anthony Liguori)bellard2006-04-121-15/+205
| | | | git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1810 c046a42c-6fe2-441c-8c8c-71466251a162
OpenPOWER on IntegriCloud