Set ledout and mode registers

This commit is contained in:
Jeremy Soller 2020-02-21 16:02:32 -07:00
parent a90b2a8c67
commit 7a30eadebe
No known key found for this signature in database
GPG Key ID: E988B49EE78A7FB1
3 changed files with 22 additions and 0 deletions

View File

@ -4,6 +4,7 @@
#include <stdint.h>
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);

View File

@ -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);

View File

@ -2,6 +2,7 @@
#include <arch/time.h>
#include <board/battery.h>
#include <board/gpio.h>
#include <board/kbled.h>
#include <board/lid.h>
#include <board/power.h>
#include <board/pmc.h>
@ -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;