- 12 12月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
We need to protect not only i8042 status and data register from concurrent access from IRQ 1 and 12 but the rest of the shared state as well, so let's move release of i8042_lock in i8042_interrupt() a little bit further down. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 03 11月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
If user presses keys while i8042 is being initialized there is a chance that keyboard data will be mistaken for results of Read Control Register command causing futher troubles. Work around this issue by reading CTR several times and stop when we get matching results. Reported-and-tested-by: NDave Young <hidave.darkstar@gmail.com> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 09 10月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
Sometimes it is not clear why IRQ delivery test failed so let's add some debug printks so we know the exact reason. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 18 9月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
The serio ports on i8042 are not completely isolated; while we provide enough locking to ensure proper serialization when accessing control and data registers AUX and KBD ports can still have an effect on each other on PS/2 protocol level. The most prominent effect is that issuing a command for the device connected to one port may cause abort of the command currently executing by the device connected to another port. Since i8042 nor serio subsystem are not aware of the details of the PS/2 protocol (length of the commands and their replies and so on) the locking should be done on libps2 level by adding special handling when we see that we are dealing with serio port on i8042. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 11 9月, 2009 4 次提交
-
-
由 Dmitry Torokhov 提交于
i8042 is not hot-pluggable and we create the device when we register the driver, so let's save some memory by using platform_device_probe and using __init instead of __devinit. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Dmitry Torokhov 提交于
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Dmitry Torokhov 提交于
Ever since we switched from having a polling timer to registering IRQ handlers for both keyboard and AUX ports at the driver registration time, on certain boxes probing for a mouse results in keyboard stopping working. The only real difference between old and new way is that before we disabled ports after unsuccessful probe whereas now we leave them as is. Try to emulate the old behavior by disabling and immediately re-enabling AUX and KBD ports when corresponding serio port is being closed. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Dmitry Torokhov 提交于
It seems that many laptops do not fully implement AUX LOOP command in their keyboard controllers, causing issues with touchpad detection. We know however that almost every laptop/portable uses a PS/2 pointing device and, even if user disables it in favor of an external mouse, the system will not use IRQ 12 for anything else. Therefore we may bypass AUX IRQ delivery test when running on a laptop and assume that it is routed properly. Just to be safe we require the box to have good PNP data in order to bypass the test. [Jin Dongming <jin.dongming@np.css.fujitsu.com>: fix crash caused by missing terminator in the DMI table] Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 27 7月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 08 7月, 2009 1 次提交
-
-
Serio ports are not being restarted any longer because resume operations after hibernate do nothing, since the device has not been marked as suspended. This happens because suspend is only considering the SUSPEND event but not the FREEZE event. Note that this driver has still to migrate to dev_pm_ops, but this fixes this particular bug now. Signed-off-by: NThadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 10 5月, 2009 1 次提交
-
-
由 Dmitry Torokhov 提交于
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 12 4月, 2009 1 次提交
-
-
由 Arjan van de Ven 提交于
Some touchpads don't reset right the first time (MSI Wind U-100 for example). This patch will retry the reset up to 5 times. In addition, on x86, we don't fail entire i8042 initialization if controller reset fails in hope that keyboard port will still be functional and user will still get a working keyboard. This is especially important on netbooks. Signed-off-by: NArjan van de Ven <arjan@linux.intel.com> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 17 6月, 2008 1 次提交
-
-
由 Jiri Kosina 提交于
There are systems that fail in i8042_resume() with i8042: Can't write CTR to resume as i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR) fails even though the controller claimed itself to be ready before. One retry after failing write fixes the problems on the failing systems. Reported-by: NHelmut Schaa <hschaa@novell.com> Signed-off-by: NJiri Kosina <jkosina@suse.cz> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 27 5月, 2008 1 次提交
-
-
由 Bruno Prémont 提交于
Also do not fail i8042 entire initialization if enabling dritek extension fails. Signed-off-by: NBruno Prémont <bonbons@linux-vserver.org> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 14 3月, 2008 1 次提交
-
-
由 Roland Dreier 提交于
Commit c18bab80 ("Input: i8042 - non-x86 build fix") introduced the following warning on non-x86 builds: drivers/input/serio/i8042.c: In function 'i8042_probe': drivers/input/serio/i8042.c:1154: warning: unused variable 'param' Fix this by moving the parameter variable declaration into the #ifdef too. Signed-off-by: NRoland Dreier <rolandd@cisco.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NJiri Kosina <jkosina@suse.cz> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 06 2月, 2008 1 次提交
-
-
由 Andrew Morton 提交于
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 21 1月, 2008 3 次提交
-
-
由 Carlos Corbacho 提交于
Some Wistron based laptops need us to explicitly enable the 'Dritek keyboard extension' to make their extra keys start generating scancodes. Originally, this was just confined to older laptops, but a few Acer laptops have turned up in 2007 that also need this again. Signed-off-by: NCarlos Corbacho <carlos@strangeworlds.co.uk> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Julia Lawall 提交于
Drop #include <linux/moduleparam.h> in files that also include linux/module.h, since module.h includes moduleparam.h already. Signed-off-by: NJulia Lawall <julia@diku.dk> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Dmitry Torokhov 提交于
RT guys advised me that in their kernels synchronize_sched() will not work to ensure that all IRQ handlers run to their completion and that synchronize_irq() should be used instead. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 22 10月, 2007 1 次提交
-
-
由 Márton Németh 提交于
Export the i8042_command() function which manages the mutual exclusion with the help of the i8042_lock spinlock. This allows to access i8042 safely from other parts of the kernel. Signed-off-by: NMárton Németh <nm127@freemail.hu> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 05 9月, 2007 1 次提交
-
-
由 Ralf Baechle 提交于
i8042_unregister_ports's only caller i8042_remove is a __devexit function so make it __devexit too. Signed-off-by: NRalf Baechle <ralf@linux-mips.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 30 8月, 2007 1 次提交
-
-
We should not return IRQ_HANDLED if we didn't handle the interrupt. Signed-off-by: NFernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 18 7月, 2007 1 次提交
-
-
由 Markus Armbruster 提交于
When enabling interrupts for a port fails, the interrupt enable and port enable bits remain set in i8042_ctr. Later writes of i8042_ctr to the hardware could accidentally retry enabling interrupts. Clear the bits on failure. Signed-off-by: NMarkus Armbruster <armbru@redhat.com> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 08 5月, 2007 1 次提交
-
-
由 Roland Scheidegger 提交于
The i8042 driver fails detection of the AUX port with some chips, because they apparently do not change the I8042_CTR_AUXDIS bit immediately. This is known to affect at least HP500/HP510 notebooks, consequently the built-in touchpad will not work. The patch will simply reread the value until it gets the expected value or a retry limit is hit, without touching other workaround code in the same area. Signed-off-by: NRoland Scheidegger <sroland@tungstengraphics.com> Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 12 4月, 2007 1 次提交
-
-
由 Dmitry Torokhov 提交于
Disable both keyboard and auxiliary interfaces before switching to legacy mode to prevent atkbd from getting "empty" interrupts. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 08 3月, 2007 1 次提交
-
-
由 Dmitry Torokhov 提交于
Do not assume that AUX_LOOP command is broken unless it completes successfully but returns wrong (unexpected) data. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 18 2月, 2007 2 次提交
-
-
由 Dmitry Torokhov 提交于
They have been marked as __obsolete_setup() for several years, it is time for them to go. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
由 Dmitry Torokhov 提交于
Let serio subsystem take care of suspending the ports; concentrate on suspending/resuming the controller itself. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 10 2月, 2007 1 次提交
-
-
由 Dmitry Torokhov 提交于
On boxes that do not implement AUX LOOP command we can not verify AUX IRQ delivery and must assume that it is wired properly. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 18 1月, 2007 1 次提交
-
-
由 Dmitry Torokhov 提交于
On some boxes panic blink procedure manages to send both bytes to keyboard contoller before getting first ACK so we need to make i8042_suppress_kbd_ack a counter instead of boolean. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 17 11月, 2006 1 次提交
-
-
由 Dmitry Torokhov 提交于
MUX error handling has a workaround for KBCs that get confused which port data came from and signal MUXERR while data is actually good. Unfortunately this workaround hurts with KBCs that signal timeouts as 0xfc (spec says that only 0xfd, 0xfe and 0xff are alowed with MUXERR) since it causes endless attempts to rescan i8042 serio ports. The solution is to treat 0xfc as timeout (0xfe). Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 03 11月, 2006 1 次提交
-
-
由 Dmitry Torokhov 提交于
Remove call to i8042_interrupt() from i8042_aux_write(). According to Vojtech it may cause problems with older controllers if it is called right after real interrupt. Also it is not needed anymore since we register IRQs early and not waiting for serio ports to be opened. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 11 10月, 2006 1 次提交
-
-
由 Dmitry Torokhov 提交于
This allows using SysRq and not fill logs with complaints from atkbd. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 05 10月, 2006 1 次提交
-
-
由 David 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: NDavid Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
-
- 11 9月, 2006 1 次提交
-
-
由 Dmitry Torokhov 提交于
Remove polling timer that was used to detect keybord/mice hotplug and register both IRQs right away instead of waiting for a driver to attach to a port. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 03 7月, 2006 1 次提交
-
-
由 Thomas Gleixner 提交于
Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: "David S. Miller" <davem@davemloft.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 01 7月, 2006 1 次提交
-
-
由 Jörn Engel 提交于
Signed-off-by: NJörn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: NAdrian Bunk <bunk@stusta.de>
-
- 28 12月, 2005 1 次提交
-
-
由 Dmitry Torokhov 提交于
Do not use platform_device_register_simple() as it is going away, implement ->probe() and ->remove() functions so manual binding and unbinding will work with this driver. Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
-
- 10 11月, 2005 1 次提交
-
-
由 Russell King 提交于
This allows us to eliminate the casts in the drivers, and eventually remove the use of the device_driver function pointer methods for platform device drivers. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
-
- 30 10月, 2005 1 次提交
-
-
由 Russell King 提交于
Convert everyone who uses platform_bus_type to include linux/platform_device.h. Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
-