diff options
author | Jeremy Bettis <jbettis@google.com> | 2021-10-27 13:23:00 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-11-03 20:08:20 +0000 |
commit | 0b202341702f75303238b8972f4c5decc0ae30e4 (patch) | |
tree | ccd0c5b1076863b01eb60c9ee66f2e03812cfa59 /common/keyboard_backlight.c | |
parent | fd1ac67b8cbaf12b245c4eb0e9544705cb5d3a65 (diff) | |
download | chrome-ec-0b202341702f75303238b8972f4c5decc0ae30e4.tar.gz |
ec: Implement keyboard backlight get enabled
Prior to crrev/c/1051027, the EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT host cmd
returned an enabled flag, which the FAFT test firmware_ECLidSwitch
depends on. That test, however, was broken, and wasn't actually running
the kb backlight portion of the test on any models, so no one ever
noticed that the HC and the kblight ec console commands don't return
the enabled status.
Add a get_enabled function to the kblight driver struct, and add an
implementation for each existing driver.
BRANCH=None
BUG=b:194908032
TEST=CP'd to leona branch, build EC, flash board
kblight 100 ; lidclose ; kblight ; lidopen ; kblight
Verified the cmd returned enabled: 1 when lights were on
Change-Id: Ia6ab025901869933cf70bb49f3bf2def2987b7b3
Signed-off-by: Jeremy Bettis <jbettis@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3248888
Tested-by: Jeremy Bettis <jbettis@chromium.org>
Auto-Submit: Jeremy Bettis <jbettis@chromium.org>
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'common/keyboard_backlight.c')
-rw-r--r-- | common/keyboard_backlight.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/common/keyboard_backlight.c b/common/keyboard_backlight.c index d3d9fbe6d3..3c90b96cc5 100644 --- a/common/keyboard_backlight.c +++ b/common/keyboard_backlight.c @@ -65,6 +65,18 @@ int kblight_enable(int enable) return kblight.drv->enable(enable); } +int kblight_get_enabled(void) +{ +#ifdef GPIO_EN_KEYBOARD_BACKLIGHT + if (!gpio_get_level(GPIO_EN_KEYBOARD_BACKLIGHT)) + return 0; +#endif + if (kblight.drv && kblight.drv->get_enabled) + return kblight.drv->get_enabled(); + return -1; +} + + int kblight_register(const struct kblight_drv *drv) { kblight.drv = drv; @@ -125,7 +137,8 @@ static int cc_kblight(int argc, char **argv) if (kblight_enable(i > 0)) return EC_ERROR_PARAM1; } - ccprintf("Keyboard backlight: %d%%\n", kblight_get()); + ccprintf("Keyboard backlight: %d%% enabled: %d\n", + kblight_get(), kblight_get_enabled()); return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(kblight, cc_kblight, @@ -138,7 +151,7 @@ hc_get_keyboard_backlight(struct host_cmd_handler_args *args) struct ec_response_pwm_get_keyboard_backlight *r = args->response; r->percent = kblight_get(); - r->enabled = 1; /* Deprecated */ + r->enabled = kblight_get_enabled(); args->response_size = sizeof(*r); return EC_RES_SUCCESS; |