Re: [PATCH v5 06/13] iio: humidity: hid-sensor-humidity: convert probe and teardown to devm-managed resources
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-input,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260816023920.04f8c3bb@jic23-huawei> |
On Thu, 06 Aug 2026 17:55:52 +0530 Sanjay Chitroda via B4 Relay <[email protected]> wrote: > From: Sanjay Chitroda <[email protected]> > > Convert HID IIO driver resource management to use devm-managed helpers, > tying the lifetime of all resources to the device. > > HID trigger setup, IIO registration, and sensor hub callback resource > are now managed using devm APIs. Cleanup logic previously handled > explicitly in probe error and teardown paths. > > This simplifies the probe path by removing goto-based error handling, > eliminates the remove callback entirely. > > Signed-off-by: Sanjay Chitroda <[email protected]> A passing comment inline. > --- > changes in v5: > - Fully convert driver to devm usage, dropped Tested-by tag > changes in v4: > - No update in change, added Tested-by tag > changes in v3: > - Update commit message based on review comment from Andy > - Based on discussion using parent device of HID platform driver used > with devres framework for this driver > - v2 link -> https://lore.kernel.org/all/[email protected]/ > --- > drivers/iio/humidity/hid-sensor-humidity.c | 38 +++++++----------------------- > 1 file changed, 8 insertions(+), 30 deletions(-) > > diff --git a/drivers/iio/humidity/hid-sensor-humidity.c b/drivers/iio/humidity/hid-sensor-humidity.c > index 89daf9d534d1..12c88efe66be 100644 > --- a/drivers/iio/humidity/hid-sensor-humidity.c > +++ b/drivers/iio/humidity/hid-sensor-humidity.c > @@ -192,11 +192,12 @@ static struct hid_sensor_hub_callbacks humidity_callbacks = { > /* Function to initialize the processing for usage id */ > static int hid_humidity_probe(struct platform_device *pdev) > { > + struct device *dev = &pdev->dev; > + struct hid_sensor_hub_device *hsdev = dev_get_platdata(dev); > static const char *name = "humidity"; > struct iio_dev *indio_dev; > struct hid_humidity_state *humid_st; > struct iio_chan_spec *humid_chans; > - struct hid_sensor_hub_device *hsdev = dev_get_platdata(&pdev->dev); > int ret; > > indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*humid_st)); > @@ -233,42 +234,20 @@ static int hid_humidity_probe(struct platform_device *pdev) > > atomic_set(&humid_st->common_attributes.data_ready, 0); > > - ret = hid_sensor_setup_trigger(indio_dev, name, > - &humid_st->common_attributes); > + ret = devm_hid_sensor_setup_trigger(dev, indio_dev, name, > + &humid_st->common_attributes); > if (ret) > return ret; > > platform_set_drvdata(pdev, indio_dev); > > humidity_callbacks.pdev = pdev; > - ret = sensor_hub_register_callback(hsdev, HID_USAGE_SENSOR_HUMIDITY, > - &humidity_callbacks); > + ret = devm_sensor_hub_register_callback(dev, hsdev, HID_USAGE_SENSOR_HUMIDITY, > + &humidity_callbacks); > if (ret) > - goto error_remove_trigger; > - > - ret = iio_device_register(indio_dev); > - if (ret) > - goto error_remove_callback; > - > - return ret; > - > -error_remove_callback: > - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_HUMIDITY); > -error_remove_trigger: > - hid_sensor_remove_trigger(&humid_st->common_attributes); > - return ret; > -} > - > -/* Function to deinitialize the processing for usage id */ > -static void hid_humidity_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 hid_humidity_state *humid_st = iio_priv(indio_dev); > + return ret; This made me wonder what was different as we didn't have a random ret on it's own in the other patch. Seems we have inconsistency across the drivers on what we print on and what we don't. If you do cleanup up the error prints either in this series or a follow up, nice to make them consistent - either adding messages or dropping them may make sense - I haven't thought much about it! Jonathan > > - iio_device_unregister(indio_dev); > - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_HUMIDITY); > - hid_sensor_remove_trigger(&humid_st->common_attributes); > + return devm_iio_device_register(dev, indio_dev); > } > > static const struct platform_device_id hid_humidity_ids[] = { > @@ -287,7 +266,6 @@ static struct platform_driver hid_humidity_platform_driver = { > .pm = &hid_sensor_pm_ops, > }, > .probe = hid_humidity_probe, > - .remove = hid_humidity_remove, > }; > module_platform_driver(hid_humidity_platform_driver); > >