diff options
author | Sue Chen <sue.chen@quanta.corp-partner.google.com> | 2021-12-02 15:48:49 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-07 01:43:51 +0000 |
commit | 4237724362e87c1b3fa048f03b636840a5d31f0f (patch) | |
tree | b0fc527908c36b7fdbbfc4225a5740ea418c167a | |
parent | b7e4401fc2b5f1a923b48973b9c0e3cdb8d1c8aa (diff) | |
download | chrome-ec-4237724362e87c1b3fa048f03b636840a5d31f0f.tar.gz |
Dewatt: fix LED behavior for Ver1 board
Ver1 board:
GPIOC4(PWM2) -> Blue LED
GPIO80(PWM3) -> Amber LED
BUG=b:208179462
BRANCH=none
TEST=LED behavior is correct for all states.
Signed-off-by: Sue Chen <sue.chen@quanta.corp-partner.google.com>
Change-Id: I6f07b69119583675651a76cf9f0f67caff5afad1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3312918
Reviewed-by: Rob Barnes <robbarnes@google.com>
-rw-r--r-- | board/dewatt/led.c | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/board/dewatt/led.c b/board/dewatt/led.c index de95a6396e..7cbb9133bf 100644 --- a/board/dewatt/led.c +++ b/board/dewatt/led.c @@ -6,6 +6,8 @@ */ #include "common.h" +#include "cros_board_info.h" +#include "hooks.h" #include "led_onoff_states.h" #include "led_common.h" #include "gpio.h" @@ -21,6 +23,27 @@ __override const int led_charge_lvl_1 = 5; __override const int led_charge_lvl_2 = 97; +static enum pwm_channel pwm_ch_led_blue; +static enum pwm_channel pwm_ch_led_amber; + +static void led_pwm_ch_init(void) +{ + int val; + + pwm_ch_led_blue = PWM_CH_LED_FULL; + pwm_ch_led_amber = PWM_CH_LED_CHRG; + + /* + * Ver1: GPIOC4(PWM2) -> Blue LED + * GPIO80(PWM3) -> Amber LED + */ + if (cbi_get_board_version(&val) == EC_SUCCESS && val <= 1) { + pwm_ch_led_blue = PWM_CH_LED_CHRG; + pwm_ch_led_amber = PWM_CH_LED_FULL; + } +} +DECLARE_HOOK(HOOK_INIT, led_pwm_ch_init, HOOK_PRIO_INIT_PWM - 1); + __override struct led_descriptor led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = { [STATE_CHARGING_LVL_1] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, @@ -47,21 +70,21 @@ __override void led_set_color_battery(enum ec_led_colors color) { switch (color) { case EC_LED_COLOR_AMBER: - pwm_enable(PWM_CH_LED_CHRG, LED_ON_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + pwm_enable(pwm_ch_led_amber, LED_ON_LVL); + pwm_enable(pwm_ch_led_blue, LED_OFF_LVL); break; case EC_LED_COLOR_BLUE: - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_ON_LVL); + pwm_enable(pwm_ch_led_amber, LED_OFF_LVL); + pwm_enable(pwm_ch_led_blue, LED_ON_LVL); break; case LED_OFF: - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + pwm_enable(pwm_ch_led_amber, LED_OFF_LVL); + pwm_enable(pwm_ch_led_blue, LED_OFF_LVL); break; default: /* Unsupported colors */ CPRINTS("Unsupported LED color: %d", color); - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + pwm_enable(pwm_ch_led_amber, LED_OFF_LVL); + pwm_enable(pwm_ch_led_blue, LED_OFF_LVL); break; } } |