diff options
author | Scott <scollyer@chromium.org> | 2016-11-01 14:24:44 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-11-02 04:23:21 -0700 |
commit | dd652accd0c26d56af3511d178507af738912885 (patch) | |
tree | 0eba2009bd30f06b3164d573de257dc3a1c47c69 /chip | |
parent | cd30d638ab60e5d1821e0fff22051f482cf7a5a7 (diff) | |
download | chrome-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>
Diffstat (limited to 'chip')
-rw-r--r-- | chip/g/i2cm.c | 7 |
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 */ |