soc/intel/common: Add IOE SBI access for TCSS functions

Meteor Lake has the IOE Die for TCSS. This change adds IOE SBI access
for TCSS pad configuration and Thunderbolt authentication.

BUG=b:213574324
TEST=Build platforms coreboot images successfully.

Change-Id: I324242a018fb47207dd426fc8acd103f677d5cab
Signed-off-by: John Zhao <john.zhao@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63128
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
This commit is contained in:
John 2022-03-27 09:06:25 -07:00 committed by Felix Held
parent 848b42558c
commit 2bcc5f39c1
2 changed files with 20 additions and 0 deletions

View File

@ -146,6 +146,7 @@ extern const struct soc_tcss_ops tcss_ops;
/* Method to configure pads */ /* Method to configure pads */
void tcss_configure_aux_bias_pads_regbar(const struct typec_aux_bias_pads *pads); 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);
/* /*
* 1) Initialize TCSS muxes to disconnected state * 1) Initialize TCSS muxes to disconnected state
@ -163,5 +164,6 @@ const struct tcss_port_map *tcss_get_port_info(size_t *num_ports);
/* Method to validate the Thunderbolt authentication */ /* Method to validate the Thunderbolt authentication */
bool tcss_valid_tbt_auth(void); bool tcss_valid_tbt_auth(void);
bool ioe_tcss_valid_tbt_auth(void);
#endif /* _TCSS_H_ */ #endif /* _TCSS_H_ */

View File

@ -368,6 +368,19 @@ void tcss_configure_aux_bias_pads_regbar(
} }
} }
void ioe_tcss_configure_aux_bias_pads_sbi(
const struct typec_aux_bias_pads *pads)
{
for (size_t i = 0; i < MAX_TYPE_C_PORTS; i++) {
if (pads[i].pad_auxn_dc && pads[i].pad_auxp_dc) {
ioe_p2sb_sbi_write(PID_IOM, IOM_AUX_BIAS_CTRL_PULLUP_OFFSET(i),
calc_bias_ctrl_reg_value(pads[i].pad_auxp_dc));
ioe_p2sb_sbi_write(PID_IOM, IOM_AUX_BIAS_CTRL_PULLDOWN_OFFSET(i),
calc_bias_ctrl_reg_value(pads[i].pad_auxn_dc));
}
}
}
const struct tcss_port_map *tcss_get_port_info(size_t *num_ports) const struct tcss_port_map *tcss_get_port_info(size_t *num_ports)
{ {
static struct tcss_port_map port_map[MAX_TYPE_C_PORTS]; static struct tcss_port_map port_map[MAX_TYPE_C_PORTS];
@ -424,3 +437,8 @@ bool tcss_valid_tbt_auth(void)
{ {
return REGBAR32(PID_IOM, IOM_CSME_IMR_TBT_STATUS) & TBT_VALID_AUTHENTICATION; return REGBAR32(PID_IOM, IOM_CSME_IMR_TBT_STATUS) & TBT_VALID_AUTHENTICATION;
} }
bool ioe_tcss_valid_tbt_auth(void)
{
return ioe_p2sb_sbi_read(PID_IOM, IOM_CSME_IMR_TBT_STATUS) & TBT_VALID_AUTHENTICATION;
}