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
2748 if (!port->attached)2748 if (!port->attached)
2749 return;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 if (tcpm_port_is_disconnected(port))2756 if (tcpm_port_is_disconnected(port))
2752 port->hard_reset_count = 0;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 case BDO_MODE_CARRIER2:3562 case BDO_MODE_CARRIER2:
3558 tcpm_pd_transmit(port, TCPC_TX_BIST_MODE_2, NULL);3563 tcpm_pd_transmit(port, TCPC_TX_BIST_MODE_2, NULL);
3559 break;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 default:3571 default:
3561 break;3572 break;
3562 }3573 }
include/linux/usb/tcpm.h+2−0
@@ -79,6 +79,7 @@ enum tcpm_transmit_type { · 78 unmodified lines
79 * @try_role: Optional; called to set a preferred role79 * @try_role: Optional; called to set a preferred role
80 * @pd_transmit:Called to transmit PD message80 * @pd_transmit:Called to transmit PD message
81 * @mux: Pointer to multiplexer data81 * @mux: Pointer to multiplexer data
82 * @set_bist_data: Turn on/off bist data mode for compliance testing
82 */83 */
83struct tcpc_dev {84struct tcpc_dev {
84 struct fwnode_handle *fwnode;85 struct fwnode_handle *fwnode;
@@ -103,6 +104,7 @@ struct tcpc_dev { · 18 unmodified lines
103 int (*try_role)(struct tcpc_dev *dev, int role);104 int (*try_role)(struct tcpc_dev *dev, int role);
104 int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type,105 int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type,
105 const struct pd_message *msg);106 const struct pd_message *msg);
107 int (*set_bist_data)(struct tcpc_dev *dev, bool on);
106};108};
107 109
108struct tcpm_port;110struct tcpm_port;