summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiyu Qin <qinsiyu@huaqin.corp-partner.google.com>2022-10-31 21:14:41 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-25 07:15:31 +0000
commitae03c203db5587bdb48768cecb3d2986fba40650 (patch)
treeb910003f2d04f505464a69b2c9eddb9c703c4b8f
parent62720a799b980f7f47a476f63b99a1d5a51af833 (diff)
downloadchrome-ec-ae03c203db5587bdb48768cecb3d2986fba40650.tar.gz
corsola: Initial zephyr config for Voltorb
Initial EC Zephyr config for Corsola/Voltorb. Reuse most of Kingler sources. BUG=b:256573843 BRANCH=corsola TEST=zmake build voltorb Change-Id: I9bb960a4a635baf666b82db988f4a54512a30d1b Signed-off-by: Siyu Qin <qinsiyu@huaqin.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3993603 Reviewed-by: Ting Shen <phoenixshen@chromium.org> Reviewed-by: wen zhang <zhangwen6@huaqin.corp-partner.google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Mike Lee <mike5@huaqin.corp-partner.google.com>
-rw-r--r--zephyr/program/corsola/BUILD.py5
-rw-r--r--zephyr/program/corsola/CMakeLists.txt9
-rw-r--r--zephyr/program/corsola/Kconfig6
-rw-r--r--zephyr/program/corsola/voltorb/project.conf41
-rw-r--r--zephyr/program/corsola/voltorb/project.overlay309
5 files changed, 369 insertions, 1 deletions
diff --git a/zephyr/program/corsola/BUILD.py b/zephyr/program/corsola/BUILD.py
index 3b22dbe0ad..f145953e0d 100644
--- a/zephyr/program/corsola/BUILD.py
+++ b/zephyr/program/corsola/BUILD.py
@@ -45,3 +45,8 @@ register_corsola_project(
register_corsola_project("tentacruel")
register_corsola_project("magikarp")
+
+register_corsola_project(
+ project_name="voltorb",
+ chip="npcx9m3f",
+)
diff --git a/zephyr/program/corsola/CMakeLists.txt b/zephyr/program/corsola/CMakeLists.txt
index fa899a0e77..33aa0804d2 100644
--- a/zephyr/program/corsola/CMakeLists.txt
+++ b/zephyr/program/corsola/CMakeLists.txt
@@ -77,5 +77,12 @@ elseif(DEFINED CONFIG_BOARD_MAGIKARP)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC
"src/krabby/usbc_config.c")
-endif()
+elseif(DEFINED CONFIG_BOARD_VOLTORB)
+ project(voltorb)
+ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_I2C "src/kingler/i2c.c")
+ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC
+ "src/kingler/usb_pd_policy.c")
+ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC
+ "src/kingler/usbc_config.c")
+endif()
diff --git a/zephyr/program/corsola/Kconfig b/zephyr/program/corsola/Kconfig
index 4f66601c20..731de33d8b 100644
--- a/zephyr/program/corsola/Kconfig
+++ b/zephyr/program/corsola/Kconfig
@@ -32,6 +32,12 @@ config BOARD_MAGIKARP
Build Google Magikarp variant board. Magikarp is a variant of Krabby
and has MediaTek MT8186 SoC with ITE it81202-bx EC.
+config BOARD_VOLTORB
+ bool "Google Voltorb Board"
+ help
+ Build Google Voltorb variant board. Voltorb is a variant of Kingler
+ and has MediaTek MT8186/MT8186T SoC with NPCX993FA0BX EC.
+
config VARIANT_CORSOLA_DB_DETECTION
bool "Corsola Platform Runtime Daughter Board Detection"
depends on PLATFORM_EC_USB_PD_TCPC_RUNTIME_CONFIG
diff --git a/zephyr/program/corsola/voltorb/project.conf b/zephyr/program/corsola/voltorb/project.conf
new file mode 100644
index 0000000000..c1be25bfc1
--- /dev/null
+++ b/zephyr/program/corsola/voltorb/project.conf
@@ -0,0 +1,41 @@
+# Copyright 2022 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Variant config
+CONFIG_BOARD_VOLTORB=y
+
+# Voltorb only use D2, drop the workaround config for H1
+CONFIG_PLATFORM_EC_BOARD_RESET_AFTER_POWER_ON=n
+
+# No A+Gsensor
+CONFIG_PLATFORM_EC_ACCELGYRO_BMI3XX=n
+CONFIG_PLATFORM_EC_ACCELGYRO_BMI_COMM_I2C=n
+CONFIG_PLATFORM_EC_ACCEL_BMA4XX=n
+CONFIG_PLATFORM_EC_ACCEL_FIFO=n
+CONFIG_PLATFORM_EC_CONSOLE_CMD_ACCELS=n
+CONFIG_PLATFORM_EC_CONSOLE_CMD_ACCEL_INFO=n
+CONFIG_PLATFORM_EC_GMR_TABLET_MODE=n
+CONFIG_PLATFORM_EC_LID_ANGLE=n
+CONFIG_PLATFORM_EC_LID_ANGLE_UPDATE=n
+CONFIG_PLATFORM_EC_MOTIONSENSE=n
+CONFIG_PLATFORM_EC_SENSOR_TIGHT_TIMESTAMPS=n
+CONFIG_PLATFORM_EC_TABLET_MODE=n
+CONFIG_PLATFORM_EC_TABLET_MODE_SWITCH=n
+
+# LED
+CONFIG_PLATFORM_EC_LED_COMMON=n
+CONFIG_PLATFORM_EC_LED_ONOFF_STATES=n
+CONFIG_PLATFORM_EC_LED_DT=y
+
+# Keyboard
+CONFIG_PLATFORM_EC_KEYBOARD_REFRESH_ROW3=y
+CONFIG_PLATFORM_EC_KEYBOARD_PWRBTN_ASSERTS_KSI3=y
+CONFIG_PLATFORM_EC_KEYBOARD_STRICT_DEBOUNCE=y
+
+# USBC
+CONFIG_PLATFORM_EC_PD_MAX_CURRENT_MA=3250
+CONFIG_PLATFORM_EC_PD_MAX_POWER_MW=65000
+
+# AC_OK debounce time
+CONFIG_PLATFORM_EC_EXTPOWER_DEBOUNCE_MS=800
diff --git a/zephyr/program/corsola/voltorb/project.overlay b/zephyr/program/corsola/voltorb/project.overlay
new file mode 100644
index 0000000000..8cd5a2bad8
--- /dev/null
+++ b/zephyr/program/corsola/voltorb/project.overlay
@@ -0,0 +1,309 @@
+/* Copyright 2022 The ChromiumOS Authors
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* Corsola program common DTS includes */
+
+#include "../common.dtsi"
+#include "../power_signal.dtsi"
+#include "../usba.dtsi"
+#include "../npcx_adc.dtsi"
+#include "../npcx_gpio.dtsi"
+#include "../npcx_host_interface.dtsi"
+#include "../npcx_i2c.dtsi"
+#include "../npcx_interrupts.dtsi"
+#include "../npcx_keyboard.dtsi"
+#include "../npcx_usbc.dtsi"
+#include "../npcx_default_gpio_pinctrl.dtsi"
+#include <dt-bindings/battery.h>
+
+/ {
+ unused-pins {
+ compatible = "unused-gpios";
+
+ unused-gpios =
+ /* base_imu_int_l */
+ <&gpio5 6 0>,
+ /* ec_pen_chg_dis_odl */
+ <&gpioe 4 0>,
+ /* lid_accel_int_l */
+ <&gpiob 3 0>,
+ /* gpio_tablet_mode_l */
+ <&gpiob 2 0>,
+ /* LED3 */
+ <&gpioc 4 0>;
+ };
+
+ batteries {
+ default_battery: lgc_ap18c8k {
+ compatible = "lgc,ap18c8k", "battery-smart";
+ };
+ cosmx_ap20cbl-2 {
+ compatible = "cosmx,ap20cbl-2", "battery-smart";
+ };
+ };
+
+ cros-keyscan {
+ compatible = "cros-ec,keyscan";
+
+ debounce-down = <20000>;
+ debounce-up = <20000>;
+
+ actual-key-mask = <
+ 0x1c /* C0 */
+ 0xff /* C1 */
+ 0xff /* C2 */
+ 0xff /* C3 */
+ 0xff /* C4 */
+ 0xf5 /* C5 */
+ 0xff /* C6 */
+ 0xa4 /* C7 */
+ 0xff /* C8 */
+ 0xfe /* C9 */
+ 0x55 /* C10 */
+ 0xfa /* C11 */
+ 0xca /* C12 */
+ >;
+ };
+
+ led_colors: led-colors {
+ compatible = "cros-ec,led-policy";
+
+ /* Voltorb LED bat charge */
+ bat-power-state-charge-lvl-1 {
+ charge-state = "PWR_STATE_CHARGE";
+ /* Battery percent range (>= Empty, <= 94%) */
+ batt-lvl = <BATTERY_LEVEL_EMPTY
+ (BATTERY_LEVEL_NEAR_FULL - 3)>;
+
+ color-0 {
+ led-color = <&color_amber>;
+ };
+ };
+ bat-power-state-charge-lvl-2 {
+ charge-state = "PWR_STATE_CHARGE";
+ /* Battery percent range (>= 95%, <= 96%) */
+ batt-lvl = <(BATTERY_LEVEL_NEAR_FULL - 2)
+ (BATTERY_LEVEL_NEAR_FULL - 1)>;
+
+ color-0 {
+ led-color = <&color_blue>;
+ };
+ };
+
+ /* Voltorb LED bat charge near full */
+ bat-power-state-charge-near-full {
+ charge-state = "PWR_STATE_CHARGE_NEAR_FULL";
+
+ color-0 {
+ led-color = <&color_blue>;
+ };
+ };
+
+ /* Voltorb LED bat discharge */
+ bat-power-state-discharge-s0 {
+ charge-state = "PWR_STATE_DISCHARGE";
+ chipset-state = "POWER_S0";
+ /* Battery percent range (>= 14%, <= Full) */
+ batt-lvl = <(BATTERY_LEVEL_LOW + 4) BATTERY_LEVEL_FULL>;
+
+ color-0 {
+ led-color = <&color_blue>;
+ };
+ };
+ bat-power-state-discharge-s0-bat-low {
+ charge-state = "PWR_STATE_DISCHARGE";
+ chipset-state = "POWER_S0";
+ /* Battery percent range (>= 7%, <= 13%) */
+ batt-lvl = <(BATTERY_LEVEL_CRITICAL + 2)
+ (BATTERY_LEVEL_LOW + 3)>;
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <1000>;
+ };
+ color-1 {
+ led-color = <&color_off>;
+ period-ms = <3000>;
+ };
+ };
+ bat-power-state-discharge-s0-bat-critical {
+ charge-state = "PWR_STATE_DISCHARGE";
+ chipset-state = "POWER_S0";
+ /* Battery percent range (>= Empty, <= 6%) */
+ batt-lvl = <BATTERY_LEVEL_EMPTY
+ (BATTERY_LEVEL_CRITICAL + 1)>;
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <1000>;
+ };
+ color-1 {
+ led-color = <&color_off>;
+ period-ms = <1000>;
+ };
+ };
+ bat-power-state-discharge-s3 {
+ charge-state = "PWR_STATE_DISCHARGE";
+ chipset-state = "POWER_S3";
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <1000>;
+ };
+ color-1 {
+ led-color = <&color_off>;
+ period-ms = <3000>;
+ };
+ };
+ bat-power-state-discharge-s5 {
+ charge-state = "PWR_STATE_DISCHARGE";
+ chipset-state = "POWER_S5";
+
+ color-0 {
+ led-color = <&color_off>;
+ };
+ };
+
+ /* Voltorb LED bat error */
+ bat-power-state-error {
+ charge-state = "PWR_STATE_ERROR";
+ chipset-state = "POWER_S0";
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <1000>;
+ };
+ color-1 {
+ led-color = <&color_off>;
+ period-ms = <1000>;
+ };
+ };
+ bat-power-state-error-s3 {
+ charge-state = "PWR_STATE_ERROR";
+ chipset-state = "POWER_S3";
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <1000>;
+ };
+ color-1 {
+ led-color = <&color_off>;
+ period-ms = <3000>;
+ };
+ };
+ bat-power-state-error-s5 {
+ charge-state = "PWR_STATE_ERROR";
+ chipset-state = "POWER_S5";
+
+ color-0 {
+ led-color = <&color_off>;
+ };
+ };
+
+ /* Voltorb LED power idle */
+ power-state-idle {
+ charge-state = "PWR_STATE_IDLE";
+
+ color-0 {
+ led-color = <&color_blue>;
+ };
+ };
+
+ /* Voltorb LED power forced idle */
+ power-state-forced-idle-right {
+ charge-state = "PWR_STATE_FORCED_IDLE";
+
+ color-0 {
+ led-color = <&color_amber>;
+ period-ms = <2000>;
+ };
+ color-1 {
+ led-color = <&color_blue>;
+ period-ms = <2000>;
+ };
+ };
+ };
+
+ pwmleds {
+ compatible = "pwm-leds";
+
+ led_amber: ec_led1_odl {
+ pwms = <&pwm0 0 PWM_HZ(100) PWM_POLARITY_INVERTED>;
+ };
+
+ led_blue: ec_led2_odl {
+ pwms = <&pwm1 0 PWM_HZ(100) PWM_POLARITY_INVERTED>;
+ };
+ };
+
+ pwm-led-pins {
+ compatible = "cros-ec,pwm-led-pins";
+
+ color_off: color-off {
+ led-color = "LED_OFF";
+ led-id = "EC_LED_ID_BATTERY_LED";
+ led-pwms = <&led_amber &led_blue>;
+ led-values = <0 0>;
+ };
+
+ color_amber: color-amber {
+ led-color = "LED_AMBER";
+ led-id = "EC_LED_ID_BATTERY_LED";
+ br-color = "EC_LED_COLOR_AMBER";
+ led-pwms = <&led_amber &led_blue>;
+ led-values = <100 0>;
+ };
+
+ color_blue: color_blue {
+ led-color = "LED_BLUE";
+ led-id = "EC_LED_ID_BATTERY_LED";
+ br-color = "EC_LED_COLOR_BLUE";
+ led-pwms = <&led_amber &led_blue>;
+ led-values = <0 100>;
+ };
+ };
+};
+
+/* Amber LED */
+&pwm0_gpc3 {
+ drive-open-drain;
+};
+
+&pwm0 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+ pinctrl-0 = <&pwm0_gpc3>;
+ pinctrl-names = "default";
+};
+
+/* Blue LED */
+&pwm1_gpc2 {
+ drive-open-drain;
+};
+
+&pwm1 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+ pinctrl-0 = <&pwm1_gpc2>;
+ pinctrl-names = "default";
+};
+
+/* gpio overrides */
+/ {
+ named-gpios {
+ /delete-node/ base_imu_int_l;
+ /delete-node/ ec_pen_chg_dis_odl;
+ /delete-node/ lid_accel_int_l;
+ /delete-node/ gpio_tablet_mode_l;
+ };
+};
+
+/* interrupts overrides */
+/ {
+ gpio-interrupts {
+ /delete-node/ base_imu;
+ /delete-node/ tablet_mode;
+ };
+};