summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/motion_sense.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/common/motion_sense.c b/common/motion_sense.c
index b7f943ed41..6929bb5710 100644
--- a/common/motion_sense.c
+++ b/common/motion_sense.c
@@ -1242,11 +1242,11 @@ static int host_cmd_motion_sense(struct host_cmd_handler_args *args)
in->sensor_range.sensor_num);
if (sensor == NULL)
return EC_RES_INVALID_PARAM;
- if (!sensor->drv->set_range || !sensor->drv->get_range)
- return EC_RES_INVALID_COMMAND;
-
/* Set new range if the data arg has a value. */
if (in->sensor_range.data != EC_MOTION_SENSE_NO_VALUE) {
+ if (!sensor->drv->set_range)
+ return EC_RES_INVALID_COMMAND;
+
if (sensor->drv->set_range(sensor,
in->sensor_range.data,
in->sensor_range.roundup)
@@ -1255,6 +1255,9 @@ static int host_cmd_motion_sense(struct host_cmd_handler_args *args)
}
}
+ if (!sensor->drv->get_range)
+ return EC_RES_INVALID_COMMAND;
+
out->sensor_range.ret = sensor->drv->get_range(sensor);
args->response_size = sizeof(out->sensor_range);
break;
@@ -1265,11 +1268,11 @@ static int host_cmd_motion_sense(struct host_cmd_handler_args *args)
in->sensor_offset.sensor_num);
if (sensor == NULL)
return EC_RES_INVALID_PARAM;
- if (!sensor->drv->set_offset || !sensor->drv->get_offset)
- return EC_RES_INVALID_COMMAND;
-
/* Set new range if the data arg has a value. */
if (in->sensor_offset.flags & MOTION_SENSE_SET_OFFSET) {
+ if (!sensor->drv->set_offset)
+ return EC_RES_INVALID_COMMAND;
+
ret = sensor->drv->set_offset(sensor,
in->sensor_offset.offset,
in->sensor_offset.temp);
@@ -1277,6 +1280,9 @@ static int host_cmd_motion_sense(struct host_cmd_handler_args *args)
return ret;
}
+ if (!sensor->drv->get_offset)
+ return EC_RES_INVALID_COMMAND;
+
ret = sensor->drv->get_offset(sensor, out->sensor_offset.offset,
&out->sensor_offset.temp);
if (ret != EC_SUCCESS)