diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-05-31 16:45:32 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-23 00:12:27 +0000 |
commit | a6efb773d4da7d0d412db60fd8252856d9fb1809 (patch) | |
tree | bd50040d4c40331d36394e7cc814f5e2c84795f9 /driver | |
parent | 53ce0e530c4ee7dbfe4fb578f8388199af2ed2e5 (diff) | |
download | chrome-ec-a6efb773d4da7d0d412db60fd8252856d9fb1809.tar.gz |
TCPC: Make tcpc_config handle other bus types
Currently, tcpc_config assumes TCPCs are on I2C bus. ITE's EC has an
embedded TCPC.
This patch adds bus_type field to struct tcpc_config_t so that a TCPC
location on other type of bus can be specified.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=none
BRANCH=none
TEST=buildall
Change-Id: Ieac733011700b351e6323f46070dcf46d9e1154b
Reviewed-on: https://chromium-review.googlesource.com/1640305
Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1767520
Reviewed-by: Edward Hill <ecgh@chromium.org>
Commit-Queue: Edward Hill <ecgh@chromium.org>
Tested-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/tcpm/anx7447.c | 8 | ||||
-rw-r--r-- | driver/tcpm/mt6370.c | 7 | ||||
-rw-r--r-- | driver/tcpm/tcpci.c | 28 | ||||
-rw-r--r-- | driver/tcpm/tcpm.h | 34 |
4 files changed, 42 insertions, 35 deletions
diff --git a/driver/tcpm/anx7447.c b/driver/tcpm/anx7447.c index 1108be8a75..b0e115ef34 100644 --- a/driver/tcpm/anx7447.c +++ b/driver/tcpm/anx7447.c @@ -68,7 +68,7 @@ const struct anx7447_i2c_addr anx7447_i2c_addrs[] = { static inline int anx7447_reg_write(int port, int reg, int val) { - int rv = i2c_write8(tcpc_config[port].i2c_host_port, + int rv = i2c_write8(tcpc_config[port].i2c_info.port, anx[port].i2c_slave_addr, reg, val); #ifdef CONFIG_USB_PD_TCPC_LOW_POWER @@ -79,7 +79,7 @@ static inline int anx7447_reg_write(int port, int reg, int val) static inline int anx7447_reg_read(int port, int reg, int *val) { - int rv = i2c_read8(tcpc_config[port].i2c_host_port, + int rv = i2c_read8(tcpc_config[port].i2c_info.port, anx[port].i2c_slave_addr, reg, val); #ifdef CONFIG_USB_PD_TCPC_LOW_POWER @@ -287,7 +287,7 @@ static int anx7447_init(int port) * specified TCPC slave address */ for (i = 0; i < ARRAY_SIZE(anx7447_i2c_addrs); i++) { - if (tcpc_config[port].i2c_slave_addr == + if (tcpc_config[port].i2c_info.addr == anx7447_i2c_addrs[i].tcpc_slave_addr) { anx[port].i2c_slave_addr = anx7447_i2c_addrs[i].spi_slave_addr; @@ -296,7 +296,7 @@ static int anx7447_init(int port) } if (!anx[port].i2c_slave_addr) { ccprintf("TCPC I2C slave addr 0x%x is invalid for ANX7447\n", - tcpc_config[port].i2c_slave_addr); + tcpc_config[port].i2c_info.addr); return EC_ERROR_UNKNOWN; } diff --git a/driver/tcpm/mt6370.c b/driver/tcpm/mt6370.c index d79ef0b691..5e714c15ab 100644 --- a/driver/tcpm/mt6370.c +++ b/driver/tcpm/mt6370.c @@ -19,6 +19,13 @@ #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) +/* i2c_write function which won't wake TCPC from low power mode. */ +static int mt6370_i2c_write8(int port, int reg, int val) +{ + return i2c_write8(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); +} + static int mt6370_init(int port) { int rv; diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 6ef15c2599..e0807b656f 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -36,8 +36,8 @@ int tcpc_write(int port, int reg, int val) pd_wait_exit_low_power(port); - rv = i2c_write8(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + rv = i2c_write8(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); pd_device_accessed(port); return rv; @@ -49,8 +49,8 @@ int tcpc_write16(int port, int reg, int val) pd_wait_exit_low_power(port); - rv = i2c_write16(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + rv = i2c_write16(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); pd_device_accessed(port); return rv; @@ -62,8 +62,8 @@ int tcpc_read(int port, int reg, int *val) pd_wait_exit_low_power(port); - rv = i2c_read8(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + rv = i2c_read8(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); pd_device_accessed(port); return rv; @@ -75,8 +75,8 @@ int tcpc_read16(int port, int reg, int *val) pd_wait_exit_low_power(port); - rv = i2c_read16(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + rv = i2c_read16(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); pd_device_accessed(port); return rv; @@ -88,8 +88,8 @@ int tcpc_read_block(int port, int reg, uint8_t *in, int size) pd_wait_exit_low_power(port); - rv = i2c_read_block(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, in, size); + rv = i2c_read_block(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, in, size); pd_device_accessed(port); return rv; @@ -101,8 +101,8 @@ int tcpc_write_block(int port, int reg, const uint8_t *out, int size) pd_wait_exit_low_power(port); - rv = i2c_write_block(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, out, size); + rv = i2c_write_block(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, out, size); pd_device_accessed(port); return rv; @@ -127,8 +127,8 @@ int tcpc_xfer_unlocked(int port, const uint8_t *out, int out_size, pd_wait_exit_low_power(port); - rv = i2c_xfer_unlocked(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, out, + rv = i2c_xfer_unlocked(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, out, out_size, in, in_size, flags); pd_device_accessed(port); diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h index 0dee179e36..e5fec627c5 100644 --- a/driver/tcpm/tcpm.h +++ b/driver/tcpm/tcpm.h @@ -27,55 +27,55 @@ #ifndef CONFIG_USB_PD_TCPC_LOW_POWER static inline int tcpc_write(int port, int reg, int val) { - return i2c_write8(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + return i2c_write8(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); } static inline int tcpc_write16(int port, int reg, int val) { - return i2c_write16(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + return i2c_write16(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); } static inline int tcpc_read(int port, int reg, int *val) { - return i2c_read8(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + return i2c_read8(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); } static inline int tcpc_read16(int port, int reg, int *val) { - return i2c_read16(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, val); + return i2c_read16(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, val); } static inline int tcpc_xfer(int port, const uint8_t *out, int out_size, uint8_t *in, int in_size) { - return i2c_xfer(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, out, out_size, in, + return i2c_xfer(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, out, out_size, in, in_size); } static inline int tcpc_xfer_unlocked(int port, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { - return i2c_xfer_unlocked(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, out, out_size, in, + return i2c_xfer_unlocked(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, out, out_size, in, in_size, flags); } static inline int tcpc_read_block(int port, int reg, uint8_t *in, int size) { - return i2c_read_block(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, in, size); + return i2c_read_block(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, in, size); } static inline int tcpc_write_block(int port, int reg, const uint8_t *out, int size) { - return i2c_write_block(tcpc_config[port].i2c_host_port, - tcpc_config[port].i2c_slave_addr, reg, out, size); + return i2c_write_block(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr, reg, out, size); } #else /* !CONFIG_USB_PD_TCPC_LOW_POWER */ @@ -94,7 +94,7 @@ int tcpc_xfer_unlocked(int port, const uint8_t *out, int out_size, static inline void tcpc_lock(int port, int lock) { - i2c_lock(tcpc_config[port].i2c_host_port, lock); + i2c_lock(tcpc_config[port].i2c_info.port, lock); } /* TCPM driver wrapper function */ |