Re: [PATCH v4 3/8] iio: imu: adis: Add optional post_reset_setup callback
From: Jonathan Cameron
Date: Sun Oct 25 2026 - 19:52:40 EST
On Fri, 23 Oct 2026 12:30:20 +0300
Radu Sabau via B4 Relay <devnull+radu.sabau.analog.com@xxxxxxxxxx> wrote:
> From: Radu Sabau <radu.sabau@xxxxxxxxxx>
>
> Add an optional post_reset_setup callback to struct adis_data, called
> right after reset and before self-test. Not all ADIS devices need
> extra bring-up between reset and self-test (SPI mode locking, status
> or bootloader checks, pin or burst-mode configuration, etc.) - purely
> additive: defaults to NULL, no change for existing drivers.
>
> Signed-off-by: Radu Sabau <radu.sabau@xxxxxxxxxx>
Hi Radu,
As it seems you will be doing a v5 for other feedback, time to
argue about the bikeshed colour.
> diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h
> index c09b381eb619..3d7c7febaec6 100644
> --- a/include/linux/iio/imu/adis.h
> +++ b/include/linux/iio/imu/adis.h
> @@ -52,6 +52,12 @@ struct adis_timeout {
> * @self_test_mask: Bitmask of supported self-test operations
> * @self_test_reg: Register address to request self test command
> * @self_test_no_autoclear: True if device's self-test needs clear of ctrl reg
> + * @post_reset_setup: Optional device-specific hook called after reset,
> + * before self-test. Not all ADIS devices need extra bring-up
> + * between reset and self-test (SPI mode locking, status or
> + * bootloader checks, pin or burst-mode configuration, etc.) -
> + * only called when set. Must return 0 on success, a negative
> + * error code otherwise.
Trivial but I wonder if this naming focuses unnecessarily on bit being
after reset. Maybe simply calling it init() would be enough with
assumption that any intialization is always after reset if there
is one done?
> * @self_test: Optional device-specific self-test override. When set,
> * it is called instead of the generic mask-write/sleep/
> * check-status sequence. The callback owns its own pass/fail
> @@ -88,6 +94,7 @@ struct adis_data {
> unsigned int self_test_mask;
> unsigned int self_test_reg;
> bool self_test_no_autoclear;
> + int (*post_reset_setup)(struct adis *adis);
> int (*self_test)(struct adis *adis);
> const struct adis_timeout *timeouts;
>
>