summaryrefslogtreecommitdiff
path: root/driver/tcpm/tcpm.h
diff options
context:
space:
mode:
authorJonathan Brandmeyer <jbrandmeyer@chromium.org>2018-08-07 16:04:23 -0600
committerchrome-bot <chrome-bot@chromium.org>2018-08-09 22:04:40 -0700
commit740427a24398b3fd66904e913b742f751371d09c (patch)
tree1efe5fd4db314fbbb44bdd3a5bc726c4ee818ad0 /driver/tcpm/tcpm.h
parentaba9f5e09f7fb1f18a297fb5552404706a642351 (diff)
downloadchrome-ec-740427a24398b3fd66904e913b742f751371d09c.tar.gz
drivers: Refactor to use high-level i2c APIs
Using the high-level APIs for block transfers eliminates some code duplication and error-prone manual locking sequences. - common/cbi: Block transfers - driver/accel_bma2x2: Block transfers - driver/accel_kionix: Block transfers - driver/accelgyro_bmi160: Block transfers - driver/accelgyro_lsm6ds0: Block transfers - driver/baro_bmp280: Block and byte transfers - driver/charger/rt946x: Block transfers - driver/gyro_l3gd20h: Block transfers - driver/stm_mems_common: Block transfers - driver/tcpm: Block transfers TEST=buildall; motionsense and PD testing on Grunt convertible which exercises the bma160, kionix and tcpcm drivers. BRANCH=none BUG=chromium:871851 Change-Id: I1732253a244c3343459265ce1e1e54488cee65b8 Signed-off-by: Jonathan Brandmeyer <jbrandmeyer@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1167958 Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'driver/tcpm/tcpm.h')
-rw-r--r--driver/tcpm/tcpm.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h
index bc2d699ea0..cc360ba75d 100644
--- a/driver/tcpm/tcpm.h
+++ b/driver/tcpm/tcpm.h
@@ -57,13 +57,30 @@ static inline int tcpc_xfer(int port, const uint8_t *out, int out_size,
tcpc_config[port].i2c_slave_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);
+}
+
+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);
+}
+
#else /* !CONFIG_USB_PD_TCPC_LOW_POWER */
int tcpc_write(int port, int reg, int val);
int tcpc_write16(int port, int reg, int val);
int tcpc_read(int port, int reg, int *val);
int tcpc_read16(int port, int reg, int *val);
-int tcpc_xfer(int port, const uint8_t *out, int out_size, uint8_t *in,
- int in_size, int flags);
+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,
+ uint8_t *in, int in_size, int flags);
+
#endif /* CONFIG_USB_PD_TCPC_LOW_POWER */
static inline void tcpc_lock(int port, int lock)