summaryrefslogtreecommitdiff
path: root/include/linux/serio.h
AgeCommit message (Collapse)Author
2017-03-25Input: serio - add fast reconnect optionDmitry Torokhov
Devices connected to serio bus are quite slow, and to improve apparent speed of resume process, serio core resumes (reconnects) its devices asynchronously, by posting port reconnect requests to a workqueue. Unfortunately this means that if there is a dependent device of a given serio port (for example SMBus part of touchpad connected via both PS/2 and SMBus), we do not have a good way of ensuring resume order. This change allows drivers to define "fast reconnect" handlers that would be called in-line during system resume. Drivers need to ensure that these handlers are truly "fast". Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2016-07-27Input: i8042 - break load dependency between atkbd/psmouse and i8042Dmitry Torokhov
As explained in 1407814240-4275-1-git-send-email-decui@microsoft.com we have a hard load dependency between i8042 and atkbd which prevents keyboard from working on Gen2 Hyper-V VMs. > hyperv_keyboard invokes serio_interrupt(), which needs a valid serio > driver like atkbd.c. atkbd.c depends on libps2.c because it invokes > ps2_command(). libps2.c depends on i8042.c because it invokes > i8042_check_port_owner(). As a result, hyperv_keyboard actually > depends on i8042.c. > > For a Generation 2 Hyper-V VM (meaning no i8042 device emulated), if a > Linux VM (like Arch Linux) happens to configure CONFIG_SERIO_I8042=m > rather than =y, atkbd.ko can't load because i8042.ko can't load(due to > no i8042 device emulated) and finally hyperv_keyboard can't work and > the user can't input: https://bugs.archlinux.org/task/39820 > (Ubuntu/RHEL/SUSE aren't affected since they use CONFIG_SERIO_I8042=y) To break the dependency we move away from using i8042_check_port_owner() and instead allow serio port owner specify a mutex that clients should use to serialize PS/2 command stream. Reported-by: Mark Laws <mdl@60hz.org> Tested-by: Mark Laws <mdl@60hz.org> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2015-07-16Input: i8042 - add unmask_kbd_data optionStephen Chandler Paul
A big problem with the current i8042 debugging option is that it outputs data going to and from the keyboard by default. As a result, many dmesg logs uploaded by users will unintentionally contain sensitive information such as their password, as such it's probably a good idea not to output data coming from the keyboard unless specifically enabled by the user. Signed-off-by: Stephen Chandler Paul <cpaul@redhat.com> Reviewed-by: Andreas Mohr <andim2@users.sf.net> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2014-04-19Input: serio - add firmware_id sysfs attributeHans de Goede
serio devices exposed via platform firmware interfaces such as ACPI may provide additional identifying information of use to userspace. We don't associate the serio devices with the firmware device (we don't set it as parent), so there's no way for userspace to make use of this information. We cannot change the parent for serio devices instantiated though a firmware interface as that would break suspend / resume ordering. Therefore this patch adds a new firmware_id sysfs attribute so that userspace can get a string from there with any additional identifying information the firmware interface may provide. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2012-10-13UAPI: (Scripted) Disintegrate include/linuxDavid Howells
Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Michael Kerrisk <mtk.manpages@gmail.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Dave Jones <davej@redhat.com>
2012-04-04Input: serio - add helper macro for serio_driver boilerplateAxel Lin
This patch introduces the module_serio_driver macro which is a convenience macro for serio driver modules similar to module_platform_driver. It is intended to be used by drivers which init/exit section does nothing but registers/unregisters the serio driver. By using this macro it is possible to eliminate a few lines of boilerplate code per serio driver. Based on work done by Lars-Peter Clausen <lars@metafoo.de> for other buses (i2c and spi). Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2011-10-31include: convert various register fcns to macros to avoid include chainingPaul Gortmaker
The original implementations reference THIS_MODULE in an inline. We could include <linux/export.h>, but it is better to avoid chaining. Fortunately someone else already thought of this, and made a similar inline into a #define in <linux/device.h> for device_schedule_callback(), [see commit 523ded71de0] so follow that precedent here. Also bubble up any __must_check that were used on the prev. wrapper inline functions up one to the real __register functions, to preserve any prev. sanity checks that were used in those instances. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2011-09-28Input: add a driver for TSC-40 serial touchscreenSebastian Andrzej Siewior
This patch adds the TSC-40 serial touchscreen driver and should be compatible with TSC-10 and TSC-25. The driver was written by Linutronix on behalf of Bachmann electronic GmbH. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-10-18Input: serio - add support for PS2Mult multiplexer protocolDmitry Eremin-Solenikov
PS2Mult is a simple serial protocol used for multiplexing several PS/2 streams into one serial data stream. It's used e.g. on TQM85xx series of boards. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-10-13Input: serio - support multiple child devices per single parentDmitry Eremin-Solenikov
Some (rare) serio devices need to have multiple serio children. One of the examples is PS/2 multiplexer present on several TQC STKxxx boards, which connect PS/2 keyboard and mouse to single tty port. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-09-14Input: serio_driver - drop private pointerDmitry Torokhov
Nobody uses it anymore. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-09-14Input: serio_driver - mark id_table and description as constDmitry Torokhov
Memory pointed to by these fields is not supposed to change. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-04-13Input: add driver for hampshire serial touchscreensAdam Bennett
Adds support for Hampshire TSHARC serial touchscreens. Implements Hampshire's 4-byte communication protocol. Signed-off-by: Adam Bennett <abennett72@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-01-21Merge commit 'v2.6.33-rc5' into nextDmitry Torokhov
2010-01-06Input: serio - let device core tell us if device was registeredDmitry Torokhov
No need to keep track of it by ourselves. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2010-01-06Input: serio - fix potential deadlock when unbinding driversEric W. Biederman
sysfs_remove_group() waits for sysfs attributes to be removed, therefore we do not need to worry about driver-specific attributes being accessed after driver has been detached from the device. In fact, attempts to take serio->drv_mutex in attribute methods may lead to the following deadlock: sysfs_read_file() fill_read_buffer() sysfs_get_active_two() psmouse_attr_show_helper() serio_pin_driver() serio_disconnect_driver() mutex_lock(&serio->drv_mutex); <--------> mutex_lock(&serio_drv_mutex); psmouse_disconnect() sysfs_remove_group(... psmouse_attr_group); .... sysfs_deactivate(); wait_for_completion(); Fix this by removing calls to serio_[un]pin_driver() and functions themselves and using driver-private mutexes to serialize access to attribute's set() methods that may change device state. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2009-10-26Input: add driver for Dynapro serial touchscreenTias Guns
This is a driver for Dynapro serial touchscreen, which used to be supported in Xorg. The driver needs updated inputattach utility to initialize serial port and create proper serio device before the driver will be bound to it. Signed-off-by: Tias Guns <tias@ulyssis.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2009-07-26Input: serio - switch to using dev_pm_opsDmitry Torokhov
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2009-05-09Input: serio - do not use deprecated dev.power.power_stateDmitry Torokhov
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2009-03-07Input: serio - fix protocol number for TouchIT213Dmitry Torokhov
Protocol 0x37 has been reserved for iNexio devices and Sahara was supposed to get 0x38. Reported-by: Claudio Nieder <private@claudio.ch> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-11-24Input: add support for Wacom W8001 penabled serial touchscreenJaya Kumar
The Wacom W8001 sensor is a sensor device (uses electromagnetic resonance) and it is interfaced via its serial microcontroller to the host. Signed-off-by: Jaya Kumar <jayakumar.lkml@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-07-23Input: serio - mark serio_register_driver() __must_checkDmitry Torokhov
Also remove extra declaration of serio_register_driver(). Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-07-08Input: serio - trivial documentation fixNiels de Vos
In include/linux/serio.h two different define-series are documented as "Serio types". However the second series contains defines for the different protocols. Signed-off-by: Niels de Vos <niels.devos@wincor-nixdorf.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-07-07Input: add driver for Tabletkiosk Sahara TouchIT-213 touchscreenClaudio Nieder
Signed-off-by: Claudio Nieder <private@claudio.ch> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-06-30Input: Add driver for iNexio serial touchscreen.Richard Lemon
Signed-off-by: Richard Lemon <richard@codelemon.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2008-04-15Input: add Zhen Hua driverMartin Kebert
This is a driver for Zhen Hua PPM-4CH RC transmitter (commonly used in cheap Ready To Fly RC helicopters by Walkera) which using "Zhen Hua 5-byte protocol" for using them as a four axis joystick via serial port. Transmitter connected to serial port (19200 8N1) sending periodically 5 bytes where first byte is for synchronization and next four bytes are values of axis. Signed-off-by: Martin Kebert <gkmarty@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2007-07-18Input: add driver for Fujitsu serial touchscreensDmitry Torokhov
These serial touchscreens are found on some Fujitsu lifebook P-series laptops, and the B6210. Using this requires a new version of inputattach and doing: inputattach -fjt /dev/ttyS0 Big thanks to Stephen Hemminger for testing it and making it work on his B6210 laptop. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2007-07-12i2c: New bus driver for the TAOS evaluation modulesJean Delvare
This is a new I2C bus driver for the TAOS evaluation modules. Developped and tested on the TAOS TSL2550 EVM. Signed-off-by: Jean Delvare <khali@linux-fr.org>
2007-02-18Input: i8042 - let serio bus suspend portsDmitry Torokhov
Let serio subsystem take care of suspending the ports; concentrate on suspending/resuming the controller itself. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2007-02-07SERIO: add the sysfs driver name to all modulesGreg Kroah-Hartman
This adds the module name to all SERIO drivers, if they are built into the kernel or not. It will show up in /sys/modules/MODULE_NAME/drivers/ Cc: Kay Sievers <kay.sievers@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-11-23Input: serio - make serio_register_driver() return errorsDmitry Torokhov
Perform actual driver registration right in serio_register_driver() instead of offloading it to kseriod and return proper error code to callers if driver registration fails. Note that driver <-> port matching is still done by kseriod to speed up boot process since probing for PS/2 mice and keyboards is pretty slow. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-11-17Input: serio - remove serio_unregister_port_delayed()Dmitry Torokhov
Now that i8042 reserves IRQs early there are no more users of this function and it should be removed. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-10-11Input: serio - add lockdep annotationsJiri Kosina
Signed-off-by: Jiri Kosina <jikos@jikos.cz> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-10-05IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-08-05Input: add driver for Touchwin serial touchscreensRick Koch
Signed-off-by: Rick Koch <n1gp@hotmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-08-05Input: add driver for Touchright serial touchscreensRick Koch
Signed-off-by: Rick Koch <n1gp@hotmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-08-05Input: add driver for Penmount serial touchscreensRick Koch
Signed-off-by: Rick Koch <n1gp@hotmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2006-04-02Manual merge with Linus.Dmitry Torokhov
Conflicts: arch/powerpc/kernel/setup-common.c drivers/input/keyboard/hil_kbd.c drivers/input/mouse/hil_ptr.c
2006-03-26[PATCH] more s/fucn/func/ typo fixesAkinobu Mita
s/fucntion/function/ typo fixes Signed-off-by: Akinobu Mita <mita@miraclelinux.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-19Input: serio - semaphore to mutex conversionArjan van de Ven
The conversion was generated via scripts, and the result was validated automatically via a script as well. Signed-off-by: Arjan van de Ven <arjan@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-06-01Input: psmouse - export protocol as a sysfs per-device attributeDmitry Torokhov
to allow easy switching at run-time. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2005-04-16Linux-2.6.12-rc2v2.6.12-rc2Linus Torvalds
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!