diff options
author | Alec Berg <alecaberg@chromium.org> | 2015-04-08 09:42:43 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-04-11 04:32:33 +0000 |
commit | f224ae87bd6967533d53278541c57414d61d26cf (patch) | |
tree | 188d650825dee59070b5b917be2f40ac4867b9e9 /board | |
parent | 007fadda59dc617976eb87bcc325af7453d11a53 (diff) | |
download | chrome-ec-f224ae87bd6967533d53278541c57414d61d26cf.tar.gz |
pd: samus: support vconn swap and enable on Samus when in S0/S3
Support VCONN swap on samus and always accept VCONN swap when in
S0 or S3. In S5, we can't provide VCONN, so reject VCONN swap
requests.
BUG=chrome-os-partner:34978
BRANCH=samus
TEST=load on two samus' and use "pd 1 swap vconn" to swap which
side is source vconn. also run in S5 and verify swap request is
rejected.
Change-Id: I04be8d1d910a2d6c5ad8b27a790f8e33121c86ee
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/264856
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/samus_pd/board.h | 1 | ||||
-rw-r--r-- | board/samus_pd/usb_pd_config.h | 3 | ||||
-rw-r--r-- | board/samus_pd/usb_pd_policy.c | 6 |
3 files changed, 10 insertions, 0 deletions
diff --git a/board/samus_pd/board.h b/board/samus_pd/board.h index 627fc087c2..f2cd65ef96 100644 --- a/board/samus_pd/board.h +++ b/board/samus_pd/board.h @@ -61,6 +61,7 @@ #define CONFIG_USB_SWITCH_PI3USB9281_MUX_GPIO GPIO_USB_C_BC12_SEL #define CONFIG_USBC_SS_MUX #define CONFIG_USBC_VCONN +#define CONFIG_USBC_VCONN_SWAP #define CONFIG_VBOOT_HASH #undef CONFIG_WATCHDOG_HELP diff --git a/board/samus_pd/usb_pd_config.h b/board/samus_pd/usb_pd_config.h index 9702714a56..a7df33e499 100644 --- a/board/samus_pd/usb_pd_config.h +++ b/board/samus_pd/usb_pd_config.h @@ -301,6 +301,9 @@ static inline int pd_snk_is_vbus_provided(int port) #define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */ #define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ +/* delay to turn on/off vconn */ +#define PD_VCONN_SWAP_DELAY 5000 /* us */ + /* Define typical operating power and max power */ #define PD_OPERATING_POWER_MW 15000 #define PD_MAX_POWER_MW 60000 diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c index 85e3244527..7e1302b018 100644 --- a/board/samus_pd/usb_pd_policy.c +++ b/board/samus_pd/usb_pd_policy.c @@ -151,6 +151,12 @@ int pd_check_data_swap(int port, int data_role) return (data_role == PD_ROLE_UFP) ? 1 : 0; } +int pd_check_vconn_swap(int port) +{ + /* in S5, do not allow vconn swap since pp5000 rail is off */ + return gpio_get_level(GPIO_PCH_SLP_S5_L); +} + void pd_execute_data_swap(int port, int data_role) { /* Open USB switches when taking UFP role */ |