* [PATCH 1/3] iio: imu: adis16480: add devices to adis16480 driver
@ 2024-11-01 13:07 Darius Berghe
2024-11-01 13:07 ` [PATCH 2/3] iio: imu: adis16480: add devices to adis16480 - docs Darius Berghe
2024-11-01 13:07 ` [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480 Darius Berghe
0 siblings, 2 replies; 4+ messages in thread
From: Darius Berghe @ 2024-11-01 13:07 UTC (permalink / raw)
To: linux-iio, linux-kernel; +Cc: jic23, darius.berghe
Add support for adis16486, adis16487 and adis16489 Six Degrees
of Freedom Inertial Sensors into the existing adis16480 iio
subsystem driver. The adis16487 is functionally equivalent to
the already supported adis16485. The others have slight
differences in terms of channels and scales with the already
supported devices.
Signed-off-by: Darius Berghe <darius.berghe@analog.com>
---
drivers/iio/imu/adis16480.c | 75 +++++++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)
diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c
index 7bfda7133a96..03a2f21dd779 100644
--- a/drivers/iio/imu/adis16480.c
+++ b/drivers/iio/imu/adis16480.c
@@ -912,6 +912,24 @@ static const struct iio_chan_spec adis16485_channels[] = {
ADIS16480_DELTVEL_CHANNEL_NO_SCAN(Z),
};
+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),
+};
+
static const struct iio_chan_spec adis16495_channels[] = {
ADIS16480_GYRO_CHANNEL(X),
ADIS16480_GYRO_CHANNEL(Y),
@@ -952,7 +970,10 @@ enum adis16480_variant {
ADIS16375,
ADIS16480,
ADIS16485,
+ ADIS16486,
+ ADIS16487,
ADIS16488,
+ ADIS16489,
ADIS16490,
ADIS16495_1,
ADIS16495_2,
@@ -1108,6 +1129,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),
@@ -1124,6 +1177,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),
@@ -1841,7 +1910,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 },
@@ -1863,7 +1935,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" },
--
2.46.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 2/3] iio: imu: adis16480: add devices to adis16480 - docs
2024-11-01 13:07 [PATCH 1/3] iio: imu: adis16480: add devices to adis16480 driver Darius Berghe
@ 2024-11-01 13:07 ` Darius Berghe
2024-11-01 13:07 ` [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480 Darius Berghe
1 sibling, 0 replies; 4+ messages in thread
From: Darius Berghe @ 2024-11-01 13:07 UTC (permalink / raw)
To: linux-iio, linux-kernel; +Cc: jic23, darius.berghe
Add datasheet links for adis16486, adis16487 and adis16489
Six Degrees of Freedom Inertial Sensors into the existing
adis16480 driver documentation. The adis16487 is functionally
equivalent to the already supported adis16485. The others have
slight differences in terms of channels and scales with the
already supported devices.
Signed-off-by: Darius Berghe <darius.berghe@analog.com>
---
Documentation/iio/adis16480.rst | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/iio/adis16480.rst b/Documentation/iio/adis16480.rst
index e3cc64ddc8f6..d911131c613c 100644
--- a/Documentation/iio/adis16480.rst
+++ b/Documentation/iio/adis16480.rst
@@ -12,7 +12,10 @@ This driver supports Analog Device's IMUs on SPI bus.
* `ADIS16375 <https://www.analog.com/ADIS16375>`_
* `ADIS16480 <https://www.analog.com/ADIS16480>`_
* `ADIS16485 <https://www.analog.com/ADIS16485>`_
+* `ADIS16486 <https://www.analog.com/ADIS16486>`_
+* `ADIS16487 <https://www.analog.com/ADIS16487>`_
* `ADIS16488 <https://www.analog.com/ADIS16488>`_
+* `ADIS16489 <https://www.analog.com/ADIS16489>`_
* `ADIS16490 <https://www.analog.com/ADIS16490>`_
* `ADIS16495 <https://www.analog.com/ADIS16495>`_
* `ADIS16497 <https://www.analog.com/ADIS16497>`_
--
2.46.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480
2024-11-01 13:07 [PATCH 1/3] iio: imu: adis16480: add devices to adis16480 driver Darius Berghe
2024-11-01 13:07 ` [PATCH 2/3] iio: imu: adis16480: add devices to adis16480 - docs Darius Berghe
@ 2024-11-01 13:07 ` Darius Berghe
2024-11-01 15:12 ` Jonathan Cameron
1 sibling, 1 reply; 4+ messages in thread
From: Darius Berghe @ 2024-11-01 13:07 UTC (permalink / raw)
To: linux-iio, linux-kernel; +Cc: jic23, darius.berghe
Add the adis16486, adis16487 and adis16489 Six Degrees
of Freedom Inertial Sensors to the list of compatible devices
of the adis16480 iio subsystem driver.
Signed-off-by: Darius Berghe <darius.berghe@analog.com>
---
Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml b/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
index e3eec38897bf..5bef2878a0df 100644
--- a/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
+++ b/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
@@ -15,7 +15,10 @@ properties:
- adi,adis16375
- adi,adis16480
- adi,adis16485
+ - adi,adis16486
+ - adi,adis16487
- adi,adis16488
+ - adi,adis16489
- adi,adis16490
- adi,adis16495-1
- adi,adis16495-2
--
2.46.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480
2024-11-01 13:07 ` [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480 Darius Berghe
@ 2024-11-01 15:12 ` Jonathan Cameron
0 siblings, 0 replies; 4+ messages in thread
From: Jonathan Cameron @ 2024-11-01 15:12 UTC (permalink / raw)
To: Darius Berghe; +Cc: linux-iio, linux-kernel
On Fri, 1 Nov 2024 15:07:42 +0200
Darius Berghe <darius.berghe@analog.com> wrote:
> Add the adis16486, adis16487 and adis16489 Six Degrees
> of Freedom Inertial Sensors to the list of compatible devices
> of the adis16480 iio subsystem driver.
Hi Darius
Please give a brief statement of what differs between these and the
many other compatibles in this binding (beyond the ID register)?
(usually scales, features etc)
In particularly you state in the docs patch that one of them
is functionally equivalent to an existing part so there a fallback
compatible is appropriate.
See how the st,lsm6dsx does it. The reason to do this it allows
the potential for an old kernel driver to work fine with a newer
device tree.
Other than that the series looks good to me.
Given we have a case where data could be shared, longer term
breaking up the chip_info array into individual structures would
allow sharing of the data.
The name handling in here isn't ideal as it relies on matching
in the spi_device_id table which is fragile. Doing that more
cleanly might break the sharing of structures. Oh well, not
relevant for this set anyway.
Jonathan
>
> Signed-off-by: Darius Berghe <darius.berghe@analog.com>
> ---
> Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml b/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
> index e3eec38897bf..5bef2878a0df 100644
> --- a/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
> +++ b/Documentation/devicetree/bindings/iio/imu/adi,adis16480.yaml
> @@ -15,7 +15,10 @@ properties:
> - adi,adis16375
> - adi,adis16480
> - adi,adis16485
> + - adi,adis16486
> + - adi,adis16487
> - adi,adis16488
> + - adi,adis16489
> - adi,adis16490
> - adi,adis16495-1
> - adi,adis16495-2
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-11-01 15:12 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-01 13:07 [PATCH 1/3] iio: imu: adis16480: add devices to adis16480 driver Darius Berghe
2024-11-01 13:07 ` [PATCH 2/3] iio: imu: adis16480: add devices to adis16480 - docs Darius Berghe
2024-11-01 13:07 ` [PATCH 3/3] dt-bindings: iio: adis16480: add devices to adis16480 Darius Berghe
2024-11-01 15:12 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox