Use EC functions to set KB color

This commit is contained in:
Jeremy Soller 2018-01-02 16:24:53 -07:00
parent 5f631c3b2f
commit 1cc36c89ec
2 changed files with 23 additions and 43 deletions

24
ec.c
View File

@ -26,24 +26,28 @@
#define FBF2 0xFC
#define FBF3 0xFD
enum KbRegion {
KB_LEFT,
KB_CENTER,
KB_RIGHT,
enum EcKbRegion {
EC_KB_LEFT,
EC_KB_CENTER,
EC_KB_RIGHT,
EC_KB_EXTRA,
};
static void ec_kb_color_set(enum KbRegion region, u32 color) {
static void ec_kb_color_set(enum EcKbRegion region, u32 color) {
u8 region_code;
switch(region) {
case KB_LEFT:
case EC_KB_LEFT:
region_code = 0x3;
break;
case KB_CENTER:
case EC_KB_CENTER:
region_code = 0x4;
break;
case KB_RIGHT:
case EC_KB_RIGHT:
region_code = 0x5;
break;
case EC_KB_EXTRA:
region_code = 0x7;
break;
default:
return;
}
@ -56,10 +60,6 @@ static void ec_kb_color_set(enum KbRegion region, u32 color) {
}
static int ec_init(void) {
ec_kb_color_set(KB_LEFT, 0xFF0000);
ec_kb_color_set(KB_CENTER, 0xFF00);
ec_kb_color_set(KB_RIGHT, 0xFF);
return 0;
}

28
kb.c
View File

@ -268,37 +268,17 @@ static void kb_full_color__set_color(unsigned left, unsigned center,
kb_colors[extra].name, (unsigned int)kb_colors[extra].value.rgb
);
cmd = 0xF0000000;
cmd |= kb_colors[left].value.b << 16;
cmd |= kb_colors[left].value.r << 8;
cmd |= kb_colors[left].value.g << 0;
if (!s76_wmbb(SET_KB_LED, cmd, NULL))
ec_kb_color_set(EC_KB_LEFT, kb_colors[left].value.rgb);
kb_backlight.color.left = left;
cmd = 0xF1000000;
cmd |= kb_colors[center].value.b << 16;
cmd |= kb_colors[center].value.r << 8;
cmd |= kb_colors[center].value.g << 0;
if (!s76_wmbb(SET_KB_LED, cmd, NULL))
ec_kb_color_set(EC_KB_CENTER, kb_colors[center].value.rgb);
kb_backlight.color.center = center;
cmd = 0xF2000000;
cmd |= kb_colors[right].value.b << 16;
cmd |= kb_colors[right].value.r << 8;
cmd |= kb_colors[right].value.g << 0;
if (!s76_wmbb(SET_KB_LED, cmd, NULL))
ec_kb_color_set(EC_KB_RIGHT, kb_colors[right].value.rgb);
kb_backlight.color.right = right;
if (kb_backlight.extra == KB_HAS_EXTRA_TRUE) {
cmd = 0xF3000000;
cmd |= kb_colors[extra].value.b << 16;
cmd |= kb_colors[extra].value.r << 8;
cmd |= kb_colors[extra].value.g << 0;
if(!s76_wmbb(SET_KB_LED, cmd, NULL))
ec_kb_color_set(EC_KB_EXTRA, kb_colors[extra].value.rgb);
kb_backlight.color.extra = extra;
}