summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/tcpm/ps8xxx.c15
-rw-r--r--driver/tcpm/ps8xxx.h11
2 files changed, 26 insertions, 0 deletions
diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c
index 51b6c4c412..37bfb30cc0 100644
--- a/driver/tcpm/ps8xxx.c
+++ b/driver/tcpm/ps8xxx.c
@@ -367,6 +367,21 @@ uint16_t board_get_ps8xxx_product_id(int port)
return 0;
}
+bool check_ps8755_chip(int port)
+{
+ int val;
+ int p0_addr;
+ int status;
+ bool is_ps8755 = false;
+
+ p0_addr = PS8751_P3_TO_P0_FLAGS(tcpc_config[port].i2c_info.addr_flags);
+ status = tcpc_addr_read(port, p0_addr, PS8755_P0_REG_SM, &val);
+ if (status == EC_SUCCESS && val == PS8755_P0_REG_SM_VALUE)
+ is_ps8755 = true;
+
+ return is_ps8755;
+}
+
void ps8xxx_tcpc_update_hpd_status(const struct usb_mux *me,
int hpd_lvl, int hpd_irq)
{
diff --git a/driver/tcpm/ps8xxx.h b/driver/tcpm/ps8xxx.h
index b27946dc1e..8458dbb7e5 100644
--- a/driver/tcpm/ps8xxx.h
+++ b/driver/tcpm/ps8xxx.h
@@ -45,6 +45,9 @@
#define PS8XXX_P1_REG_MUX_USB_DCI_CFG 0x4B
+#define PS8755_P0_REG_SM 0x06
+#define PS8755_P0_REG_SM_VALUE 0x80
+
#if defined(CONFIG_USB_PD_TCPM_PS8751)
/* Vendor defined registers */
#define PS8XXX_REG_VENDOR_ID_L 0x00
@@ -124,6 +127,14 @@ int ps8805_gpio_set_level(int port, enum ps8805_gpio signal, int level);
*/
int ps8805_gpio_get_level(int port, enum ps8805_gpio signal, int *level);
+/**
+ * Check if the chip is PS8755
+ *
+ * @param port: The Type-C port number.
+ * @return true if hidden register sm is 0x80
+ */
+bool check_ps8755_chip(int port);
+
/*
* Allow boards to customize for PS8XXX initial if board has
* specific settings.