Re: [PATCH v3 3/9] iio: hid-sensors: introduce device managed API

From: srinivas pandruvada

Date: Tue May 12 2026 - 09:06:13 EST


On Sat, 2026-05-09 at 15:40 +0530, Sanjay Chitroda wrote:
> From: Sanjay Chitroda <sanjayembeddedse@xxxxxxxxx>
>
> hid_sensor_setup_trigger() is common API used for the HID IIO
> drivers,
> prepare devm API devm_hid_sensor_setup_trigger() to acquire resource
> during setup and release using device managed framework during
> drivers
> fail, unbind or remove path.
>
> Register action with devm_add_action_or_reset() to release resource
> with
> devres framework.
>
> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@xxxxxxxxx>

Looks good but we have to test by unbinding ISH PCI device.

Thanks,
Srinivas

> ---
> Changes in v3:
> - Remove cast and update function based on review comment from Andy
> - v2 link ->
> https://lore.kernel.org/all/20260429175918.2541914-3-sanjayembedded@xxxxxxxxx/
> ---
>  .../common/hid-sensors/hid-sensor-trigger.c    | 18
> ++++++++++++++++++
>  .../common/hid-sensors/hid-sensor-trigger.h    |  2 ++
>  2 files changed, 20 insertions(+)
>
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> index 98fadc61a68a..fb6a4587ae03 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> @@ -301,6 +301,24 @@ int hid_sensor_setup_trigger(struct iio_dev
> *indio_dev, const char *name,
>  }
>  EXPORT_SYMBOL_NS(hid_sensor_setup_trigger, "IIO_HID");
>  
> +static void hid_sensor_remove_trigger_action(void *attrb)
> +{
> + hid_sensor_remove_trigger(attrb);
> +}
> +
> +int devm_hid_sensor_setup_trigger(struct device *dev, struct iio_dev
> *indio_dev,
> +   const char *name, struct
> hid_sensor_common *attrb)
> +{
> + int ret;
> +
> + ret = hid_sensor_setup_trigger(indio_dev, name, attrb);
> + if (ret)
> + return ret;
> +
> + return devm_add_action_or_reset(dev,
> hid_sensor_remove_trigger_action, attrb);
> +}
> +EXPORT_SYMBOL_NS(devm_hid_sensor_setup_trigger, "IIO_HID");
> +
>  static int __maybe_unused hid_sensor_suspend(struct device *dev)
>  {
>   struct iio_dev *indio_dev = dev_get_drvdata(dev);
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.h
> b/drivers/iio/common/hid-sensors/hid-sensor-trigger.h
> index afec46ecbe71..6fd7c39a240d 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.h
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.h
> @@ -17,6 +17,8 @@ extern const struct dev_pm_ops hid_sensor_pm_ops;
>  int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char
> *name,
>   struct hid_sensor_common *attrb);
>  void hid_sensor_remove_trigger(struct hid_sensor_common *attrb);
> +int devm_hid_sensor_setup_trigger(struct device *dev, struct iio_dev
> *indio_dev,
> +   const char *name, struct
> hid_sensor_common *attrb);
>  int hid_sensor_power_state(struct hid_sensor_common *st, bool
> state);
>  
>  #endif