coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
tcss.h File Reference
#include <intelblocks/gpio.h>
#include <device/usbc_mux.h>
Include dependency graph for tcss.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tcss_port_map
 
struct  typec_aux_bias_pads
 
struct  soc_tcss_ops
 

Macros

#define PMC_IPC_USBC_CMD_ID   0xA7
 
#define PMC_IPC_USBC_SUBCMD_ID   0x0
 
#define PMC_IPC_CMD   0x0
 
#define PMC_IPC_TCSS_CONN_REQ_RES   0x0
 
#define PMC_IPC_TCSS_DISC_REQ_RES   0x1
 
#define PMC_IPC_TCSS_SAFE_MODE_REQ_RES   0x2
 
#define PMC_IPC_TCSS_ALTMODE_REQ_RES   0x3
 
#define PMC_IPC_TCSS_HPD_REQ_RES   0x4
 
#define PMC_IPC_CONN_REQ_SIZE   2
 
#define PMC_IPC_DISC_REQ_SIZE   2
 
#define PMC_IPC_ALT_REQ_SIZE   8
 
#define PMC_IPC_SAFE_REQ_SIZE   1
 
#define PMC_IPC_HPD_REQ_SIZE   2
 
#define PMC_IPC_DP_MODE   1
 
#define TCSS_CD_USAGE_SHIFT   0
 
#define TCSS_CD_USAGE_MASK   0x0f
 
#define TCSS_CD_USB3_SHIFT   4
 
#define TCSS_CD_USB3_MASK   0x0f
 
#define TCSS_CD_USB2_SHIFT   8
 
#define TCSS_CD_USB2_MASK   0x0f
 
#define TCSS_CD_UFP_SHIFT   12
 
#define TCSS_CD_UFP_MASK   0x01
 
#define TCSS_CD_HSL_SHIFT   13
 
#define TCSS_CD_HSL_MASK   0x01
 
#define TCSS_CD_SBU_SHIFT   14
 
#define TCSS_CD_SBU_MASK   0x01
 
#define TCSS_CD_ACC_SHIFT   15
 
#define TCSS_CD_ACC_MASK   0x01
 
#define TCSS_CD_FAILED_SHIFT   16
 
#define TCSS_CD_FAILED_MASK   0x01
 
#define TCSS_CD_FATAL_SHIFT   17
 
#define TCSS_CD_FATAL_MASK   0x01
 
#define TCSS_ALT_USAGE_SHIFT   0
 
#define TCSS_ALT_USAGE_MASK   0x0f
 
#define TCSS_ALT_USB3_SHIFT   4
 
#define TCSS_ALT_USB3_MASK   0x0f
 
#define TCSS_ALT_MODE_SHIFT   12
 
#define TCSS_ALT_MODE_MASK   0x0f
 
#define TCSS_ALT_POLARITY_SHIFT   1
 
#define TCSS_ALT_POLARITY_MASK   0x01
 
#define TCSS_ALT_CABLE_SHIFT   2
 
#define TCSS_ALT_CABLE_MASK   0x01
 
#define TCSS_ALT_UFP_SHIFT   3
 
#define TCSS_ALT_UFP_MASK   0x01
 
#define TCSS_ALT_DP_MODE_SHIFT   8
 
#define TCSS_ALT_DP_MODE_MASK   0x0f
 
#define TCSS_ALT_FAILED_SHIFT   8
 
#define TCSS_ALT_FAILED_MASK   0x01
 
#define TCSS_ALT_FATAL_SHIFT   9
 
#define TCSS_ALT_FATAL_MASK   0x01
 
#define TCSS_HPD_USAGE_SHIFT   0
 
#define TCSS_HPD_USAGE_MASK   0x0f
 
#define TCSS_HPD_USB3_SHIFT   4
 
#define TCSS_HPD_USB3_MASK   0x0f
 
#define TCSS_HPD_LVL_SHIFT   12
 
#define TCSS_HPD_LVL_MASK   0x01
 
#define TCSS_HPD_IRQ_SHIFT   13
 
#define TCSS_HPD_IRQ_MASK   0x01
 
#define TCSS_CD_FIELD(name, val)    (((val) & TCSS_CD_##name##_MASK) << TCSS_CD_##name##_SHIFT)
 
#define GET_TCSS_CD_FIELD(name, val)    (((val) >> TCSS_CD_##name##_SHIFT) & TCSS_CD_##name##_MASK)
 
#define TCSS_ALT_FIELD(name, val)    (((val) & TCSS_ALT_##name##_MASK) << TCSS_ALT_##name##_SHIFT)
 
#define TCSS_HPD_FIELD(name, val)    (((val) & TCSS_HPD_##name##_MASK) << TCSS_HPD_##name##_SHIFT)
 
#define GET_TCSS_ALT_FIELD(name, val)    (((val) >> TCSS_ALT_##name##_SHIFT) & TCSS_ALT_##name##_MASK)
 
#define TCSS_CONN_STATUS_HAS_FAILED(s)   GET_TCSS_CD_FIELD(FAILED, s)
 
#define TCSS_STATUS_HAS_FAILED(s)   GET_TCSS_ALT_FIELD(FAILED, s)
 
#define TCSS_CONN_STATUS_IS_FATAL(s)   GET_TCSS_CD_FIELD(FATAL, s)
 
#define TCSS_STATUS_IS_FATAL(s)   GET_TCSS_ALT_FIELD(FATAL, s)
 
#define USB_2_PORT_MASK   0x0f
 
#define USB_3_PORT_MASK   0xf0
 
#define MODE_DP_PIN_A   BIT(0)
 
#define MODE_DP_PIN_B   BIT(1)
 
#define MODE_DP_PIN_C   BIT(2)
 
#define MODE_DP_PIN_D   BIT(3)
 
#define MODE_DP_PIN_E   BIT(4)
 
#define MODE_DP_PIN_F   BIT(5)
 

Enumerations

enum  typec_port_index {
  TYPE_C_PORT_0 , TYPE_C_PORT_1 , TYPE_C_PORT_2 , TYPE_C_PORT_3 ,
  MAX_TYPE_C_PORTS
}
 
enum  pmc_ipc_conn_mode {
  PMC_IPC_TCSS_DISCONNECT_MODE , PMC_IPC_TCSS_USB_MODE , PMC_IPC_TCSS_ALTERNATE_MODE , PMC_IPC_TCSS_SAFE_MODE ,
  PMC_IPC_TCSS_HPD_MODE , PMC_IPC_TCSS_TOTAL_MODES
}
 
enum  pmc_ipc_command_type { CONNECT_REQ , SAFE_REQ , DP_REQ , HPD_REQ }
 

Functions

void tcss_configure_aux_bias_pads_regbar (const struct typec_aux_bias_pads *pads)
 
void ioe_tcss_configure_aux_bias_pads_sbi (const struct typec_aux_bias_pads *pads)
 
void tcss_configure (const struct typec_aux_bias_pads aux_bias_pads[MAX_TYPE_C_PORTS])
 
const struct tcss_port_maptcss_get_port_info (size_t *num_ports)
 
bool tcss_valid_tbt_auth (void)
 
bool ioe_tcss_valid_tbt_auth (void)
 

Variables

const struct soc_tcss_ops tcss_ops
 

Macro Definition Documentation

◆ GET_TCSS_ALT_FIELD

#define GET_TCSS_ALT_FIELD (   name,
  val 
)     (((val) >> TCSS_ALT_##name##_SHIFT) & TCSS_ALT_##name##_MASK)

Definition at line 93 of file tcss.h.

◆ GET_TCSS_CD_FIELD

#define GET_TCSS_CD_FIELD (   name,
  val 
)     (((val) >> TCSS_CD_##name##_SHIFT) & TCSS_CD_##name##_MASK)

Definition at line 83 of file tcss.h.

◆ MODE_DP_PIN_A

#define MODE_DP_PIN_A   BIT(0)

Definition at line 123 of file tcss.h.

◆ MODE_DP_PIN_B

#define MODE_DP_PIN_B   BIT(1)

Definition at line 124 of file tcss.h.

◆ MODE_DP_PIN_C

#define MODE_DP_PIN_C   BIT(2)

Definition at line 125 of file tcss.h.

◆ MODE_DP_PIN_D

#define MODE_DP_PIN_D   BIT(3)

Definition at line 126 of file tcss.h.

◆ MODE_DP_PIN_E

#define MODE_DP_PIN_E   BIT(4)

Definition at line 127 of file tcss.h.

◆ MODE_DP_PIN_F

#define MODE_DP_PIN_F   BIT(5)

Definition at line 128 of file tcss.h.

◆ PMC_IPC_ALT_REQ_SIZE

#define PMC_IPC_ALT_REQ_SIZE   8

Definition at line 20 of file tcss.h.

◆ PMC_IPC_CMD

#define PMC_IPC_CMD   0x0

Definition at line 12 of file tcss.h.

◆ PMC_IPC_CONN_REQ_SIZE

#define PMC_IPC_CONN_REQ_SIZE   2

Definition at line 18 of file tcss.h.

◆ PMC_IPC_DISC_REQ_SIZE

#define PMC_IPC_DISC_REQ_SIZE   2

Definition at line 19 of file tcss.h.

◆ PMC_IPC_DP_MODE

#define PMC_IPC_DP_MODE   1

Definition at line 23 of file tcss.h.

◆ PMC_IPC_HPD_REQ_SIZE

#define PMC_IPC_HPD_REQ_SIZE   2

Definition at line 22 of file tcss.h.

◆ PMC_IPC_SAFE_REQ_SIZE

#define PMC_IPC_SAFE_REQ_SIZE   1

Definition at line 21 of file tcss.h.

◆ PMC_IPC_TCSS_ALTMODE_REQ_RES

#define PMC_IPC_TCSS_ALTMODE_REQ_RES   0x3

Definition at line 16 of file tcss.h.

◆ PMC_IPC_TCSS_CONN_REQ_RES

#define PMC_IPC_TCSS_CONN_REQ_RES   0x0

Definition at line 13 of file tcss.h.

◆ PMC_IPC_TCSS_DISC_REQ_RES

#define PMC_IPC_TCSS_DISC_REQ_RES   0x1

Definition at line 14 of file tcss.h.

◆ PMC_IPC_TCSS_HPD_REQ_RES

#define PMC_IPC_TCSS_HPD_REQ_RES   0x4

Definition at line 17 of file tcss.h.

◆ PMC_IPC_TCSS_SAFE_MODE_REQ_RES

#define PMC_IPC_TCSS_SAFE_MODE_REQ_RES   0x2

Definition at line 15 of file tcss.h.

◆ PMC_IPC_USBC_CMD_ID

#define PMC_IPC_USBC_CMD_ID   0xA7

Definition at line 10 of file tcss.h.

◆ PMC_IPC_USBC_SUBCMD_ID

#define PMC_IPC_USBC_SUBCMD_ID   0x0

Definition at line 11 of file tcss.h.

◆ TCSS_ALT_CABLE_MASK

#define TCSS_ALT_CABLE_MASK   0x01

Definition at line 53 of file tcss.h.

◆ TCSS_ALT_CABLE_SHIFT

#define TCSS_ALT_CABLE_SHIFT   2

Definition at line 52 of file tcss.h.

◆ TCSS_ALT_DP_MODE_MASK

#define TCSS_ALT_DP_MODE_MASK   0x0f

Definition at line 57 of file tcss.h.

◆ TCSS_ALT_DP_MODE_SHIFT

#define TCSS_ALT_DP_MODE_SHIFT   8

Definition at line 56 of file tcss.h.

◆ TCSS_ALT_FAILED_MASK

#define TCSS_ALT_FAILED_MASK   0x01

Definition at line 59 of file tcss.h.

◆ TCSS_ALT_FAILED_SHIFT

#define TCSS_ALT_FAILED_SHIFT   8

Definition at line 58 of file tcss.h.

◆ TCSS_ALT_FATAL_MASK

#define TCSS_ALT_FATAL_MASK   0x01

Definition at line 61 of file tcss.h.

◆ TCSS_ALT_FATAL_SHIFT

#define TCSS_ALT_FATAL_SHIFT   9

Definition at line 60 of file tcss.h.

◆ TCSS_ALT_FIELD

#define TCSS_ALT_FIELD (   name,
  val 
)     (((val) & TCSS_ALT_##name##_MASK) << TCSS_ALT_##name##_SHIFT)

Definition at line 87 of file tcss.h.

◆ TCSS_ALT_MODE_MASK

#define TCSS_ALT_MODE_MASK   0x0f

Definition at line 49 of file tcss.h.

◆ TCSS_ALT_MODE_SHIFT

#define TCSS_ALT_MODE_SHIFT   12

Definition at line 48 of file tcss.h.

◆ TCSS_ALT_POLARITY_MASK

#define TCSS_ALT_POLARITY_MASK   0x01

Definition at line 51 of file tcss.h.

◆ TCSS_ALT_POLARITY_SHIFT

#define TCSS_ALT_POLARITY_SHIFT   1

Definition at line 50 of file tcss.h.

◆ TCSS_ALT_UFP_MASK

#define TCSS_ALT_UFP_MASK   0x01

Definition at line 55 of file tcss.h.

◆ TCSS_ALT_UFP_SHIFT

#define TCSS_ALT_UFP_SHIFT   3

Definition at line 54 of file tcss.h.

◆ TCSS_ALT_USAGE_MASK

#define TCSS_ALT_USAGE_MASK   0x0f

Definition at line 45 of file tcss.h.

◆ TCSS_ALT_USAGE_SHIFT

#define TCSS_ALT_USAGE_SHIFT   0

Definition at line 44 of file tcss.h.

◆ TCSS_ALT_USB3_MASK

#define TCSS_ALT_USB3_MASK   0x0f

Definition at line 47 of file tcss.h.

◆ TCSS_ALT_USB3_SHIFT

#define TCSS_ALT_USB3_SHIFT   4

Definition at line 46 of file tcss.h.

◆ TCSS_CD_ACC_MASK

#define TCSS_CD_ACC_MASK   0x01

Definition at line 38 of file tcss.h.

◆ TCSS_CD_ACC_SHIFT

#define TCSS_CD_ACC_SHIFT   15

Definition at line 37 of file tcss.h.

◆ TCSS_CD_FAILED_MASK

#define TCSS_CD_FAILED_MASK   0x01

Definition at line 40 of file tcss.h.

◆ TCSS_CD_FAILED_SHIFT

#define TCSS_CD_FAILED_SHIFT   16

Definition at line 39 of file tcss.h.

◆ TCSS_CD_FATAL_MASK

#define TCSS_CD_FATAL_MASK   0x01

Definition at line 42 of file tcss.h.

◆ TCSS_CD_FATAL_SHIFT

#define TCSS_CD_FATAL_SHIFT   17

Definition at line 41 of file tcss.h.

◆ TCSS_CD_FIELD

#define TCSS_CD_FIELD (   name,
  val 
)     (((val) & TCSS_CD_##name##_MASK) << TCSS_CD_##name##_SHIFT)

Definition at line 80 of file tcss.h.

◆ TCSS_CD_HSL_MASK

#define TCSS_CD_HSL_MASK   0x01

Definition at line 34 of file tcss.h.

◆ TCSS_CD_HSL_SHIFT

#define TCSS_CD_HSL_SHIFT   13

Definition at line 33 of file tcss.h.

◆ TCSS_CD_SBU_MASK

#define TCSS_CD_SBU_MASK   0x01

Definition at line 36 of file tcss.h.

◆ TCSS_CD_SBU_SHIFT

#define TCSS_CD_SBU_SHIFT   14

Definition at line 35 of file tcss.h.

◆ TCSS_CD_UFP_MASK

#define TCSS_CD_UFP_MASK   0x01

Definition at line 32 of file tcss.h.

◆ TCSS_CD_UFP_SHIFT

#define TCSS_CD_UFP_SHIFT   12

Definition at line 31 of file tcss.h.

◆ TCSS_CD_USAGE_MASK

#define TCSS_CD_USAGE_MASK   0x0f

Definition at line 26 of file tcss.h.

◆ TCSS_CD_USAGE_SHIFT

#define TCSS_CD_USAGE_SHIFT   0

Definition at line 25 of file tcss.h.

◆ TCSS_CD_USB2_MASK

#define TCSS_CD_USB2_MASK   0x0f

Definition at line 30 of file tcss.h.

◆ TCSS_CD_USB2_SHIFT

#define TCSS_CD_USB2_SHIFT   8

Definition at line 29 of file tcss.h.

◆ TCSS_CD_USB3_MASK

#define TCSS_CD_USB3_MASK   0x0f

Definition at line 28 of file tcss.h.

◆ TCSS_CD_USB3_SHIFT

#define TCSS_CD_USB3_SHIFT   4

Definition at line 27 of file tcss.h.

◆ TCSS_CONN_STATUS_HAS_FAILED

#define TCSS_CONN_STATUS_HAS_FAILED (   s)    GET_TCSS_CD_FIELD(FAILED, s)

Definition at line 96 of file tcss.h.

◆ TCSS_CONN_STATUS_IS_FATAL

#define TCSS_CONN_STATUS_IS_FATAL (   s)    GET_TCSS_CD_FIELD(FATAL, s)

Definition at line 99 of file tcss.h.

◆ TCSS_HPD_FIELD

#define TCSS_HPD_FIELD (   name,
  val 
)     (((val) & TCSS_HPD_##name##_MASK) << TCSS_HPD_##name##_SHIFT)

Definition at line 90 of file tcss.h.

◆ TCSS_HPD_IRQ_MASK

#define TCSS_HPD_IRQ_MASK   0x01

Definition at line 70 of file tcss.h.

◆ TCSS_HPD_IRQ_SHIFT

#define TCSS_HPD_IRQ_SHIFT   13

Definition at line 69 of file tcss.h.

◆ TCSS_HPD_LVL_MASK

#define TCSS_HPD_LVL_MASK   0x01

Definition at line 68 of file tcss.h.

◆ TCSS_HPD_LVL_SHIFT

#define TCSS_HPD_LVL_SHIFT   12

Definition at line 67 of file tcss.h.

◆ TCSS_HPD_USAGE_MASK

#define TCSS_HPD_USAGE_MASK   0x0f

Definition at line 64 of file tcss.h.

◆ TCSS_HPD_USAGE_SHIFT

#define TCSS_HPD_USAGE_SHIFT   0

Definition at line 63 of file tcss.h.

◆ TCSS_HPD_USB3_MASK

#define TCSS_HPD_USB3_MASK   0x0f

Definition at line 66 of file tcss.h.

◆ TCSS_HPD_USB3_SHIFT

#define TCSS_HPD_USB3_SHIFT   4

Definition at line 65 of file tcss.h.

◆ TCSS_STATUS_HAS_FAILED

#define TCSS_STATUS_HAS_FAILED (   s)    GET_TCSS_ALT_FIELD(FAILED, s)

Definition at line 97 of file tcss.h.

◆ TCSS_STATUS_IS_FATAL

#define TCSS_STATUS_IS_FATAL (   s)    GET_TCSS_ALT_FIELD(FATAL, s)

Definition at line 100 of file tcss.h.

◆ USB_2_PORT_MASK

#define USB_2_PORT_MASK   0x0f

Definition at line 102 of file tcss.h.

◆ USB_3_PORT_MASK

#define USB_3_PORT_MASK   0xf0

Definition at line 103 of file tcss.h.

Enumeration Type Documentation

◆ pmc_ipc_command_type

Enumerator
CONNECT_REQ 
SAFE_REQ 
DP_REQ 
HPD_REQ 

Definition at line 115 of file tcss.h.

◆ pmc_ipc_conn_mode

Enumerator
PMC_IPC_TCSS_DISCONNECT_MODE 
PMC_IPC_TCSS_USB_MODE 
PMC_IPC_TCSS_ALTERNATE_MODE 
PMC_IPC_TCSS_SAFE_MODE 
PMC_IPC_TCSS_HPD_MODE 
PMC_IPC_TCSS_TOTAL_MODES 

Definition at line 106 of file tcss.h.

◆ typec_port_index

Enumerator
TYPE_C_PORT_0 
TYPE_C_PORT_1 
TYPE_C_PORT_2 
TYPE_C_PORT_3 
MAX_TYPE_C_PORTS 

Definition at line 72 of file tcss.h.

Function Documentation

◆ ioe_tcss_configure_aux_bias_pads_sbi()

void ioe_tcss_configure_aux_bias_pads_sbi ( const struct typec_aux_bias_pads pads)

Definition at line 371 of file tcss.c.

References calc_bias_ctrl_reg_value(), ioe_p2sb_sbi_write(), IOM_AUX_BIAS_CTRL_PULLDOWN_OFFSET, IOM_AUX_BIAS_CTRL_PULLUP_OFFSET, MAX_TYPE_C_PORTS, and PID_IOM.

Here is the call graph for this function:

◆ ioe_tcss_valid_tbt_auth()

bool ioe_tcss_valid_tbt_auth ( void  )

Definition at line 441 of file tcss.c.

References ioe_p2sb_sbi_read(), IOM_CSME_IMR_TBT_STATUS, PID_IOM, and TBT_VALID_AUTHENTICATION.

Here is the call graph for this function:

◆ tcss_configure()

void tcss_configure ( const struct typec_aux_bias_pads  aux_bias_pads[MAX_TYPE_C_PORTS])

Definition at line 415 of file tcss.c.

References CONFIG, soc_tcss_ops::configure_aux_bias_pads, NULL, tcss_configure_dp_mode(), tcss_get_port_info(), tcss_init_mux(), and tcss_ops.

Referenced by platform_fsp_multi_phase_init_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tcss_configure_aux_bias_pads_regbar()

void tcss_configure_aux_bias_pads_regbar ( const struct typec_aux_bias_pads pads)

Definition at line 358 of file tcss.c.

References calc_bias_ctrl_reg_value(), IOM_AUX_BIAS_CTRL_PULLDOWN_OFFSET, IOM_AUX_BIAS_CTRL_PULLUP_OFFSET, MAX_TYPE_C_PORTS, PID_IOM, and REGBAR32.

Here is the call graph for this function:

◆ tcss_get_port_info()

const struct tcss_port_map* tcss_get_port_info ( size_t num_ports)

Definition at line 384 of file tcss.c.

References ARRAY_SIZE, CONFIG, DEVICE_PATH_GENERIC, DEVICE_PATH_PCI, find_dev_nested_path(), intel_pmc_mux_conn_get_ports(), is_dev_enabled(), MAX_TYPE_C_PORTS, PCH_DEVFN_PMC, pci_root_bus(), device_path::type, tcss_port_map::usb2_port, and tcss_port_map::usb3_port.

Referenced by tcss_configure().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tcss_valid_tbt_auth()

bool tcss_valid_tbt_auth ( void  )

Definition at line 436 of file tcss.c.

References IOM_CSME_IMR_TBT_STATUS, PID_IOM, REGBAR32, and TBT_VALID_AUTHENTICATION.

Variable Documentation

◆ tcss_ops

const struct soc_tcss_ops tcss_ops
extern

Definition at line 1 of file tcss.c.

Referenced by tcss_configure().