diff options
author | Antti Seppälä <a.seppala@gmail.com> | 2014-01-25 04:57:46 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-02-04 14:47:26 -0500 |
commit | dee88f4378d18b4e7ebca22c82dab2ed5dfd178c (patch) | |
tree | f9bc8cd1588a365879955babe35d70dd1f692867 /drivers/media/rc | |
parent | 8d2b022911c2fa72085df39921dc5cd963bc159f (diff) |
[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>
Diffstat (limited to 'drivers/media/rc')
-rw-r--r-- | drivers/media/rc/nuvoton-cir.c | 4 | ||||
-rw-r--r-- | drivers/media/rc/nuvoton-cir.h | 1 |
2 files changed, 0 insertions, 5 deletions
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c index 21ee0dc1b7ec..b41e52e3471a 100644 --- a/drivers/media/rc/nuvoton-cir.c +++ b/drivers/media/rc/nuvoton-cir.c | |||
@@ -330,9 +330,6 @@ static void nvt_cir_wake_ldev_init(struct nvt_dev *nvt) | |||
330 | /* Enable CIR Wake via PSOUT# (Pin60) */ | 330 | /* Enable CIR Wake via PSOUT# (Pin60) */ |
331 | nvt_set_reg_bit(nvt, CIR_WAKE_ENABLE_BIT, CR_ACPI_CIR_WAKE); | 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 | /* enable pme interrupt of cir wakeup event */ | 333 | /* enable pme interrupt of cir wakeup event */ |
337 | nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); | 334 | nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); |
338 | 335 | ||
@@ -456,7 +453,6 @@ static void nvt_enable_wake(struct nvt_dev *nvt) | |||
456 | 453 | ||
457 | nvt_select_logical_dev(nvt, LOGICAL_DEV_ACPI); | 454 | nvt_select_logical_dev(nvt, LOGICAL_DEV_ACPI); |
458 | nvt_set_reg_bit(nvt, CIR_WAKE_ENABLE_BIT, CR_ACPI_CIR_WAKE); | 455 | nvt_set_reg_bit(nvt, CIR_WAKE_ENABLE_BIT, CR_ACPI_CIR_WAKE); |
459 | nvt_set_reg_bit(nvt, CIR_INTR_MOUSE_IRQ_BIT, CR_ACPI_IRQ_EVENTS); | ||
460 | nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); | 456 | nvt_set_reg_bit(nvt, PME_INTR_CIR_PASS_BIT, CR_ACPI_IRQ_EVENTS2); |
461 | 457 | ||
462 | nvt_select_logical_dev(nvt, LOGICAL_DEV_CIR_WAKE); | 458 | nvt_select_logical_dev(nvt, LOGICAL_DEV_CIR_WAKE); |
diff --git a/drivers/media/rc/nuvoton-cir.h b/drivers/media/rc/nuvoton-cir.h index 07e83108df0f..e1cf23c3875b 100644 --- a/drivers/media/rc/nuvoton-cir.h +++ b/drivers/media/rc/nuvoton-cir.h | |||
@@ -363,7 +363,6 @@ struct nvt_dev { | |||
363 | #define LOGICAL_DEV_ENABLE 0x01 | 363 | #define LOGICAL_DEV_ENABLE 0x01 |
364 | 364 | ||
365 | #define CIR_WAKE_ENABLE_BIT 0x08 | 365 | #define CIR_WAKE_ENABLE_BIT 0x08 |
366 | #define CIR_INTR_MOUSE_IRQ_BIT 0x80 | ||
367 | #define PME_INTR_CIR_PASS_BIT 0x08 | 366 | #define PME_INTR_CIR_PASS_BIT 0x08 |
368 | 367 | ||
369 | /* w83677hg CIR pin config */ | 368 | /* w83677hg CIR pin config */ |