summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarthur.lin <arthur.lin@lcfc.corp-partner.google.com>2022-05-09 23:41:51 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-05-18 09:45:02 +0000
commitdf6629521c7ee37a659325ba238eb739c9c1574b (patch)
treef0cb0c2b3cfc4a511d5a7d62632474ca70b8f5e7
parentb2b4b5ed760e69c560558d3031d1e272742b334e (diff)
downloadchrome-ec-df6629521c7ee37a659325ba238eb739c9c1574b.tar.gz
anx7447: Read ANX7447 firmware version
Add ANX7447 firmware version reading for new adding PD firmware. BUG=b:227705897 BRANCH=None TEST=make buildall -j Signed-off-by: arthur.lin <arthur.lin@lcfc.corp-partner.google.com> Change-Id: I0eeedf9059bda8fead8cc05405dac4723da9d0e8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3644553 Commit-Queue: Jimmy Wu <jimmy.wu@lcfc.corp-partner.google.com> Tested-by: Jimmy Wu <jimmy.wu@lcfc.corp-partner.google.com> Tested-by: Peichao Wang <pwang12@lenovo.corp-partner.google.com> Reviewed-by: Peichao Wang <pwang12@lenovo.corp-partner.google.com> Reviewed-by: Marco Chen <marcochen@chromium.org>
-rw-r--r--driver/tcpm/anx7447.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/driver/tcpm/anx7447.c b/driver/tcpm/anx7447.c
index d9f7d21f9f..740e0f3055 100644
--- a/driver/tcpm/anx7447.c
+++ b/driver/tcpm/anx7447.c
@@ -561,6 +561,33 @@ static int anx7447_mux_get(int port, mux_state_t *mux_state)
#endif /* CONFIG_USB_PD_TCPM_MUX */
/* ANX7447 is a TCPCI compatible port controller */
+
+static int anx7447_get_chip_info(int port, int live,
+ struct ec_response_pd_chip_info_v1 **chip_info)
+{
+ int rv = tcpci_get_chip_info(port, live, chip_info);
+ int val;
+
+ if (rv)
+ return rv;
+
+ if ((*chip_info)->fw_version_number == -1 || live) {
+ /*
+ * Before reading ANX7447 SPI slave address 0x7e for
+ * new added FW version, need to read ANX7447 I2c
+ * slave address 0x58 first to wake up ANX7447.
+ */
+ tcpc_read(port, ANX7447_REG_OCM_VERSION, &val);
+ rv = anx7447_reg_read(port, ANX7447_REG_OCM_VERSION, &val);
+
+ if (rv)
+ return rv;
+ if (val != 0)
+ (*chip_info)->fw_version_number = val;
+ }
+
+ return rv;
+}
const struct tcpm_drv anx7447_tcpm_drv = {
.init = &anx7447_init,
.release = &anx7447_release,
@@ -585,6 +612,7 @@ const struct tcpm_drv anx7447_tcpm_drv = {
#endif
.get_chip_info = &tcpci_get_chip_info,
#ifdef CONFIG_USBC_PPC
+ .get_chip_info = &anx7447_get_chip_info,
.set_snk_ctrl = &tcpci_tcpm_set_snk_ctrl,
.set_src_ctrl = &tcpci_tcpm_set_src_ctrl,
#endif