diff options
-rw-r--r-- | driver/tcpm/anx7688.c | 1 | ||||
-rw-r--r-- | driver/tcpm/ccgxxf.c | 1 | ||||
-rw-r--r-- | driver/tcpm/fusb307.c | 1 | ||||
-rw-r--r-- | driver/tcpm/mt6370.c | 1 | ||||
-rw-r--r-- | driver/tcpm/nct38xx.c | 1 | ||||
-rw-r--r-- | driver/tcpm/ps8xxx.c | 1 | ||||
-rw-r--r-- | driver/tcpm/raa489000.c | 1 | ||||
-rw-r--r-- | driver/tcpm/rt1715.c | 1 | ||||
-rw-r--r-- | driver/tcpm/rt1718s.c | 1 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 12 | ||||
-rw-r--r-- | driver/tcpm/tusb422.c | 1 | ||||
-rw-r--r-- | include/driver/tcpm/tcpci.h | 1 | ||||
-rw-r--r-- | include/driver/tcpm/tcpm.h | 13 | ||||
-rw-r--r-- | include/usb_pd_tcpm.h | 10 |
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 |