History

usb: typec: tcpm: Support bist test data mode for compliance

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.

Badhri Jagan Sridharan committed 6 years ago

Commit b2dcfef1 parent d25d61b2 files · +13 −0Browse files

Unified · Split

2 files
  1. drivers/usb/typec/tcpm/tcpm.c +11 −0
  2. include/linux/usb/tcpm.h +2 −0
drivers/usb/typec/tcpm/tcpm.c+11−0
@@ -2748,6 +2748,11 @@ static void tcpm_detach(struct tcpm_port *port) · 2747 unmodified lines
27482748 if (!port->attached)
27492749 return;
27502750
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+
27512756 if (tcpm_port_is_disconnected(port))
27522757 port->hard_reset_count = 0;
27532758
@@ -3557,6 +3562,12 @@ static void run_state_machine(struct tcpm_port *port) · 803 unmodified lines
35573562 case BDO_MODE_CARRIER2:
35583563 tcpm_pd_transmit(port, TCPC_TX_BIST_MODE_2, NULL);
35593564 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;
35603571 default:
35613572 break;
35623573 }
include/linux/usb/tcpm.h+2−0
@@ -79,6 +79,7 @@ enum tcpm_transmit_type { · 78 unmodified lines
7979 * @try_role: Optional; called to set a preferred role
8080 * @pd_transmit:Called to transmit PD message
8181 * @mux: Pointer to multiplexer data
82+ * @set_bist_data: Turn on/off bist data mode for compliance testing
8283 */
8384 struct tcpc_dev {
8485 struct fwnode_handle *fwnode;
@@ -103,6 +104,7 @@ struct tcpc_dev { · 18 unmodified lines
103104 int (*try_role)(struct tcpc_dev *dev, int role);
104105 int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type,
105106 const struct pd_message *msg);
107+ int (*set_bist_data)(struct tcpc_dev *dev, bool on);
106108 };
107109
108110 struct tcpm_port;