diff options
author | Caveh Jalali <caveh@chromium.org> | 2020-06-17 19:06:55 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-23 14:38:20 +0000 |
commit | 04c1d97690c0a58ae63de8c11776540419654627 (patch) | |
tree | a455ef2335a8c2b0b07edeb445a4b57ec83d72ba /driver | |
parent | 98a373b76fafde1c2b96d9c3fb61376662d557ff (diff) | |
download | chrome-ec-04c1d97690c0a58ae63de8c11776540419654627.tar.gz |
tcpci: add 16-bit TCPC I2C accessors
this extends the TCPC I2C access API to provide 16-bit accessors for
vendor specific pages of a TCPC. some TCPCs, like the ps8xxx series
define registers in pages beyond the TCPCI definition for vendor
specific functions.
BRANCH=none
BUG=b:158857815
TEST=buildall -j succeeds
Change-Id: I115ab305317a0816e625718676b2bedfaa39e70d
Signed-off-by: Caveh Jalali <caveh@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2254991
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/tcpm/tcpci.c | 8 | ||||
-rw-r--r-- | driver/tcpm/tcpm.h | 26 |
2 files changed, 21 insertions, 13 deletions
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 1993c52a65..a3c4b6fe7c 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -112,10 +112,9 @@ int tcpc_addr_write(int port, int i2c_addr, int reg, int val) return rv; } -int tcpc_write16(int port, int reg, int val) +int tcpc_addr_write16(int port, int i2c_addr, int reg, int val) { int rv; - const int i2c_addr = tcpc_config[port].i2c_info.addr_flags; pd_wait_exit_low_power(port); @@ -146,15 +145,14 @@ int tcpc_addr_read(int port, int i2c_addr, int reg, int *val) return rv; } -int tcpc_read16(int port, int reg, int *val) +int tcpc_addr_read16(int port, int i2c_addr, int reg, int *val) { int rv; pd_wait_exit_low_power(port); rv = i2c_read16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr_flags, - reg, val); + i2c_addr, reg, val); pd_device_accessed(port); return rv; diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h index 14f44a9073..c8477217de 100644 --- a/driver/tcpm/tcpm.h +++ b/driver/tcpm/tcpm.h @@ -31,11 +31,10 @@ static inline int tcpc_addr_write(int port, int i2c_addr, int reg, int val) i2c_addr, reg, val); } -static inline int tcpc_write16(int port, int reg, int val) +static inline int tcpc_addr_write16(int port, int i2c_addr, int reg, int val) { return i2c_write16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr_flags, - reg, val); + i2c_addr, reg, val); } static inline int tcpc_addr_read(int port, int i2c_addr, int reg, int *val) @@ -44,11 +43,10 @@ static inline int tcpc_addr_read(int port, int i2c_addr, int reg, int *val) i2c_addr, reg, val); } -static inline int tcpc_read16(int port, int reg, int *val) +static inline int tcpc_addr_read16(int port, int i2c_addr, int reg, int *val) { return i2c_read16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr_flags, - reg, val); + i2c_addr, reg, val); } static inline int tcpc_xfer(int port, const uint8_t *out, int out_size, @@ -102,9 +100,9 @@ static inline int tcpc_update16(int port, int reg, #else /* !CONFIG_USB_PD_TCPC_LOW_POWER */ int tcpc_addr_write(int port, int i2c_addr, int reg, int val); -int tcpc_write16(int port, int reg, int val); +int tcpc_addr_write16(int port, int i2c_addr, int reg, int val); int tcpc_addr_read(int port, int i2c_addr, int reg, int *val); -int tcpc_read16(int port, int reg, int *val); +int tcpc_addr_read16(int port, int i2c_addr, int reg, int *val); int tcpc_read_block(int port, int reg, uint8_t *in, int size); int tcpc_write_block(int port, int reg, const uint8_t *out, int size); int tcpc_xfer(int port, const uint8_t *out, int out_size, @@ -125,12 +123,24 @@ static inline int tcpc_write(int port, int reg, int val) tcpc_config[port].i2c_info.addr_flags, reg, val); } +static inline int tcpc_write16(int port, int reg, int val) +{ + return tcpc_addr_write16(port, + tcpc_config[port].i2c_info.addr_flags, reg, val); +} + static inline int tcpc_read(int port, int reg, int *val) { return tcpc_addr_read(port, tcpc_config[port].i2c_info.addr_flags, reg, val); } +static inline int tcpc_read16(int port, int reg, int *val) +{ + return tcpc_addr_read16(port, + tcpc_config[port].i2c_info.addr_flags, reg, val); +} + static inline void tcpc_lock(int port, int lock) { i2c_lock(tcpc_config[port].i2c_info.port, lock); |