diff options
author | wangganxiang <wangganxiang@huaqin.corp-partner.google.com> | 2023-04-28 14:43:55 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-05-04 09:46:43 +0000 |
commit | 8981f501202e350890d35b3fe30831bb40a29873 (patch) | |
tree | 9dfa1e6934863a9050c76287dc3b47ff82cc8602 | |
parent | 1fbd02f99e14c38404d7468b0cc3f1816d9f55de (diff) | |
download | chrome-ec-8981f501202e350890d35b3fe30831bb40a29873.tar.gz |
starmie: Initial zephyr config for starmie
Initial EC Zephyr config for staryu/starmie.
BUG=b:274723043
TEST=zmake build starmie
The board can power on normally.
Change-Id: Id5e156f7aa912802dd06acc4c5b72ca30c1bac18
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4487121
Tested-by: Ganxiang Wang <wangganxiang@huaqin.corp-partner.google.com>
Commit-Queue: Sung-Chi Li <lschyi@chromium.org>
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Reviewed-by: Ruihai Zhou <zhouruihai@huaqin.corp-partner.google.com>
-rw-r--r-- | zephyr/program/corsola/BUILD.py | 2 | ||||
-rw-r--r-- | zephyr/program/corsola/CMakeLists.txt | 3 | ||||
-rw-r--r-- | zephyr/program/corsola/Kconfig | 6 | ||||
-rw-r--r-- | zephyr/program/corsola/src/usbc.c | 6 | ||||
-rw-r--r-- | zephyr/program/corsola/starmie/CMakeLists.txt | 12 | ||||
-rw-r--r-- | zephyr/program/corsola/starmie/project.conf | 35 | ||||
-rw-r--r-- | zephyr/program/corsola/starmie/project.overlay | 227 | ||||
-rw-r--r-- | zephyr/program/corsola/starmie/src/ppc.c | 29 |
8 files changed, 318 insertions, 2 deletions
diff --git a/zephyr/program/corsola/BUILD.py b/zephyr/program/corsola/BUILD.py index d0ef4132bc..35ebb01b6f 100644 --- a/zephyr/program/corsola/BUILD.py +++ b/zephyr/program/corsola/BUILD.py @@ -43,6 +43,8 @@ register_corsola_project( chip="npcx9m3f", ) +register_corsola_project("starmie") + register_corsola_project("tentacruel") register_corsola_project("magikarp") diff --git a/zephyr/program/corsola/CMakeLists.txt b/zephyr/program/corsola/CMakeLists.txt index a76532c362..e45e1e954d 100644 --- a/zephyr/program/corsola/CMakeLists.txt +++ b/zephyr/program/corsola/CMakeLists.txt @@ -26,6 +26,9 @@ if(DEFINED CONFIG_BOARD_KRABBY) elseif(DEFINED CONFIG_BOARD_KINGLER) project(kingler) add_subdirectory(kingler) +elseif(DEFINED CONFIG_BOARD_STARMIE) + project(starmie) + add_subdirectory(starmie) elseif(DEFINED CONFIG_BOARD_STEELIX) project(steelix) add_subdirectory(steelix) diff --git a/zephyr/program/corsola/Kconfig b/zephyr/program/corsola/Kconfig index 731de33d8b..1d03262bf4 100644 --- a/zephyr/program/corsola/Kconfig +++ b/zephyr/program/corsola/Kconfig @@ -14,6 +14,12 @@ config BOARD_KINGLER Build Google Kingler reference board. Krabby has MediaTek MT8186 SoC with NPCX993FA0BX EC. +config BOARD_STARMIE + bool "Google Starmie Board" + help + Build Google Starmie variant board. Starmie is a variant of Krabby + and has MediaTek MT8186 SoC with ITE it81202-bx EC + config BOARD_STEELIX bool "Google Steelix Board" help diff --git a/zephyr/program/corsola/src/usbc.c b/zephyr/program/corsola/src/usbc.c index 518cceee07..b55b73e168 100644 --- a/zephyr/program/corsola/src/usbc.c +++ b/zephyr/program/corsola/src/usbc.c @@ -76,16 +76,18 @@ uint8_t board_get_adjusted_usb_pd_port_count(void) /* USB-A */ void usb_a0_interrupt(enum gpio_signal signal) { + const int xhci_stat = gpio_get_level(signal); + +#ifdef USB_PORT_ENABLE_COUNT enum usb_charge_mode mode = gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL( gpio_ap_xhci_init_done)) ? USB_CHARGE_MODE_ENABLED : USB_CHARGE_MODE_DISABLED; - const int xhci_stat = gpio_get_level(signal); - for (int i = 0; i < USB_PORT_COUNT; i++) { usb_charge_set_mode(i, mode, USB_ALLOW_SUSPEND_CHARGE); } +#endif /* USB_PORT_ENABLE_COUNT */ for (int i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { /* diff --git a/zephyr/program/corsola/starmie/CMakeLists.txt b/zephyr/program/corsola/starmie/CMakeLists.txt new file mode 100644 index 0000000000..f401c5dd43 --- /dev/null +++ b/zephyr/program/corsola/starmie/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright 2023 The ChromiumOS Authors +# Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +# Starmie Makeifile + +zephyr_library_sources("../src/ite_hooks.c") +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_I2C "../src/ite_i2c.c") +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC + "../src/ite_usb_pd_policy.c" "../src/ite_usbc.c") + +zephyr_library_sources("src/ppc.c")
\ No newline at end of file diff --git a/zephyr/program/corsola/starmie/project.conf b/zephyr/program/corsola/starmie/project.conf new file mode 100644 index 0000000000..87d37323e9 --- /dev/null +++ b/zephyr/program/corsola/starmie/project.conf @@ -0,0 +1,35 @@ +# Copyright 2023 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_STARMIE=y + +# Sensor Drivers +CONFIG_PLATFORM_EC_ACCEL_LIS2DW12=n +CONFIG_PLATFORM_EC_ACCELGYRO_ICM42607=n +CONFIG_PLATFORM_EC_ACCELGYRO_ICM_COMM_I2C=n +CONFIG_PLATFORM_EC_LID_ANGLE=n +CONFIG_PLATFORM_EC_LID_ANGLE_UPDATE=n +CONFIG_PLATFORM_EC_ACCELGYRO_BMI3XX=y +CONFIG_PLATFORM_EC_ACCELGYRO_BMI_COMM_I2C=y + + +CONFIG_PLATFORM_EC_USBC_PPC_SYV682C=n +CONFIG_PLATFORM_EC_USB_MUX_TUSB546=n + +# Button +CONFIG_PLATFORM_EC_CMD_BUTTON=y +CONFIG_PLATFORM_EC_POWER_BUTTON=y +CONFIG_PLATFORM_EC_VOLUME_BUTTONS=y +CONFIG_PLATFORM_EC_BUTTON_TRIGGERED_RECOVERY=y +CONFIG_PLATFORM_EC_BUTTONS_RUNTIME_CONFIG=y + +# Battery +CONFIG_PLATFORM_EC_I2C_NACK_RETRY_COUNT=10 +CONFIG_PLATFORM_EC_SMBUS_PEC=y +CONFIG_PLATFORM_EC_BATT_HOST_FULL_FACTOR=99 +CONFIG_PLATFORM_EC_SMART_BATTERY_OPTIONAL_MFG_FUNC=y + +# USBC +CONFIG_PLATFORM_EC_PD_MAX_POWER_MW=45000 diff --git a/zephyr/program/corsola/starmie/project.overlay b/zephyr/program/corsola/starmie/project.overlay new file mode 100644 index 0000000000..44cd490c53 --- /dev/null +++ b/zephyr/program/corsola/starmie/project.overlay @@ -0,0 +1,227 @@ +/* Copyright 2023 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 "../ite_adc.dtsi" +#include "../ite_gpio.dtsi" +#include "../ite_i2c.dtsi" +#include "../ite_interrupts.dtsi" +#include "../ite_keyboard.dtsi" +#include "../ite_led.dtsi" +#include "../ite_usbc.dtsi" +#include "../ite_shi.dtsi" +#include <cros/thermistor/thermistor.dtsi> +#include <dt-bindings/motionsense/utils.h> + +/ { + batteries { + default_battery: c235 { + compatible = "celxpert,c235-41", "battery-smart"; + }; + }; + gpio-interrupts { + int_base_imu: base_imu { + irq-pin = <&base_imu_int_l>; + flags = <GPIO_INT_EDGE_FALLING>; + handler = "bmi3xx_interrupt"; + }; + + int_pmic_ec_resetb: pmic-ec-resetb { + irq-pin = <&pmic_ec_resetb>; + flags = <GPIO_INT_EDGE_BOTH>; + handler = "power_signal_interrupt"; + }; + + int_pg_pp4200_s5: pg-pp4200-s5 { + irq-pin = <&pg_pp4200_s5_od>; + flags = <GPIO_INT_EDGE_BOTH>; + handler = "power_signal_interrupt"; + }; + + /delete-node/ lid_imu; + }; + + named-gpios { + compatible = "named-gpios"; + /delete-node/ lid_accel_int_l; + /delete-node/ usb_c0_ppc_frsinfo; + + // usb_c0_dp_in_hpd: GPH3 + ec_pen_chg_dis_odl: ec_pen_chg_dis_odl{ + gpios = <&gpioh 3 GPIO_OUTPUT_HIGH>; + }; + + en_pp5000_z2: en_pp5000_z2 { + gpios = <&gpioc 6 GPIO_OUTPUT_LOW>; + }; + + // EN_PP3300_BASE_X GPD7 + en_pp3300_base_x: en_pp3300_base_x{ + gpios = <&gpiod 7 GPIO_OUTPUT_LOW>; + }; + + // USB_C0_DP_IN_HPD GPH6 + usb_c0_dp_in_hpd: usb-c0-dp-in-hpd { + gpios = <&gpioh 6 GPIO_OUTPUT_LOW>; + }; + + // POGO_PRSNT_INT_L GPI5 + pogo_prsnt_int_l: pogo_prsnt_int_l{ + gpios = <&gpioi 5 GPIO_INPUT_PULL_DOWN>; + }; + + pg_pp4200_s5_od: pg-pp4200-s5-od { + gpios = <&gpiob 7 GPIO_OUTPUT_HIGH>; + enum-name = "GPIO_PG_PP4200_S5_OD"; + }; + + pmic_ec_resetb: pmic-ec-resetb { + gpios = <&gpioj 6 (GPIO_INPUT | GPIO_VOLTAGE_1P8 | + GPIO_ACTIVE_LOW)>; + enum-name = "GPIO_PMIC_EC_RESETB"; + }; + /delete-node/ en_pp5000_usb_a0_vbus; + /delete-node/ usb_a0_fault_odl; + }; + + unused-pins { + unused-gpios = + <&gpioa 7 GPIO_INPUT_PULL_DOWN>, + <&gpioe 0 GPIO_INPUT_PULL_DOWN>, + <&gpioe 7 GPIO_INPUT_PULL_DOWN>, + <&gpiof 0 GPIO_INPUT_PULL_DOWN>, //EC_EN_PP3300_WCAM + <&gpiof 1 GPIO_INPUT_PULL_DOWN>, + <&gpioh 0 GPIO_INPUT_PULL_DOWN>, //EC_AP_RSVD1_ODL + <&gpioh 1 GPIO_INPUT_PULL_DOWN>, + <&gpioh 2 GPIO_INPUT_PULL_DOWN>, + <&gpioi 3 GPIO_INPUT_PULL_DOWN>, //EC_AP_RSVD0_ODL + <&gpiom 2 GPIO_INPUT_PULL_DOWN>; + }; + + named-i2c-ports { + /delete-node/ usb-c1; //unused i2c_usb_c1 + }; + + /delete-node/ cros-keyscan; + + aliases { + /* + * motion sense's <>_INT_EVENT is handled + * by alias. Using the alias, each driver creates + * its own <>_INT_EVENT. + */ + bmi3xx-int = &alt_base_accel; + }; + + motionsense-mutex { + compatible = "cros-ec,motionsense-mutex"; + base_mutex_bmi323: bmi323-mutex { + }; + }; + + /* Rotation matrix used by drivers. */ + motionsense-rotation-ref { + compatible = "cros-ec,motionsense-rotation-ref"; + base_rot_ref_bmi: base-rotation-ref-bmi { + mat33 = <1 0 0 + 0 1 0 + 0 0 1>; + }; + }; + + motionsense-sensor-data { + bmi323_data: bmi323-drv-data { + compatible = "cros-ec,drvdata-bmi3xx"; + status = "okay"; + }; + }; + + motionsense-sensor { + /delete-node/ base-accel; + /delete-node/ base-gyro; + + alt_base_accel: alt-base-accel { + compatible = "cros-ec,bmi3xx-accel"; + status = "okay"; + + active-mask = "SENSOR_ACTIVE_S0_S3"; + location = "MOTIONSENSE_LOC_LID"; + mutex = <&base_mutex_bmi323>; + port = <&i2c_sensor>; + rot-standard-ref = <&base_rot_ref_bmi>; + default-range = <2>; + drv-data = <&bmi323_data>; + configs { + compatible = + "cros-ec,motionsense-sensor-config"; + ec-s0 { + odr = <(10000 | ROUND_UP_FLAG)>; + }; + ec-s3 { + odr = <(10000 | ROUND_UP_FLAG)>; + }; + }; + }; + + alt_base_gyro: alt-base-gyro { + compatible = "cros-ec,bmi3xx-gyro"; + status = "okay"; + + active-mask = "SENSOR_ACTIVE_S0_S3"; + location = "MOTIONSENSE_LOC_LID"; + mutex = <&base_mutex_bmi323>; + port = <&i2c_sensor>; + rot-standard-ref = <&base_rot_ref_bmi>; + drv-data = <&bmi323_data>; + }; + }; + + motionsense-sensor-info { + compatible = "cros-ec,motionsense-sensor-info"; + + /* + * list of GPIO interrupts that have to + * be enabled at initial stage + */ + sensor-irqs = <&int_base_imu>; + }; + + usbc { + port0@0{ + usb-mux-chain-0{ + usb-muxes = <&ps8743_mux_1 &virtual_mux_0>; + }; + }; + }; + + power_signal_list: power-signal-list { + compatible = "mediatek,mt8188-power-signal-list"; + + pg_pp4200_s5 { + power-enum-name = "PG_PP4200_S5"; + power-gpio-pin = <&pg_pp4200_s5_od>; + }; + pmic_ap_reset { + power-enum-name = "PMIC_AP_RST"; + power-gpio-pin = <&pmic_ec_resetb>; + }; + }; +}; + +&i2c0{ + charger_bc12_port1: rt9490@53{ + compatible = "richtek,rt9490"; + }; +}; + +&i2c2 { + ps8743_mux_1: ps8743-mux-1@10 { + compatible = "parade,ps8743"; + reg = <0x10>; + }; +}; diff --git a/zephyr/program/corsola/starmie/src/ppc.c b/zephyr/program/corsola/starmie/src/ppc.c new file mode 100644 index 0000000000..8c1dc2fe7f --- /dev/null +++ b/zephyr/program/corsola/starmie/src/ppc.c @@ -0,0 +1,29 @@ +/* Copyright 2023 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* Starmie PPC/BC12 (RT1739) configuration */ + +#include "baseboard_usbc_config.h" +#include "driver/ppc/rt1739.h" +#include "gpio/gpio_int.h" +#include "hooks.h" + +void c0_bc12_interrupt(enum gpio_signal signal) +{ + rt1739_interrupt(0); +} + +static void board_usbc_init(void) +{ + gpio_enable_dt_interrupt(GPIO_INT_FROM_NODELABEL(int_usb_c0_ppc_bc12)); +} +DECLARE_HOOK(HOOK_INIT, board_usbc_init, HOOK_PRIO_POST_DEFAULT); + +void ppc_interrupt(enum gpio_signal signal) +{ + if (signal == GPIO_SIGNAL(DT_NODELABEL(usb_c0_ppc_bc12_int_odl))) { + ppc_chips[0].drv->interrupt(0); + } +} |