mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 22:54:01 +00:00
iio: accel: adxl345: Simplify adxl345_read_raw()
Simplify adxl345_read_raw() by adding uscale variable to struct adxl345_chip_info. Also convert variables adxl3{4,7}5_uscale to macros and use it in OF/ACPI/ID match table. Drop enum adxl345_device_type as there is no user. Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Link: https://lore.kernel.org/r/20230903090051.39274-3-biju.das.jz@bp.renesas.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
7d0ba6dbf8
commit
dcc3ac1381
4 changed files with 20 additions and 33 deletions
|
@ -8,14 +8,24 @@
|
|||
#ifndef _ADXL345_H_
|
||||
#define _ADXL345_H_
|
||||
|
||||
enum adxl345_device_type {
|
||||
ADXL345 = 1,
|
||||
ADXL375 = 2,
|
||||
};
|
||||
/*
|
||||
* In full-resolution mode, scale factor is maintained at ~4 mg/LSB
|
||||
* in all g ranges.
|
||||
*
|
||||
* At +/- 16g with 13-bit resolution, scale is computed as:
|
||||
* (16 + 16) * 9.81 / (2^13 - 1) = 0.0383
|
||||
*/
|
||||
#define ADXL345_USCALE 38300
|
||||
|
||||
/*
|
||||
* The Datasheet lists a resolution of Resolution is ~49 mg per LSB. That's
|
||||
* ~480mm/s**2 per LSB.
|
||||
*/
|
||||
#define ADXL375_USCALE 480000
|
||||
|
||||
struct adxl345_chip_info {
|
||||
const char *name;
|
||||
unsigned int type;
|
||||
int uscale;
|
||||
};
|
||||
|
||||
int adxl345_core_probe(struct device *dev, struct regmap *regmap);
|
||||
|
|
|
@ -45,21 +45,6 @@
|
|||
|
||||
#define ADXL345_DEVID 0xE5
|
||||
|
||||
/*
|
||||
* In full-resolution mode, scale factor is maintained at ~4 mg/LSB
|
||||
* in all g ranges.
|
||||
*
|
||||
* At +/- 16g with 13-bit resolution, scale is computed as:
|
||||
* (16 + 16) * 9.81 / (2^13 - 1) = 0.0383
|
||||
*/
|
||||
static const int adxl345_uscale = 38300;
|
||||
|
||||
/*
|
||||
* The Datasheet lists a resolution of Resolution is ~49 mg per LSB. That's
|
||||
* ~480mm/s**2 per LSB.
|
||||
*/
|
||||
static const int adxl375_uscale = 480000;
|
||||
|
||||
struct adxl345_data {
|
||||
const struct adxl345_chip_info *info;
|
||||
struct regmap *regmap;
|
||||
|
@ -110,15 +95,7 @@ static int adxl345_read_raw(struct iio_dev *indio_dev,
|
|||
return IIO_VAL_INT;
|
||||
case IIO_CHAN_INFO_SCALE:
|
||||
*val = 0;
|
||||
switch (data->info->type) {
|
||||
case ADXL345:
|
||||
*val2 = adxl345_uscale;
|
||||
break;
|
||||
case ADXL375:
|
||||
*val2 = adxl375_uscale;
|
||||
break;
|
||||
}
|
||||
|
||||
*val2 = data->info->uscale;
|
||||
return IIO_VAL_INT_PLUS_MICRO;
|
||||
case IIO_CHAN_INFO_CALIBBIAS:
|
||||
ret = regmap_read(data->regmap,
|
||||
|
|
|
@ -32,12 +32,12 @@ static int adxl345_i2c_probe(struct i2c_client *client)
|
|||
|
||||
static const struct adxl345_chip_info adxl345_i2c_info = {
|
||||
.name = "adxl345",
|
||||
.type = ADXL345,
|
||||
.uscale = ADXL345_USCALE,
|
||||
};
|
||||
|
||||
static const struct adxl345_chip_info adxl375_i2c_info = {
|
||||
.name = "adxl375",
|
||||
.type = ADXL375,
|
||||
.uscale = ADXL375_USCALE,
|
||||
};
|
||||
|
||||
static const struct i2c_device_id adxl345_i2c_id[] = {
|
||||
|
|
|
@ -38,12 +38,12 @@ static int adxl345_spi_probe(struct spi_device *spi)
|
|||
|
||||
static const struct adxl345_chip_info adxl345_spi_info = {
|
||||
.name = "adxl345",
|
||||
.type = ADXL345,
|
||||
.uscale = ADXL345_USCALE,
|
||||
};
|
||||
|
||||
static const struct adxl345_chip_info adxl375_spi_info = {
|
||||
.name = "adxl375",
|
||||
.type = ADXL375,
|
||||
.uscale = ADXL375_USCALE,
|
||||
};
|
||||
|
||||
static const struct spi_device_id adxl345_spi_id[] = {
|
||||
|
|
Loading…
Reference in a new issue