summaryrefslogtreecommitdiff
path: root/baseboard/brya
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2022-01-22 13:47:35 -0700
committerCommit Bot <commit-bot@chromium.org>2022-02-09 01:23:58 +0000
commit6ebb212a166d1a53a32770815e77439ec0ecc2af (patch)
treeb63e2fae07c78ea84d93077b4bff8035651294af /baseboard/brya
parenta6d42dced51b81293ed28085e1b618ca7b736999 (diff)
downloadchrome-ec-6ebb212a166d1a53a32770815e77439ec0ecc2af.tar.gz
Brya: Add TBT UFP board policy
Add policy tracking to the brya baseboard for whether TBT UFP mode entry has been enabled. BRANCH=None BUG=b:213024508 TEST=on brya, confirm we NAK UFP mode entry until explicitly allowed by the AP, and then NAK again when disallowed Signed-off-by: Diana Z <dzigterman@chromium.org> Change-Id: I9816e815e2138a406fa5484d83bc22ed21192506 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3411536 Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Diffstat (limited to 'baseboard/brya')
-rw-r--r--baseboard/brya/usb_pd_policy.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/baseboard/brya/usb_pd_policy.c b/baseboard/brya/usb_pd_policy.c
index df291bd9c9..f2ee86a6b4 100644
--- a/baseboard/brya/usb_pd_policy.c
+++ b/baseboard/brya/usb_pd_policy.c
@@ -163,6 +163,23 @@ static int svdm_tbt_compat_response_modes(int port, uint32_t *payload)
}
}
+/* Track whether we've been enabled to ACK TBT EnterModes requests */
+static bool tbt_ufp_ack_allowed[CONFIG_USB_PD_PORT_MAX_COUNT];
+
+__override enum ec_status board_set_tbt_ufp_reply(int port,
+ enum typec_tbt_ufp_reply reply)
+{
+ /* Note: Host command has already bounds-checked port */
+ if (reply == TYPEC_TBT_UFP_REPLY_ACK)
+ tbt_ufp_ack_allowed[port] = true;
+ else if (reply == TYPEC_TBT_UFP_REPLY_NAK)
+ tbt_ufp_ack_allowed[port] = false;
+ else
+ return EC_RES_INVALID_PARAM;
+
+ return EC_RES_SUCCESS;
+}
+
static int svdm_tbt_compat_response_enter_mode(
int port, uint32_t *payload)
{
@@ -172,6 +189,10 @@ static int svdm_tbt_compat_response_enter_mode(
if (chipset_in_or_transitioning_to_state(CHIPSET_STATE_ANY_OFF))
return 0; /* NAK */
+ /* Do not enter mode while policy disallows it */
+ if (!tbt_ufp_ack_allowed[port])
+ return 0; /* NAK */
+
if ((PD_VDO_VID(payload[0]) != USB_VID_INTEL) ||
(PD_VDO_OPOS(payload[0]) != OPOS_TBT))
return 0; /* NAK */