summaryrefslogtreecommitdiff
path: root/driver/baro_bmp280.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/baro_bmp280.c')
-rw-r--r--driver/baro_bmp280.c97
1 files changed, 48 insertions, 49 deletions
diff --git a/driver/baro_bmp280.c b/driver/baro_bmp280.c
index 037a77d963..0175dc7e4a 100644
--- a/driver/baro_bmp280.c
+++ b/driver/baro_bmp280.c
@@ -1,4 +1,4 @@
-/* Copyright 2016 The Chromium OS Authors. All rights reserved.
+/* Copyright 2016 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -63,10 +63,12 @@
#include "i2c.h"
#include "timer.h"
-#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ## args)
-#define CPRINTS(format, args...) cprints(CC_ACCEL, format, ## args)
+#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ##args)
+#define CPRINTS(format, args...) cprints(CC_ACCEL, format, ##args)
-static const uint16_t standby_durn[] = {1, 63, 125, 250, 500, 1000, 2000, 4000};
+static const uint16_t standby_durn[] = {
+ 1, 63, 125, 250, 500, 1000, 2000, 4000
+};
/*
* This function is used to get calibration parameters used for
@@ -95,19 +97,19 @@ static int bmp280_get_calib_param(const struct motion_sensor_t *s)
{
int ret;
- uint8_t a_data_u8[BMP280_CALIB_DATA_SIZE] = {0};
+ uint8_t a_data_u8[BMP280_CALIB_DATA_SIZE] = { 0 };
struct bmp280_drv_data_t *data = BMP280_GET_DATA(s);
ret = i2c_read_block(s->port, s->i2c_spi_addr_flags,
- BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG,
- a_data_u8, BMP280_CALIB_DATA_SIZE);
+ BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG, a_data_u8,
+ BMP280_CALIB_DATA_SIZE);
if (ret)
return ret;
/* read calibration values*/
data->calib_param.dig_T1 = (a_data_u8[1] << 8) | a_data_u8[0];
- data->calib_param.dig_T2 = (a_data_u8[3] << 8 | a_data_u8[2]);
+ data->calib_param.dig_T2 = (a_data_u8[3] << 8 | a_data_u8[2]);
data->calib_param.dig_T3 = (a_data_u8[5] << 8) | a_data_u8[4];
data->calib_param.dig_P1 = (a_data_u8[7] << 8) | a_data_u8[6];
@@ -124,21 +126,20 @@ static int bmp280_get_calib_param(const struct motion_sensor_t *s)
}
static int bmp280_read_uncomp_pressure(const struct motion_sensor_t *s,
- int *uncomp_pres)
+ int *uncomp_pres)
{
int ret;
- uint8_t a_data_u8[BMP280_PRESSURE_DATA_SIZE] = {0};
+ uint8_t a_data_u8[BMP280_PRESSURE_DATA_SIZE] = { 0 };
ret = i2c_read_block(s->port, s->i2c_spi_addr_flags,
- BMP280_PRESSURE_MSB_REG,
- a_data_u8, BMP280_PRESSURE_DATA_SIZE);
+ BMP280_PRESSURE_MSB_REG, a_data_u8,
+ BMP280_PRESSURE_DATA_SIZE);
if (ret)
return ret;
- *uncomp_pres = (int32_t)((a_data_u8[0] << 12) |
- (a_data_u8[1] << 4) |
- (a_data_u8[2] >> 4));
+ *uncomp_pres = (int32_t)((a_data_u8[0] << 12) | (a_data_u8[1] << 4) |
+ (a_data_u8[2] >> 4));
return EC_SUCCESS;
}
@@ -153,34 +154,33 @@ static int bmp280_read_uncomp_pressure(const struct motion_sensor_t *s,
*
*/
static int bmp280_compensate_pressure(const struct motion_sensor_t *s,
- int uncomp_pressure)
+ int uncomp_pressure)
{
int var1, var2;
uint32_t p;
struct bmp280_drv_data_t *data = BMP280_GET_DATA(s);
/* calculate x1 */
- var1 = (((int32_t)data->calib_param.t_fine)
- >> 1) - 64000;
+ var1 = (((int32_t)data->calib_param.t_fine) >> 1) - 64000;
/* calculate x2 */
- var2 = (((var1 >> 2) * (var1 >> 2)) >> 11)
- * ((int32_t)data->calib_param.dig_P6);
+ var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) *
+ ((int32_t)data->calib_param.dig_P6);
var2 = var2 + ((var1 * ((int32_t)data->calib_param.dig_P5)) << 1);
var2 = (var2 >> 2) + (((int32_t)data->calib_param.dig_P4) << 16);
/* calculate x1 */
var1 = (((data->calib_param.dig_P3 *
- (((var1 >> 2) * (var1 >> 2)) >> 13)) >> 3) +
- ((((int32_t)data->calib_param.dig_P2) * var1) >> 1)) >> 18;
- var1 = ((((32768 + var1)) *
- ((int32_t)data->calib_param.dig_P1)) >> 15);
+ (((var1 >> 2) * (var1 >> 2)) >> 13)) >>
+ 3) +
+ ((((int32_t)data->calib_param.dig_P2) * var1) >> 1)) >>
+ 18;
+ var1 = ((((32768 + var1)) * ((int32_t)data->calib_param.dig_P1)) >> 15);
/* Avoid exception caused by division by zero */
if (!var1)
return 0;
/* calculate pressure */
- p = (((uint32_t)((1048576) - uncomp_pressure) -
- (var2 >> 12))) * 3125;
+ p = (((uint32_t)((1048576) - uncomp_pressure) - (var2 >> 12))) * 3125;
/* check overflow */
if (p < 0x80000000)
@@ -190,13 +190,14 @@ static int bmp280_compensate_pressure(const struct motion_sensor_t *s,
/* calculate x1 */
var1 = (((int32_t)data->calib_param.dig_P9) *
- ((int32_t)(((p >> 3) * (p >> 3)) >> 13))) >> 12;
+ ((int32_t)(((p >> 3) * (p >> 3)) >> 13))) >>
+ 12;
/* calculate x2 */
- var2 = (((int32_t)(p >> 2)) *
- ((int32_t)data->calib_param.dig_P8)) >> 13;
+ var2 = (((int32_t)(p >> 2)) * ((int32_t)data->calib_param.dig_P8)) >>
+ 13;
/* calculate true pressure */
- return (uint32_t)((int32_t)p + ((var1 + var2 +
- data->calib_param.dig_P7) >> 4));
+ return (uint32_t)((int32_t)p +
+ ((var1 + var2 + data->calib_param.dig_P7) >> 4));
}
/*
@@ -214,38 +215,36 @@ static int bmp280_compensate_pressure(const struct motion_sensor_t *s,
* 0x07 | 4000_MS
*/
static int bmp280_set_standby_durn(const struct motion_sensor_t *s,
- uint8_t durn)
+ uint8_t durn)
{
int ret, val;
- ret = i2c_read8(s->port, s->i2c_spi_addr_flags,
- BMP280_CONFIG_REG, &val);
+ ret = i2c_read8(s->port, s->i2c_spi_addr_flags, BMP280_CONFIG_REG,
+ &val);
if (ret == EC_SUCCESS) {
val = (val & 0xE0) | ((durn << 5) & 0xE0);
/* write the standby duration*/
ret = i2c_write8(s->port, s->i2c_spi_addr_flags,
- BMP280_CONFIG_REG, val);
+ BMP280_CONFIG_REG, val);
}
return ret;
}
static int bmp280_set_power_mode(const struct motion_sensor_t *s,
- uint8_t power_mode)
+ uint8_t power_mode)
{
int val;
- val = (BMP280_OVERSAMP_TEMP << 5) +
- (BMP280_OVERSAMP_PRES << 2) + power_mode;
+ val = (BMP280_OVERSAMP_TEMP << 5) + (BMP280_OVERSAMP_PRES << 2) +
+ power_mode;
- return i2c_write8(s->port, s->i2c_spi_addr_flags,
- BMP280_CTRL_MEAS_REG, val);
+ return i2c_write8(s->port, s->i2c_spi_addr_flags, BMP280_CTRL_MEAS_REG,
+ val);
}
-static int bmp280_set_range(struct motion_sensor_t *s,
- int range,
- int rnd)
+static int bmp280_set_range(struct motion_sensor_t *s, int range, int rnd)
{
struct bmp280_drv_data_t *data = BMP280_GET_DATA(s);
/*
@@ -272,8 +271,8 @@ static int bmp280_init(struct motion_sensor_t *s)
return EC_ERROR_INVAL;
/* Read chip id */
- ret = i2c_read8(s->port, s->i2c_spi_addr_flags,
- BMP280_CHIP_ID_REG, &val);
+ ret = i2c_read8(s->port, s->i2c_spi_addr_flags, BMP280_CHIP_ID_REG,
+ &val);
if (ret)
return ret;
@@ -314,7 +313,7 @@ static int bmp280_read(const struct motion_sensor_t *s, intv3_t v)
* Calculate the delay (in ms) to apply.
*/
static int bmp280_set_data_rate(const struct motion_sensor_t *s, int rate,
- int roundup)
+ int roundup)
{
struct bmp280_drv_data_t *data = BMP280_GET_DATA(s);
int durn, i, ret;
@@ -335,12 +334,12 @@ static int bmp280_set_data_rate(const struct motion_sensor_t *s, int rate,
}
durn = 0;
- for (i = BMP280_STANDBY_CNT-1; i > 0; i--) {
+ for (i = BMP280_STANDBY_CNT - 1; i > 0; i--) {
if (period >= standby_durn[i] + BMP280_COMPUTE_TIME) {
durn = i;
break;
- } else if (period > standby_durn[i-1] + BMP280_COMPUTE_TIME) {
- durn = roundup ? i-1 : i;
+ } else if (period > standby_durn[i - 1] + BMP280_COMPUTE_TIME) {
+ durn = roundup ? i - 1 : i;
break;
}
}