summaryrefslogtreecommitdiff
path: root/driver/accel_bma2x2.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/accel_bma2x2.c')
-rw-r--r--driver/accel_bma2x2.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/driver/accel_bma2x2.c b/driver/accel_bma2x2.c
index a4f66036ce..92e273cf9a 100644
--- a/driver/accel_bma2x2.c
+++ b/driver/accel_bma2x2.c
@@ -128,12 +128,15 @@ static int set_offset(const struct motion_sensor_t *s, const int16_t *offset,
int16_t temp)
{
int i, ret;
+ intv3_t v = { offset[X], offset[Y], offset[Z] };
+
+ rotate_inv(v, *s->rot_standard_ref, v);
/* temperature is ignored */
/* Offset from host is in 1/1024g, 1/128g internally. */
for (i = X; i <= Z; i++) {
ret = raw_write8(s->port, s->i2c_spi_addr_flags,
- BMA2x2_OFFSET_X_AXIS_ADDR + i, offset[i] / 8);
+ BMA2x2_OFFSET_X_AXIS_ADDR + i, v[i] / 8);
if (ret)
return ret;
}
@@ -144,14 +147,20 @@ static int get_offset(const struct motion_sensor_t *s, int16_t *offset,
int16_t *temp)
{
int i, val, ret;
+ intv3_t v;
for (i = X; i <= Z; i++) {
ret = raw_read8(s->port, s->i2c_spi_addr_flags,
BMA2x2_OFFSET_X_AXIS_ADDR + i, &val);
if (ret)
return ret;
- offset[i] = (int8_t)val * 8;
+ v[i] = (int8_t)val * 8;
}
+ rotate(v, *s->rot_standard_ref, v);
+ offset[X] = v[X];
+ offset[Y] = v[Y];
+ offset[Z] = v[Z];
+
*temp = EC_MOTION_SENSE_INVALID_CALIB_TEMP;
return EC_SUCCESS;
}