diff options
Diffstat (limited to 'include/linux/usb/tcpci.h')
| -rw-r--r-- | include/linux/usb/tcpci.h | 22 | 
1 files changed, 22 insertions, 0 deletions
| diff --git a/include/linux/usb/tcpci.h b/include/linux/usb/tcpci.h index 20c0bedb8ec8..17657451c762 100644 --- a/include/linux/usb/tcpci.h +++ b/include/linux/usb/tcpci.h @@ -167,6 +167,11 @@  /* I2C_WRITE_BYTE_COUNT + 1 when TX_BUF_BYTE_x is only accessible I2C_WRITE_BYTE_COUNT */  #define TCPC_TRANSMIT_BUFFER_MAX_LEN		31 +#define tcpc_presenting_rd(reg, cc) \ +	(!(TCPC_ROLE_CTRL_DRP & (reg)) && \ +	 (((reg) & (TCPC_ROLE_CTRL_## cc ##_MASK << TCPC_ROLE_CTRL_## cc ##_SHIFT)) == \ +	  (TCPC_ROLE_CTRL_CC_RD << TCPC_ROLE_CTRL_## cc ##_SHIFT))) +  struct tcpci;  /* @@ -207,4 +212,21 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci);  struct tcpm_port;  struct tcpm_port *tcpci_get_tcpm_port(struct tcpci *tcpci); + +static inline enum typec_cc_status tcpci_to_typec_cc(unsigned int cc, bool sink) +{ +	switch (cc) { +	case 0x1: +		return sink ? TYPEC_CC_RP_DEF : TYPEC_CC_RA; +	case 0x2: +		return sink ? TYPEC_CC_RP_1_5 : TYPEC_CC_RD; +	case 0x3: +		if (sink) +			return TYPEC_CC_RP_3_0; +		fallthrough; +	case 0x0: +	default: +		return TYPEC_CC_OPEN; +	} +}  #endif /* __LINUX_USB_TCPCI_H */ | 
