summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-05-31 16:45:32 -0700
committerCommit Bot <commit-bot@chromium.org>2019-08-23 00:12:27 +0000
commita6efb773d4da7d0d412db60fd8252856d9fb1809 (patch)
treebd50040d4c40331d36394e7cc814f5e2c84795f9 /driver
parent53ce0e530c4ee7dbfe4fb578f8388199af2ed2e5 (diff)
downloadchrome-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.c8
-rw-r--r--driver/tcpm/mt6370.c7
-rw-r--r--driver/tcpm/tcpci.c28
-rw-r--r--driver/tcpm/tcpm.h34
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 */