diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-05-12 07:45:33 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-05-12 23:35:51 +0000 |
commit | a9a9ae1abc4ddb6a89ee0d29b88fbdd1d2ef67b1 (patch) | |
tree | 26b9855187a83412b181009031878826faab8b97 /driver/accelgyro_lsm6ds0.c | |
parent | 39bd18b890bb708e79e9ba50dd3b5bf3d35e9ff1 (diff) | |
download | chrome-ec-a9a9ae1abc4ddb6a89ee0d29b88fbdd1d2ef67b1.tar.gz |
driver: Use common data structure to store default accel values
Move structure used by lms6ds0 to motion_sense.h,
so that bosh driver can use the same mechanism.
Use code to avoid reading chip range when reading data.
BUG=none
BRANCH=none
TEST=Check Bosh driver is working as expected.
Change-Id: Id8b5bb8735e479a122ef32ab9a400fba189d7488
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/270453
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'driver/accelgyro_lsm6ds0.c')
-rw-r--r-- | driver/accelgyro_lsm6ds0.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/driver/accelgyro_lsm6ds0.c b/driver/accelgyro_lsm6ds0.c index a93166c1de..47f243eb44 100644 --- a/driver/accelgyro_lsm6ds0.c +++ b/driver/accelgyro_lsm6ds0.c @@ -169,7 +169,7 @@ static int set_range(const struct motion_sensor_t *s, int ret, ctrl_val, range_tbl_size; uint8_t ctrl_reg, reg_val; const struct accel_param_pair *ranges; - struct lsm6ds0_data *data = (struct lsm6ds0_data *)s->drv_data; + struct motion_data_t *data = (struct motion_data_t *)s->drv_data; ctrl_reg = get_ctrl_reg(s->type); ranges = get_range_table(s->type, &range_tbl_size); @@ -191,20 +191,20 @@ static int set_range(const struct motion_sensor_t *s, /* Now that we have set the range, update the driver's value. */ if (ret == EC_SUCCESS) - data->sensor_range = get_engineering_val(reg_val, ranges, - range_tbl_size); + data->range = get_engineering_val(reg_val, ranges, + range_tbl_size); accel_cleanup: mutex_unlock(s->mutex); - return EC_SUCCESS; + return ret; } static int get_range(const struct motion_sensor_t *s, int *range) { - struct lsm6ds0_data *data = (struct lsm6ds0_data *)s->drv_data; + struct motion_data_t *data = (struct motion_data_t *)s->drv_data; - *range = data->sensor_range; + *range = data->range; return EC_SUCCESS; } @@ -230,7 +230,7 @@ static int set_data_rate(const struct motion_sensor_t *s, int ret, val, odr_tbl_size; uint8_t ctrl_reg, reg_val; const struct accel_param_pair *data_rates; - struct lsm6ds0_data *data = s->drv_data; + struct motion_data_t *data = s->drv_data; ctrl_reg = get_ctrl_reg(s->type); data_rates = get_odr_table(s->type, &odr_tbl_size); @@ -251,7 +251,7 @@ static int set_data_rate(const struct motion_sensor_t *s, /* Now that we have set the odr, update the driver's value. */ if (ret == EC_SUCCESS) - data->sensor_odr = get_engineering_val(reg_val, data_rates, + data->odr = get_engineering_val(reg_val, data_rates, odr_tbl_size); /* CTRL_REG3_G 12h @@ -274,15 +274,15 @@ static int set_data_rate(const struct motion_sensor_t *s, accel_cleanup: mutex_unlock(s->mutex); - return EC_SUCCESS; + return ret; } static int get_data_rate(const struct motion_sensor_t *s, int *rate) { - struct lsm6ds0_data *data = s->drv_data; + struct motion_data_t *data = s->drv_data; - *rate = data->sensor_odr; + *rate = data->odr; return EC_SUCCESS; } @@ -420,29 +420,30 @@ static int init(const struct motion_sensor_t *s) if (ret) return EC_ERROR_UNKNOWN; - ret = set_range(s, s->range, 1); + ret = set_range(s, s->runtime_config.range, 1); if (ret) return EC_ERROR_UNKNOWN; - ret = set_data_rate(s, s->odr, 1); + ret = set_data_rate(s, s->runtime_config.odr, 1); if (ret) return EC_ERROR_UNKNOWN; } if (MOTIONSENSE_TYPE_GYRO == s->type) { /* Config GYRO Range */ - ret = set_range(s, s->range, 1); + ret = set_range(s, s->runtime_config.range, 1); if (ret) return EC_ERROR_UNKNOWN; /* Config ACCEL & GYRO ODR */ - ret = set_data_rate(s, s->odr, 1); + ret = set_data_rate(s, s->runtime_config.odr, 1); if (ret) return EC_ERROR_UNKNOWN; } CPRINTF("[%T %s: MS Done Init type:0x%X range:%d odr:%d]\n", - s->name, s->type, s->range, s->odr); + s->name, s->type, s->runtime_config.range, + s->runtime_config.odr); return ret; } |