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);
>  
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.