diff options
Diffstat (limited to 'zephyr/projects/herobrine')
7 files changed, 74 insertions, 113 deletions
diff --git a/zephyr/projects/herobrine/herobrine_npcx9/CMakeLists.txt b/zephyr/projects/herobrine/herobrine_npcx9/CMakeLists.txt index dfccaf12c6..9b21ee77bd 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/CMakeLists.txt +++ b/zephyr/projects/herobrine/herobrine_npcx9/CMakeLists.txt @@ -17,3 +17,5 @@ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LED_COMMON "src/led.c") zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_I2C "src/i2c.c") +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_USBC + "src/alt_dev_replacement.c") diff --git a/zephyr/projects/herobrine/herobrine_npcx9/gpio.dts b/zephyr/projects/herobrine/herobrine_npcx9/gpio.dts index 152f033db4..f1c3bc5fea 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/gpio.dts +++ b/zephyr/projects/herobrine/herobrine_npcx9/gpio.dts @@ -10,282 +10,238 @@ usb_c0_pd_int_odl { gpios = <&gpioe 0 GPIO_INPUT>; enum-name = "GPIO_USB_C0_PD_INT_ODL"; - label = "USB_C0_PD_INT_ODL"; }; usb_c1_pd_int_odl { gpios = <&gpiof 5 GPIO_INPUT>; enum-name = "GPIO_USB_C1_PD_INT_ODL"; - label = "USB_C1_PD_INT_ODL"; }; usb_c0_swctl_int_odl { gpios = <&gpio0 3 GPIO_INPUT>; enum-name = "GPIO_USB_C0_SWCTL_INT_ODL"; - label = "USB_C0_SWCTL_INT_ODL"; }; usb_c1_swctl_int_odl { gpios = <&gpio4 0 GPIO_INPUT>; enum-name = "GPIO_USB_C1_SWCTL_INT_ODL"; - label = "USB_C1_SWCTL_INT_ODL"; }; gpio_usb_c0_bc12_int_l: usb_c0_bc12_int_l { - gpios = <&gpio6 1 (GPIO_INPUT | GPIO_PULL_UP)>; + gpios = <&gpio6 1 GPIO_INPUT_PULL_UP>; enum-name = "GPIO_USB_C0_BC12_INT_L"; - label = "USB_C0_BC12_INT_L"; }; gpio_usb_c1_bc12_int_l: usb_c1_bc12_int_l { - gpios = <&gpio8 2 (GPIO_INPUT | GPIO_PULL_UP)>; + gpios = <&gpio8 2 GPIO_INPUT_PULL_UP>; enum-name = "GPIO_USB_C1_BC12_INT_L"; - label = "USB_C1_BC12_INT_L"; }; usb_a0_oc_odl { - gpios = <&gpiof 4 (GPIO_INPUT | GPIO_PULL_UP)>; + gpios = <&gpiof 4 GPIO_INPUT_PULL_UP>; enum-name = "GPIO_USB_A0_OC_ODL"; - label = "USB_A0_OC_ODL"; }; gpio_chg_acok_od: chg_acok_od { gpios = <&gpiod 2 GPIO_INPUT>; enum-name = "GPIO_AC_PRESENT"; - label = "CHG_ACOK_OD"; }; gpio_ec_pwr_btn_odl: ec_pwr_btn_odl { gpios = <&gpio0 0 GPIO_INPUT>; enum-name = "GPIO_POWER_BUTTON_L"; - label = "EC_PWR_BTN_ODL"; }; ec_voldn_btn_odl { - gpios = <&gpio6 2 (GPIO_INPUT | GPIO_PULL_UP)>; + gpios = <&gpio6 2 GPIO_INPUT_PULL_UP>; enum-name = "GPIO_VOLUME_DOWN_L"; - label = "EC_VOLDN_BTN_ODL"; }; ec_volup_btn_odl { - gpios = <&gpioc 2 (GPIO_INPUT | GPIO_PULL_UP)>; + gpios = <&gpioc 2 GPIO_INPUT_PULL_UP>; enum-name = "GPIO_VOLUME_UP_L"; - label = "EC_VOLUP_BTN_ODL"; }; ec_wp_odl { gpios = <&gpiod 3 GPIO_INPUT>; enum-name = "GPIO_WP_L"; - label = "EC_WP_ODL"; }; gpio_lid_open_ec: lid_open_ec { gpios = <&gpio0 1 GPIO_INPUT>; enum-name = "GPIO_LID_OPEN"; - label = "LID_OPEN_EC"; }; ap_rst_l { gpios = <&gpio5 1 GPIO_INPUT>; enum-name = "GPIO_AP_RST_L"; - label = "AP_RST_L"; }; ps_hold { - gpios = <&gpioa 6 (GPIO_INPUT | GPIO_PULL_DOWN)>; + gpios = <&gpioa 6 GPIO_INPUT_PULL_DOWN>; enum-name = "GPIO_PS_HOLD"; - label = "PS_HOLD"; }; ap_suspend { gpios = <&gpio5 7 GPIO_INPUT>; enum-name = "GPIO_AP_SUSPEND"; - label = "AP_SUSPEND"; }; - power_good { - gpios = <&gpio3 7 (GPIO_INPUT | GPIO_PULL_DOWN)>; + mb_power_good { + gpios = <&gpio3 7 GPIO_INPUT_PULL_DOWN>; enum-name = "GPIO_POWER_GOOD"; - label = "MB_POWER_GOOD"; }; warm_reset_l { gpios = <&gpiob 0 GPIO_INPUT>; enum-name = "GPIO_WARM_RESET_L"; - label = "WARM_RESET_L"; }; ap_ec_spi_cs_l { - gpios = <&gpio5 3 (GPIO_INPUT | GPIO_PULL_DOWN)>; - label = "AP_EC_SPI_CS_L"; + gpios = <&gpio5 3 GPIO_INPUT_PULL_DOWN>; }; tablet_mode_l { gpios = <&gpioc 6 GPIO_INPUT>; enum-name = "GPIO_TABLET_MODE_L"; - label = "TABLET_MODE_L"; }; gpio_accel_gyro_int_l: accel_gyro_int_l { gpios = <&gpioa 3 GPIO_INPUT>; enum-name = "GPIO_ACCEL_GYRO_INT_L"; - label = "ACCEL_GYRO_INT_L"; }; gpio_rtc_ec_wake_odl: rtc_ec_wake_odl { #gpio-cells = <0>; gpios = <&gpio0 2 GPIO_INPUT>; enum-name = "GPIO_EC_RST_ODL"; - label = "EC_RST_ODL"; }; ec_entering_rw { gpios = <&gpio7 2 GPIO_OUT_LOW>; enum-name = "GPIO_ENTERING_RW"; - label = "EC_ENTERING_RW"; }; ccd_mode_odl { gpios = <&gpio6 3 GPIO_INPUT>; enum-name = "GPIO_CCD_MODE_ODL"; - label = "CCD_MODE_ODL"; }; ec_batt_pres_odl { gpios = <&gpioe 5 GPIO_INPUT>; enum-name = "GPIO_BATT_PRES_ODL"; - label = "EC_BATT_PRES_ODL"; }; ec_gsc_packet_mode { gpios = <&gpio8 3 GPIO_OUT_LOW>; enum-name = "GPIO_PACKET_MODE_EN"; - label = "EC_GSC_PACKET_MODE"; }; pmic_resin_l { gpios = <&gpioa 0 GPIO_ODR_HIGH>; enum-name = "GPIO_PMIC_RESIN_L"; - label = "PMIC_RESIN_L"; }; pmic_kpd_pwr_odl { gpios = <&gpioa 2 GPIO_ODR_HIGH>; enum-name = "GPIO_PMIC_KPD_PWR_ODL"; - label = "PMIC_KPD_PWR_ODL"; }; ap_ec_int_l { gpios = <&gpio5 6 GPIO_ODR_HIGH>; enum-name = "GPIO_EC_INT_L"; - label = "AP_EC_INT_L"; }; gpio_switchcap_on: switchcap_on { gpios = <&gpiod 5 GPIO_OUT_LOW>; enum-name = "GPIO_SWITCHCAP_ON"; - label = "SWITCHCAP_ON"; }; en_pp5000_s5 { gpios = <&gpio7 3 GPIO_OUT_HIGH>; enum-name = "GPIO_EN_PP5000"; - label = "EN_PP5000_S5"; }; ec_bl_disable_l { - gpios = <&gpiob 6 GPIO_OUT_LOW>; + /* The PMIC controls backlight enable and this pin must + * be HiZ for normal operation. But the backlight can + * be enabled by setting this pin low and configuring it + * as an output. + */ + gpios = <&gpiob 6 GPIO_INPUT>; enum-name = "GPIO_ENABLE_BACKLIGHT"; - label = "EC_BL_DISABLE_L"; }; lid_accel_int_l { gpios = <&gpioa 1 GPIO_INPUT>; enum-name = "GPIO_LID_ACCEL_INT_L"; - label = "LID_ACCEL_INT_L"; }; tp_int_gate { gpios = <&gpio7 4 GPIO_OUT_LOW>; enum-name = "GPIO_TRACKPAD_INT_GATE"; - label = "TP_INT_GATE"; }; usb_c0_pd_rst_l { gpios = <&gpiof 1 GPIO_OUT_HIGH>; enum-name = "GPIO_USB_C0_PD_RST_L"; - label = "USB_C0_PD_RST_L"; }; usb_c1_pd_rst_l { gpios = <&gpioe 4 GPIO_OUT_HIGH>; enum-name = "GPIO_USB_C1_PD_RST_L"; - label = "USB_C1_PD_RST_L"; }; dp_mux_oe_l { gpios = <&gpiob 1 GPIO_ODR_HIGH>; enum-name = "GPIO_DP_MUX_OE_L"; - label = "DP_MUX_OE_L"; }; dp_mux_sel { gpios = <&gpio4 5 GPIO_OUT_LOW>; enum-name = "GPIO_DP_MUX_SEL"; - label = "DP_MUX_SEL"; }; dp_hot_plug_det_r { gpios = <&gpio9 5 GPIO_OUT_LOW>; enum-name = "GPIO_DP_HOT_PLUG_DET"; - label = "DP_HOT_PLUG_DET_R"; }; en_usb_a_5v { gpios = <&gpiof 0 GPIO_OUT_LOW>; enum-name = "GPIO_EN_USB_A_5V"; - label = "EN_USB_A_5V"; }; usb_a_cdp_ilim_en_l { gpios = <&gpio7 5 GPIO_OUT_HIGH>; - label = "USB_A_CDP_ILIM_EN_L"; + }; + usb_c0_frs_en { + gpios = <&gpioc 5 GPIO_OUT_LOW>; + enum-name = "GPIO_USB_C0_FRS_EN"; + }; + usb_c1_frs_en { + gpios = <&gpioc 1 GPIO_OUT_LOW>; + enum-name = "GPIO_USB_C1_FRS_EN"; }; ec_chg_led_y_c0 { gpios = <&gpio6 0 GPIO_OUT_LOW>; enum-name = "GPIO_EC_CHG_LED_Y_C0"; - label = "EC_CHG_LED_Y_C0"; }; ec_chg_led_w_c0 { gpios = <&gpioc 0 GPIO_OUT_LOW>; enum-name = "GPIO_EC_CHG_LED_W_C0"; - label = "EC_CHG_LED_W_C0"; }; ec_chg_led_y_c1 { gpios = <&gpioc 3 GPIO_OUT_LOW>; enum-name = "GPIO_EC_CHG_LED_Y_C1"; - label = "EC_CHG_LED_Y_C1"; }; ec_chg_led_w_c1 { gpios = <&gpioc 4 GPIO_OUT_LOW>; enum-name = "GPIO_EC_CHG_LED_W_C1"; - label = "EC_CHG_LED_W_C1"; }; ap_ec_spi_mosi { - gpios = <&gpio4 6 (GPIO_INPUT | GPIO_PULL_DOWN)>; - label = "AP_EC_SPI_MOSI"; + gpios = <&gpio4 6 GPIO_INPUT_PULL_DOWN>; }; ap_ec_spi_miso { - gpios = <&gpio4 7 (GPIO_INPUT | GPIO_PULL_DOWN)>; - label = "AP_EC_SPI_MISO"; + gpios = <&gpio4 7 GPIO_INPUT_PULL_DOWN>; }; ap_ec_spi_clk { - gpios = <&gpio5 5 (GPIO_INPUT | GPIO_PULL_DOWN)>; - label = "AP_EC_SPI_CLK"; + gpios = <&gpio5 5 GPIO_INPUT_PULL_DOWN>; }; gpio_brd_id0: brd_id0 { gpios = <&gpio9 4 GPIO_INPUT>; enum-name = "GPIO_BOARD_VERSION1"; - label = "BRD_ID0"; }; gpio_brd_id1: brd_id1 { gpios = <&gpio9 7 GPIO_INPUT>; enum-name = "GPIO_BOARD_VERSION2"; - label = "BRD_ID1"; }; gpio_brd_id2: brd_id2 { gpios = <&gpioa 5 GPIO_INPUT>; enum-name = "GPIO_BOARD_VERSION3"; - label = "BRD_ID2"; }; gpio_sku_id0: sku_id0 { gpios = <&gpio6 7 GPIO_INPUT>; enum-name = "GPIO_SKU_ID0"; - label = "SKU_ID0"; }; gpio_sku_id1: sku_id1 { gpios = <&gpio7 0 GPIO_INPUT>; enum-name = "GPIO_SKU_ID1"; - label = "SKU_ID1"; }; gpio_sku_id2: sku_id2 { gpios = <&gpioe 1 GPIO_INPUT>; enum-name = "GPIO_SKU_ID2"; - label = "SKU_ID2"; }; gpio_switchcap_pg: src_vph_pwr_pg { - gpios = <&gpioe 2 (GPIO_INPUT | GPIO_PULL_DOWN)>; + gpios = <&gpioe 2 GPIO_INPUT_PULL_DOWN>; enum-name = "GPIO_SWITCHCAP_PG"; - label = "SRC_VPH_PWR_PG"; }; arm_x86 { gpios = <&gpio6 6 GPIO_OUT_LOW>; - label = "ARM_X86"; }; ec_kso_02_inv { gpios = <&gpio1 7 GPIO_OUT_LOW>; enum-name = "GPIO_KBD_KSO2"; - label = "EC_KSO_02_INV"; }; }; @@ -342,11 +298,9 @@ <&gpio5 2 0>, <&gpio5 4 0>, <&gpio7 6 0>, - <&gpioc 5 0>, <&gpiod 1 0>, <&gpiod 0 0>, <&gpioe 3 0>, - <&gpioc 1 0>, <&gpio0 4 0>, <&gpiod 6 0>, <&gpio3 2 0>, @@ -362,7 +316,8 @@ <&gpio9 3 0>, <&gpioa 7 0>, <&gpio5 0 0>, - <&gpio8 1 0>; + <&gpio8 1 0>, + <&gpiob 7 0>; }; }; diff --git a/zephyr/projects/herobrine/herobrine_npcx9/i2c.dts b/zephyr/projects/herobrine/herobrine_npcx9/i2c.dts index 44bc9c6707..d8cb226710 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/i2c.dts +++ b/zephyr/projects/herobrine/herobrine_npcx9/i2c.dts @@ -20,53 +20,43 @@ i2c_power: power { i2c-port = <&i2c0_0>; enum-name = "I2C_PORT_POWER"; - label = "POWER"; }; battery { i2c-port = <&i2c0_0>; remote-port = <0>; enum-name = "I2C_PORT_BATTERY"; - label = "BATTERY"; }; virtual-battery { i2c-port = <&i2c0_0>; enum-name = "I2C_PORT_VIRTUAL_BATTERY"; - label = "VIRTUAL"; }; charger { i2c-port = <&i2c0_0>; enum-name = "I2C_PORT_CHARGER"; - label = "CHARGER"; }; i2c_tcpc0: tcpc0 { i2c-port = <&i2c1_0>; enum-name = "I2C_PORT_TCPC0"; - label = "TCPC0"; }; i2c_tcpc1: tcpc1 { i2c-port = <&i2c2_0>; enum-name = "I2C_PORT_TCPC1"; - label = "TCPC1"; }; rtc { i2c-port = <&i2c4_1>; enum-name = "I2C_PORT_RTC"; - label = "RTC"; }; i2c_eeprom: eeprom { i2c-port = <&i2c5_0>; enum-name = "I2C_PORT_EEPROM"; - label = "EEPROM"; }; i2c_sensor: sensor { i2c-port = <&i2c7_0>; enum-name = "I2C_PORT_SENSOR"; - label = "SENSOR"; }; accel { i2c-port = <&i2c7_0>; enum-name = "I2C_PORT_ACCEL"; - label = "ACCEL"; }; }; @@ -74,6 +64,7 @@ }; &i2c0_0 { + label = "I2C_POWER"; status = "okay"; clock-frequency = <I2C_BITRATE_STANDARD>; @@ -89,6 +80,7 @@ }; &i2c1_0 { + label = "I2C_USB_C0_PD"; status = "okay"; /* * TODO(b/200280341): PS8805 SPI ROM access @@ -107,6 +99,7 @@ }; &i2c2_0 { + label = "I2C_USB_C1_PD"; status = "okay"; /* TODO(b/200280341): PS8805 SPI ROM access */ clock-frequency = <I2C_BITRATE_FAST>; @@ -121,11 +114,8 @@ clock-frequency = <I2C_BITRATE_FAST>; }; -&i2c_ctrl3 { - status = "okay"; -}; - &i2c4_1 { + label = "I2C_RTC"; status = "okay"; clock-frequency = <I2C_BITRATE_FAST>; @@ -142,6 +132,7 @@ }; &i2c5_0 { + label = "I2C_EEPROM"; status = "okay"; clock-frequency = <I2C_BITRATE_FAST>; }; @@ -151,6 +142,7 @@ }; &i2c7_0 { + label = "I2C_SENSOR"; status = "okay"; clock-frequency = <I2C_BITRATE_FAST>; }; diff --git a/zephyr/projects/herobrine/herobrine_npcx9/prj.conf b/zephyr/projects/herobrine/herobrine_npcx9/prj.conf index aeb9f6e36f..503cdc1e27 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/prj.conf +++ b/zephyr/projects/herobrine/herobrine_npcx9/prj.conf @@ -14,6 +14,7 @@ CONFIG_PLATFORM_EC_POWER_BUTTON=y CONFIG_PLATFORM_EC_CBI_GPIO=y CONFIG_I2C=y CONFIG_KERNEL_SHELL=y +CONFIG_PLATFORM_EC_BOARD_RESET_AFTER_POWER_ON=y # Shell history and tab autocompletion (for convenience) CONFIG_SHELL_HELP=y @@ -138,9 +139,6 @@ CONFIG_PLATFORM_EC_CONSOLE_CMD_RTC_ALARM=y # EC software sync CONFIG_PLATFORM_EC_VBOOT_HASH=y -# Serial Host Interface (SHI) device. -CONFIG_CROS_SHI_NPCX=y - # Sensors CONFIG_PLATFORM_EC_MOTIONSENSE=y CONFIG_PLATFORM_EC_ACCEL_FIFO=y diff --git a/zephyr/projects/herobrine/herobrine_npcx9/src/alt_dev_replacement.c b/zephyr/projects/herobrine/herobrine_npcx9/src/alt_dev_replacement.c new file mode 100644 index 0000000000..fe3f06fca5 --- /dev/null +++ b/zephyr/projects/herobrine/herobrine_npcx9/src/alt_dev_replacement.c @@ -0,0 +1,35 @@ +/* Copyright 2021 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. + */ +#include <logging/log.h> +#include "usbc/ppc.h" +#include "hooks.h" +#include "cros_board_info.h" + +LOG_MODULE_REGISTER(alt_dev_replacement); + +#define BOARD_VERSION_UNKNOWN 0xffffffff + +/* Check board version to decide which ppc is used. */ +static bool board_has_syv_ppc(void) +{ + static uint32_t board_version = BOARD_VERSION_UNKNOWN; + + if (board_version == BOARD_VERSION_UNKNOWN) { + if (cbi_get_board_version(&board_version) != EC_SUCCESS) { + LOG_ERR("Failed to get board version."); + board_version = 0; + } + } + + return (board_version >= 1); +} + +static void check_alternate_devices(void) +{ + /* Configure the PPC driver */ + if (board_has_syv_ppc()) + PPC_ENABLE_ALTERNATE(ppc_port0_syv); +} +DECLARE_HOOK(HOOK_INIT, check_alternate_devices, HOOK_PRIO_DEFAULT); diff --git a/zephyr/projects/herobrine/herobrine_npcx9/src/usbc_config.c b/zephyr/projects/herobrine/herobrine_npcx9/src/usbc_config.c index 20536752f2..1bce0c51b3 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/src/usbc_config.c +++ b/zephyr/projects/herobrine/herobrine_npcx9/src/usbc_config.c @@ -62,23 +62,6 @@ void usba_oc_interrupt(enum gpio_signal signal) hook_call_deferred(&usba_oc_deferred_data, 0); } -#define BOARD_VERSION_UNKNOWN 0xffffffff - -/* Check board version to decide which ppc is used. */ -static bool board_has_syv_ppc(void) -{ - static uint32_t board_version = BOARD_VERSION_UNKNOWN; - - if (board_version == BOARD_VERSION_UNKNOWN) { - if (cbi_get_board_version(&board_version) != EC_SUCCESS) { - CPRINTS("Failed to get board version."); - board_version = 0; - } - } - - return (board_version >= 1); -} - void ppc_interrupt(enum gpio_signal signal) { switch (signal) { @@ -190,10 +173,6 @@ static void board_init_usbc(void) { /* Enable USB-A overcurrent interrupt */ gpio_enable_interrupt(GPIO_USB_A0_OC_ODL); - - /* Configure the PPC driver */ - if (board_has_syv_ppc()) - PPC_ENABLE_ALTERNATE(ppc_port0_syv); } DECLARE_HOOK(HOOK_INIT, board_init_usbc, HOOK_PRIO_DEFAULT); diff --git a/zephyr/projects/herobrine/herobrine_npcx9/usbc.dts b/zephyr/projects/herobrine/herobrine_npcx9/usbc.dts index c910c8ec03..af440c4f7e 100644 --- a/zephyr/projects/herobrine/herobrine_npcx9/usbc.dts +++ b/zephyr/projects/herobrine/herobrine_npcx9/usbc.dts @@ -47,7 +47,7 @@ compatible = "silergy,syv682x"; status = "okay"; port = <&i2c_tcpc0>; - i2c-addr-flags = "SYV682X_ADDR0_FLAGS"; + i2c-addr-flags = "SYV682X_ADDR1_FLAGS"; alternate-for = <&ppc_port0>; }; }; |