linux/include/linux/usb/pd.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright 2015-2017 Google, Inc
 */

#ifndef __LINUX_USB_PD_H
#define __LINUX_USB_PD_H

#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/usb/typec.h>

/* USB PD Messages */
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 - PD chunked extended message data as
  *					 seen on wire
  * @header:    PD extended message header
  * @data:      PD extended message data
  */
struct pd_chunked_ext_message_data {} __packed;

/**
  * struct pd_message - PD message as seen on wire
  * @header:    PD message header
  * @payload:   PD message payload
  * @ext_msg:   PD message chunked extended message data
  */
struct pd_message {} __packed;

/* PDO: Power Data Object */
#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)
{}

/* RDO: Request Data Object */
#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)
{}

/* Enter_USB Data Object */
#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

/* USB PD timers and counters */
#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;

/**
 * usb_power_delivery_desc - USB Power Delivery Descriptor
 * @revision: USB Power Delivery Specification Revision
 * @version: USB Power Delivery Specicication Version - optional
 */
struct usb_power_delivery_desc {};

/**
 * usb_power_delivery_capabilities_desc - Description of USB Power Delivery Capabilities Message
 * @pdo: The Power Data Objects in the Capability Message
 * @role: Power role of the capabilities
 */
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 /* CONFIG_TYPEC */

#endif /* __LINUX_USB_PD_H */