On 7/14/20 4:12 PM, Badhri Jagan Sridharan wrote: > Quoting from TCPCI spec: > "Setting this bit to 1 is intended to be used only when a USB compliance > tester is using USB BIST Test Data to test the PHY layer of the TCPC. The > TCPM should clear this bit when a disconnect is detected. > 0: Normal Operation. Incoming messages enabled by RECEIVE_DETECT > passed to TCPM via Alert. > 1: BIST Test Mode. Incoming messages enabled by RECEIVE_DETECT > result in GoodCRC response but may not be passed to the TCPM via > Alert." > > Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx> This needs to be the second patch in the series. The set_bist_data callback doesn't exist yet. Other than that, for the code itself: Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > Version history: > Changes since V1:(Guenter's suggestions) > - Split the change into two: TCPM and TCPCI > - Move BIST log to TCPM log > - Alignment and column count changes > --- > drivers/usb/typec/tcpm/tcpci.c | 9 +++++++++ > drivers/usb/typec/tcpm/tcpci.h | 1 + > 2 files changed, 10 insertions(+) > > diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c > index 753645bb25273a..f57d91fd0e0924 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -227,6 +227,14 @@ static int tcpci_set_vconn(struct tcpc_dev *tcpc, bool enable) > enable ? TCPC_POWER_CTRL_VCONN_ENABLE : 0); > } > > +static int tcpci_set_bist_data(struct tcpc_dev *tcpc, bool enable) > +{ > + struct tcpci *tcpci = tcpc_to_tcpci(tcpc); > + > + return regmap_update_bits(tcpci->regmap, TCPC_TCPC_CTRL, TCPC_TCPC_CTRL_BIST_TM, > + enable ? TCPC_TCPC_CTRL_BIST_TM : 0); > +} > + > static int tcpci_set_roles(struct tcpc_dev *tcpc, bool attached, > enum typec_role role, enum typec_data_role data) > { > @@ -530,6 +538,7 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data) > tcpci->tcpc.set_pd_rx = tcpci_set_pd_rx; > tcpci->tcpc.set_roles = tcpci_set_roles; > tcpci->tcpc.pd_transmit = tcpci_pd_transmit; > + tcpci->tcpc.set_bist_data = tcpci_set_bist_data; > > err = tcpci_parse_config(tcpci); > if (err < 0) > diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h > index 303ebde265465c..11c36d086c8608 100644 > --- a/drivers/usb/typec/tcpm/tcpci.h > +++ b/drivers/usb/typec/tcpm/tcpci.h > @@ -36,6 +36,7 @@ > > #define TCPC_TCPC_CTRL 0x19 > #define TCPC_TCPC_CTRL_ORIENTATION BIT(0) > +#define TCPC_TCPC_CTRL_BIST_TM BIT(1) > > #define TCPC_ROLE_CTRL 0x1a > #define TCPC_ROLE_CTRL_DRP BIT(6) >