From 0e3ff013cc7814705137d373218ea7bfa0f94c2c Mon Sep 17 00:00:00 2001 From: Alec Berg Date: Thu, 6 Mar 2014 11:33:32 -0800 Subject: 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 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 --- driver/accel_kxcj9.c | 4 ++-- 1 file 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. */ -- cgit v1.2.1