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: Ramona Gradinariu <ramona.gradinariu@analog.com>
Signed-off-by: Ramona Gradinariu <ramona.gradinariu@analog.com>
Co-developed-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
Co-developed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Robert Budai <robert.budai@analog.com>
Link: https://patch.msgid.link/20250217105753.605465-3-robert.budai@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
static const struct adis_ops adis_default_ops = {
.read = __adis_read_reg,
.write = __adis_write_reg,
+ .reset = __adis_reset,
};
/**
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);
* 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);
};
/**