mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 13:33:30 -04:00
iio: imu: inv_mpu6050: add support for IAM-20680HT/HP
IAM-20680HT & HP are 2 variants of IAM-20680 with better specs, wider temperature range, and a bigger FIFO (4k). Fully compatible with IAM-20680, FIFO is 512 bytes by default and with correct register setting we expand it to full 4k. Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com> Link: https://patch.msgid.link/20240923-inv-mpu6050-add-iam20680-ht-hp-v2-2-48290e0b9931@tdk.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
129bb33f0d
commit
8525592196
@@ -286,6 +286,24 @@ static const struct inv_mpu6050_hw hw_info[] = {
|
||||
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
|
||||
.startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
|
||||
},
|
||||
{
|
||||
.whoami = INV_IAM20680HP_WHOAMI_VALUE,
|
||||
.name = "IAM20680HP",
|
||||
.reg = ®_set_6500,
|
||||
.config = &chip_config_6500,
|
||||
.fifo_size = 4 * 1024,
|
||||
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
|
||||
.startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
|
||||
},
|
||||
{
|
||||
.whoami = INV_IAM20680HT_WHOAMI_VALUE,
|
||||
.name = "IAM20680HT",
|
||||
.reg = ®_set_6500,
|
||||
.config = &chip_config_6500,
|
||||
.fifo_size = 4 * 1024,
|
||||
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
|
||||
.startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
|
||||
},
|
||||
};
|
||||
|
||||
static int inv_mpu6050_pwr_mgmt_1_write(struct inv_mpu6050_state *st, bool sleep,
|
||||
@@ -510,6 +528,8 @@ static int inv_mpu6050_set_accel_lpf_regs(struct inv_mpu6050_state *st,
|
||||
return 0;
|
||||
case INV_ICM20689:
|
||||
case INV_ICM20690:
|
||||
case INV_IAM20680HT:
|
||||
case INV_IAM20680HP:
|
||||
/* set FIFO size to maximum value */
|
||||
val |= INV_ICM20689_BITS_FIFO_SIZE_MAX;
|
||||
break;
|
||||
|
||||
@@ -188,6 +188,8 @@ static const struct i2c_device_id inv_mpu_id[] = {
|
||||
{"icm20602", INV_ICM20602},
|
||||
{"icm20690", INV_ICM20690},
|
||||
{"iam20680", INV_IAM20680},
|
||||
{"iam20680hp", INV_IAM20680HP},
|
||||
{"iam20680ht", INV_IAM20680HT},
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -254,6 +256,14 @@ static const struct of_device_id inv_of_match[] = {
|
||||
.compatible = "invensense,iam20680",
|
||||
.data = (void *)INV_IAM20680
|
||||
},
|
||||
{
|
||||
.compatible = "invensense,iam20680hp",
|
||||
.data = (void *)INV_IAM20680HP
|
||||
},
|
||||
{
|
||||
.compatible = "invensense,iam20680ht",
|
||||
.data = (void *)INV_IAM20680HT
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, inv_of_match);
|
||||
|
||||
@@ -85,6 +85,8 @@ enum inv_devices {
|
||||
INV_ICM20602,
|
||||
INV_ICM20690,
|
||||
INV_IAM20680,
|
||||
INV_IAM20680HP,
|
||||
INV_IAM20680HT,
|
||||
INV_NUM_PARTS
|
||||
};
|
||||
|
||||
@@ -424,6 +426,8 @@ struct inv_mpu6050_state {
|
||||
#define INV_ICM20602_WHOAMI_VALUE 0x12
|
||||
#define INV_ICM20690_WHOAMI_VALUE 0x20
|
||||
#define INV_IAM20680_WHOAMI_VALUE 0xA9
|
||||
#define INV_IAM20680HP_WHOAMI_VALUE 0xF8
|
||||
#define INV_IAM20680HT_WHOAMI_VALUE 0xFA
|
||||
|
||||
/* scan element definition for generic MPU6xxx devices */
|
||||
enum inv_mpu6050_scan {
|
||||
|
||||
@@ -80,6 +80,8 @@ static const struct spi_device_id inv_mpu_id[] = {
|
||||
{"icm20602", INV_ICM20602},
|
||||
{"icm20690", INV_ICM20690},
|
||||
{"iam20680", INV_IAM20680},
|
||||
{"iam20680hp", INV_IAM20680HP},
|
||||
{"iam20680ht", INV_IAM20680HT},
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -142,6 +144,14 @@ static const struct of_device_id inv_of_match[] = {
|
||||
.compatible = "invensense,iam20680",
|
||||
.data = (void *)INV_IAM20680
|
||||
},
|
||||
{
|
||||
.compatible = "invensense,iam20680hp",
|
||||
.data = (void *)INV_IAM20680HP
|
||||
},
|
||||
{
|
||||
.compatible = "invensense,iam20680ht",
|
||||
.data = (void *)INV_IAM20680HT
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, inv_of_match);
|
||||
|
||||
Reference in New Issue
Block a user