summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2014-03-06 11:33:32 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-03-08 02:31:26 +0000
commit0e3ff013cc7814705137d373218ea7bfa0f94c2c (patch)
treef176dd51a290ac0b325673a7c26e510a10fb164e
parentc42bf9940282bd9d92187b69a81b6ff2f012c1e2 (diff)
downloadchrome-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.c4
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. */