diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2020-01-30 12:45:28 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-04 04:07:50 +0000 |
commit | 49d2557199a851138c5c3e8842aa6d2fe7563fc3 (patch) | |
tree | 639274668691a74a8c9e9c086008e3362ecfc38f /common/usb_pd_policy.c | |
parent | 0978c5b16a2e459f29beb1256b1ae5f2e3025768 (diff) | |
download | chrome-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.c | 82 |
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)); } /* |