[PATCH v5 10/13] iio: orientation: hid-sensor-incl-3d: convert probe and teardown to devm-managed resources
Sanjay Chitroda via B4 Relay <[email protected]> Thu, 06 Aug 2026 17:55:56 +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-10-f1f92c1d830f@gmail.com> |
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/orientation/hid-sensor-incl-3d.c | 42 ++++++---------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/drivers/iio/orientation/hid-sensor-incl-3d.c b/drivers/iio/orientation/hid-sensor-incl-3d.c index 435e70557721..b5f70732d035 100644 --- a/drivers/iio/orientation/hid-sensor-incl-3d.c +++ b/drivers/iio/orientation/hid-sensor-incl-3d.c @@ -293,7 +293,8 @@ static int incl_3d_parse_report(struct platform_device *pdev, /* Function to initialize the processing for usage id */ static int hid_incl_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; static char *name = "incli_3d"; struct iio_dev *indio_dev; @@ -343,8 +344,8 @@ static int hid_incl_3d_probe(struct platform_device *pdev) atomic_set(&incl_state->common_attributes.data_ready, 0); - ret = hid_sensor_setup_trigger(indio_dev, name, - &incl_state->common_attributes); + ret = devm_hid_sensor_setup_trigger(dev, indio_dev, name, + &incl_state->common_attributes); if (ret) { dev_err(&pdev->dev, "trigger setup failed\n"); return ret; @@ -353,39 +354,15 @@ static int hid_incl_3d_probe(struct platform_device *pdev) incl_state->callbacks.send_event = incl_3d_proc_event; incl_state->callbacks.capture_sample = incl_3d_capture_sample; incl_state->callbacks.pdev = pdev; - ret = sensor_hub_register_callback(hsdev, - HID_USAGE_SENSOR_INCLINOMETER_3D, - &incl_state->callbacks); + ret = devm_sensor_hub_register_callback(dev, hsdev, + HID_USAGE_SENSOR_INCLINOMETER_3D, + &incl_state->callbacks); if (ret) { dev_err(&pdev->dev, "callback reg failed\n"); - goto error_remove_trigger; - } - - ret = iio_device_register(indio_dev); - if (ret) { - dev_err(&pdev->dev, "device register failed\n"); - goto error_remove_callback; + return ret; } - return 0; - -error_remove_callback: - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_INCLINOMETER_3D); -error_remove_trigger: - hid_sensor_remove_trigger(&incl_state->common_attributes); - return ret; -} - -/* Function to deinitialize the processing for usage id */ -static void hid_incl_3d_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 incl_3d_state *incl_state = iio_priv(indio_dev); - - iio_device_unregister(indio_dev); - sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_INCLINOMETER_3D); - hid_sensor_remove_trigger(&incl_state->common_attributes); + return devm_iio_device_register(dev, indio_dev); } static const struct platform_device_id hid_incl_3d_ids[] = { @@ -404,7 +381,6 @@ static struct platform_driver hid_incl_3d_platform_driver = { .pm = &hid_sensor_pm_ops, }, .probe = hid_incl_3d_probe, - .remove = hid_incl_3d_remove, }; module_platform_driver(hid_incl_3d_platform_driver); -- 2.34.1