summaryrefslogtreecommitdiff
path: root/drivers/iio/accel
diff options
context:
space:
mode:
authorBiju Das <biju.das.jz@bp.renesas.com>2023-09-03 10:00:51 +0100
committerJonathan Cameron <jonathan.cameron@huawei.com>2023-09-12 10:42:04 +0100
commitdcc3ac1381eff05e4ab546a42798dd6837b295a7 (patch)
tree5ae9f4cb9a7e770f0ae45f40b6ad99aeeb80e838 /drivers/iio/accel
parent7d0ba6dbf8356d20b69cfd042800d5d51ac00bd7 (diff)
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>
Diffstat (limited to 'drivers/iio/accel')
-rw-r--r--drivers/iio/accel/adxl345.h20
-rw-r--r--drivers/iio/accel/adxl345_core.c25
-rw-r--r--drivers/iio/accel/adxl345_i2c.c4
-rw-r--r--drivers/iio/accel/adxl345_spi.c4
4 files changed, 20 insertions, 33 deletions
diff --git a/drivers/iio/accel/adxl345.h b/drivers/iio/accel/adxl345.h
index 826e0575ae79..284bd387ce69 100644
--- a/drivers/iio/accel/adxl345.h
+++ b/drivers/iio/accel/adxl345.h
@@ -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);
diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adxl345_core.c
index 28f77b5de47d..8bd30a23ed3b 100644
--- a/drivers/iio/accel/adxl345_core.c
+++ b/drivers/iio/accel/adxl345_core.c
@@ -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,
diff --git a/drivers/iio/accel/adxl345_i2c.c b/drivers/iio/accel/adxl345_i2c.c
index 8cb6254297f7..a3084b0a8f78 100644
--- a/drivers/iio/accel/adxl345_i2c.c
+++ b/drivers/iio/accel/adxl345_i2c.c
@@ -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[] = {
diff --git a/drivers/iio/accel/adxl345_spi.c b/drivers/iio/accel/adxl345_spi.c
index ede9b9496158..93ca349f1780 100644
--- a/drivers/iio/accel/adxl345_spi.c
+++ b/drivers/iio/accel/adxl345_spi.c
@@ -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[] = {