media: camss: Apply vfe_get/vfe_put fix to SDM845
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Wed, 22 Dec 2021 00:37:51 +0000 (01:37 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 23 Jan 2022 20:18:41 +0000 (21:18 +0100)
Similar to the SM8250 the CSID relies on the VFE to be clocked prior to
taking the CSID out of reset.

Apply the same fixup to SDM845 as SM8250.

Suggested-by: Robert Foss <robert.foss@linaro.org>
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Robert Foss <robert.foss@linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/qcom/camss/camss-csid.c

index e6835b92695b62fbe108e489e9a0b90266e5d923..32f82e471bae1495fb856512afd90f7b7bbc7ebe 100644 (file)
@@ -159,10 +159,11 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
        struct camss *camss = csid->camss;
        struct device *dev = camss->dev;
        struct vfe_device *vfe = &camss->vfe[csid->id];
+       u32 version = camss->version;
        int ret;
 
        if (on) {
-               if (camss->version == CAMSS_8250) {
+               if (version == CAMSS_8250 || version == CAMSS_845) {
                        ret = vfe_get(vfe);
                        if (ret < 0)
                                return ret;
@@ -212,7 +213,7 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
                camss_disable_clocks(csid->nclocks, csid->clock);
                ret = csid->vdda ? regulator_disable(csid->vdda) : 0;
                pm_runtime_put_sync(dev);
-               if (camss->version == CAMSS_8250)
+               if (version == CAMSS_8250 || version == CAMSS_845)
                        vfe_put(vfe);
        }