Set ledout and mode registers
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user