Commit 98076fa6 authored by Guenter Roeck's avatar Guenter Roeck Committed by Greg Kroah-Hartman

staging: typec: tcpm: Document data structures

Document struct tcpc_config and struct tcpc_dev.
Drop unused TCPC_USB_SWITCH_RESTORE.
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 44262fad
...@@ -54,6 +54,27 @@ enum tcpm_transmit_type { ...@@ -54,6 +54,27 @@ enum tcpm_transmit_type {
TCPC_TX_BIST_MODE_2 = 7 TCPC_TX_BIST_MODE_2 = 7
}; };
/**
* struct tcpc_config - Port configuration
* @src_pdo: PDO parameters sent to port partner as response to
* PD_CTRL_GET_SOURCE_CAP message
* @nr_src_pdo: Number of entries in @src_pdo
* @snk_pdo: PDO parameters sent to partner as response to
* PD_CTRL_GET_SINK_CAP message
* @nr_snk_pdo: Number of entries in @snk_pdo
* @max_snk_mv: Maximum acceptable sink voltage in mV
* @max_snk_ma: Maximum sink current in mA
* @max_snk_mw: Maximum required sink power in mW
* @operating_snk_mw:
* Required operating sink power in mW
* @type: Port type (TYPEC_PORT_DFP, TYPEC_PORT_UFP, or
* TYPEC_PORT_DRP)
* @default_role:
* Default port role (TYPEC_SINK or TYPEC_SOURCE).
* Set to TYPEC_NO_PREFERRED_ROLE if no default role.
* @try_role_hw:True if try.{Src,Snk} is implemented in hardware
* @alt_modes: List of supported alternate modes
*/
struct tcpc_config { struct tcpc_config {
const u32 *src_pdo; const u32 *src_pdo;
unsigned int nr_src_pdo; unsigned int nr_src_pdo;
...@@ -79,7 +100,6 @@ struct tcpc_config { ...@@ -79,7 +100,6 @@ struct tcpc_config {
enum tcpc_usb_switch { enum tcpc_usb_switch {
TCPC_USB_SWITCH_CONNECT, TCPC_USB_SWITCH_CONNECT,
TCPC_USB_SWITCH_DISCONNECT, TCPC_USB_SWITCH_DISCONNECT,
TCPC_USB_SWITCH_RESTORE, /* TODO FIXME */
}; };
/* Mux state attributes */ /* Mux state attributes */
...@@ -104,17 +124,40 @@ struct tcpc_mux_dev { ...@@ -104,17 +124,40 @@ struct tcpc_mux_dev {
void *priv_data; void *priv_data;
}; };
/**
* struct tcpc_dev - Port configuration and callback functions
* @config: Pointer to port configuration
* @get_vbus: Called to read current VBUS state
* @get_current_limit:
* Optional; called by the tcpm core when configured as a snk
* and cc=Rp-def. This allows the tcpm to provide a fallback
* current-limit detection method for the cc=Rp-def case.
* For example, some tcpcs may include BC1.2 charger detection
* and use that in this case.
* @set_cc: Called to set value of CC pins
* @get_cc: Called to read current CC pin values
* @set_polarity:
* Called to set polarity
* @set_vconn: Called to enable or disable VCONN
* @set_vbus: Called to enable or disable VBUS
* @set_current_limit:
* Optional; called to set current limit as negotiated
* with partner.
* @set_pd_rx: Called to enable or disable reception of PD messages
* @set_roles: Called to set power and data roles
* @start_drp_toggling:
* Optional; if supported by hardware, called to start DRP
* toggling. DRP toggling is stopped automatically if
* a connection is established.
* @try_role: Optional; called to set a preferred role
* @pd_transmit:Called to transmit PD message
* @mux: Pointer to multiplexer data
*/
struct tcpc_dev { struct tcpc_dev {
const struct tcpc_config *config; const struct tcpc_config *config;
int (*init)(struct tcpc_dev *dev); int (*init)(struct tcpc_dev *dev);
int (*get_vbus)(struct tcpc_dev *dev); int (*get_vbus)(struct tcpc_dev *dev);
/*
* This optional callback gets called by the tcpm core when configured
* as a snk and cc=Rp-def. This allows the tcpm to provide a fallback
* current-limit detection method for the cc=Rp-def case. E.g. some
* tcpcs may include BC1.2 charger detection and use that in this case.
*/
int (*get_current_limit)(struct tcpc_dev *dev); int (*get_current_limit)(struct tcpc_dev *dev);
int (*set_cc)(struct tcpc_dev *dev, enum typec_cc_status cc); int (*set_cc)(struct tcpc_dev *dev, enum typec_cc_status cc);
int (*get_cc)(struct tcpc_dev *dev, enum typec_cc_status *cc1, int (*get_cc)(struct tcpc_dev *dev, enum typec_cc_status *cc1,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment