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 FBF2 0xFC
#define FBF3 0xFD #define FBF3 0xFD
enum KbRegion { enum EcKbRegion {
KB_LEFT, EC_KB_LEFT,
KB_CENTER, EC_KB_CENTER,
KB_RIGHT, 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; u8 region_code;
switch(region) { switch(region) {
case KB_LEFT: case EC_KB_LEFT:
region_code = 0x3; region_code = 0x3;
break; break;
case KB_CENTER: case EC_KB_CENTER:
region_code = 0x4; region_code = 0x4;
break; break;
case KB_RIGHT: case EC_KB_RIGHT:
region_code = 0x5; region_code = 0x5;
break; break;
case EC_KB_EXTRA:
region_code = 0x7;
break;
default: default:
return; return;
} }
@ -56,10 +60,6 @@ static void ec_kb_color_set(enum KbRegion region, u32 color) {
} }
static int ec_init(void) { 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; 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 kb_colors[extra].name, (unsigned int)kb_colors[extra].value.rgb
); );
cmd = 0xF0000000; ec_kb_color_set(EC_KB_LEFT, kb_colors[left].value.rgb);
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))
kb_backlight.color.left = left; kb_backlight.color.left = left;
cmd = 0xF1000000; ec_kb_color_set(EC_KB_CENTER, kb_colors[center].value.rgb);
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))
kb_backlight.color.center = center; kb_backlight.color.center = center;
cmd = 0xF2000000; ec_kb_color_set(EC_KB_RIGHT, kb_colors[right].value.rgb);
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))
kb_backlight.color.right = right; kb_backlight.color.right = right;
if (kb_backlight.extra == KB_HAS_EXTRA_TRUE) { if (kb_backlight.extra == KB_HAS_EXTRA_TRUE) {
cmd = 0xF3000000; ec_kb_color_set(EC_KB_EXTRA, kb_colors[extra].value.rgb);
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))
kb_backlight.color.extra = extra; kb_backlight.color.extra = extra;
} }