aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/input
AgeCommit message (Collapse)Author
2005-10-17[PATCH] USB: fix bug in handling of highspeed usb HID devicesChristian Krause
During the development of an USB device I found a bug in the handling of Highspeed HID devices in the kernel. What happened? Highspeed HID devices are correctly recognized and enumerated by the kernel. But even if usbhid kernel module is loaded, no HID reports are received by the kernel. The output of the hardware USB analyzer told me that the host doesn't even poll for interrupt IN transfers (even the "interrupt in" USB transfer are polled by the host). After some debugging in hid-core.c I've found the reason. In case of a highspeed device, the endpoint interval is re-calculated in driver/usb/input/hid-core.c: line 1669: /* handle potential highspeed HID correctly */ interval = endpoint->bInterval; if (dev->speed == USB_SPEED_HIGH) interval = 1 << (interval - 1); Basically this calculation is correct (refer to USB 2.0 spec, 9.6.6). This new calculated value of "interval" is used as input for usb_fill_int_urb: line 1685: usb_fill_int_urb(hid->urbin, dev, pipe, hid->inbuf, 0, hid_irq_in, hid, interval); Unfortunately the same calculation as above is done a second time in usb_fill_int_urb in the file include/linux/usb.h: line 933: if (dev->speed == USB_SPEED_HIGH) urb->interval = 1 << (interval - 1); else urb->interval = interval; This means, that if the endpoint descriptor (of a high speed device) specifies e.g. bInterval = 7, the urb->interval gets the value: hid-core.c: interval = 1 << (7-1) = 0x40 = 64 urb->interval = 1 << (interval -1) = 1 << (63) = integer overflow Because of this the value of urb->interval is sometimes negative and is rejected in core/urb.c: line 353: /* too small? */ if (urb->interval <= 0) return -EINVAL; The conclusion is, that the recalculaton of the interval (which is necessary for highspeed) should not be made twice, because this is simply wrong. ;-) Re-calculation in usb_fill_int_urb makes more sense, because it is the most general approach. So it would make sense to remove it from hid-core.c. Because in hid-core.c the interval variable is only used for calling usb_fill_int_urb, it is no problem to remove the highspeed re-calculation in this file. Signed-off-by: Christian Krause <chkr@plauener.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-12[PATCH] USB: add apple usb touchpad driverStelian Pop
This is a driver for the USB touchpad which can be found on post-February 2005 Apple PowerBooks. This driver is derived from Johannes Berg's appletrackpad driver [1], but it has been improved in some areas: * appletouch is a full kernel driver, no userspace program is necessary * appletouch can be interfaced with the synaptics X11 driver[2], in order to have touchpad acceleration, scrolling, two/three finger tap, etc. This driver has been tested by the readers of the 'debian-powerpc' mailing list for a few weeks now and I believe it is now ready for inclusion into the mainline kernel. Credits go to Johannes Berg for reverse-engineering the touchpad protocol, Frank Arnold for further improvements, and Alex Harper for some additional information about the inner workings of the touchpad sensors. Signed-off-by: Stelian Pop <stelian@popies.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-12Revert "[PATCH] USB: Prevent hid-core claiming Apple Bluetooth device on new ↵Greg KH
G4 powerbooks" This reverts 22af8878d2d641c6b15fe39fe4de3c05b2c477f0 commit. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-09Manual merge with LinusDmitry Torokhov
2005-09-08[PATCH] USB: yealink: fix htons usage, documentation updatesHenk
Signed-off-by: Henk Vergonet <henk.vergonet@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08[PATCH] USB: fix endian issues in yealink driver.Greg Kroah-Hartman
sparse still complains about the htons usage, but I'll leave that for others to fix. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08[PATCH] input-driver-yealink-P1K-usb-phoneHenk
This patch aggregates all modifications in the -mm tree and adds complete ringtone support. The following features are supported: - keyboard full support - LCD full support - LED full support - dialtone full support - ringtone full support - audio playback via generic usb audio diver - audio record via generic usb audio diver For driver documentation see: Documentation/input/yealink.txt For vendor documentation see: http://yealink.com Signed-off-by: Henk <Henk.Vergonet@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08[PATCH] USB: URB_ASYNC_UNLINK flag removed from the kernelAlan Stern
29 July 2005, Cambridge, MA: This afternoon Alan Stern submitted a patch to remove the URB_ASYNC_UNLINK flag from the Linux kernel. Mr. Stern explained, "This flag is a relic from an earlier, less-well-designed system. For over a year it hasn't been used for anything other than printing warning messages." An anonymous spokesman for the Linux kernel development community commented, "This is exactly the sort of thing we see happening all the time. As the kernel evolves, support for old techniques and old code can be jettisoned and replaced by newer, better approaches. Proprietary operating systems do not have the freedom or flexibility to change so quickly." Mr. Stern, a staff member at Harvard University's Rowland Institute who works on Linux only as a hobby, noted that the patch (labelled as548) did not update two files, keyspan.c and option.c, in the USB drivers' "serial" subdirectory. "Those files need more extensive changes," he remarked. "They examine the status field of several URBs at times when they're not supposed to. That will need to be fixed before the URB_ASYNC_UNLINK flag is removed." Greg Kroah-Hartman, the kernel maintainer responsible for overseeing all of Linux's USB drivers, did not respond to our inquiries or return our calls. His only comment was "Applied, thanks." Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08[PATCH] USB: Prevent hid-core claiming Apple Bluetooth device on new G4 ↵Andrew de Quincey
powerbooks To recap: My new G4 powerbook has a bluetooth device that boots up in what apppears to be a compatability mode - it looks exactly like an HID keyboard/mouse device. A special command sequence is sent to switch it into full bluetooth mode. When this occurs the original HID device vanishes, and a new (bluetooth HID) USB device appears on the bus with a different product ID. The original thread is here: http://sourceforge.net/mailarchive/message.php?msg_id=12532263 The attached patch adds the device to the hid-core quirks so that hid-core ignores it. Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08[PATCH] USB: fix keyspan_remote endian bug on probeGreg Kroah-Hartman
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-07[PATCH] USB: convert kcalloc to kzallocPekka Enberg
This patch converts kcalloc(1, ...) calls to use the new kzalloc() function. Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05Input: HIDDEV - make HIDIOCSREPORT wait IO completionStefan Nickl
When trying to make the hiddev driver issue several Set_Report control transfers to a custom device with 2.6.13-rc6, only the first transfer in a row is carried out, while others immediately following it are silently dropped. This happens where hid_submit_report() (in hid-core.c) tests for HID_CTRL_RUNNING, which seems to be still set because the first transfer is not finished yet. As a workaround, inserting a delay between the two calls to ioctl(HIDIOCSREPORT) in userspace "solves" the problem. The straightforward fix is to add a call to hid_wait_io() to the implementation of HIDIOCSREPORT (in hiddev.c), just like for HIDIOCGREPORT. Works fine for me. Apparently, this issue has some history: http://marc.theaimsgroup.com/?l=linux-usb-users&m=111100670105558&w=2 Signed-off-by: Stefan Nickl <Stefan.Nickl@kontron.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add Wireless Security Lock to HID blacklistBrian Schau
The device is a Wireless Security Lock (WSL). The device identifies itself as a Cypress Ultra Mouse. It is, however, not a mouse at all and as such, shouldn't be handled as one. Signed-off-by: Brian Schau <brian@schau.com> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add mapping for Powerbook USB keyboardStelian Pop
Map custom HID events (such as the ones generated by some Logitech and Apple Powerbooks USB keyboards) to the FN keycode. Signed-off-by: Stelian Pop <stelian@popies.net> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add the Trust Predator TH 400 gamepad to the badpad listVojtech Pavlik
Reported-by: Karl Relton <karllinuxtest.relton@ntlworld.com> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add a quirk for the Apple PowermouseVojtech Pavlik
Add a quirk for the Apple Powermouse, remapping GenericDesktop.Z to Rel.HWheel, to allow horizontal scrolling in Linux. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - fix URB success status handlingVojtech Pavlik
Add a missing break; statement to the URB status handling in hid-core.c, avoiding flushing the request queue on success. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add support for Logitech UltraX Media Remote controlMicah F. Galizia
The hid now supports the Logitech UltraX Media Remote control. For now, ID 45 on the consumer usage page has been incorrectly mapped to KEY_RADIO since no other devices uses it. Signed-off-by: Micah F. Galizia <mfgalizi@csd.uwo.ca> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - handle multi-transascion reportsMichael Haboustak
Fixes handling of multi-transaction reports for HID devices. New function hid_size_buffers() that calculates the longest report for each endpoint and stores the result in the hid_device object. These lengths are used to allocate buffers that are large enough to store any report on the endpoint. For compatibility, the minimum size for an endpoint buffer set to HID_BUFFER_SIZE rather than the known optimal case (the longest report length). It fixes bug #3063 in bugzilla. Signed-off-by: Michael Haboustak <mike-@cinci.rr.com> I simplified the patch a bit to use just a single buffer size. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: HID - add more consumer usagesVojtech Pavlik
Extend mapping of the consumer usage page in hid-input.c to handle more cases appearing on new USB keyboards. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Input: add HID simulation mappingsVojtech Pavlik
Add simulation usage page mappings to hid-input.c to support a new crop of joysticks using them to designate Rudder and Throttle controls. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-09-05Inpur: recognize and ignore Logitech vendor usages in HIDVojtech Pavlik
These get in our way with MX mice. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-08-16[PATCH] USB: fix usb wacom tablet driver bugPing Cheng
This patch fixes bug 4905 and a Cintiq 21UX bug. Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-29[PATCH] USB: hidinput_hid_event() oops fixPete Zaitcev
It seems that I see a bug in hidinput_hid_event. The check for NULL can never work, becaue &hidinput->input is nonzero at all times. Cc: <vojtech@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-29Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/inputLinus Torvalds
2005-07-12[PATCH] USB: add LD devices to hid blacklistMichael Hund
below you will find one patch to hid-core.c, which lets usbhid ignore our HID devices. It would be nice, if you can apply it. Signed-off-by: Michael Hund <mhund@ld-didactic.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-07-12[PATCH] USB: add driver for Keyspan Digital RemoteMichael Downey
This driver is a basic keypress input driver for the Keyspan Digital Remote with part number UIA-11. Currently there is an older remote with part number UIA-10 which isn't supported by this driver. Support for the older UIA-10 could be added but a binary file is required to be download to the device, and I don't have that file. I also don't have a UIA-10 device so I wouldn't be able to test any of the changes. Signed-off-by: Michael Downey <downey@zymeta.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-07-11Input: HID - only report events coming from interrupts to hiddevAdam Kropelin
Currently hid-core follows the same code path for input reports regardless of whether they are a result of interrupt transfers or control transfers. That leads to interrupt events erroneously being reported to hiddev for regular control transfers. Prior to 2.6.12 the problem was mitigated by the fact that reporting to hiddev is supressed if the field value has not changed, which is often the case. Said filtering was removed in 2.6.12-rc1 which means any input reports fetched via control transfers result in hiddev interrupt events. This behavior can quickly lead to a feedback loop where a userspace app, in response to interrupt events, issues control transfers which in turn create more interrupt events. This patch prevents input reports that arrive via control transfers from being reported to hiddev as interrupt events. Signed-off-by: Adam Kropelin <akropel1@rochester.rr.com> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-07-11Input: HID - add a quirk for Aashima Trust (06d6:0025) gamepadLuca T
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-30Input: introduce usb_to_input_id() to uniformly produceDmitry Torokhov
struct input_id for USB input devices. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-30Input: acecad - drop unneeded cast and couple unneeded spaces.Dmitry Torokhov
Noticed by Joe Perches. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Acked-by: Stephane VOLTZ <svoltz@numericable.fr>
2005-06-27Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6Linus Torvalds
2005-06-27Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/dtor/input.git manuallyLinus Torvalds
Some manual fixups required due to clashes with the PF_FREEZE cleanups.
2005-06-27[PATCH] USB: fix atiremote input doesn`t register `device` & `driver` ↵Vincent Vanackere
section in sysfs (/sys/class/input/event#) > On Sun, Apr 10, 2005 at 07:21:28PM +0600, Viktor A. Danilov wrote: > > > > PROBLEM: aiptek input doesn`t register `device` & `driver` section in sysfs (/sys/class/input/event#) > > REASON: `dev` - field not filled... > > SOLUTION: in linux/drivers/usb/input/aiptek.c write > > aiptek->inputdev.dev = &intf->dev; > > before calling > > input_register_device(&aiptek->inputdev); The following (tested) patch fixes the exact same issue with the ATI Remote input driver. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-22[PATCH] USB: fix hid core to return proper error code from probeStelian Pop
Drivers need to return -ENODEV when they can't bind to a device. Anything else stops the "bind a device to a driver" search. From: Stelian Pop <stelian@popies.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-20[PATCH] Driver Core: drivers/usb/input/aiptek.c - ↵Yani Ioannou
drivers/zorro/zorro-sysfs.c: update device attribute callbacks Signed-off-by: Yani Ioannou <yani.ioannou@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-06Input: wacom - fix formatting in accordance to CodingStyleDmitry Torokhov
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-06Input: Wacom driver updatePing Cheng
- add support for Cintiq 21UX - fix a Graphire bug - merge wacom_intuos3_irq into wacom_intuos_irq Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-06Input: add driver for Acecad Flair USB tabletsStephane VOLTZ
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-06Automatic merge of ↵Dmitry Torokhov
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
2005-06-03[PATCH] USB: add Vernier devices to HID blacklistGreg Kroah-Hartman
They aren't really HID devices. Damm microsoft HID driver, that thing has caused more companies to have to do this kind of hack... Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-03[PATCH] USB: hid-core: add Earthmate lt-20 productid to blacklist tableLonnie Mendez
This patch adds the DeLorme Earthmate lt-20 productid to the hid blacklist table. This patch ensures the lt-20 can be claimed by the appropriate driver (cypress_m8). Adds the product id 0x200, of the DeLorme Earthmate lt-20, to the hid blacklist table. Signed-off-by: Lonnie Mendez <lmendez19@austin.rr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-03[PATCH] USB: add new wacom device to usb hid-core listPing Cheng
- add Intuos3 and Cintiq 21UX Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-05-29Input: HID items of width 32 (bits) or greater are incorrectly extractedAdam Kropelin
due to a masking bug in hid-core.c:extract(). This patch fixes it up by forcing the mask to be 64 bits wide. Signed-off-by: Adam Kropelin <akropel1@rochester.rr.com> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: remove user counters from drivers/usb/input since inputDmitry Torokhov
core takes care of calling open and close methods only when needed. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: mtouchusb was indented with spaces instead of tabs, passDmitry Torokhov
through Lindent and adjust results. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: whitespace fixes in drivers/usb/inputDmitry Torokhov
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: Fix a warning in hid-core.Vojtech Pavlik
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: Make hid-core issue a SET_IDLE request before GET_REPORT, likeVojtech Pavlik
Windows does. This should make life easier for devices that were tested with Windows only. Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-05-29Input: Add driver for ITM Touch USB touchscreens.Hans-Christian Egtvedt
From: Hans-Christian Egtvedt <hc@mivu.no> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>