diff options
author | Siyu Qin <qinsiyu@huaqin.corp-partner.google.com> | 2022-10-31 21:14:41 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-11-25 07:15:31 +0000 |
commit | ae03c203db5587bdb48768cecb3d2986fba40650 (patch) | |
tree | b910003f2d04f505464a69b2c9eddb9c703c4b8f | |
parent | 62720a799b980f7f47a476f63b99a1d5a51af833 (diff) | |
download | chrome-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.py | 5 | ||||
-rw-r--r-- | zephyr/program/corsola/CMakeLists.txt | 9 | ||||
-rw-r--r-- | zephyr/program/corsola/Kconfig | 6 | ||||
-rw-r--r-- | zephyr/program/corsola/voltorb/project.conf | 41 | ||||
-rw-r--r-- | zephyr/program/corsola/voltorb/project.overlay | 309 |
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; + }; +}; |