diff options
author | Alec Berg <alecaberg@chromium.org> | 2014-07-08 08:44:08 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-07-08 23:26:04 +0000 |
commit | 51a55988a4820113755ac634eeceb5b2b750ed8a (patch) | |
tree | eee400e651bcbfc9fa448a062ce7e13a81d0122c | |
parent | 668fd373cabfc2581479a7e9ab7368e51d26b706 (diff) | |
download | chrome-ec-51a55988a4820113755ac634eeceb5b2b750ed8a.tar.gz |
pd: sink uses VBUS to detect connection
Change PD sink to use VBUS for initial detection to match
USB type C spec.
BUG=chrome-os-partner:30116
BRANCH=none
TEST=Tested on samus. Connect and disconnect zinger a few times
and make sure we successfully negotiate each time.
Change-Id: Ifa9ff301cb34b6df6609d4bbbde3231bb029d554
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/207000
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r-- | common/usb_pd_protocol.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 68de8f4ee0..e0fdc186ba 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -895,15 +895,17 @@ void pd_task(void) */ pd_charger_change(0); #endif - cc1_volt = pd_adc_read(0); - cc2_volt = pd_adc_read(1); - if ((cc1_volt > PD_SNK_VA) || - (cc2_volt > PD_SNK_VA)) { - pd_polarity = !(cc1_volt > PD_SNK_VA); - pd_select_polarity(pd_polarity); - pd_task_state = PD_STATE_SNK_DISCOVERY; + if (pd_snk_is_vbus_provided()) { + cc1_volt = pd_adc_read(0); + cc2_volt = pd_adc_read(1); + if ((cc1_volt >= PD_SNK_VA) || + (cc2_volt >= PD_SNK_VA)) { + pd_polarity = !(cc1_volt >= PD_SNK_VA); + pd_select_polarity(pd_polarity); + pd_task_state = PD_STATE_SNK_DISCOVERY; + } } - timeout = 10*MSEC; + timeout = 50*MSEC; break; case PD_STATE_SNK_DISCOVERY: /* Don't continue if power negotiation is not allowed */ @@ -980,8 +982,7 @@ void pd_task(void) !pd_snk_is_vbus_provided()) { /* Sink: detect disconnect by monitoring VBUS */ pd_task_state = PD_STATE_SNK_DISCONNECTED; - /* set timeout small to reconnect fast */ - timeout = 5*MSEC; + timeout = 50*MSEC; } #endif /* CONFIG_USB_PD_DUAL_ROLE */ } |