diff options
author | Scott Collyer <scollyer@google.com> | 2021-11-23 15:04:49 -0800 |
---|---|---|
committer | Scott Collyer <scollyer@google.com> | 2021-11-23 15:04:49 -0800 |
commit | 817cf2223b0b33c91ca6e369b644cbc4d6c361e3 (patch) | |
tree | f698bbab73d87af25f9fdc2d49f50a0c25111a79 /board/scout/board.c | |
parent | 6da8436a8ce04a7f88f80049a10638e1b8f6439d (diff) | |
parent | 0349a5b6d95308141754523708a2d11d8bacce4c (diff) | |
download | chrome-ec-817cf2223b0b33c91ca6e369b644cbc4d6c361e3.tar.gz |
Merge remote-tracking branch 'cros/main' into firmware-gwc-fsi
Change-Id: Id9b5b5cb1db7428cd9f12452d73842d8c1f2705a
Diffstat (limited to 'board/scout/board.c')
-rw-r--r-- | board/scout/board.c | 100 |
1 files changed, 65 insertions, 35 deletions
diff --git a/board/scout/board.c b/board/scout/board.c index 20abf39c04..d45b627ce1 100644 --- a/board/scout/board.c +++ b/board/scout/board.c @@ -137,13 +137,6 @@ const struct motion_sensor_t *motion_als_sensors[] = { }; BUILD_ASSERT(ARRAY_SIZE(motion_als_sensors) == ALS_COUNT); -static void board_sensors_init(void) -{ - /* Enable interrupt for the TCS3400 color light sensor */ - gpio_enable_interrupt(GPIO_EC_RGB_INT_L); -} -DECLARE_HOOK(HOOK_INIT, board_sensors_init, HOOK_PRIO_INIT_I2C + 1); - static void power_monitor(void); DECLARE_DEFERRED(power_monitor); @@ -346,37 +339,47 @@ BUILD_ASSERT(ARRAY_SIZE(mft_channels) == MFT_CH_COUNT); /******************************************************************************/ /* Thermal control; drive fan based on temperature sensors. */ -const static struct ec_thermal_config thermal_a = { - .temp_host = { - [EC_TEMP_THRESH_WARN] = 0, - [EC_TEMP_THRESH_HIGH] = C_TO_K(85), - [EC_TEMP_THRESH_HALT] = C_TO_K(90), - }, - .temp_host_release = { - [EC_TEMP_THRESH_WARN] = 0, - [EC_TEMP_THRESH_HIGH] = C_TO_K(78), - [EC_TEMP_THRESH_HALT] = 0, - }, - .temp_fan_off = C_TO_K(25), - .temp_fan_max = C_TO_K(89), -}; +/* + * TODO(b/202062363): Remove when clang is fixed. + */ +#define THERMAL_A \ + { \ + .temp_host = { \ + [EC_TEMP_THRESH_WARN] = 0, \ + [EC_TEMP_THRESH_HIGH] = C_TO_K(85), \ + [EC_TEMP_THRESH_HALT] = C_TO_K(90), \ + }, \ + .temp_host_release = { \ + [EC_TEMP_THRESH_WARN] = 0, \ + [EC_TEMP_THRESH_HIGH] = C_TO_K(78), \ + [EC_TEMP_THRESH_HALT] = 0, \ + }, \ + .temp_fan_off = C_TO_K(25), \ + .temp_fan_max = C_TO_K(89), \ + } +__maybe_unused static const struct ec_thermal_config thermal_a = THERMAL_A; -const static struct ec_thermal_config thermal_b = { - .temp_host = { - [EC_TEMP_THRESH_WARN] = 0, - [EC_TEMP_THRESH_HIGH] = C_TO_K(78), - [EC_TEMP_THRESH_HALT] = C_TO_K(85), - }, - .temp_host_release = { - [EC_TEMP_THRESH_WARN] = 0, - [EC_TEMP_THRESH_HIGH] = C_TO_K(70), - [EC_TEMP_THRESH_HALT] = 0, - }, -}; +/* + * TODO(b/202062363): Remove when clang is fixed. + */ +#define THERMAL_B \ + { \ + .temp_host = { \ + [EC_TEMP_THRESH_WARN] = 0, \ + [EC_TEMP_THRESH_HIGH] = C_TO_K(78), \ + [EC_TEMP_THRESH_HALT] = C_TO_K(85), \ + }, \ + .temp_host_release = { \ + [EC_TEMP_THRESH_WARN] = 0, \ + [EC_TEMP_THRESH_HIGH] = C_TO_K(70), \ + [EC_TEMP_THRESH_HALT] = 0, \ + }, \ + } +__maybe_unused static const struct ec_thermal_config thermal_b = THERMAL_B; struct ec_thermal_config thermal_params[] = { - [TEMP_SENSOR_CORE] = thermal_a, - [TEMP_SENSOR_WIFI] = thermal_a, + [TEMP_SENSOR_CORE] = THERMAL_A, + [TEMP_SENSOR_WIFI] = THERMAL_A, }; BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT); @@ -413,6 +416,33 @@ static void cbi_init(void) } DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_I2C + 1); +static void board_sensors_init(void) +{ + /* Enable interrupt for the TCS3400 color light sensor */ + switch (board_version) { + case BOARD_VERSION_PROTO: + case BOARD_VERSION_PRE_EVT: + case BOARD_VERSION_EVT: + /* + * b/203224828: These versions incorrectly use a 1.8V interrupt + * line, which sends a constant interrupt signal and eventually + * triggers a watchdog reset, so we keep it disabled. + */ + gpio_disable_interrupt(GPIO_EC_RGB_INT_L); + CPRINTS("ALS interrupt disabled (detected known-bad hardware)"); + break; + + case BOARD_VERSION_DVT: + case BOARD_VERSION_PVT: + default: + gpio_enable_interrupt(GPIO_EC_RGB_INT_L); + CPRINTS("ALS interrupt enabled"); + break; + } +} +/* Ensure board_sensors_init runs after cbi_init. */ +DECLARE_HOOK(HOOK_INIT, board_sensors_init, HOOK_PRIO_INIT_I2C + 2); + static void board_init(void) { uint8_t *memmap_batt_flags; |