diff options
Diffstat (limited to 'include/usb_pd.h')
-rw-r--r-- | include/usb_pd.h | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/include/usb_pd.h b/include/usb_pd.h index a5d6bbf34c..436b217a9a 100644 --- a/include/usb_pd.h +++ b/include/usb_pd.h @@ -285,6 +285,8 @@ struct svid_mode_data { int mode_cnt; /* The discovered mode VDOs */ uint32_t mode_vdo[PDO_MODES]; + /* State of mode discovery for this SVID */ + enum pd_discovery_state discovery; }; struct svdm_amode_fx { @@ -1696,14 +1698,50 @@ void pd_set_svids_discovery(int port, enum tcpm_transmit_type type, /** * Get SVID discovery state for this type and port * - * @param port USB-C port number - * @param type SOP* type to retrieve - * @return Current discovery state (failed or complete) + * @param port USB-C port number + * @param type SOP* type to retrieve + * @return Current discovery state (failed or complete) */ enum pd_discovery_state pd_get_svids_discovery(int port, enum tcpm_transmit_type type); /** + * Set Modes discovery state for this port, SOP* type, and SVID. + * + * @param port USB-C port number + * @param type SOP* type to set + * @param svid SVID to set mode discovery state for + * @param disc Discovery state to set (failed or complete) + */ +void pd_set_modes_discovery(int port, enum tcpm_transmit_type type, + uint16_t svid, enum pd_discovery_state disc); + +/** + * Get Modes discovery state for this port and SOP* type. Modes discover is + * considered complete for a port and type when modes have been discovered for + * all discovered SVIDs. Mode discovery is failed if mode discovery for any SVID + * failed. + * + * @param port USB-C port number + * @param type SOP* type to retrieve + * @return Current discovery state (failed or complete) + */ +enum pd_discovery_state pd_get_modes_discovery(int port, + enum tcpm_transmit_type type); + +/** + * Get a pointer to mode data for the next SVID with undiscovered modes. This + * data may indicate that discovery failed. + * + * @param port USB-C port number + * @param type SOP* type to retrieve + * @return Pointer to the first SVID-mode structure with undiscovered mode; + * discovery may be needed or failed; returns NULL if all SVIDs have + * discovered modes + */ +struct svid_mode_data *pd_get_next_mode(int port, enum tcpm_transmit_type type); + +/** * Return a pointer to the discover identity response structure for this SOP* * type * |