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 <redacted>
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
drivers/media/platform/qcom/camss/camss-csid.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c
index e6835b92695b..32f82e471bae 100644
--- a/drivers/media/platform/qcom/camss/camss-csid.c
+++ b/drivers/media/platform/qcom/camss/camss-csid.c
@@ -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);
}
--
2.33.0