TCPM supports BIST carried mode. PD compliance tests require BIST Test Data to be supported as well. Introducing set_bist_data callback to signal tcpc driver for configuring the port controller hardware to enable/disable BIST Test Data mode.
Unified · Split
| @@ -2748,6 +2748,11 @@ static void tcpm_detach(struct tcpm_port *port) · 2747 unmodified lines | ||
| 2748 | 2748 | if (!port->attached) |
| 2749 | 2749 | return; |
| 2750 | 2750 | |
| 2751 | + if (port->tcpc->set_bist_data) { | |
| 2752 | + tcpm_log(port, "disable BIST MODE TESTDATA"); | |
| 2753 | + port->tcpc->set_bist_data(port->tcpc, false); | |
| 2754 | + } | |
| 2755 | + | |
| 2751 | 2756 | if (tcpm_port_is_disconnected(port)) |
| 2752 | 2757 | port->hard_reset_count = 0; |
| 2753 | 2758 | |
| @@ -3557,6 +3562,12 @@ static void run_state_machine(struct tcpm_port *port) · 803 unmodified lines | ||
| 3557 | 3562 | case BDO_MODE_CARRIER2: |
| 3558 | 3563 | tcpm_pd_transmit(port, TCPC_TX_BIST_MODE_2, NULL); |
| 3559 | 3564 | break; |
| 3565 | + case BDO_MODE_TESTDATA: | |
| 3566 | + if (port->tcpc->set_bist_data) { | |
| 3567 | + tcpm_log(port, "Enable BIST MODE TESTDATA"); | |
| 3568 | + port->tcpc->set_bist_data(port->tcpc, true); | |
| 3569 | + } | |
| 3570 | + break; | |
| 3560 | 3571 | default: |
| 3561 | 3572 | break; |
| 3562 | 3573 | } |
| @@ -79,6 +79,7 @@ enum tcpm_transmit_type { · 78 unmodified lines | ||
| 79 | 79 | * @try_role: Optional; called to set a preferred role |
| 80 | 80 | * @pd_transmit:Called to transmit PD message |
| 81 | 81 | * @mux: Pointer to multiplexer data |
| 82 | + * @set_bist_data: Turn on/off bist data mode for compliance testing | |
| 82 | 83 | */ |
| 83 | 84 | struct tcpc_dev { |
| 84 | 85 | struct fwnode_handle *fwnode; |
| @@ -103,6 +104,7 @@ struct tcpc_dev { · 18 unmodified lines | ||
| 103 | 104 | int (*try_role)(struct tcpc_dev *dev, int role); |
| 104 | 105 | int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type, |
| 105 | 106 | const struct pd_message *msg); |
| 107 | + int (*set_bist_data)(struct tcpc_dev *dev, bool on); | |
| 106 | 108 | }; |
| 107 | 109 | |
| 108 | 110 | struct tcpm_port; |