From 7a30eadebe4a67b860e9fb9fac2ecad7ef8a74e8 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 21 Feb 2020 16:02:32 -0700 Subject: [PATCH] Set ledout and mode registers --- src/board/system76/darp5/include/board/kbled.h | 1 + src/board/system76/darp5/kbled.c | 18 ++++++++++++++++++ src/board/system76/darp5/power.c | 3 +++ 3 files changed, 22 insertions(+) diff --git a/src/board/system76/darp5/include/board/kbled.h b/src/board/system76/darp5/include/board/kbled.h index 373ff89..895542c 100644 --- a/src/board/system76/darp5/include/board/kbled.h +++ b/src/board/system76/darp5/include/board/kbled.h @@ -4,6 +4,7 @@ #include void kbled_init(void); +void kbled_reset(void); uint8_t kbled_get(void); void kbled_set(uint8_t level); void kbled_set_color(uint32_t color); diff --git a/src/board/system76/darp5/kbled.c b/src/board/system76/darp5/kbled.c index 530392c..cbb850b 100644 --- a/src/board/system76/darp5/kbled.c +++ b/src/board/system76/darp5/kbled.c @@ -16,8 +16,23 @@ static uint8_t __code levels[] = { void kbled_init(void) { i2c_reset(&I2C_KBLED, true); +} + +void kbled_reset(void) { kbled_set(0xFF); kbled_set_color(0xFFFFFF); + + // Enable output of channel 0 - 8 + uint8_t value = 0xFF; + kbled_i2c_set(0x14, &value, 1); + value = 0xFF; + kbled_i2c_set(0x15, &value, 1); + value = 0x03; + kbled_i2c_set(0x16, &value, 1); + + // Exit sleep mode + value = 0; + kbled_i2c_set(0x00, &value, 1); } uint8_t kbled_get(void) { @@ -41,16 +56,19 @@ void kbled_set(uint8_t level) { } void kbled_set_color(uint32_t color) { + // Set channel 0 - 2 to blue component uint8_t b = (uint8_t)(color); kbled_i2c_set(0x02, &b, 1); kbled_i2c_set(0x03, &b, 1); kbled_i2c_set(0x04, &b, 1); + // Set channel 3 - 5 to green component uint8_t g = (uint8_t)(color >> 8); kbled_i2c_set(0x05, &g, 1); kbled_i2c_set(0x06, &g, 1); kbled_i2c_set(0x07, &g, 1); + // Set channel 6 - 8 to red component uint8_t r = (uint8_t)(color >> 16); kbled_i2c_set(0x08, &r, 1); kbled_i2c_set(0x09, &r, 1); diff --git a/src/board/system76/darp5/power.c b/src/board/system76/darp5/power.c index daeb04b..21898c2 100644 --- a/src/board/system76/darp5/power.c +++ b/src/board/system76/darp5/power.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -283,6 +284,8 @@ void power_event(void) { // LPC was just reset, enable PNP devices pnp_enable(); //TODO: reset KBC and touchpad states + + kbled_reset(); } rst_last = rst_new;