Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] nuvoton-cir: Don't touch PS/2 interrupts while initializing

There are reports[1] that on some motherboards loading the nuvoton-cir
disables PS/2 keyboard input. This is caused by an erroneous write of
CIR_INTR_MOUSE_IRQ_BIT to ACPI control register.

According to datasheet the write enables mouse power management event
interrupts which will probably have ill effects if the motherboard has
only one PS/2 port with keyboard in it.

The cir hardware does not need mouse interrupts to function and should
not touch them. This patch removes the illegal writes and registry
definitions.

[1] http://ubuntuforums.org/showthread.php?t=2106277&p=12461912&mode=threaded#post12461912

Reported-by: Bruno Maire <bruno.maire@besonet.ch>
Tested-by: Bruno Maire <bruno.maire@besonet.ch>
Signed-off-by: Antti Seppälä <a.seppala@gmail.com>
Acked-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>

authored by

Antti Seppälä and committed by
Mauro Carvalho Chehab
dee88f43 8d2b0229

-5
-4
drivers/media/rc/nuvoton-cir.c
··· 330 330 /* Enable CIR Wake via PSOUT# (Pin60) */ 331 331 nvt_set_reg_bit(nvt, CIR_WAKE_ENABLE_BIT, CR_ACPI_CIR_WAKE); 332 332 333 - /* enable cir interrupt of mouse/keyboard IRQ event */ 334 - nvt_set_reg_bit(nvt, CIR_INTR_MOUSE_IRQ_BIT, CR_ACPI_IRQ_EVENTS); 335 - 336 333 /* enable pme interrupt of cir wakeup event */ 337 334 nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); 338 335 ··· 453 456 454 457 nvt_select_logical_dev(nvt, LOGICAL_DEV_ACPI); 455 458 nvt_set_reg_bit(nvt, CIR_WAKE_ENABLE_BIT, CR_ACPI_CIR_WAKE); 456 - nvt_set_reg_bit(nvt, CIR_INTR_MOUSE_IRQ_BIT, CR_ACPI_IRQ_EVENTS); 457 459 nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); 458 460 459 461 nvt_select_logical_dev(nvt, LOGICAL_DEV_CIR_WAKE);
-1
drivers/media/rc/nuvoton-cir.h
··· 363 363 #define LOGICAL_DEV_ENABLE 0x01 364 364 365 365 #define CIR_WAKE_ENABLE_BIT 0x08 366 - #define CIR_INTR_MOUSE_IRQ_BIT 0x80 367 366 #define PME_INTR_CIR_PASS_BIT 0x08 368 367 369 368 /* w83677hg CIR pin config */