summaryrefslogtreecommitdiff
path: root/baseboard/asurada
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2021-05-20 16:21:03 +0800
committerCommit Bot <commit-bot@chromium.org>2021-05-26 05:02:26 +0000
commit1254d6a26021f0741e7f091c8351f693a2be010b (patch)
tree1ef704b02d6d5e1723b3f167381a0075ce58ea16 /baseboard/asurada
parentf40b9f6a8c1824d8deb65e3f9969c0da0cfaa426 (diff)
downloadchrome-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.c10
-rw-r--r--baseboard/asurada/baseboard.h2
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 */