patch "iio: adis16480: fix devices that do not support sleep mode" added to staging-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
iio: adis16480: fix devices that do not support sleep mode
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From ea1945c2f72d7bd253e2ebaa97cdd8d9ffcde076 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nuno=20S=C3=A1?= <[email protected]>
Date: Fri, 3 Sep 2021 16:14:23 +0200
Subject: iio: adis16480: fix devices that do not support sleep mode
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Not all devices supported by this driver support being put to sleep mode. For those devices, when calling 'adis16480_stop_device()' on the unbind path, we where actually writing in the SYNC_SCALE register.
--- drivers/iio/imu/adis16480.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
drivers/iio/imu/adis16480.c +11 -3
@@ -144,6 +144,7 @@ struct adis16480_chip_info {unsigned int max_dec_rate;const unsigned int *filter_freqs;bool has_pps_clk_mode; +bool has_sleep_cnt;const struct adis_data adis_data; };
@@ -939,6 +940,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = { .temp_scale = 5650, /* 5.65 milli degree Celsius */ .int_clk = 2460000, .max_dec_rate = 2048, + .has_sleep_cnt = true, .filter_freqs = adis16480_def_filter_freqs, .adis_data = ADIS16480_DATA(16375, &adis16485_timeouts, 0), },
@@ -952,6 +954,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = { .temp_scale = 5650, /* 5.65 milli degree Celsius */ .int_clk = 2460000, .max_dec_rate = 2048, + .has_sleep_cnt = true, .filter_freqs = adis16480_def_filter_freqs, .adis_data = ADIS16480_DATA(16480, &adis16480_timeouts, 0), },
@@ -965,6 +968,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = { .temp_scale = 5650, /* 5.65 milli degree Celsius */ .int_clk = 2460000, .max_dec_rate = 2048, + .has_sleep_cnt = true, .filter_freqs = adis16480_def_filter_freqs, .adis_data = ADIS16480_DATA(16485, &adis16485_timeouts, 0), },
@@ -978,6 +982,7 @@ static const struct adis16480_chip_info adis16480_chip_info[] = { .temp_scale = 5650, /* 5.65 milli degree Celsius */ .int_clk = 2460000, .max_dec_rate = 2048, + .has_sleep_cnt = true, .filter_freqs = adis16480_def_filter_freqs, .adis_data = ADIS16480_DATA(16488, &adis16485_timeouts, 0), },
@@ -1425,9 +1430,12 @@ static int adis16480_probe(struct spi_device *spi)if (ret)return ret; - ret =devm_add_action_or_reset (&spi->dev, adis16480_stop, indio_dev); -if (ret) -return ret; +if (st->chip_info->has_sleep_cnt) { + ret =devm_add_action_or_reset (&spi->dev, adis16480_stop, + indio_dev); +if (ret) +return ret; + } ret =adis16480_config_irq_pin (spi->dev.of_node, st);if (ret)
Signature · 1 line
2.33.0