summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2014-07-08 08:44:08 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-07-08 23:26:04 +0000
commit51a55988a4820113755ac634eeceb5b2b750ed8a (patch)
treeeee400e651bcbfc9fa448a062ce7e13a81d0122c
parent668fd373cabfc2581479a7e9ab7368e51d26b706 (diff)
downloadchrome-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.c21
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 */
}