[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241125133520.24328-4-robert.budai@analog.com>
Date: Mon, 25 Nov 2024 15:35:10 +0200
From: Robert Budai <robert.budai@...log.com>
To: Nuno Sa <nuno.sa@...log.com>,
Ramona Gradinariu
<ramona.gradinariu@...log.com>,
Antoniu Miclaus <antoniu.miclaus@...log.com>,
Lars-Peter Clausen <lars@...afoo.de>,
Michael Hennerich
<Michael.Hennerich@...log.com>,
Jonathan Cameron <jic23@...nel.org>, "Rob
Herring" <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
"Conor
Dooley" <conor+dt@...nel.org>,
Jonathan Corbet <corbet@....net>,
Robert Budai
<robert.budai@...log.com>, <linux-iio@...r.kernel.org>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-doc@...r.kernel.org>
Subject: [PATCH 3/7] iio: imu: adis: Add reset to custom ops
This patch allows the custom definition of reset funcitonality
for adis object. It is useful in cases where the reset does not
need to sleep after the reset since it is handled by the library.
Co-developed-by: Ramona Gradinariu <ramona.gradinariu@...log.com>
Signed-off-by: Ramona Gradinariu <ramona.gradinariu@...log.com>
Co-developed-by: Antoniu Miclaus <antoniu.miclaus@...log.com>
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@...log.com>
Signed-off-by: Nuno Sá <nuno.sa@...log.com>
Signed-off-by: Robert Budai <robert.budai@...log.com>
---
v2:
-added reset ops as a different patch
- signed of by submitter
drivers/iio/imu/adis.c | 7 +++++--
include/linux/iio/imu/adis.h | 3 +++
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c
index fa7a817b7d99..865f7c56717a 100644
--- a/drivers/iio/imu/adis.c
+++ b/drivers/iio/imu/adis.c
@@ -339,8 +339,11 @@ int __adis_reset(struct adis *adis)
int ret;
const struct adis_timeout *timeouts = adis->data->timeouts;
- ret = __adis_write_reg_8(adis, adis->data->glob_cmd_reg,
- ADIS_GLOB_CMD_SW_RESET);
+ if (adis->ops->reset)
+ ret = adis->ops->reset(adis);
+ else
+ ret = __adis_write_reg_8(adis, adis->data->glob_cmd_reg,
+ ADIS_GLOB_CMD_SW_RESET);
if (ret) {
dev_err(&adis->spi->dev, "Failed to reset device: %d\n", ret);
return ret;
diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h
index 89cfa75ae9ea..52652f51db2e 100644
--- a/include/linux/iio/imu/adis.h
+++ b/include/linux/iio/imu/adis.h
@@ -98,12 +98,15 @@ struct adis_data {
* struct adis_ops: Custom ops for adis devices.
* @write: Custom spi write implementation.
* @read: Custom spi read implementation.
+ * @reset: Custom sw reset implementation. The custom implementation does not
+ * need to sleep after the reset. It's done by the library already.
*/
struct adis_ops {
int (*write)(struct adis *adis, unsigned int reg, unsigned int value,
unsigned int size);
int (*read)(struct adis *adis, unsigned int reg, unsigned int *value,
unsigned int size);
+ int (*reset)(struct adis *adis);
};
/**
--
2.34.1
Powered by blists - more mailing lists