Re: [PATCH v4 35/36] iio: pressure: hid-sensor-press: drop hid_sensor_remove_trigger() using devm API
From: Jonathan Cameron
Date: Tue May 26 2026 - 11:59:32 EST
On Mon, 25 May 2026 22:35:50 +0530
Sanjay Chitroda <sanjayembeddedse@xxxxxxxxx> wrote:
> On 25 May 2026 3:39:11 pm IST, Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> wrote:
> >Le 24/05/2026 à 21:29, Sanjay Chitroda a écrit :
> >> From: Sanjay Chitroda <sanjayembeddedse@xxxxxxxxx>
> >>
> >> Use devm_hid_sensor_setup_trigger() to automatically release resource
> >> during fail, unbind or removal of driver using devres framework.
> >>
> >> This simplify the setup, remove goto, avoid manual resource cleanup in
> >> teardown path.
> >>
> >> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@xxxxxxxxx>
> >> ---
> >> drivers/iio/pressure/hid-sensor-press.c | 10 +++-------
> >> 1 file changed, 3 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c
> >> index fee7dcb86801..8438498c9aeb 100644
> >> --- a/drivers/iio/pressure/hid-sensor-press.c
> >> +++ b/drivers/iio/pressure/hid-sensor-press.c
> >> @@ -291,8 +291,8 @@ static int hid_press_probe(struct platform_device *pdev)
> >> atomic_set(&press_state->common_attributes.data_ready, 0);
> >> - ret = hid_sensor_setup_trigger(indio_dev, name,
> >> - &press_state->common_attributes);
> >> + ret = devm_hid_sensor_setup_trigger(dev, indio_dev, name,
> >> + &press_state->common_attributes);
> >> if (ret) {
> >> dev_err(dev, "trigger setup failed\n");
> >> return ret;
> >> @@ -301,7 +301,7 @@ static int hid_press_probe(struct platform_device *pdev)
> >> ret = iio_device_register(indio_dev);
> >
> >Hi,
> >
> >Looks like devm_iio_device_register() would now make sense and simplify things even further.
> >
> >CJ
>
> Hi CJ,
>
> Yes, as mentioned in cover letter most of HID IIO drivers have potential and will converted to devm based driver gradually.
This is putting a lot of churn and many patches on a critical driver
(given this device is in a lot of laptops). As such I think it's fine
to do prep for devm in separate changes, but the final per driver change
should be one per driver to go fully devm rather than doing it in smaller
chunks. I obviously want to see this well tested, and don't want to have
to keep asking people to test 'the next' set of changes.
Jonathan
>
> Welcoming all suggestions and especially if someone can validate and have Tested-by tag.
>
> Thank, Sanjay
>
> >
> >> if (ret) {
> >> dev_err(dev, "device register failed\n");
> >> - goto error_remove_trigger;
> >> + return ret;
> >> }
> >> press_state->callbacks.send_event = press_proc_event;
> >> @@ -318,8 +318,6 @@ static int hid_press_probe(struct platform_device *pdev)
> >> error_iio_unreg:
> >> iio_device_unregister(indio_dev);
> >> -error_remove_trigger:
> >> - hid_sensor_remove_trigger(&press_state->common_attributes);
> >> return ret;
> >> }
> >> @@ -328,11 +326,9 @@ static void hid_press_remove(struct platform_device *pdev)
> >> {
> >> struct hid_sensor_hub_device *hsdev = dev_get_platdata(&pdev->dev);
> >> struct iio_dev *indio_dev = platform_get_drvdata(pdev);
> >> - struct press_state *press_state = iio_priv(indio_dev);
> >> sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_PRESSURE);
> >> iio_device_unregister(indio_dev);
> >> - hid_sensor_remove_trigger(&press_state->common_attributes);
> >> }
> >> static const struct platform_device_id hid_press_ids[] = {
> >