driver: si114x: Fail init of proximity sensor if light sensor fails.

If init of the light sensor fails (for instance, the chip is not present
on the i2c bus), we need to fail the init of the proximity sensor.
Otherwise, the EC will report an unexistent sensor to the AP.

BRANCH=smaug
BUG=chrome-os-partner:46638
TEST=check the proximity sensor is not reported if sensor is disconnected from the
main board.

Change-Id: Ie6b1d74eaac4d6c38d52641626966b5d3ce63bd3
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/308560
Reviewed-by: Alec Berg <alecaberg@chromium.org>
This commit is contained in:
Gwendal Grignou
2015-10-22 17:05:23 -07:00
committed by chrome-bot
parent 8238dfa27d
commit 7253e57b3c
2 changed files with 4 additions and 1 deletions

View File

@@ -498,6 +498,8 @@ static int init(const struct motion_sensor_t *s)
data->state = SI114X_IDLE;
resol = 7;
} else {
if (data->state == SI114X_NOT_READY)
return EC_ERROR_ACCESS_DENIED;
resol = 5;
}
@@ -535,7 +537,7 @@ const struct accelgyro_drv si114x_drv = {
};
struct si114x_drv_data_t g_si114x_data = {
.state = SI114X_IDLE,
.state = SI114X_NOT_READY,
.type_data = {
/* Proximity */
{

View File

@@ -207,6 +207,7 @@
extern const struct accelgyro_drv si114x_drv;
enum si114x_state {
SI114X_NOT_READY,
SI114X_IDLE,
SI114X_ALS_IN_PROGRESS,
SI114X_ALS_IN_PROGRESS_PS_PENDING,