From 3fd849f1ba5c22836d3c23bce213dc87f87bcb36 Mon Sep 17 00:00:00 2001 From: Edward Hill Date: Fri, 27 Mar 2020 20:28:18 -0600 Subject: Zork: Clean up FW_CONFIG hook functions BUG=b:150239200 BRANCH=none TEST=none Signed-off-by: Edward Hill Change-Id: I01238a98e17cd0a6320986e12bba32c08e1244fd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2125588 Reviewed-by: Denis Brockus Commit-Queue: Denis Brockus --- baseboard/zork/baseboard.c | 5 ----- baseboard/zork/baseboard.h | 3 --- board/dalboz/board.c | 20 ++++++++++++------- board/ezkinil/board.c | 42 ++++++++++++++++++++++++---------------- board/morphius/board.c | 29 +++++++++++++++------------- board/trembyle/board.c | 48 ++++++++++++++++++++++++++-------------------- 6 files changed, 82 insertions(+), 65 deletions(-) diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index ad2482a432..bdcb25cb76 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -566,11 +566,6 @@ static void cbi_init(void) ccprints("FW Config: not set in cbi"); else ccprints("FW Config: %d (0x%x)", val, val); - -#ifdef HAS_TASK_MOTIONSENSE - board_update_sensor_config_from_sku(); -#endif - } DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_I2C + 1); diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index ae7ecae512..4780a70f97 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -347,9 +347,6 @@ void ppc_interrupt(enum gpio_signal signal); void hdmi_hpd_interrupt(enum ioex_signal signal); void mst_hpd_interrupt(enum ioex_signal signal); -int board_is_convertible(void); -void board_update_sensor_config_from_sku(void); - #ifdef CONFIG_USB_TYPEC_PD_FAST_ROLE_SWAP int board_tcpc_fast_role_swap_enable(int port, int enable); #endif diff --git a/board/dalboz/board.c b/board/dalboz/board.c index 8fd80d29a4..d44f5ea6f7 100644 --- a/board/dalboz/board.c +++ b/board/dalboz/board.c @@ -21,6 +21,7 @@ #include "pwm_chip.h" #include "switch.h" #include "system.h" +#include "tablet_mode.h" #include "task.h" #include "usb_charge.h" @@ -152,7 +153,7 @@ void pcal6408_interrupt(enum gpio_signal signal) hook_call_deferred(&pcal6408_handler_data, 0); } -static void setup_usb_db(void) +static void setup_fw_config(void) { if (ec_config_get_usb_db() == DALBOZ_DB_D_OPT2_USBA_HDMI) { ccprints("DB OPT2 HDMI"); @@ -184,14 +185,19 @@ static void setup_usb_db(void) /* Enable BC 1.2 interrupts */ gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_ODL); gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_ODL); -} -DECLARE_HOOK(HOOK_INIT, setup_usb_db, HOOK_PRIO_INIT_I2C + 2); -void board_update_sensor_config_from_sku(void) -{ - /* Enable Gyro interrupts */ - gpio_enable_interrupt(GPIO_6AXIS_INT_L); + if (ec_config_has_lid_angle_tablet_mode()) { + /* Enable Gyro interrupts */ + gpio_enable_interrupt(GPIO_6AXIS_INT_L); + } else { + motion_sensor_count = 0; + /* Device is clamshell only */ + tablet_set_mode(0); + /* Gyro is not present, don't allow line to float */ + gpio_set_flags(GPIO_6AXIS_INT_L, GPIO_INPUT | GPIO_PULL_DOWN); + } } +DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); const struct pwm_t pwm_channels[] = { [PWM_CH_KBLIGHT] = { diff --git a/board/ezkinil/board.c b/board/ezkinil/board.c index 917d081640..089ecf2bdc 100644 --- a/board/ezkinil/board.c +++ b/board/ezkinil/board.c @@ -120,12 +120,6 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); #endif /* HAS_TASK_MOTIONSENSE */ -void board_update_sensor_config_from_sku(void) -{ - /* Enable Gyro interrupts */ - gpio_enable_interrupt(GPIO_6AXIS_INT_L); -} - const struct pwm_t pwm_channels[] = { [PWM_CH_KBLIGHT] = { .channel = 3, @@ -150,6 +144,22 @@ const struct mft_t mft_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(mft_channels) == MFT_CH_COUNT); +/***************************************************************************** + * USB-A Retimer + */ + +static void usba_retimer_on(void) +{ + ioex_set_level(IOEX_USB_A1_RETIMER_EN, 1); +} +DECLARE_HOOK(HOOK_CHIPSET_STARTUP, usba_retimer_on, HOOK_PRIO_DEFAULT); + +static void usba_retimer_off(void) +{ + ioex_set_level(IOEX_USB_A1_RETIMER_EN, 0); +} +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, usba_retimer_off, HOOK_PRIO_DEFAULT); + /* * USB C0 port SBU mux use standalone FSUSB42UMX * chip and it need a board specific driver. @@ -217,7 +227,6 @@ static void setup_mux(void) usbc1_amd_fp5_usb_mux.flags = USB_MUX_FLAG_SET_WITHOUT_FLIP; } } -DECLARE_HOOK(HOOK_INIT, setup_mux, HOOK_PRIO_DEFAULT); struct usb_mux usb_muxes[] = { [USBC_PORT_C0] = { @@ -233,14 +242,15 @@ struct usb_mux usb_muxes[] = { }; BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); -static void usba_retimer_on(void) -{ - ioex_set_level(IOEX_USB_A1_RETIMER_EN, 1); -} -DECLARE_HOOK(HOOK_CHIPSET_STARTUP, usba_retimer_on, HOOK_PRIO_DEFAULT); -static void usba_retimer_off(void) +/***************************************************************************** + * Use FW_CONFIG to set correct configuration. + */ + +void setup_fw_config(void) { - ioex_set_level(IOEX_USB_A1_RETIMER_EN, 0); -} -DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, usba_retimer_off, HOOK_PRIO_DEFAULT); + /* Enable Gyro interrupts */ + gpio_enable_interrupt(GPIO_6AXIS_INT_L); + setup_mux(); +} +DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); diff --git a/board/morphius/board.c b/board/morphius/board.c index 043d18e092..13c8319760 100644 --- a/board/morphius/board.c +++ b/board/morphius/board.c @@ -122,18 +122,6 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); #endif /* HAS_TASK_MOTIONSENSE */ -void board_update_sensor_config_from_sku(void) -{ - /* Enable Gyro interrupts */ - gpio_enable_interrupt(GPIO_6AXIS_INT_L); -} - -void board_init(void) -{ - gpio_enable_interrupt(GPIO_EN_PWR_TOUCHPAD_PS2); -} -DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_INIT_I2C + 1); - static void trackpoint_reset_deferred(void) { gpio_set_level(GPIO_EC_PS2_RESET, 1); @@ -225,7 +213,6 @@ static void setup_mux(void) usb_muxes[USBC_PORT_C1].next_mux = &usbc1_ps8818; } } -DECLARE_HOOK(HOOK_INIT, setup_mux, HOOK_PRIO_DEFAULT); /* TODO(b:151232257) Remove probe code when hardware supports CBI */ #include "driver/retimer/ps8802.h" @@ -262,3 +249,19 @@ struct usb_mux usb_muxes[] = { }, }; BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); + +/***************************************************************************** + * Use FW_CONFIG to set correct configuration. + */ + +void setup_fw_config(void) +{ + /* Enable Gyro interrupts */ + gpio_enable_interrupt(GPIO_6AXIS_INT_L); + + /* Enable PS2 power interrupts */ + gpio_enable_interrupt(GPIO_EN_PWR_TOUCHPAD_PS2); + + setup_mux(); +} +DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); diff --git a/board/trembyle/board.c b/board/trembyle/board.c index 7454acd4e7..135200d4e6 100644 --- a/board/trembyle/board.c +++ b/board/trembyle/board.c @@ -127,26 +127,6 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); enum gpio_signal GPIO_PCH_PWRBTN_L = GPIO_EC_FCH_PWR_BTN_L; enum gpio_signal GPIO_PCH_SYS_PWROK = GPIO_EC_FCH_PWROK; -void board_update_sensor_config_from_sku(void) -{ - int data; - - /* - * If the CBI EEPROM is found on the battery I2C port then we are - * running on V0 HW so re-map the GPIOs that moved. - */ - if ((system_get_sku_id() == 0x7fffffff) - && (i2c_read8(I2C_PORT_BATTERY, I2C_ADDR_EEPROM_FLAGS, 0, &data) - == EC_SUCCESS)) { - ccprints("V0 HW detected"); - GPIO_PCH_PWRBTN_L = GPIO_EC_FCH_PWR_BTN_L_V0; - GPIO_PCH_SYS_PWROK = GPIO_EC_FCH_PWROK_V0; - } - - /* Enable Gyro interrupts */ - gpio_enable_interrupt(GPIO_6AXIS_INT_L); -} - const struct pwm_t pwm_channels[] = { [PWM_CH_KBLIGHT] = { .channel = 3, @@ -267,7 +247,6 @@ static void setup_mux(void) usb_muxes[USBC_PORT_C1].next_mux = &usbc1_ps8818; } } -DECLARE_HOOK(HOOK_INIT, setup_mux, HOOK_PRIO_DEFAULT); /* TODO(b:151232257) Remove probe code when hardware supports CBI */ #include "driver/retimer/ps8802.h" @@ -304,3 +283,30 @@ struct usb_mux usb_muxes[] = { }, }; BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); + +/***************************************************************************** + * Use FW_CONFIG to set correct configuration. + */ + +void setup_fw_config(void) +{ + int data; + + /* + * If the CBI EEPROM is found on the battery I2C port then we are + * running on V0 HW so re-map the GPIOs that moved. + */ + if ((system_get_sku_id() == 0x7fffffff) + && (i2c_read8(I2C_PORT_BATTERY, I2C_ADDR_EEPROM_FLAGS, 0, &data) + == EC_SUCCESS)) { + ccprints("V0 HW detected"); + GPIO_PCH_PWRBTN_L = GPIO_EC_FCH_PWR_BTN_L_V0; + GPIO_PCH_SYS_PWROK = GPIO_EC_FCH_PWROK_V0; + } + + /* Enable Gyro interrupts */ + gpio_enable_interrupt(GPIO_6AXIS_INT_L); + + setup_mux(); +} +DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); -- cgit v1.2.1