summaryrefslogtreecommitdiff
path: root/common/usb_pd_policy.c
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2020-01-30 12:45:28 -0800
committerCommit Bot <commit-bot@chromium.org>2020-02-04 04:07:50 +0000
commit49d2557199a851138c5c3e8842aa6d2fe7563fc3 (patch)
tree639274668691a74a8c9e9c086008e3362ecfc38f /common/usb_pd_policy.c
parent0978c5b16a2e459f29beb1256b1ae5f2e3025768 (diff)
downloadchrome-ec-49d2557199a851138c5c3e8842aa6d2fe7563fc3.tar.gz
TCPMv1/v2: Move pd_dfp_enter_mode() to common file
BUG=b:148528713 BRANCH=none TEST=make buildall -j Change-Id: Id1d3e8bc27d895a53b53a77cf1c8fd36c69b47dc Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2032156 Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'common/usb_pd_policy.c')
-rw-r--r--common/usb_pd_policy.c82
1 files changed, 4 insertions, 78 deletions
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c
index 022cfab1ab..968c02d1b7 100644
--- a/common/usb_pd_policy.c
+++ b/common/usb_pd_policy.c
@@ -774,23 +774,9 @@ static bool check_tbt_cable_speed(int port)
TBT_SS_U32_GEN1_GEN2);
}
-static int get_mode_idx(int port, uint16_t svid)
+struct pd_policy *pd_get_am_policy(int port)
{
- int i;
-
- for (i = 0; i < PD_AMODE_COUNT; i++) {
- if (pe[port].amodes[i].fx &&
- (pe[port].amodes[i].fx->svid == svid))
- return i;
- }
- return -1;
-}
-
-struct svdm_amode_data *pd_get_amode_data(int port, uint16_t svid)
-{
- int idx = get_mode_idx(port, svid);
-
- return (idx == -1) ? NULL : &pe[port].amodes[idx];
+ return &pe[port];
}
int pd_alt_mode(int port, uint16_t svid)
@@ -800,69 +786,9 @@ int pd_alt_mode(int port, uint16_t svid)
return (modep) ? modep->opos : -1;
}
-int allocate_mode(int port, uint16_t svid)
+/* Note: Enter mode flag is not needed by TCPMv1 */
+void pd_set_dfp_enter_mode_flag(int port, bool set)
{
- int i, j;
- struct svdm_amode_data *modep;
- int mode_idx = get_mode_idx(port, svid);
-
- if (mode_idx != -1)
- return mode_idx;
-
- /* There's no space to enter another mode */
- if (pe[port].amode_idx == PD_AMODE_COUNT) {
- CPRINTF("ERR:NO AMODE SPACE\n");
- return -1;
- }
-
- /* Allocate ... if SVID == 0 enter default supported policy */
- for (i = 0; i < supported_modes_cnt; i++) {
- for (j = 0; j < pe[port].svid_cnt; j++) {
- struct svdm_svid_data *svidp = &pe[port].svids[j];
- if ((svidp->svid != supported_modes[i].svid) ||
- (svid && (svidp->svid != svid)))
- continue;
-
- modep = &pe[port].amodes[pe[port].amode_idx];
- modep->fx = &supported_modes[i];
- modep->data = &pe[port].svids[j];
- pe[port].amode_idx++;
- return pe[port].amode_idx - 1;
- }
- }
- return -1;
-}
-
-/*
- * Enter default mode ( payload[0] == 0 ) or attempt to enter mode via svid &
- * opos
-*/
-uint32_t pd_dfp_enter_mode(int port, uint16_t svid, int opos)
-{
- int mode_idx = allocate_mode(port, svid);
- struct svdm_amode_data *modep;
- uint32_t mode_caps;
-
- if (mode_idx == -1)
- return 0;
- modep = &pe[port].amodes[mode_idx];
-
- if (!opos) {
- /* choose the lowest as default */
- modep->opos = 1;
- } else if (opos <= modep->data->mode_cnt) {
- modep->opos = opos;
- } else {
- CPRINTF("opos error\n");
- return 0;
- }
-
- mode_caps = modep->data->mode_vdo[modep->opos - 1];
- if (modep->fx->enter(port, mode_caps) == -1)
- return 0;
-
- /* SVDM to send to UFP for mode entry */
- return VDO(modep->fx->svid, 1, CMD_ENTER_MODE | VDO_OPOS(modep->opos));
}
/*