diff options
author | Ting Shen <phoenixshen@google.com> | 2021-05-20 16:21:03 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-05-26 05:02:26 +0000 |
commit | 1254d6a26021f0741e7f091c8351f693a2be010b (patch) | |
tree | 1ef704b02d6d5e1723b3f167381a0075ce58ea16 /baseboard/asurada | |
parent | f40b9f6a8c1824d8deb65e3f9969c0da0cfaa426 (diff) | |
download | chrome-ec-1254d6a26021f0741e7f091c8351f693a2be010b.tar.gz |
asurada: implement customized usb port power control
Some Sandisk stickers would enter fault status (down-train
to USB2 or not detected) if Vbus is applied before xhci
initialization.
To fix this, copy usb_port_power_dumb.c to baseboard folder
to implement board-specific enable mechanic.
BUG=b:187149602
TEST=manually
BRANCH=asurada
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: I80536b640b4f67a4c17a3da7b193c92ab2f7b3eb
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2909972
Tested-by: Ting Shen <phoenixshen@chromium.org>
Auto-Submit: Ting Shen <phoenixshen@chromium.org>
Reviewed-by: Eric Yilun Lin <yllin@google.com>
Commit-Queue: Eric Yilun Lin <yllin@google.com>
Diffstat (limited to 'baseboard/asurada')
-rw-r--r-- | baseboard/asurada/baseboard.c | 10 | ||||
-rw-r--r-- | baseboard/asurada/baseboard.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/baseboard/asurada/baseboard.c b/baseboard/asurada/baseboard.c index 581854f1a5..fa1300df68 100644 --- a/baseboard/asurada/baseboard.c +++ b/baseboard/asurada/baseboard.c @@ -249,6 +249,15 @@ const int usb_port_enable[] = { }; BUILD_ASSERT(ARRAY_SIZE(usb_port_enable) == USB_PORT_COUNT); +void usb_a0_interrupt(enum gpio_signal signal) +{ + enum usb_charge_mode mode = gpio_get_level(signal) ? + USB_CHARGE_MODE_ENABLED : USB_CHARGE_MODE_DISABLED; + + for (int i = 0; i < USB_PORT_COUNT; i++) + usb_charge_set_mode(i, mode, USB_ALLOW_SUSPEND_CHARGE); +} + static int board_ps8743_mux_set(const struct usb_mux *me, mux_state_t mux_state) { @@ -579,6 +588,7 @@ void lid_angle_peripheral_enable(int enable) static void baseboard_init(void) { gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_ODL); + gpio_enable_interrupt(GPIO_AP_XHCI_INIT_DONE); } DECLARE_HOOK(HOOK_INIT, baseboard_init, HOOK_PRIO_DEFAULT-1); diff --git a/baseboard/asurada/baseboard.h b/baseboard/asurada/baseboard.h index 242bba54b2..5d9600729c 100644 --- a/baseboard/asurada/baseboard.h +++ b/baseboard/asurada/baseboard.h @@ -141,6 +141,7 @@ /* USB-A */ #define CONFIG_USB_PORT_POWER_DUMB +#define CONFIG_USB_PORT_POWER_DUMB_CUSTOM_HOOK #define USB_PORT_COUNT USBA_PORT_COUNT /* UART */ @@ -208,5 +209,6 @@ enum board_sub_board { int board_get_version(void); void board_reset_pd_mcu(void); enum board_sub_board board_get_sub_board(void); +void usb_a0_interrupt(enum gpio_signal signal); #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BASEBOARD_H */ |