summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2015-06-16 15:42:13 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-06-17 13:10:51 +0000
commitb33531e262561e297ba1a02fc829a2110c6df515 (patch)
treed04c52ccf76036cda1a1b2389e6636660179b496
parent859f4d50adf6f5732970239fb72fd521eb693c16 (diff)
downloadchrome-ec-b33531e262561e297ba1a02fc829a2110c6df515.tar.gz
pd: Fix pin mode field in DP config VDM.
VESA SCR titled, 'DP Alt Mode Plug Corrections & Protocol Clarif' Simplified the DP config mode VDM to longer include two separate bytes for UFP vs DFP pin modes since bits <1:0> designate the desired port direction. This change corrects our VDM accordingly so that <23:16> are now zero (SBZ) and <15:8> carry the appropriate pin mode. Signed-off-by: Todd Broch <tbroch@chromium.org> BRANCH=samus_pd BUG=chromium:501002 TEST=manual, 1. samus -> hoho, dingdong or apple hdmi dongles still drive DPout 2. twinkie console output samus -> hoho shows correct DP config VDM 369.275296 SRC/2 [256f]VDM Vff01:DPCFG,INI:ff018111 00000406 where: <31:16> = SBZ == 0x0000 <15:08> = PIN_C == 0x04 Change-Id: I1146045dd94458c82b7ed08940af6009658afa05 Reviewed-on: https://chromium-review.googlesource.com/278083 Commit-Queue: Todd Broch <tbroch@chromium.org> Tested-by: Todd Broch <tbroch@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r--board/glados/usb_pd_policy.c3
-rw-r--r--board/honeybuns/usb_pd_policy.c3
-rw-r--r--board/oak/usb_pd_policy.c3
-rw-r--r--board/ryu/usb_pd_policy.c3
-rw-r--r--board/samus_pd/usb_pd_policy.c3
-rw-r--r--include/usb_pd.h9
6 files changed, 9 insertions, 15 deletions
diff --git a/board/glados/usb_pd_policy.c b/board/glados/usb_pd_policy.c
index 1799c84724..d5e0a235a9 100644
--- a/board/glados/usb_pd_policy.c
+++ b/board/glados/usb_pd_policy.c
@@ -271,8 +271,7 @@ static int svdm_dp_config(int port, uint32_t *payload)
/* board_set_usb_mux(port, TYPEC_MUX_DP, pd_get_polarity(port)); */
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));
- payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* sink pins */
- MODE_DP_PIN_E, /* src pins */
+ payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP connected */
return 2;
diff --git a/board/honeybuns/usb_pd_policy.c b/board/honeybuns/usb_pd_policy.c
index 43d28c3e8b..1debb03ed6 100644
--- a/board/honeybuns/usb_pd_policy.c
+++ b/board/honeybuns/usb_pd_policy.c
@@ -218,8 +218,7 @@ static int svdm_dp_config(int port, uint32_t *payload)
pd_get_polarity(port));
dp_on = 1;
payload[0] = VDO(USB_SID_DISPLAYPORT, 1, CMD_DP_CONFIG);
- payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* sink pins */
- MODE_DP_PIN_E, /* src pins */
+ payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP connected */
return 2;
diff --git a/board/oak/usb_pd_policy.c b/board/oak/usb_pd_policy.c
index 5f403ba45a..cc7abc60d6 100644
--- a/board/oak/usb_pd_policy.c
+++ b/board/oak/usb_pd_policy.c
@@ -270,8 +270,7 @@ static int svdm_dp_config(int port, uint32_t *payload)
/* board_set_usb_mux(port, TYPEC_MUX_DP, pd_get_polarity(port)); */
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));
- payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* sink pins */
- MODE_DP_PIN_E, /* src pins */
+ payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP connected */
return 2;
diff --git a/board/ryu/usb_pd_policy.c b/board/ryu/usb_pd_policy.c
index 1bd5c6e6cd..b783cdc3b8 100644
--- a/board/ryu/usb_pd_policy.c
+++ b/board/ryu/usb_pd_policy.c
@@ -297,8 +297,7 @@ static int svdm_dp_config(int port, uint32_t *payload)
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));
- payload[1] = VDO_DP_CFG(pin_mode, /* UFP_U as UFP_D */
- 0, /* UFP_U as DFP_D */
+ payload[1] = VDO_DP_CFG(pin_mode, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP_U connected as UFP_D */
return 2;
diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c
index af58c7e004..b196e3f9d3 100644
--- a/board/samus_pd/usb_pd_policy.c
+++ b/board/samus_pd/usb_pd_policy.c
@@ -315,8 +315,7 @@ static int svdm_dp_config(int port, uint32_t *payload)
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));
- payload[1] = VDO_DP_CFG(pin_mode, /* UFP_U as UFP_D */
- 0, /* UFP_U as DFP_D */
+ payload[1] = VDO_DP_CFG(pin_mode, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP_U connected as UFP_D */
return 2;
diff --git a/include/usb_pd.h b/include/usb_pd.h
index 80253f9546..2ed26431d9 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -564,16 +564,15 @@ struct pd_policy {
* DisplayPort Configure VDO
* -------------------------
* <31:24> : SBZ
- * <23:16> : sink pin assignment requested. Choose one from mode caps.
- * <15:8> : source pin assignment requested. Choose one from mode caps.
+ * <23:16> : SBZ
+ * <15:8> : Pin assignment requested. Choose one from mode caps.
* <7:6> : SBZ
* <5:2> : signalling : 1h == DP v1.3, 2h == Gen 2
* Oh is only for USB, remaining values are reserved
* <1:0> : cfg : 00 == USB, 01 == DFP_D, 10 == UFP_D, 11 == reserved
*/
-#define VDO_DP_CFG(snkp, srcp, sig, cfg) \
- (((snkp) & 0xff) << 16 | ((srcp) & 0xff) << 8 \
- | ((sig) & 0xf) << 2 | ((cfg) & 0x3))
+#define VDO_DP_CFG(pin, sig, cfg) \
+ (((pin) & 0xff) << 8 | ((sig) & 0xf) << 2 | ((cfg) & 0x3))
#define PD_DP_CFG_DPON(x) (((x & 0x3) == 1) || ((x & 0x3) == 2))
/*