Commit 7f15d7a7 authored by Robert Budai's avatar Robert Budai Committed by Jonathan Cameron
Browse files

iio: imu: adis: Add reset to custom ops



This patch allows the custom definition of reset functionality for adis object.
It is useful in cases where the driver does not need to sleep after the reset
since it is handled by the library.

Co-developed-by: default avatarRamona Gradinariu <ramona.gradinariu@analog.com>
Signed-off-by: default avatarRamona Gradinariu <ramona.gradinariu@analog.com>
Co-developed-by: default avatarAntoniu Miclaus <antoniu.miclaus@analog.com>
Signed-off-by: default avatarAntoniu Miclaus <antoniu.miclaus@analog.com>
Co-developed-by: default avatarNuno Sá <nuno.sa@analog.com>
Signed-off-by: default avatarNuno Sá <nuno.sa@analog.com>
Signed-off-by: default avatarRobert Budai <robert.budai@analog.com>
Link: https://patch.msgid.link/20250217105753.605465-3-robert.budai@analog.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 3b29bcee
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -491,6 +491,7 @@ EXPORT_SYMBOL_NS_GPL(adis_single_conversion, "IIO_ADISLIB");
static const struct adis_ops adis_default_ops = {
	.read = __adis_read_reg,
	.write = __adis_write_reg,
	.reset = __adis_reset,
};

/**
@@ -522,9 +523,9 @@ int adis_init(struct adis *adis, struct iio_dev *indio_dev,

	adis->spi = spi;
	adis->data = data;
	if (!adis->ops->write && !adis->ops->read)
	if (!adis->ops->write && !adis->ops->read && !adis->ops->reset)
		adis->ops = &adis_default_ops;
	else if (!adis->ops->write || !adis->ops->read)
	else if (!adis->ops->write || !adis->ops->read || !adis->ops->reset)
		return -EINVAL;

	iio_device_set_drvdata(indio_dev, adis);
+3 −0
Original line number Diff line number Diff line
@@ -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);
};

/**