Re: [PATCH v5 04/13] iio: gyro: hid-sensor-gyro-3d: convert probe and teardown to devm-managed resources
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-input,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260816023634.37e4d859@jic23-huawei> |
On Thu, 06 Aug 2026 17:55:50 +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]> > --- > drivers/iio/gyro/hid-sensor-gyro-3d.c | 41 ++++++++--------------------------- Nice stats - could be even better with some error printing cleanups though. See below. I appreciate you may not want to do that in this series, but it's simple enough I wouldn't mind, even though lots of patches result. > 1 file changed, 9 insertions(+), 32 deletions(-) > > diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c > index cf049700d415..66778315e86d 100644 > --- a/drivers/iio/gyro/hid-sensor-gyro-3d.c > +++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c > @@ -264,7 +264,8 @@ static int gyro_3d_parse_report(struct platform_device *pdev, > /* Function to initialize the processing for usage id */ > static int hid_gyro_3d_probe(struct platform_device *pdev) > { > - struct hid_sensor_hub_device *hsdev = dev_get_platdata(&pdev->dev); > + struct device *dev = &pdev->dev; > + struct hid_sensor_hub_device *hsdev = dev_get_platdata(dev); > int ret = 0; > static const char *name = "gyro_3d"; > struct iio_dev *indio_dev; > @@ -311,8 +312,8 @@ static int hid_gyro_3d_probe(struct platform_device *pdev) > > atomic_set(&gyro_state->common_attributes.data_ready, 0); > > - ret = hid_sensor_setup_trigger(indio_dev, name, > - &gyro_state->common_attributes); > + ret = devm_hid_sensor_setup_trigger(dev, indio_dev, name, > + &gyro_state->common_attributes); > if (ret < 0) { > dev_err(&pdev->dev, "trigger setup failed\n"); > return ret; > @@ -321,38 +322,15 @@ static int hid_gyro_3d_probe(struct platform_device *pdev) > gyro_state->callbacks.send_event = gyro_3d_proc_event; > gyro_state->callbacks.capture_sample = gyro_3d_capture_sample; > gyro_state->callbacks.pdev = pdev; > - ret = sensor_hub_register_callback(hsdev, HID_USAGE_SENSOR_GYRO_3D, > - &gyro_state->callbacks); > + ret = devm_sensor_hub_register_callback(dev, hsdev, > + HID_USAGE_SENSOR_GYRO_3D, > + &gyro_state->callbacks); > if (ret < 0) { > dev_err(&pdev->dev, "callback reg failed\n"); Obviously makes for a larger patch set but error print cleaning up would be nice. This patch makes that easier to do as enables return dev_err_probe() in a few places where we didn't have direct returns before. There are also some prints in here that should be dropped (memory allocation failures etc). Jonathan > - goto error_remove_trigger; > - } > - iio_device_unregister(indio_dev); > - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_GYRO_3D); > - hid_sensor_remove_trigger(&gyro_state->common_attributes); > + return devm_iio_device_register(dev, indio_dev); > } > > static const struct platform_device_id hid_gyro_3d_ids[] = { > @@ -371,7 +349,6 @@ static struct platform_driver hid_gyro_3d_platform_driver = { > .pm = &hid_sensor_pm_ops, > }, > .probe = hid_gyro_3d_probe, > - .remove = hid_gyro_3d_remove, > }; > module_platform_driver(hid_gyro_3d_platform_driver); > >