[PATCH v5 02/13] iio: hid-sensors: introduce device managed API
Sanjay Chitroda via B4 Relay <[email protected]> Thu, 06 Aug 2026 17:55:48 +0530
| Newsgroups | org.kernel.vger.linux-input,org.kernel.feeds.b4-sent,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260806-28-apr-iio-redundant-argument-v5-temp-v5-2-f1f92c1d830f@gmail.com> |
From: Sanjay Chitroda <[email protected]> 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 <[email protected]> Tested-by: Zhang Lixu <[email protected]> --- drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 18 ++++++++++++++++++ drivers/iio/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 6e6adc501602..df6c07d6a6b7 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 ee17d5cc2437..c4b901ca4879 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 -- 2.34.1