mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 12:52:40 -04:00
iio: imu: adis16480: add devices to adis16480 driver
Add support for adis16486, adis16487 and adis16489 Six Degrees of Freedom Inertial Sensors into the existing adis16480 iio subsystem driver. adis16486 is similar to adis16485, has the exact same channels but acceleration and delta velocity scales are different. adis16487 is fallback compatible with adis16485. adis16489 is similar to adis16488 but lacks the magnetometer and has a different accelerometer scale. Signed-off-by: Darius Berghe <darius.berghe@analog.com> Link: https://patch.msgid.link/20241108125814.3097213-2-darius.berghe@analog.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
cdd30ebb1b
commit
6fbf150823
@@ -878,11 +878,32 @@ static const struct iio_chan_spec adis16545_channels[] = {
|
||||
IIO_CHAN_SOFT_TIMESTAMP(17),
|
||||
};
|
||||
|
||||
static const struct iio_chan_spec adis16489_channels[] = {
|
||||
ADIS16480_GYRO_CHANNEL(X),
|
||||
ADIS16480_GYRO_CHANNEL(Y),
|
||||
ADIS16480_GYRO_CHANNEL(Z),
|
||||
ADIS16480_ACCEL_CHANNEL(X),
|
||||
ADIS16480_ACCEL_CHANNEL(Y),
|
||||
ADIS16480_ACCEL_CHANNEL(Z),
|
||||
ADIS16480_PRESSURE_CHANNEL(),
|
||||
ADIS16480_TEMP_CHANNEL(),
|
||||
IIO_CHAN_SOFT_TIMESTAMP(8),
|
||||
ADIS16480_DELTANG_CHANNEL_NO_SCAN(X),
|
||||
ADIS16480_DELTANG_CHANNEL_NO_SCAN(Y),
|
||||
ADIS16480_DELTANG_CHANNEL_NO_SCAN(Z),
|
||||
ADIS16480_DELTVEL_CHANNEL_NO_SCAN(X),
|
||||
ADIS16480_DELTVEL_CHANNEL_NO_SCAN(Y),
|
||||
ADIS16480_DELTVEL_CHANNEL_NO_SCAN(Z),
|
||||
};
|
||||
|
||||
enum adis16480_variant {
|
||||
ADIS16375,
|
||||
ADIS16480,
|
||||
ADIS16485,
|
||||
ADIS16486,
|
||||
ADIS16487,
|
||||
ADIS16488,
|
||||
ADIS16489,
|
||||
ADIS16490,
|
||||
ADIS16495_1,
|
||||
ADIS16495_2,
|
||||
@@ -1038,6 +1059,38 @@ static const struct adis16480_chip_info adis16480_chip_info[] = {
|
||||
.filter_freqs = adis16480_def_filter_freqs,
|
||||
.adis_data = ADIS16480_DATA(16485, &adis16485_timeouts, 0, 0),
|
||||
},
|
||||
[ADIS16486] = {
|
||||
.channels = adis16485_channels,
|
||||
.num_channels = ARRAY_SIZE(adis16485_channels),
|
||||
.gyro_max_val = 22500 << 16,
|
||||
.gyro_max_scale = IIO_DEGREE_TO_RAD(450),
|
||||
.accel_max_val = IIO_M_S_2_TO_G(20000 << 16),
|
||||
.accel_max_scale = 18,
|
||||
.temp_scale = 5650, /* 5.65 milli degree Celsius */
|
||||
.deltang_max_val = IIO_DEGREE_TO_RAD(720),
|
||||
.deltvel_max_val = 200,
|
||||
.int_clk = 2460000,
|
||||
.max_dec_rate = 2048,
|
||||
.has_sleep_cnt = true,
|
||||
.filter_freqs = adis16480_def_filter_freqs,
|
||||
.adis_data = ADIS16480_DATA(16486, &adis16480_timeouts, 0, 0),
|
||||
},
|
||||
[ADIS16487] = {
|
||||
.channels = adis16485_channels,
|
||||
.num_channels = ARRAY_SIZE(adis16485_channels),
|
||||
.gyro_max_val = 22500 << 16,
|
||||
.gyro_max_scale = IIO_DEGREE_TO_RAD(450),
|
||||
.accel_max_val = IIO_M_S_2_TO_G(20000 << 16),
|
||||
.accel_max_scale = 5,
|
||||
.temp_scale = 5650, /* 5.65 milli degree Celsius */
|
||||
.deltang_max_val = IIO_DEGREE_TO_RAD(720),
|
||||
.deltvel_max_val = 50,
|
||||
.int_clk = 2460000,
|
||||
.max_dec_rate = 2048,
|
||||
.has_sleep_cnt = true,
|
||||
.filter_freqs = adis16480_def_filter_freqs,
|
||||
.adis_data = ADIS16480_DATA(16487, &adis16485_timeouts, 0, 0),
|
||||
},
|
||||
[ADIS16488] = {
|
||||
.channels = adis16480_channels,
|
||||
.num_channels = ARRAY_SIZE(adis16480_channels),
|
||||
@@ -1054,6 +1107,22 @@ static const struct adis16480_chip_info adis16480_chip_info[] = {
|
||||
.filter_freqs = adis16480_def_filter_freqs,
|
||||
.adis_data = ADIS16480_DATA(16488, &adis16485_timeouts, 0, 0),
|
||||
},
|
||||
[ADIS16489] = {
|
||||
.channels = adis16489_channels,
|
||||
.num_channels = ARRAY_SIZE(adis16489_channels),
|
||||
.gyro_max_val = 22500 << 16,
|
||||
.gyro_max_scale = IIO_DEGREE_TO_RAD(450),
|
||||
.accel_max_val = IIO_M_S_2_TO_G(20000 << 16),
|
||||
.accel_max_scale = 18,
|
||||
.temp_scale = 5650, /* 5.65 milli degree Celsius */
|
||||
.deltang_max_val = IIO_DEGREE_TO_RAD(720),
|
||||
.deltvel_max_val = 200,
|
||||
.int_clk = 2460000,
|
||||
.max_dec_rate = 2048,
|
||||
.has_sleep_cnt = true,
|
||||
.filter_freqs = adis16480_def_filter_freqs,
|
||||
.adis_data = ADIS16480_DATA(16489, &adis16480_timeouts, 0, 0),
|
||||
},
|
||||
[ADIS16490] = {
|
||||
.channels = adis16485_channels,
|
||||
.num_channels = ARRAY_SIZE(adis16485_channels),
|
||||
@@ -1741,7 +1810,10 @@ static const struct spi_device_id adis16480_ids[] = {
|
||||
{ "adis16375", ADIS16375 },
|
||||
{ "adis16480", ADIS16480 },
|
||||
{ "adis16485", ADIS16485 },
|
||||
{ "adis16486", ADIS16486 },
|
||||
{ "adis16487", ADIS16487 },
|
||||
{ "adis16488", ADIS16488 },
|
||||
{ "adis16489", ADIS16489 },
|
||||
{ "adis16490", ADIS16490 },
|
||||
{ "adis16495-1", ADIS16495_1 },
|
||||
{ "adis16495-2", ADIS16495_2 },
|
||||
@@ -1763,7 +1835,10 @@ static const struct of_device_id adis16480_of_match[] = {
|
||||
{ .compatible = "adi,adis16375" },
|
||||
{ .compatible = "adi,adis16480" },
|
||||
{ .compatible = "adi,adis16485" },
|
||||
{ .compatible = "adi,adis16486" },
|
||||
{ .compatible = "adi,adis16487" },
|
||||
{ .compatible = "adi,adis16488" },
|
||||
{ .compatible = "adi,adis16489" },
|
||||
{ .compatible = "adi,adis16490" },
|
||||
{ .compatible = "adi,adis16495-1" },
|
||||
{ .compatible = "adi,adis16495-2" },
|
||||
|
||||
Reference in New Issue
Block a user