Skip to content

Commit

Permalink
usb: typec: tcpm: Support bist test data mode for compliance
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20200716034128.1251728-1-badhri@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Badhri Jagan Sridharan authored and Greg Kroah-Hartman committed Jul 21, 2020
1 parent d25d61b commit b2dcfef
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/usb/typec/tcpm/tcpm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2748,6 +2748,11 @@ static void tcpm_detach(struct tcpm_port *port)
if (!port->attached)
return;

if (port->tcpc->set_bist_data) {
tcpm_log(port, "disable BIST MODE TESTDATA");
port->tcpc->set_bist_data(port->tcpc, false);
}

if (tcpm_port_is_disconnected(port))
port->hard_reset_count = 0;

Expand Down Expand Up @@ -3557,6 +3562,12 @@ static void run_state_machine(struct tcpm_port *port)
case BDO_MODE_CARRIER2:
tcpm_pd_transmit(port, TCPC_TX_BIST_MODE_2, NULL);
break;
case BDO_MODE_TESTDATA:
if (port->tcpc->set_bist_data) {
tcpm_log(port, "Enable BIST MODE TESTDATA");
port->tcpc->set_bist_data(port->tcpc, true);
}
break;
default:
break;
}
Expand Down
2 changes: 2 additions & 0 deletions include/linux/usb/tcpm.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ enum tcpm_transmit_type {
* @try_role: Optional; called to set a preferred role
* @pd_transmit:Called to transmit PD message
* @mux: Pointer to multiplexer data
* @set_bist_data: Turn on/off bist data mode for compliance testing
*/
struct tcpc_dev {
struct fwnode_handle *fwnode;
Expand All @@ -103,6 +104,7 @@ struct tcpc_dev {
int (*try_role)(struct tcpc_dev *dev, int role);
int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type,
const struct pd_message *msg);
int (*set_bist_data)(struct tcpc_dev *dev, bool on);
};

struct tcpm_port;
Expand Down

0 comments on commit b2dcfef

Please sign in to comment.