diff mbox series

[4/6] media: ivsc: csi: Clean up parsing firmware and setting up async notifier

Message ID 20231026081346.958238-5-sakari.ailus@linux.intel.com
State Accepted
Commit 623017a4bb042777edf65bb8ea233ce5f06e0760
Headers show
Series IVSC CSI fwnode parsing fixes and cleanups | expand

Commit Message

Sakari Ailus Oct. 26, 2023, 8:13 a.m. UTC
Set up async notifier right after obtaining the local endpoint. This makes
error handling straightforward.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Wentong Wu <wentong.wu@intel.com>
---
 drivers/media/pci/intel/ivsc/mei_csi.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/drivers/media/pci/intel/ivsc/mei_csi.c b/drivers/media/pci/intel/ivsc/mei_csi.c
index cd0dcbbb35df..c19c944f613b 100644
--- a/drivers/media/pci/intel/ivsc/mei_csi.c
+++ b/drivers/media/pci/intel/ivsc/mei_csi.c
@@ -654,21 +654,20 @@  static int mei_csi_parse_firmware(struct mei_csi *csi)
 		return -EINVAL;
 	}
 
+	v4l2_async_subdev_nf_init(&csi->notifier, &csi->subdev);
+	csi->notifier.ops = &mei_csi_notify_ops;
+
 	ret = v4l2_fwnode_endpoint_parse(ep, &v4l2_ep);
 	if (ret) {
 		dev_err(dev, "could not parse v4l2 endpoint\n");
-		fwnode_handle_put(ep);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto out_nf_cleanup;
 	}
 
 	csi->nr_of_lanes = v4l2_ep.bus.mipi_csi2.num_data_lanes;
 
-	v4l2_async_subdev_nf_init(&csi->notifier, &csi->subdev);
-	csi->notifier.ops = &mei_csi_notify_ops;
-
 	asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep,
 					      struct v4l2_async_connection);
-	fwnode_handle_put(ep);
 	if (IS_ERR(asd)) {
 		ret = PTR_ERR(asd);
 		goto out_nf_cleanup;
@@ -678,10 +677,13 @@  static int mei_csi_parse_firmware(struct mei_csi *csi)
 	if (ret)
 		goto out_nf_cleanup;
 
+	fwnode_handle_put(ep);
+
 	return 0;
 
 out_nf_cleanup:
 	v4l2_async_nf_cleanup(&csi->notifier);
+	fwnode_handle_put(ep);
 
 	return ret;
 }