media: qcom: camss: Fix pm_domain_on sequence in probe
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Wed, 30 Aug 2023 15:16:06 +0000 (16:16 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 27 Sep 2023 07:39:53 +0000 (09:39 +0200)
We need to make sure camss_configure_pd() happens before
camss_register_entities() as the vfe_get() path relies on the pointer
provided by camss_configure_pd().

Fix the ordering sequence in probe to ensure the pointers vfe_get() demands
are present by the time camss_register_entities() runs.

In order to facilitate backporting to stable kernels I've moved the
configure_pd() call pretty early on the probe() function so that
irrespective of the existence of the old error handling jump labels this
patch should still apply to -next circa Aug 2023 to v5.13 inclusive.

Fixes: 2f6f8af67203 ("media: camss: Refactor VFE power domain toggling")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/qcom/camss/camss.c

index f11dc59135a5acd83ae686b065e95b341067e95e..75991d849b5712c573ae8ab0d758b41c56ef87eb 100644 (file)
@@ -1619,6 +1619,12 @@ static int camss_probe(struct platform_device *pdev)
        if (ret < 0)
                goto err_cleanup;
 
+       ret = camss_configure_pd(camss);
+       if (ret < 0) {
+               dev_err(dev, "Failed to configure power domains: %d\n", ret);
+               goto err_cleanup;
+       }
+
        ret = camss_init_subdevices(camss);
        if (ret < 0)
                goto err_cleanup;
@@ -1678,12 +1684,6 @@ static int camss_probe(struct platform_device *pdev)
                }
        }
 
-       ret = camss_configure_pd(camss);
-       if (ret < 0) {
-               dev_err(dev, "Failed to configure power domains: %d\n", ret);
-               return ret;
-       }
-
        pm_runtime_enable(dev);
 
        return 0;