On Thu Nov 20 02:46:03 2025 +0200, Vladimir Zapolskiy wrote:
> Since a few called V4L2 functions operate with fwnode arguments the change
> from OF device nodes to fwnodes brings a simplification to the code.
> 
> The camss_parse_endpoint_node() function is called once by camss_probe(),
> and there is no use of knowing a number of asynchronously registered
> remote devices, so it makes sense to remove the related computation from
> the function.
> 
> Tested-by: Loic Poulain <[email protected]>
> Signed-off-by: Vladimir Zapolskiy <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/qcom/camss/camss.c | 49 +++++++++++++++----------------
 1 file changed, 23 insertions(+), 26 deletions(-)

---

diff --git a/drivers/media/platform/qcom/camss/camss.c 
b/drivers/media/platform/qcom/camss/camss.c
index 9122568f9b0a..8e0809202362 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -4206,16 +4206,16 @@ static const struct parent_dev_ops vfe_parent_dev_ops = 
{
 };
 
 /*
- * camss_of_parse_endpoint_node - Parse port endpoint node
- * @dev: Device
- * @node: Device node to be parsed
+ * camss_parse_endpoint_node - Parse port endpoint node
+ * @dev: CAMSS device
+ * @ep: Device endpoint to be parsed
  * @csd: Parsed data from port endpoint node
  *
  * Return 0 on success or a negative error code on failure
  */
-static int camss_of_parse_endpoint_node(struct device *dev,
-                                       struct device_node *node,
-                                       struct camss_async_subdev *csd)
+static int camss_parse_endpoint_node(struct device *dev,
+                                    struct fwnode_handle *ep,
+                                    struct camss_async_subdev *csd)
 {
        struct csiphy_lanes_cfg *lncfg = &csd->interface.csi2.lane_cfg;
        struct v4l2_mbus_config_mipi_csi2 *mipi_csi2;
@@ -4223,7 +4223,7 @@ static int camss_of_parse_endpoint_node(struct device 
*dev,
        unsigned int i;
        int ret;
 
-       ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(node), &vep);
+       ret = v4l2_fwnode_endpoint_parse(ep, &vep);
        if (ret)
                return ret;
 
@@ -4258,49 +4258,46 @@ static int camss_of_parse_endpoint_node(struct device 
*dev,
 }
 
 /*
- * camss_of_parse_ports - Parse ports node
- * @dev: Device
- * @notifier: v4l2_device notifier data
+ * camss_parse_ports - Parse ports node
+ * @dev: CAMSS device
  *
- * Return number of "port" nodes found in "ports" node
+ * Return 0 on success or a negative error code on failure
  */
-static int camss_of_parse_ports(struct camss *camss)
+static int camss_parse_ports(struct camss *camss)
 {
        struct device *dev = camss->dev;
-       struct device_node *node = NULL;
-       struct device_node *remote = NULL;
-       int ret, num_subdevs = 0;
+       struct fwnode_handle *fwnode = dev_fwnode(dev), *ep;
+       int ret;
 
-       for_each_endpoint_of_node(dev->of_node, node) {
+       fwnode_graph_for_each_endpoint(fwnode, ep) {
                struct camss_async_subdev *csd;
+               struct fwnode_handle *remote;
 
-               remote = of_graph_get_remote_port_parent(node);
+               remote = fwnode_graph_get_remote_port_parent(ep);
                if (!remote) {
                        dev_err(dev, "Cannot get remote parent\n");
                        ret = -EINVAL;
                        goto err_cleanup;
                }
 
-               csd = v4l2_async_nf_add_fwnode(&camss->notifier,
-                                              of_fwnode_handle(remote),
+               csd = v4l2_async_nf_add_fwnode(&camss->notifier, remote,
                                               struct camss_async_subdev);
-               of_node_put(remote);
+               fwnode_handle_put(remote);
                if (IS_ERR(csd)) {
                        ret = PTR_ERR(csd);
                        goto err_cleanup;
                }
 
-               ret = camss_of_parse_endpoint_node(dev, node, csd);
+               ret = camss_parse_endpoint_node(dev, ep, csd);
                if (ret < 0)
                        goto err_cleanup;
-
-               num_subdevs++;
        }
 
-       return num_subdevs;
+       return 0;
 
 err_cleanup:
-       of_node_put(node);
+       fwnode_handle_put(ep);
+
        return ret;
 }
 
@@ -4857,7 +4854,7 @@ static int camss_probe(struct platform_device *pdev)
 
        pm_runtime_enable(dev);
 
-       ret = camss_of_parse_ports(camss);
+       ret = camss_parse_ports(camss);
        if (ret < 0)
                goto err_v4l2_device_unregister;
 
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to