diff options
author | Ting Shen <phoenixshen@google.com> | 2020-08-04 18:12:23 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-07 10:13:45 +0000 |
commit | ebe586fb7846cfb85af6f46ea8610ac5f993f496 (patch) | |
tree | d2cee8631cf98d10bfb78fef581463869af96623 /board | |
parent | 8e1f23e8d3dd0cdd8817768adf8e451c49b54310 (diff) | |
download | chrome-ec-ebe586fb7846cfb85af6f46ea8610ac5f993f496.tar.gz |
asurada: support both rev0/1 AC_PRESENT pin
The location of AC_PRESENT has changed in rev 1, to support
both rev 0 and 1, the default AC_PRESENT is assigned to a
placeholder pin when boot, and re-assign to the correct pin
after ADC is accessible.
BUG=b:162814191
TEST=See "AC on/off" triggered correctly on both rev 0 and rev 1
device.
BRANCH=master
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: I2d331b60a4a4420004fea19b0c446b1116816f9b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2336661
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/asurada/board.c | 27 | ||||
-rw-r--r-- | board/asurada/board.h | 3 | ||||
-rw-r--r-- | board/asurada/gpio.inc | 11 |
3 files changed, 34 insertions, 7 deletions
diff --git a/board/asurada/board.c b/board/asurada/board.c index 07c0e92ac3..6fa4471291 100644 --- a/board/asurada/board.c +++ b/board/asurada/board.c @@ -82,12 +82,12 @@ const struct pwm_t pwm_channels[] = { BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); /* Wake-up pins for hibernate */ -const enum gpio_signal hibernate_wake_pins[] = { - GPIO_AC_PRESENT, +enum gpio_signal hibernate_wake_pins[] = { + GPIO_AC_PRESENT_PLACEHOLDER, GPIO_LID_OPEN, GPIO_POWER_BUTTON_L, }; -const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); +int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); /* power signal list. Must match order of enum power_signal. */ const struct power_signal_info power_signal_list[] = { @@ -603,6 +603,27 @@ int board_regulator_get_voltage(uint32_t index, uint32_t *voltage_mv) return mt6360_ldo_get_voltage(ldo_id, voltage_mv); } +/* gpio */ + +/* TODO(b/163098341): Remove these after rev0 deprecated. */ +enum gpio_signal GPIO_AC_PRESENT = GPIO_AC_PRESENT_PLACEHOLDER; + +static void ac_present_init(void) +{ + if (board_get_version() == 0) + GPIO_AC_PRESENT = GPIO_EC_GPM2; + else + GPIO_AC_PRESENT = GPIO_EC_GPE5; + + /* Set wake pins to the correct one */ + hibernate_wake_pins[0] = GPIO_AC_PRESENT; + + /* Manually run extpower_init() again */ + gpio_enable_interrupt(GPIO_AC_PRESENT); + extpower_interrupt(GPIO_AC_PRESENT); +} +DECLARE_HOOK(HOOK_INIT, ac_present_init, HOOK_PRIO_INIT_ADC + 1); + /* Sensor */ static struct mutex g_base_mutex; static struct mutex g_lid_mutex; diff --git a/board/asurada/board.h b/board/asurada/board.h index 2da6fffb57..13e0f3bcb7 100644 --- a/board/asurada/board.h +++ b/board/asurada/board.h @@ -11,6 +11,7 @@ #define CONFIG_BRINGUP #define CONFIG_CHIPSET_MT8192 #define CONFIG_CMD_POWERINDEBUG +#define CONFIG_HIBERNATE_WAKE_PINS_DYNAMIC #define CONFIG_POWER_COMMON /* Optional features */ @@ -277,5 +278,7 @@ enum temp_sensor_id { void board_reset_pd_mcu(void); int board_get_version(void); +extern enum gpio_signal GPIO_AC_PRESENT; + #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BOARD_H */ diff --git a/board/asurada/gpio.inc b/board/asurada/gpio.inc index ad44055260..37899122a6 100644 --- a/board/asurada/gpio.inc +++ b/board/asurada/gpio.inc @@ -49,8 +49,10 @@ GPIO_INT(VOLUME_UP_L, PIN(D, 6), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) /* EC_VOLUP_BTN_ODL */ /* Other interrupts */ -GPIO_INT(AC_PRESENT, PIN(M, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, - extpower_interrupt) /* ACOK_OD */ +GPIO_INT(EC_GPM2, PIN(M, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, + extpower_interrupt) /* AC_OK / AC_PRESENT in rev0 */ +GPIO_INT(EC_GPE5, PIN(E, 5), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH, + extpower_interrupt) /* AC_OK / AC_PRESENT in rev1+ */ GPIO_INT(UART1_RX, PIN(B, 0), GPIO_INT_FALLING, uart_deepsleep_interrupt) /* UART_DEBUG_TX_EC_RX */ GPIO_INT(WP, PIN(I, 4), GPIO_INT_BOTH, @@ -132,6 +134,9 @@ UNIMPLEMENTED(PCH_SCI_L) UNIMPLEMENTED(PCH_WAKE_L) UNIMPLEMENTED(PCH_PLTRST_L) +/* Fake AC_PRESENT pin before board rev is determined */ +UNIMPLEMENTED(AC_PRESENT_PLACEHOLDER) + #define UNIMPLEMENTED_GPIO(name, pin) UNIMPLEMENTED(name) UNIMPLEMENTED_GPIO(SET_VMC_VOLT_AT_1V8, PIN(D, 4)) @@ -143,8 +148,6 @@ UNIMPLEMENTED_GPIO(LED3_SUB_ODL, PIN(A, 2)) UNIMPLEMENTED_GPIO(PACKET_MODE_EN, PIN(A, 3)) /* b/160218054: behavior not defined */ UNIMPLEMENTED_GPIO(USB_A0_FAULT_ODL, PIN(A, 7)) -/* TODO: ACOK_OD in P1 */ -UNIMPLEMENTED_GPIO(EC_GPE5, PIN(E, 5)) UNIMPLEMENTED_GPIO(CHARGER_PROCHOT_ODL, PIN(C, 3)) UNIMPLEMENTED_GPIO(USB_C0_FRS_EN, PIN(H, 3)) UNIMPLEMENTED_GPIO(PG_MT6315_GPU_ODL, PIN(H, 6)) |