summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangganxiang <wangganxiang@huaqin.corp-partner.google.com>2023-04-28 14:43:55 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-05-04 09:46:43 +0000
commit8981f501202e350890d35b3fe30831bb40a29873 (patch)
tree9dfa1e6934863a9050c76287dc3b47ff82cc8602
parent1fbd02f99e14c38404d7468b0cc3f1816d9f55de (diff)
downloadchrome-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.py2
-rw-r--r--zephyr/program/corsola/CMakeLists.txt3
-rw-r--r--zephyr/program/corsola/Kconfig6
-rw-r--r--zephyr/program/corsola/src/usbc.c6
-rw-r--r--zephyr/program/corsola/starmie/CMakeLists.txt12
-rw-r--r--zephyr/program/corsola/starmie/project.conf35
-rw-r--r--zephyr/program/corsola/starmie/project.overlay227
-rw-r--r--zephyr/program/corsola/starmie/src/ppc.c29
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);
+ }
+}