summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Lu <devin.lu@quantatw.com>2020-01-20 19:29:29 +0800
committerCommit Bot <commit-bot@chromium.org>2020-01-31 09:29:16 +0000
commitc0dbf54da811afb13e1f36976586e17db87b6060 (patch)
tree0d291dd71d23f7715063be78785a3c0c3ef892bd
parentcec65433cd9292af9b38e2c3e7b2377ca2cdaef5 (diff)
downloadchrome-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>
-rw-r--r--board/kappa/board.c9
-rw-r--r--board/kappa/board.h21
-rw-r--r--board/kappa/build.mk2
-rw-r--r--board/kappa/led.c51
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;
+}