On 7/15/22 03:04, Gene Chen wrote:
From: Gene Chen <gene_chen@xxxxxxxxxxx>
Add set_vbus tcpci callback for vendor IC workaround.
According to different rp level detected, set corresponding
rx dead zone threshold in order to decode right pd message.
Looking at the next patch, I dispute the need for this callback.
From what I can see, the additional code should be implemented
in the driver's interrupt handler whenever CC changes, not when
CC values are read from higher level drivers.
Guenter
Signed-off-by: Gene Chen <gene_chen@xxxxxxxxxxx>
---
drivers/usb/typec/tcpm/tcpci.c | 3 +++
drivers/usb/typec/tcpm/tcpci.h | 2 ++
2 files changed, 5 insertions(+)
diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
index f33e08eb7670..fc2f6191b7d3 100644
--- a/drivers/usb/typec/tcpm/tcpci.c
+++ b/drivers/usb/typec/tcpm/tcpci.c
@@ -243,6 +243,9 @@ static int tcpci_get_cc(struct tcpc_dev *tcpc,
unsigned int reg, role_control;
int ret;
+ if (tcpci->data->get_cc)
+ return tcpci->data->get_cc(tcpci, tcpci->data, cc1, cc2);
+
ret = regmap_read(tcpci->regmap, TCPC_ROLE_CTRL, &role_control);
if (ret < 0)
return ret;
diff --git a/drivers/usb/typec/tcpm/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
index b2edd45f13c6..2cef19e131f8 100644
--- a/drivers/usb/typec/tcpm/tcpci.h
+++ b/drivers/usb/typec/tcpm/tcpci.h
@@ -190,6 +190,8 @@ struct tcpci_data {
unsigned char vbus_vsafe0v:1;
int (*init)(struct tcpci *tcpci, struct tcpci_data *data);
+ int (*get_cc)(struct tcpci *tcpci, struct tcpci_data *data,
+ enum typec_cc_status *cc1, enum typec_cc_status *cc2);
int (*set_vconn)(struct tcpci *tcpci, struct tcpci_data *data,
bool enable);
int (*start_drp_toggling)(struct tcpci *tcpci, struct tcpci_data *data,