From 2c9596555be54761d2708c4a2a1100335e99a825 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Tue, 5 Sep 2023 11:27:46 -0500 Subject: [PATCH] mb/google/skyrim: Use edge (vs level) triggering for PS2K For reasons currently unknown, using a level triggered interrupt for the PS2 keyboard causes an IRQ storm under Windows when any key is pressed, leading to audio distortion/dropouts. Work around this by using an edge triggered interrupt instead. BUG=none TEST=build/boot Win11, Linux on google/skyrim (frostflow), verify kb functionality, verify no IRQ storm or audio stutter/distortion under Windows. Change-Id: I6de426c5780b2f05571415e8e411e379de45b5bf Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/77679 Tested-by: build bot (Jenkins) Reviewed-by: Raul Rangel --- .../skyrim/variants/baseboard/include/baseboard/ec.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/ec.h b/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/ec.h index b7269f64cb..aeff2459b8 100644 --- a/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/ec.h +++ b/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/ec.h @@ -69,7 +69,12 @@ #define SIO_EC_MEMMAP_ENABLE /* EC Memory Map Resources */ #define SIO_EC_HOST_ENABLE /* EC Host Interface Resources */ #define SIO_EC_ENABLE_PS2K /* Enable PS/2 Keyboard */ -#define SIO_EC_PS2K_IRQ Interrupt(ResourceConsumer, Level, ActiveLow, Shared) {1} +/* + * This interrupt should technically be level, since that is the contract between the EC + * and the AP, but under Windows it produces an IRQ storm so Edge needs to be used instead. + * Both Windows and Linux are happy with Edge, so we'll use it for now. + */ +#define SIO_EC_PS2K_IRQ Interrupt(ResourceConsumer, Edge, ActiveLow, Shared) {1} /* Enable EC sync interrupt */ #define EC_ENABLE_SYNC_IRQ_GPIO