summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2020-03-27 20:28:18 -0600
committerCommit Bot <commit-bot@chromium.org>2020-03-28 19:29:55 +0000
commit3fd849f1ba5c22836d3c23bce213dc87f87bcb36 (patch)
tree52b2c261f1deca1f72c89947e298c4d74b7d801f
parent9f3ade325ef2111c078009e2d223e33f1abac871 (diff)
downloadchrome-ec-3fd849f1ba5c22836d3c23bce213dc87f87bcb36.tar.gz
Zork: Clean up FW_CONFIG hook functions
BUG=b:150239200 BRANCH=none TEST=none Signed-off-by: Edward Hill <ecgh@chromium.org> Change-Id: I01238a98e17cd0a6320986e12bba32c08e1244fd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2125588 Reviewed-by: Denis Brockus <dbrockus@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--baseboard/zork/baseboard.c5
-rw-r--r--baseboard/zork/baseboard.h3
-rw-r--r--board/dalboz/board.c20
-rw-r--r--board/ezkinil/board.c42
-rw-r--r--board/morphius/board.c29
-rw-r--r--board/trembyle/board.c48
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);