From edbb6136dc9ff62ae894598de0a1fdc46978d753 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 28 Jan 2020 15:02:12 -0700 Subject: [PATCH] Add support for LED brightness setting --- src/board/system76/galp3-c/acpi.c | 52 ++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/board/system76/galp3-c/acpi.c b/src/board/system76/galp3-c/acpi.c index e42f6ae..299878c 100644 --- a/src/board/system76/galp3-c/acpi.c +++ b/src/board/system76/galp3-c/acpi.c @@ -1,11 +1,34 @@ #include #include +#include +#include #include #include -#include extern bool lid_wake; +uint8_t fcmd = 0; +uint8_t fdat = 0; +uint8_t fbuf[4] = { 0, 0, 0, 0 }; + +void fcommand(void) { + switch (fcmd) { + // Keyboard backlight + case 0xCA: + switch (fdat) { + // Set white LED brightness + case 0x00: + DACDAT5 = fbuf[0]; + break; + // Get white LED brightness + case 0x01: + fbuf[0] = DACDAT5; + break; + } + break; + } +} + uint8_t acpi_read(uint8_t addr) { uint8_t data = 0; @@ -66,6 +89,13 @@ uint8_t acpi_read(uint8_t addr) { // Set size of flash (from old firmware) ACPI_8 (0xE5, 0x80); + + ACPI_8 (0xF8, fcmd); + ACPI_8 (0xF9, fdat); + ACPI_8 (0xFA, fbuf[0]); + ACPI_8 (0xFB, fbuf[1]); + ACPI_8 (0xFC, fbuf[2]); + ACPI_8 (0xFD, fbuf[3]); } DEBUG("acpi_read %02X = %02X\n", addr, data); @@ -86,5 +116,25 @@ void acpi_write(uint8_t addr, uint8_t data) { case 0xD9: gpio_set(&LED_AIRPLANE_N, !(bool)(data & (1 << 6))); break; + + case 0xF8: + fcmd = data; + fcommand(); + break; + case 0xF9: + fdat = data; + break; + case 0xFA: + fbuf[0] = data; + break; + case 0xFB: + fbuf[1] = data; + break; + case 0xFC: + fbuf[2] = data; + break; + case 0xFD: + fbuf[3] = data; + break; } }