diff options
author | Alec Berg <alecaberg@chromium.org> | 2014-03-06 11:33:32 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-03-08 02:31:26 +0000 |
commit | 0e3ff013cc7814705137d373218ea7bfa0f94c2c (patch) | |
tree | f176dd51a290ac0b325673a7c26e510a10fb164e | |
parent | c42bf9940282bd9d92187b69a81b6ff2f012c1e2 (diff) | |
download | chrome-ec-0e3ff013cc7814705137d373218ea7bfa0f94c2c.tar.gz |
rambi: fix potential bug in accelerometer init
Fixed a potential bug in accelerometer initialization that could result
in failing to write the desired accelereometer settings. Before writing
the desired settings, we first send a command to perform a software reset.
While waiting for software reset to complete, if we have an I2C error,
then we could interpret this as software reset complete and go on to write
the accelerometer settings before the reset has actually completed.
BUG=none
BRANCH=rambi
TEST=Code inspection. I haven't actually seen this bug, I just saw the
potential for it.
Change-Id: I78757106291ffbaeff27f94aa6f74c9cea81e0b9
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/189064
(cherry picked from commit 521a99e38428fcfe928616f4932b5d1167e2f6cb)
Reviewed-on: https://chromium-review.googlesource.com/189233
Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r-- | driver/accel_kxcj9.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/driver/accel_kxcj9.c b/driver/accel_kxcj9.c index b6160698ab..1ca80d7b15 100644 --- a/driver/accel_kxcj9.c +++ b/driver/accel_kxcj9.c @@ -183,10 +183,10 @@ int accel_init(enum accel_id id) /* Wait until software reset is complete or timeout. */ while (1) { - raw_read8(accel_addr[id], KXCJ9_CTRL2, &ctrl2); + ret = raw_read8(accel_addr[id], KXCJ9_CTRL2, &ctrl2); /* Reset complete. */ - if (!(ctrl2 & KXCJ9_CTRL2_SRST)) + if (ret == EC_SUCCESS && !(ctrl2 & KXCJ9_CTRL2_SRST)) break; /* Check for timeout. */ |