diff options
author | Diana Z <dzigterman@chromium.org> | 2018-06-27 12:13:32 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-06-28 09:55:39 -0700 |
commit | 013217d91a24a5661d94cc4d5813ad933d2a91bb (patch) | |
tree | df6c72cfdaadf0e0f6a9740b2621cdf92ebbe1e2 | |
parent | 0fa6368a995418eb0298e63f3ed13501912c12ef (diff) | |
download | chrome-ec-013217d91a24a5661d94cc4d5813ad933d2a91bb.tar.gz |
bip: implement charging LED
Enable the LED common code for bip. Set up bip's charging LED, which
currently shares similar behavior to the yorp charging LED. Since we
are not using the PWM on bip, set to just use GPIO pins.
BRANCH=none
BUG=b:110121794
TEST=verified LED behavior with board charging, fully charged,
discharging, discharging in S0ix, and with battery unplugged
Change-Id: If874d0d841a77a8816cdcd0f618ab267123cfa17
Signed-off-by: Diana Z <dzigterman@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1117312
Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r-- | board/bip/board.h | 2 | ||||
-rw-r--r-- | board/bip/build.mk | 2 | ||||
-rw-r--r-- | board/bip/gpio.inc | 5 | ||||
-rw-r--r-- | board/bip/led.c | 68 |
4 files changed, 75 insertions, 2 deletions
diff --git a/board/bip/board.h b/board/bip/board.h index 42fdeef709..1859c424ee 100644 --- a/board/bip/board.h +++ b/board/bip/board.h @@ -16,6 +16,8 @@ /* Optional features */ #define CONFIG_SYSTEM_UNLOCKED /* Allow dangerous commands while in dev. */ +#define CONFIG_LED_COMMON + /* Hardware for proto bip does not support ec keyboard backlight control. */ #undef CONFIG_PWM #undef CONFIG_PWM_KBLIGHT diff --git a/board/bip/build.mk b/board/bip/build.mk index 7ef4b615d9..6118e72e95 100644 --- a/board/bip/build.mk +++ b/board/bip/build.mk @@ -9,6 +9,6 @@ CHIP:=it83xx BASEBOARD:=octopus -board-y=board.o +board-y=board.o led.o board-$(CONFIG_BATTERY_SMART)+=battery.o board-$(CONFIG_USB_POWER_DELIVERY)+=usb_pd_policy.o
\ No newline at end of file diff --git a/board/bip/gpio.inc b/board/bip/gpio.inc index 9c78d2e89b..af2cbf9eb8 100644 --- a/board/bip/gpio.inc +++ b/board/bip/gpio.inc @@ -101,6 +101,10 @@ GPIO(USB_C1_BC12_VBUS_ON, PIN(J, 5), GPIO_OUT_LOW) /* C1 BC1.2 Power */ GPIO(USB_C1_PD_RST_ODL, PIN(L, 7), GPIO_ODR_HIGH) /* C1 PD Reset */ GPIO(USB2_OTG_ID, PIN(I, 2), GPIO_OUT_LOW) /* OTG ID */ +/* LED */ +GPIO(BAT_LED_ORANGE, PIN(A, 6), GPIO_OUT_LOW) /* LED_1_L */ +GPIO(BAT_LED_BLUE, PIN(A, 3), GPIO_OUT_LOW) /* LED_2_L */ + /* Not implemented in hardware yet */ UNIMPLEMENTED(KB_BL_PWR_EN) @@ -113,4 +117,3 @@ ALTERNATE(PIN_MASK(F, 0xC0), 0, MODULE_I2C, 0) /* I2C2 */ ALTERNATE(PIN_MASK(E, 0x81), 0, MODULE_I2C, 0) /* I2C4 */ ALTERNATE(PIN_MASK(A, 0x30), 0, MODULE_I2C, 0) /* I2C5 */ ALTERNATE(PIN_MASK(L, 0x03), 0, MODULE_ADC, 0) /* ADC13 & ADC14: ADC_USB_C0_VBUS & ADC_USB_C1_VBUS */ -ALTERNATE(PIN_MASK(A, 0x48), 0, MODULE_PWM, 0) /* LED_1_L & LED_2_L */ diff --git a/board/bip/led.c b/board/bip/led.c new file mode 100644 index 0000000000..823df237e9 --- /dev/null +++ b/board/bip/led.c @@ -0,0 +1,68 @@ +/* Copyright 2018 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 Bip + */ + +#include "ec_commands.h" +#include "gpio.h" +#include "led_common.h" +#include "led_states.h" + +#define LED_OFF_LVL 0 +#define LED_ON_LVL 1 + +/* Bip: Note there is only LED for charge / power */ +const struct led_descriptor + led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = { + [STATE_CHARGING] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, + [STATE_CHARGING_FULL_CHARGE] = {{EC_LED_COLOR_BLUE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S0] = {{EC_LED_COLOR_BLUE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S3] = {{EC_LED_COLOR_AMBER, 4 * LED_ONE_SEC}, + {LED_OFF, 1 * LED_ONE_SEC} }, + [STATE_DISCHARGE_S5] = {{LED_OFF, LED_INDEFINITE} }, + [STATE_BATTERY_ERROR] = {{EC_LED_COLOR_BLUE, 2 * LED_ONE_SEC}, + {EC_LED_COLOR_AMBER, 2 * LED_ONE_SEC} }, +}; + +const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED }; + +const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); + +void led_set_color_battery(enum ec_led_colors color) +{ + switch (color) { + case EC_LED_COLOR_BLUE: + gpio_set_level(GPIO_BAT_LED_BLUE, LED_ON_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE, LED_OFF_LVL); + break; + case EC_LED_COLOR_AMBER: + gpio_set_level(GPIO_BAT_LED_BLUE, LED_OFF_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE, LED_ON_LVL); + break; + default: /* LED_OFF and other unsupported colors */ + gpio_set_level(GPIO_BAT_LED_BLUE, LED_OFF_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE, LED_OFF_LVL); + break; + } +} + +void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) +{ + brightness_range[EC_LED_COLOR_BLUE] = 1; + brightness_range[EC_LED_COLOR_AMBER] = 1; +} + +int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) +{ + if (brightness[EC_LED_COLOR_BLUE] != 0) + led_set_color_battery(EC_LED_COLOR_BLUE); + else if (brightness[EC_LED_COLOR_AMBER] != 0) + led_set_color_battery(EC_LED_COLOR_AMBER); + else + led_set_color_battery(LED_OFF); + + return EC_SUCCESS; +} + |