#ifndef __LINUX_USB_PD_H
#define __LINUX_USB_PD_H
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/usb/typec.h>
enum pd_ctrl_msg_type { … };
enum pd_data_msg_type { … };
enum pd_ext_msg_type { … };
#define PD_REV10 …
#define PD_REV20 …
#define PD_REV30 …
#define PD_MAX_REV …
#define PD_HEADER_EXT_HDR …
#define PD_HEADER_CNT_SHIFT …
#define PD_HEADER_CNT_MASK …
#define PD_HEADER_ID_SHIFT …
#define PD_HEADER_ID_MASK …
#define PD_HEADER_PWR_ROLE …
#define PD_HEADER_REV_SHIFT …
#define PD_HEADER_REV_MASK …
#define PD_HEADER_DATA_ROLE …
#define PD_HEADER_TYPE_SHIFT …
#define PD_HEADER_TYPE_MASK …
#define PD_HEADER(type, pwr, data, rev, id, cnt, ext_hdr) …
#define PD_HEADER_LE(type, pwr, data, rev, id, cnt) …
static inline unsigned int pd_header_cnt(u16 header)
{ … }
static inline unsigned int pd_header_cnt_le(__le16 header)
{ … }
static inline unsigned int pd_header_type(u16 header)
{ … }
static inline unsigned int pd_header_type_le(__le16 header)
{ … }
static inline unsigned int pd_header_msgid(u16 header)
{ … }
static inline unsigned int pd_header_msgid_le(__le16 header)
{ … }
static inline unsigned int pd_header_rev(u16 header)
{ … }
static inline unsigned int pd_header_rev_le(__le16 header)
{ … }
#define PD_EXT_HDR_CHUNKED …
#define PD_EXT_HDR_CHUNK_NUM_SHIFT …
#define PD_EXT_HDR_CHUNK_NUM_MASK …
#define PD_EXT_HDR_REQ_CHUNK …
#define PD_EXT_HDR_DATA_SIZE_SHIFT …
#define PD_EXT_HDR_DATA_SIZE_MASK …
#define PD_EXT_HDR(data_size, req_chunk, chunk_num, chunked) …
#define PD_EXT_HDR_LE(data_size, req_chunk, chunk_num, chunked) …
static inline unsigned int pd_ext_header_chunk_num(u16 ext_header)
{ … }
static inline unsigned int pd_ext_header_data_size(u16 ext_header)
{ … }
static inline unsigned int pd_ext_header_data_size_le(__le16 ext_header)
{ … }
#define PD_MAX_PAYLOAD …
#define PD_EXT_MAX_CHUNK_DATA …
struct pd_chunked_ext_message_data { … } __packed;
struct pd_message { … } __packed;
#define PDO_MAX_OBJECTS …
enum pd_pdo_type { … };
#define PDO_TYPE_SHIFT …
#define PDO_TYPE_MASK …
#define PDO_TYPE(t) …
#define PDO_VOLT_MASK …
#define PDO_CURR_MASK …
#define PDO_PWR_MASK …
#define PDO_FIXED_DUAL_ROLE …
#define PDO_FIXED_SUSPEND …
#define PDO_FIXED_HIGHER_CAP …
#define PDO_FIXED_EXTPOWER …
#define PDO_FIXED_USB_COMM …
#define PDO_FIXED_DATA_SWAP …
#define PDO_FIXED_UNCHUNK_EXT …
#define PDO_FIXED_FRS_CURR_MASK …
#define PDO_FIXED_FRS_CURR_SHIFT …
#define PDO_FIXED_PEAK_CURR_SHIFT …
#define PDO_FIXED_VOLT_SHIFT …
#define PDO_FIXED_CURR_SHIFT …
#define PDO_FIXED_VOLT(mv) …
#define PDO_FIXED_CURR(ma) …
#define PDO_FIXED(mv, ma, flags) …
#define VSAFE5V …
#define PDO_BATT_MAX_VOLT_SHIFT …
#define PDO_BATT_MIN_VOLT_SHIFT …
#define PDO_BATT_MAX_PWR_SHIFT …
#define PDO_BATT_MIN_VOLT(mv) …
#define PDO_BATT_MAX_VOLT(mv) …
#define PDO_BATT_MAX_POWER(mw) …
#define PDO_BATT(min_mv, max_mv, max_mw) …
#define PDO_VAR_MAX_VOLT_SHIFT …
#define PDO_VAR_MIN_VOLT_SHIFT …
#define PDO_VAR_MAX_CURR_SHIFT …
#define PDO_VAR_MIN_VOLT(mv) …
#define PDO_VAR_MAX_VOLT(mv) …
#define PDO_VAR_MAX_CURR(ma) …
#define PDO_VAR(min_mv, max_mv, max_ma) …
enum pd_apdo_type { … };
#define PDO_APDO_TYPE_SHIFT …
#define PDO_APDO_TYPE_MASK …
#define PDO_APDO_TYPE(t) …
#define PDO_PPS_APDO_MAX_VOLT_SHIFT …
#define PDO_PPS_APDO_MIN_VOLT_SHIFT …
#define PDO_PPS_APDO_MAX_CURR_SHIFT …
#define PDO_PPS_APDO_VOLT_MASK …
#define PDO_PPS_APDO_CURR_MASK …
#define PDO_PPS_APDO_MIN_VOLT(mv) …
#define PDO_PPS_APDO_MAX_VOLT(mv) …
#define PDO_PPS_APDO_MAX_CURR(ma) …
#define PDO_PPS_APDO(min_mv, max_mv, max_ma) …
static inline enum pd_pdo_type pdo_type(u32 pdo)
{ … }
static inline unsigned int pdo_fixed_voltage(u32 pdo)
{ … }
static inline unsigned int pdo_min_voltage(u32 pdo)
{ … }
static inline unsigned int pdo_max_voltage(u32 pdo)
{ … }
static inline unsigned int pdo_max_current(u32 pdo)
{ … }
static inline unsigned int pdo_max_power(u32 pdo)
{ … }
static inline enum pd_apdo_type pdo_apdo_type(u32 pdo)
{ … }
static inline unsigned int pdo_pps_apdo_min_voltage(u32 pdo)
{ … }
static inline unsigned int pdo_pps_apdo_max_voltage(u32 pdo)
{ … }
static inline unsigned int pdo_pps_apdo_max_current(u32 pdo)
{ … }
#define RDO_OBJ_POS_SHIFT …
#define RDO_OBJ_POS_MASK …
#define RDO_GIVE_BACK …
#define RDO_CAP_MISMATCH …
#define RDO_USB_COMM …
#define RDO_NO_SUSPEND …
#define RDO_PWR_MASK …
#define RDO_CURR_MASK …
#define RDO_FIXED_OP_CURR_SHIFT …
#define RDO_FIXED_MAX_CURR_SHIFT …
#define RDO_OBJ(idx) …
#define PDO_FIXED_OP_CURR(ma) …
#define PDO_FIXED_MAX_CURR(ma) …
#define RDO_FIXED(idx, op_ma, max_ma, flags) …
#define RDO_BATT_OP_PWR_SHIFT …
#define RDO_BATT_MAX_PWR_SHIFT …
#define RDO_BATT_OP_PWR(mw) …
#define RDO_BATT_MAX_PWR(mw) …
#define RDO_BATT(idx, op_mw, max_mw, flags) …
#define RDO_PROG_VOLT_MASK …
#define RDO_PROG_CURR_MASK …
#define RDO_PROG_VOLT_SHIFT …
#define RDO_PROG_CURR_SHIFT …
#define RDO_PROG_VOLT_MV_STEP …
#define RDO_PROG_CURR_MA_STEP …
#define PDO_PROG_OUT_VOLT(mv) …
#define PDO_PROG_OP_CURR(ma) …
#define RDO_PROG(idx, out_mv, op_ma, flags) …
static inline unsigned int rdo_index(u32 rdo)
{ … }
static inline unsigned int rdo_op_current(u32 rdo)
{ … }
static inline unsigned int rdo_max_current(u32 rdo)
{ … }
static inline unsigned int rdo_op_power(u32 rdo)
{ … }
static inline unsigned int rdo_max_power(u32 rdo)
{ … }
#define EUDO_USB_MODE_MASK …
#define EUDO_USB_MODE_SHIFT …
#define EUDO_USB_MODE_USB2 …
#define EUDO_USB_MODE_USB3 …
#define EUDO_USB_MODE_USB4 …
#define EUDO_USB4_DRD …
#define EUDO_USB3_DRD …
#define EUDO_CABLE_SPEED_MASK …
#define EUDO_CABLE_SPEED_SHIFT …
#define EUDO_CABLE_SPEED_USB2 …
#define EUDO_CABLE_SPEED_USB3_GEN1 …
#define EUDO_CABLE_SPEED_USB4_GEN2 …
#define EUDO_CABLE_SPEED_USB4_GEN3 …
#define EUDO_CABLE_TYPE_MASK …
#define EUDO_CABLE_TYPE_SHIFT …
#define EUDO_CABLE_TYPE_PASSIVE …
#define EUDO_CABLE_TYPE_RE_TIMER …
#define EUDO_CABLE_TYPE_RE_DRIVER …
#define EUDO_CABLE_TYPE_OPTICAL …
#define EUDO_CABLE_CURRENT_MASK …
#define EUDO_CABLE_CURRENT_SHIFT …
#define EUDO_CABLE_CURRENT_NOTSUPP …
#define EUDO_CABLE_CURRENT_3A …
#define EUDO_CABLE_CURRENT_5A …
#define EUDO_PCIE_SUPPORT …
#define EUDO_DP_SUPPORT …
#define EUDO_TBT_SUPPORT …
#define EUDO_HOST_PRESENT …
#define PD_T_NO_RESPONSE …
#define PD_T_DB_DETECT …
#define PD_T_SEND_SOURCE_CAP …
#define PD_T_SENDER_RESPONSE …
#define PD_T_RECEIVER_RESPONSE …
#define PD_T_SOURCE_ACTIVITY …
#define PD_T_SINK_ACTIVITY …
#define PD_T_SINK_WAIT_CAP …
#define PD_T_PS_TRANSITION …
#define PD_T_SRC_TRANSITION …
#define PD_T_DRP_SNK …
#define PD_T_DRP_SRC …
#define PD_T_PS_SOURCE_OFF …
#define PD_T_PS_SOURCE_ON …
#define PD_T_PS_SOURCE_ON_PRS …
#define PD_T_PS_HARD_RESET …
#define PD_T_SRC_RECOVER …
#define PD_T_SRC_RECOVER_MAX …
#define PD_T_SRC_TURN_ON …
#define PD_T_SAFE_0V …
#define PD_T_VCONN_SOURCE_ON …
#define PD_T_SINK_REQUEST …
#define PD_T_ERROR_RECOVERY …
#define PD_T_SRCSWAPSTDBY …
#define PD_T_NEWSRC …
#define PD_T_SWAP_SRC_START …
#define PD_T_BIST_CONT_MODE …
#define PD_T_SINK_TX …
#define PD_T_CHUNK_NOT_SUPP …
#define PD_T_VCONN_STABLE …
#define PD_T_DRP_TRY …
#define PD_T_DRP_TRYWAIT …
#define PD_T_CC_DEBOUNCE …
#define PD_T_PD_DEBOUNCE …
#define PD_T_TRY_CC_DEBOUNCE …
#define PD_N_CAPS_COUNT …
#define PD_N_HARD_RESET_COUNT …
#define PD_P_SNK_STDBY_MW …
#if IS_ENABLED(CONFIG_TYPEC)
struct usb_power_delivery;
struct usb_power_delivery_desc { … };
struct usb_power_delivery_capabilities_desc { … };
struct usb_power_delivery_capabilities *
usb_power_delivery_register_capabilities(struct usb_power_delivery *pd,
struct usb_power_delivery_capabilities_desc *desc);
void usb_power_delivery_unregister_capabilities(struct usb_power_delivery_capabilities *cap);
struct usb_power_delivery *usb_power_delivery_register(struct device *parent,
struct usb_power_delivery_desc *desc);
void usb_power_delivery_unregister(struct usb_power_delivery *pd);
int usb_power_delivery_link_device(struct usb_power_delivery *pd, struct device *dev);
void usb_power_delivery_unlink_device(struct usb_power_delivery *pd, struct device *dev);
#endif
#endif