diff options
author | Devin Lu <devin.lu@quantatw.com> | 2020-01-20 19:29:29 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-31 09:29:16 +0000 |
commit | c0dbf54da811afb13e1f36976586e17db87b6060 (patch) | |
tree | 0d291dd71d23f7715063be78785a3c0c3ef892bd /board/kappa | |
parent | cec65433cd9292af9b38e2c3e7b2377ca2cdaef5 (diff) | |
download | chrome-ec-c0dbf54da811afb13e1f36976586e17db87b6060.tar.gz |
kappa: enable led
This patch is enabling led temporally for incoming build.
Will add gpio control for led after CL:1712887 merged.
BUG=b:146844869
BRANCH=kukui
TEST=make sure led is showing amber while battery is charging.
make sure led is showing white after battery was fully charged.
Change-Id: I5b55bbed45360807dceca9fe2896084619fb900a
Signed-off-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2009540
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/kappa')
-rw-r--r-- | board/kappa/board.c | 9 | ||||
-rw-r--r-- | board/kappa/board.h | 21 | ||||
-rw-r--r-- | board/kappa/build.mk | 2 | ||||
-rw-r--r-- | board/kappa/led.c | 51 |
4 files changed, 77 insertions, 6 deletions
diff --git a/board/kappa/board.c b/board/kappa/board.c index 6460579664..51ea4de1ef 100644 --- a/board/kappa/board.c +++ b/board/kappa/board.c @@ -33,8 +33,6 @@ #include "lid_switch.h" #include "power.h" #include "power_button.h" -#include "pwm.h" -#include "pwm_chip.h" #include "registers.h" #include "spi.h" #include "system.h" @@ -118,6 +116,13 @@ const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = { .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS, }, }; +/******************************************************************************/ +const struct it8801_pwm_t it8801_pwm_channels[] = { + [PWM_CH_LED_AMBER] = { 1 }, + [PWM_LED_NO_CHANNEL] = { -1 }, + [PWM_CH_LED_WHITE] = { 3 }, +}; +BUILD_ASSERT(ARRAY_SIZE(it8801_pwm_channels) == PWM_CH_COUNT); /******************************************************************************/ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { diff --git a/board/kappa/board.h b/board/kappa/board.h index db9d40413e..a8a5880074 100644 --- a/board/kappa/board.h +++ b/board/kappa/board.h @@ -20,9 +20,6 @@ #undef CONFIG_CHIPSET_POWER_SEQ_VERSION #define CONFIG_CHIPSET_POWER_SEQ_VERSION 1 -/* TODO(b:135086465) led implementation */ -#undef CONFIG_LED_COMMON - #define CONFIG_BATTERY_HW_PRESENT_CUSTOM #define CONFIG_CHARGER_PSYS @@ -94,6 +91,17 @@ #define PD_OPERATING_POWER_MW 30000 +#undef CONFIG_LED_PWM_NEAR_FULL_COLOR +#undef CONFIG_LED_PWM_CHARGE_ERROR_COLOR + +#define CONFIG_LED_PWM_NEAR_FULL_COLOR EC_LED_COLOR_WHITE +#define CONFIG_LED_PWM_CHARGE_ERROR_COLOR EC_LED_COLOR_WHITE + +#define CONFIG_LED_PWM +#define CONFIG_LED_PWM_CHARGE_STATE_ONLY +#define CONFIG_IO_EXPANDER_IT8801_PWM +#define CONFIG_LED_PWM_COUNT 1 + #ifndef __ASSEMBLER__ enum adc_channel { @@ -134,6 +142,13 @@ enum battery_type { BATTERY_TYPE_COUNT, }; +enum pwm_channel { + PWM_CH_LED_AMBER, + PWM_LED_NO_CHANNEL, + PWM_CH_LED_WHITE, + PWM_CH_COUNT +}; + #include "gpio_signal.h" #include "registers.h" diff --git a/board/kappa/build.mk b/board/kappa/build.mk index 7f9669d7d7..e449fce9fc 100644 --- a/board/kappa/build.mk +++ b/board/kappa/build.mk @@ -12,4 +12,4 @@ CHIP_FAMILY:=stm32f0 CHIP_VARIANT:=stm32f09x BASEBOARD:=kukui -board-y=battery.o board.o +board-y=battery.o board.o led.o diff --git a/board/kappa/led.c b/board/kappa/led.c new file mode 100644 index 0000000000..de4eca8bbf --- /dev/null +++ b/board/kappa/led.c @@ -0,0 +1,51 @@ +/* Copyright 2020 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * Power and battery LED control for Kappa + */ + +#include "common.h" +#include "driver/ioexpander/it8801.h" +#include "ec_commands.h" +#include "led_common.h" +#include "led_pwm.h" + +const enum ec_led_id supported_led_ids[] = { + EC_LED_ID_POWER_LED, +}; +const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); + +struct pwm_led led_color_map[EC_LED_COLOR_COUNT] = { + [EC_LED_COLOR_AMBER] = {100, 0, 0}, + [EC_LED_COLOR_WHITE] = {0, 0, 100}, +}; + +struct pwm_led pwm_leds[CONFIG_LED_PWM_COUNT] = { + [PWM_LED0] = { + .ch0 = PWM_CH_LED_AMBER, + .ch1 = PWM_LED_NO_CHANNEL, + .ch2 = PWM_CH_LED_WHITE, + .enable = &it8801_pwm_enable, + .set_duty = &it8801_pwm_set_duty, + }, +}; + +void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) +{ + brightness_range[EC_LED_COLOR_AMBER] = 100; + brightness_range[EC_LED_COLOR_WHITE] = 100; +} + +int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) +{ + if (brightness[EC_LED_COLOR_AMBER]) + set_pwm_led_color(PWM_LED0, EC_LED_COLOR_AMBER); + else if (brightness[EC_LED_COLOR_WHITE]) + set_pwm_led_color(PWM_LED0, EC_LED_COLOR_WHITE); + else + /* Otherwise, the "color" is "off". */ + set_pwm_led_color(PWM_LED0, -1); + + return EC_SUCCESS; +} |