summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/tcpm/anx7688.c1
-rw-r--r--driver/tcpm/ccgxxf.c1
-rw-r--r--driver/tcpm/fusb307.c1
-rw-r--r--driver/tcpm/mt6370.c1
-rw-r--r--driver/tcpm/nct38xx.c1
-rw-r--r--driver/tcpm/ps8xxx.c1
-rw-r--r--driver/tcpm/raa489000.c1
-rw-r--r--driver/tcpm/rt1715.c1
-rw-r--r--driver/tcpm/rt1718s.c1
-rw-r--r--driver/tcpm/tcpci.c12
-rw-r--r--driver/tcpm/tusb422.c1
-rw-r--r--include/driver/tcpm/tcpci.h1
-rw-r--r--include/driver/tcpm/tcpm.h13
-rw-r--r--include/usb_pd_tcpm.h10
14 files changed, 46 insertions, 0 deletions
diff --git a/driver/tcpm/anx7688.c b/driver/tcpm/anx7688.c
index 4ee87fdaa4..70f5440e93 100644
--- a/driver/tcpm/anx7688.c
+++ b/driver/tcpm/anx7688.c
@@ -214,6 +214,7 @@ const struct tcpm_drv anx7688_tcpm_drv = {
.transmit = &tcpci_tcpm_transmit,
.tcpc_alert = &anx7688_tcpc_alert,
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
};
#ifdef CONFIG_USB_PD_TCPM_MUX
diff --git a/driver/tcpm/ccgxxf.c b/driver/tcpm/ccgxxf.c
index 2c8431f474..085367b35f 100644
--- a/driver/tcpm/ccgxxf.c
+++ b/driver/tcpm/ccgxxf.c
@@ -122,6 +122,7 @@ const struct tcpm_drv ccgxxf_tcpm_drv = {
.enter_low_power_mode = &tcpci_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#ifdef CONFIG_CMD_TCPC_DUMP
.dump_registers = &ccgxxf_dump_registers,
#endif
diff --git a/driver/tcpm/fusb307.c b/driver/tcpm/fusb307.c
index 6a865af69c..cb4e630044 100644
--- a/driver/tcpm/fusb307.c
+++ b/driver/tcpm/fusb307.c
@@ -103,4 +103,5 @@ const struct tcpm_drv fusb307_tcpm_drv = {
.drp_toggle = &tcpci_tcpc_drp_toggle,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
};
diff --git a/driver/tcpm/mt6370.c b/driver/tcpm/mt6370.c
index 15aa05bee2..b98580f950 100644
--- a/driver/tcpm/mt6370.c
+++ b/driver/tcpm/mt6370.c
@@ -216,4 +216,5 @@ const struct tcpm_drv mt6370_tcpm_drv = {
.enter_low_power_mode = &mt6370_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
};
diff --git a/driver/tcpm/nct38xx.c b/driver/tcpm/nct38xx.c
index 810f92c6f8..e01537d518 100644
--- a/driver/tcpm/nct38xx.c
+++ b/driver/tcpm/nct38xx.c
@@ -389,6 +389,7 @@ const struct tcpm_drv nct38xx_tcpm_drv = {
.enter_low_power_mode = &tcpci_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#ifdef CONFIG_USB_PD_FRS
.set_frs_enable = &nct38xx_set_frs_enable,
#endif
diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c
index 9c51fbc910..a1557c5fc7 100644
--- a/driver/tcpm/ps8xxx.c
+++ b/driver/tcpm/ps8xxx.c
@@ -1037,6 +1037,7 @@ const struct tcpm_drv ps8xxx_tcpm_drv = {
.enter_low_power_mode = ps8xxx_enter_low_power_mode,
#endif
.set_bist_test_mode = tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#if defined(CONFIG_USB_PD_FRS) && (defined(CONFIG_USB_PD_TCPM_PS8815) || \
defined(CONFIG_USB_PD_TCPM_PS8745))
.set_frs_enable = ps8815_tcpc_fast_role_swap_enable,
diff --git a/driver/tcpm/raa489000.c b/driver/tcpm/raa489000.c
index 8bc2db4cb3..8f37b90139 100644
--- a/driver/tcpm/raa489000.c
+++ b/driver/tcpm/raa489000.c
@@ -368,6 +368,7 @@ const struct tcpm_drv raa489000_tcpm_drv = {
.wake_low_power_mode = &tcpci_wake_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
.tcpc_enable_auto_discharge_disconnect =
&tcpci_tcpc_enable_auto_discharge_disconnect,
.debug_detach = &raa489000_debug_detach,
diff --git a/driver/tcpm/rt1715.c b/driver/tcpm/rt1715.c
index f9d6cfa6cb..875c8368a1 100644
--- a/driver/tcpm/rt1715.c
+++ b/driver/tcpm/rt1715.c
@@ -257,4 +257,5 @@ const struct tcpm_drv rt1715_tcpm_drv = {
.enter_low_power_mode = &rt1715_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
};
diff --git a/driver/tcpm/rt1718s.c b/driver/tcpm/rt1718s.c
index ce9ad2ea43..319d1b14af 100644
--- a/driver/tcpm/rt1718s.c
+++ b/driver/tcpm/rt1718s.c
@@ -808,6 +808,7 @@ const struct tcpm_drv rt1718s_tcpm_drv = {
.set_frs_enable = &rt1718s_set_frs_enable,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#ifdef CONFIG_USB_PD_TCPM_SBU
.set_sbu = &rt1718s_set_sbu,
#endif
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c
index 4775da6db3..98eb7c7e12 100644
--- a/driver/tcpm/tcpci.c
+++ b/driver/tcpm/tcpci.c
@@ -1107,6 +1107,17 @@ enum ec_error_list tcpci_set_bist_test_mode(const int port, const bool enable)
return rv;
}
+enum ec_error_list tcpci_get_bist_test_mode(const int port, bool *enable)
+{
+ int rv;
+ int val;
+
+ rv = tcpc_read(port, TCPC_REG_TCPC_CTRL, &val);
+ *enable = !!(val & TCPC_REG_TCPC_CTRL_BIST_TEST_MODE);
+
+ return rv;
+}
+
static int tcpci_clear_fault(int port, int fault)
{
int rv;
@@ -1860,6 +1871,7 @@ const struct tcpm_drv tcpci_tcpm_drv = {
.enter_low_power_mode = &tcpci_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#ifdef CONFIG_CMD_TCPC_DUMP
.dump_registers = &tcpc_dump_std_registers,
#endif
diff --git a/driver/tcpm/tusb422.c b/driver/tcpm/tusb422.c
index b2ca8ef83f..398ea78fea 100644
--- a/driver/tcpm/tusb422.c
+++ b/driver/tcpm/tusb422.c
@@ -187,6 +187,7 @@ const struct tcpm_drv tusb422_tcpm_drv = {
.enter_low_power_mode = &tcpci_enter_low_power_mode,
#endif
.set_bist_test_mode = &tcpci_set_bist_test_mode,
+ .get_bist_test_mode = &tcpci_get_bist_test_mode,
#ifdef CONFIG_USB_PD_FRS_TCPC
.set_frs_enable = &tusb422_set_frs_enable,
#endif
diff --git a/include/driver/tcpm/tcpci.h b/include/driver/tcpm/tcpci.h
index aa81a0b409..7f1b63e22a 100644
--- a/include/driver/tcpm/tcpci.h
+++ b/include/driver/tcpm/tcpci.h
@@ -330,6 +330,7 @@ void tcpci_wake_low_power_mode(int port);
int tcpci_hard_reset_reinit(int port);
enum ec_error_list tcpci_set_bist_test_mode(const int port, const bool enable);
+enum ec_error_list tcpci_get_bist_test_mode(const int port, bool *enable);
void tcpci_tcpc_discharge_vbus(int port, int enable);
void tcpci_tcpc_enable_auto_discharge_disconnect(int port, int enable);
int tcpci_tcpc_debug_accessory(int port, bool enable);
diff --git a/include/driver/tcpm/tcpm.h b/include/driver/tcpm/tcpm.h
index 24f3c6af89..3b17a5d5fa 100644
--- a/include/driver/tcpm/tcpm.h
+++ b/include/driver/tcpm/tcpm.h
@@ -400,6 +400,19 @@ static inline enum ec_error_list tcpc_set_bist_test_mode(int port, bool enable)
return rv;
}
+static inline enum ec_error_list tcpc_get_bist_test_mode(int port, bool *enable)
+{
+ const struct tcpm_drv *tcpc;
+
+ tcpc = tcpc_config[port].drv;
+ if (tcpc->get_bist_test_mode)
+ return tcpc->get_bist_test_mode(port, enable);
+
+ *enable = false;
+
+ return EC_ERROR_UNIMPLEMENTED;
+}
+
/*
* Returns true if the port controls FRS using the TCPC.
*/
diff --git a/include/usb_pd_tcpm.h b/include/usb_pd_tcpm.h
index b0338f6962..1de8c5121b 100644
--- a/include/usb_pd_tcpm.h
+++ b/include/usb_pd_tcpm.h
@@ -515,6 +515,16 @@ struct tcpm_drv {
*/
enum ec_error_list (*set_bist_test_mode)(int port, bool enable);
+ /**
+ * Get control of BIST Test Mode (or analogous functionality) in the
+ * TCPC.
+ *
+ * @param port USB-C port number
+ * @param enable true for BIST Test Mode enabled; false for error
+ * occurred or BIST Test Mode disabled.
+ * @return EC_SUCCESS or error code
+ */
+ enum ec_error_list (*get_bist_test_mode)(int port, bool *enable);
#ifdef CONFIG_CMD_TCPC_DUMP
/**
* Dump TCPC registers