From 15752dea8b0c83a73cb8b9fbfc22d2e8dc9b4d23 Mon Sep 17 00:00:00 2001 From: Shunqian Zheng Date: Thu, 20 May 2021 19:41:50 +0800 Subject: [PATCH] iio: imu: inv_icm42600: add icm40608 By comparing icm40608 datasheet with icm42600, it can use icm426xx driver directly. Change-Id: If856076ed4f57df6ba5bbb339a35b119937c6385 Signed-off-by: Shunqian Zheng --- drivers/iio/imu/inv_icm42600/inv_icm42600.h | 2 ++ drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 5 +++++ drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c | 3 +++ drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c | 3 +++ 4 files changed, 13 insertions(+) diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600.h b/drivers/iio/imu/inv_icm42600/inv_icm42600.h index 236f4648c5eb..19c9d02d8ffe 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600.h +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600.h @@ -17,6 +17,7 @@ #include "inv_icm42600_buffer.h" enum inv_icm42600_chip { + INV_CHIP_ICM40608, INV_CHIP_ICM42600, INV_CHIP_ICM42602, INV_CHIP_ICM42605, @@ -298,6 +299,7 @@ struct inv_icm42600_state { #define INV_ICM42600_INT_SOURCE0_UI_AGC_RDY_INT1_EN BIT(0) #define INV_ICM42600_REG_WHOAMI 0x0075 +#define INV_ICM42600_WHOAMI_ICM40608 0x39 #define INV_ICM42600_WHOAMI_ICM42600 0x40 #define INV_ICM42600_WHOAMI_ICM42602 0x41 #define INV_ICM42600_WHOAMI_ICM42605 0x42 diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c index c49dc7e906c2..7bb2f4fb6867 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_core.c @@ -67,6 +67,11 @@ static const struct inv_icm42600_conf inv_icm42600_default_conf = { }; static const struct inv_icm42600_hw inv_icm42600_hw[INV_CHIP_NB] = { + [INV_CHIP_ICM40608] = { + .whoami = INV_ICM42600_WHOAMI_ICM40608, + .name = "icm40608", + .conf = &inv_icm42600_default_conf, + }, [INV_CHIP_ICM42600] = { .whoami = INV_ICM42600_WHOAMI_ICM42600, .name = "icm42600", diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c index 85b1934cec60..1bde8799628e 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c @@ -70,6 +70,9 @@ static int inv_icm42600_probe(struct i2c_client *client) static const struct of_device_id inv_icm42600_of_matches[] = { { + .compatible = "invensense,icm40608", + .data = (void *)INV_CHIP_ICM40608, + }, { .compatible = "invensense,icm42600", .data = (void *)INV_CHIP_ICM42600, }, { diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c index 323789697a08..588af4cff4f7 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_spi.c @@ -69,6 +69,9 @@ static int inv_icm42600_probe(struct spi_device *spi) static const struct of_device_id inv_icm42600_of_matches[] = { { + .compatible = "invensense,icm40608", + .data = (void *)INV_CHIP_ICM40608, + }, { .compatible = "invensense,icm42600", .data = (void *)INV_CHIP_ICM42600, }, {