diff options
Diffstat (limited to 'driver')
-rw-r--r-- | driver/tcpm/ps8xxx.c | 15 | ||||
-rw-r--r-- | driver/tcpm/ps8xxx.h | 11 |
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. |