summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott <scollyer@chromium.org>2016-11-01 14:24:44 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-11-02 04:23:21 -0700
commitdd652accd0c26d56af3511d178507af738912885 (patch)
tree0eba2009bd30f06b3164d573de257dc3a1c47c69
parentcd30d638ab60e5d1821e0fff22051f482cf7a5a7 (diff)
downloadchrome-ec-dd652accd0c26d56af3511d178507af738912885.tar.gz
g: i2cm: Changed the slave address assumption to 8 bits
The i2c_xfer API assumes it's getting an 8 bit slave address, but the driver was assuming a 7 bit slave address was being passed in. Fixed the location where this is used to shift it back to 7 bits. BRANCH=none BUG=chrome-os-partner:57059 TEST=manual Cr50 console 'ccd i2c on' then > i2cxfer r16 0 0x40 0 Unknown error Usage: i2cxfer r/r16/rlen/w/w16 port addr offset [value | len] > i2cxfer r16 0 0x80 0 0x2771 [10097] Shows that it's now assuming an 8 bit address Change-Id: I791b7c136a741856749c281dd4c8166b5cf97ef9 Signed-off-by: Scott <scollyer@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/405780 Commit-Ready: Scott Collyer <scollyer@chromium.org> Tested-by: Scott Collyer <scollyer@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
-rw-r--r--chip/g/i2cm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/chip/g/i2cm.c b/chip/g/i2cm.c
index e63c4a7014..b5f84e1598 100644
--- a/chip/g/i2cm.c
+++ b/chip/g/i2cm.c
@@ -272,8 +272,11 @@ static uint32_t i2cm_build_sequence(int port, int slave_addr,
if (flags & I2C_XFER_START)
inst |= INST_START;
- /* Setup slave device address */
- inst |= INST_DEVADDRVAL(slave_addr);
+ /*
+ * Setup slave device address. Calls to chip_i2c_xfer assume an 8 bit
+ * slave address. Need to shift right by 1 bit.
+ */
+ inst |= INST_DEVADDRVAL(slave_addr >> 1);
if (out_size) {
/* Send slave addr byte if this is start of I2C transaction */