diff options
author | Ben Chen <ben.chen2@quanta.corp-partner.google.com> | 2020-11-13 15:21:45 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-20 03:20:15 +0000 |
commit | e2cbd8277107164b0ed2c5180ddfd4418d62cb5c (patch) | |
tree | 4ddf49c0a754511dfcb4c21df9a4374b2e7158b1 | |
parent | 49f18a1879e452630b89304c14156c7fd22a3605 (diff) | |
download | chrome-ec-e2cbd8277107164b0ed2c5180ddfd4418d62cb5c.tar.gz |
driver: add custom PS8802 I2C slave address
Add custom PS8802 slave address, page offset define,
and switch PS8802 slave address change function.
Be sure the slave device was not conflicted.
BUG=b:168761485, b:168761483
BRANCH=none
TEST=make buildall.
Change-Id: I4c02b574de7dc932cacfffae0cb695cecf8f1a22
Signed-off-by: Ben Chen <ben.chen2@quanta.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2537517
Reviewed-by: Diana Z <dzigterman@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r-- | driver/retimer/ps8802.c | 15 | ||||
-rw-r--r-- | driver/retimer/ps8802.h | 10 |
2 files changed, 25 insertions, 0 deletions
diff --git a/driver/retimer/ps8802.c b/driver/retimer/ps8802.c index cb81b84f4e..190bed8873 100644 --- a/driver/retimer/ps8802.c +++ b/driver/retimer/ps8802.c @@ -273,3 +273,18 @@ const struct usb_mux_driver ps8802_usb_mux_driver = { .set = ps8802_set_mux, .get = ps8802_get_mux, }; + +/* + * If PS8802 I2c slave address was conflicted, change + * the I2c slave address in page 0x0A, offset 0xB0 + * switch to 0x50 slave address + */ +int ps8802_chg_i2c_addr(int i2c_port) +{ + int rv; + + rv = i2c_write8(i2c_port, + PS8802_P1_ADDR, PS8802_ADDR_CFG, PS8802_I2C_SLAV_ADDR); + + return rv; +} diff --git a/driver/retimer/ps8802.h b/driver/retimer/ps8802.h index bdcf44dea8..4429db92ad 100644 --- a/driver/retimer/ps8802.h +++ b/driver/retimer/ps8802.h @@ -16,6 +16,12 @@ #define PS8802_I2C_ADDR_FLAGS 0x08 /* + * PS8802 uses 7-bit I2C addresses 0x28 to 0x37. + * Page 0 = 0x028, Page 1 = 0x29, Page 2 = 0x2A. + */ +#define PS8802_I2C_ADDR_FLAGS_CUSTOM 0x28 + +/* * PAGE 0 Register Definitions */ #define PS8802_REG_PAGE0 0x00 @@ -64,6 +70,9 @@ #define PS8802_DPEQ_LEVEL_UP_21DB 0x08 #define PS8802_DPEQ_LEVEL_UP_MASK 0x0F +#define PS8802_P1_ADDR 0x0A +#define PS8802_ADDR_CFG 0xB0 +#define PS8802_I2C_SLAV_ADDR 0x50 extern const struct usb_mux_driver ps8802_usb_mux_driver; @@ -76,5 +85,6 @@ int ps8802_i2c_field_update8(const struct usb_mux *me, int page, int offset, uint8_t field_mask, uint8_t set_value); int ps8802_i2c_field_update16(const struct usb_mux *me, int page, int offset, uint16_t field_mask, uint16_t set_value); +int ps8802_chg_i2c_addr(int i2c_port); #endif /* __CROS_EC_USB_RETIMER_PS8802_H */ |