diff options
author | Jacky Wang <jacky5_wang@pegatron.corp-partner.google.com> | 2020-11-26 16:50:18 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-12-03 02:34:29 +0000 |
commit | 8408d21c5cbb85360a76bcfdbbf8d8f89b1a076f (patch) | |
tree | 32aec79b2e3a36483129d4e55940b92789f69daf /board | |
parent | 52de5e9fcf58dc61df93004e633f8bad769bd2c3 (diff) | |
download | chrome-ec-8408d21c5cbb85360a76bcfdbbf8d8f89b1a076f.tar.gz |
shuboz: Implement LED function
Update LED behavior by Marketing spec.
BUG=b:173341052
BRANCH=none
TEST=make BOARD=shuboz
Signed-off-by: Jacky Wang <jacky5_wang@pegatron.corp-partner.google.com>
Change-Id: I0e4346d6d83204a20836b3fc94a951309e97b06f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2561908
Reviewed-by: Michael5 Chen <michael5_chen1@pegatron.corp-partner.google.com>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/shuboz/board.h | 2 | ||||
-rw-r--r-- | board/shuboz/gpio.inc | 1 | ||||
-rw-r--r-- | board/shuboz/led.c | 80 |
3 files changed, 35 insertions, 48 deletions
diff --git a/board/shuboz/board.h b/board/shuboz/board.h index 2c68aa8141..04b3f926fb 100644 --- a/board/shuboz/board.h +++ b/board/shuboz/board.h @@ -28,7 +28,7 @@ #define GPIO_USB2_ILIM_SEL IOEX_USB_A1_CHARGE_EN_DB_L /* Power LEDs */ -#define CONFIG_LED_POWER_LED +#define CONFIG_LED_ONOFF_STATES_BAT_LOW 10 /* Motion sensing drivers */ #define CONFIG_ACCELGYRO_LSM6DSM diff --git a/board/shuboz/gpio.inc b/board/shuboz/gpio.inc index 2b3b6aab2e..30ea179291 100644 --- a/board/shuboz/gpio.inc +++ b/board/shuboz/gpio.inc @@ -54,7 +54,6 @@ UNIMPLEMENTED(PCH_SMI_L) GPIO(LED_FULL_L, PIN(6, 0), GPIO_OUT_HIGH) GPIO(LED_CHRG_L, PIN(C, 0), GPIO_OUT_HIGH) -GPIO(LED3_PWM, PIN(C, 3), GPIO_OUT_HIGH) /* * Dalboz has 2 DB options, with different IO expanders. IOEX_C1_NCT3807 is the diff --git a/board/shuboz/led.c b/board/shuboz/led.c index 92424092e5..7d3bec754a 100644 --- a/board/shuboz/led.c +++ b/board/shuboz/led.c @@ -3,6 +3,7 @@ * found in the LICENSE file. */ +#include "chipset.h" #include "ec_commands.h" #include "gpio.h" #include "led_common.h" @@ -12,59 +13,40 @@ #define LED_ON_LVL 0 const int led_charge_lvl_1; -const int led_charge_lvl_2 = 100; +const int led_charge_lvl_2 = 95; struct led_descriptor led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = { - [STATE_CHARGING_LVL_1] = {{EC_LED_COLOR_GREEN, 2 * LED_ONE_SEC}, - {EC_LED_COLOR_RED, 2 * LED_ONE_SEC} }, - [STATE_CHARGING_LVL_2] = {{EC_LED_COLOR_RED, LED_INDEFINITE} }, - [STATE_CHARGING_FULL_CHARGE] = {{EC_LED_COLOR_GREEN, LED_INDEFINITE} }, - [STATE_DISCHARGE_S0] = {{EC_LED_COLOR_GREEN, LED_INDEFINITE} }, - [STATE_DISCHARGE_S3] = {{EC_LED_COLOR_RED, 1 * LED_ONE_SEC}, + [STATE_CHARGING_LVL_1] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, + [STATE_CHARGING_LVL_2] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, + [STATE_CHARGING_FULL_CHARGE] = {{EC_LED_COLOR_WHITE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S0] = {{EC_LED_COLOR_WHITE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S0_BAT_LOW] = {{EC_LED_COLOR_AMBER, 1 * LED_ONE_SEC}, {LED_OFF, 3 * LED_ONE_SEC} }, - [STATE_DISCHARGE_S5] = {{LED_OFF, LED_INDEFINITE} }, - [STATE_BATTERY_ERROR] = {{EC_LED_COLOR_GREEN, 2 * LED_ONE_SEC}, - {EC_LED_COLOR_RED, 2 * LED_ONE_SEC} }, - [STATE_FACTORY_TEST] = {{EC_LED_COLOR_GREEN, LED_INDEFINITE} }, + [STATE_DISCHARGE_S3] = {{EC_LED_COLOR_WHITE, 2 * LED_ONE_SEC}, + {LED_OFF, 2 * LED_ONE_SEC} }, + [STATE_DISCHARGE_S5] = {{LED_OFF, LED_INDEFINITE} }, + [STATE_BATTERY_ERROR] = {{EC_LED_COLOR_AMBER, 1 * LED_ONE_SEC}, + {LED_OFF, 1 * LED_ONE_SEC} }, + [STATE_FACTORY_TEST] = {{EC_LED_COLOR_WHITE, 2 * LED_ONE_SEC}, + {EC_LED_COLOR_AMBER, 2 * LED_ONE_SEC} }, }; BUILD_ASSERT(ARRAY_SIZE(led_bat_state_table) == LED_NUM_STATES); -const struct led_descriptor - led_pwr_state_table[PWR_LED_NUM_STATES][LED_NUM_PHASES] = { - [PWR_LED_STATE_ON] = {{EC_LED_COLOR_WHITE, LED_INDEFINITE} }, - [PWR_LED_STATE_SUSPEND_AC] = {{EC_LED_COLOR_WHITE, 3 * LED_ONE_SEC}, - {LED_OFF, 0.5 * LED_ONE_SEC} }, - [PWR_LED_STATE_SUSPEND_NO_AC] = {{LED_OFF, LED_INDEFINITE} }, - [PWR_LED_STATE_OFF] = {{LED_OFF, LED_INDEFINITE} }, -}; - -BUILD_ASSERT(ARRAY_SIZE(led_pwr_state_table) == PWR_LED_NUM_STATES); - const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED, - EC_LED_ID_POWER_LED }; const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); -void led_set_color_power(enum ec_led_colors color) -{ - if (color == EC_LED_COLOR_WHITE) - gpio_set_level(GPIO_LED3_PWM, LED_ON_LVL); - else - /* LED_OFF and unsupported colors */ - gpio_set_level(GPIO_LED3_PWM, LED_OFF_LVL); -} - void led_set_color_battery(enum ec_led_colors color) { switch (color) { - case EC_LED_COLOR_GREEN: + case EC_LED_COLOR_WHITE: gpio_set_level(GPIO_LED_FULL_L, LED_ON_LVL); gpio_set_level(GPIO_LED_CHRG_L, LED_OFF_LVL); break; - case EC_LED_COLOR_RED: + case EC_LED_COLOR_AMBER: gpio_set_level(GPIO_LED_FULL_L, LED_OFF_LVL); gpio_set_level(GPIO_LED_CHRG_L, LED_ON_LVL); break; @@ -78,28 +60,34 @@ void led_set_color_battery(enum ec_led_colors color) void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) { if (led_id == EC_LED_ID_BATTERY_LED) { - brightness_range[EC_LED_COLOR_GREEN] = 1; - brightness_range[EC_LED_COLOR_RED] = 1; - } else if (led_id == EC_LED_ID_POWER_LED) { brightness_range[EC_LED_COLOR_WHITE] = 1; + brightness_range[EC_LED_COLOR_AMBER] = 1; } } int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) { if (led_id == EC_LED_ID_BATTERY_LED) { - if (brightness[EC_LED_COLOR_GREEN] != 0) - led_set_color_battery(EC_LED_COLOR_GREEN); - else if (brightness[EC_LED_COLOR_RED] != 0) - led_set_color_battery(EC_LED_COLOR_RED); - else - led_set_color_battery(LED_OFF); - } else if (led_id == EC_LED_ID_POWER_LED) { if (brightness[EC_LED_COLOR_WHITE] != 0) - led_set_color_power(EC_LED_COLOR_WHITE); + led_set_color_battery(EC_LED_COLOR_WHITE); + else if (brightness[EC_LED_COLOR_AMBER] != 0) + led_set_color_battery(EC_LED_COLOR_AMBER); else - led_set_color_power(LED_OFF); + led_set_color_battery(LED_OFF); } return EC_SUCCESS; } + +__override enum led_states board_led_get_state(enum led_states desired_state) +{ + if (desired_state == STATE_BATTERY_ERROR) { + if (chipset_in_state(CHIPSET_STATE_ON)) + return desired_state; + else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) + return STATE_DISCHARGE_S3; + else + return STATE_DISCHARGE_S5; + } + return desired_state; +} |