From 6e9f52efabf6ce3cb7fb3f9e418bc7682a39cd8b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 8 Nov 2019 11:28:40 -0700 Subject: [PATCH] Enable interrupts on request --- src/board/system76/galp3-c/kbc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/board/system76/galp3-c/kbc.c b/src/board/system76/galp3-c/kbc.c index d31b575..eab616c 100644 --- a/src/board/system76/galp3-c/kbc.c +++ b/src/board/system76/galp3-c/kbc.c @@ -4,9 +4,9 @@ #include void kbc_init(void) { + // Disable interrupts *(KBC.irq) = 0; - // Enable IRQ1 on keyboard output and IRQ12 on mouse output - *(KBC.control) = 0x03; + *(KBC.control) = 0; } enum KbcState { @@ -98,6 +98,18 @@ void kbc_event(struct Kbc * kbc) { case KBC_STATE_WRITE_CONFIG: printf(" write configuration byte\n"); state = KBC_STATE_NORMAL; + uint8_t control = *kbc->control; + if (data & 1) { + control |= 1; + } else { + control &= ~1; + } + if (data & (1 << 1)) { + control |= (1 << 1); + } else { + control &= ~(1 << 1); + } + *kbc->control = control; break; case KBC_STATE_SET_LEDS: printf(" set leds\n");