[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAG3jFytKMSRvcmEwGn7E=CPD6MJETB1L=RRYAoNxhpNC4vm6-A@mail.gmail.com>
Date: Thu, 10 Jun 2021 10:01:38 +0200
From: Robert Foss <robert.foss@...aro.org>
To: Jonathan Marek <jonathan@...ek.ca>
Cc: MSM <linux-arm-msm@...r.kernel.org>,
Andrey Konovalov <andrey.konovalov@...aro.org>,
Todor Tomov <todor.too@...il.com>,
Andy Gross <agross@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
"open list:QUALCOMM CAMERA SUBSYSTEM DRIVER"
<linux-media@...r.kernel.org>,
open list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 09/17] media: camss: csid: allow csid to work without a regulator
Hey Jonathan,
On Wed, 9 Jun 2021 at 00:37, Jonathan Marek <jonathan@...ek.ca> wrote:
>
> At least for titan HW, CSID don't have an associated regulator. This change
> is necessary to be able to model this in the CSID resources.
>
> Signed-off-by: Jonathan Marek <jonathan@...ek.ca>
> Reviewed-by: Robert Foss <robert.foss@...aro.org>
> ---
> drivers/media/platform/qcom/camss/camss-csid.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c
> index cc11fbfdae132..528674dea06ca 100644
> --- a/drivers/media/platform/qcom/camss/camss-csid.c
> +++ b/drivers/media/platform/qcom/camss/camss-csid.c
> @@ -162,7 +162,7 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
> return ret;
> }
>
> - ret = regulator_enable(csid->vdda);
> + ret = csid->vdda ? regulator_enable(csid->vdda) : 0;
> if (ret < 0) {
> pm_runtime_put_sync(dev);
> return ret;
> @@ -170,14 +170,16 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
>
> ret = csid_set_clock_rates(csid);
> if (ret < 0) {
> - regulator_disable(csid->vdda);
> + if (csid->vdda)
> + regulator_disable(csid->vdda);
> pm_runtime_put_sync(dev);
> return ret;
> }
>
> ret = camss_enable_clocks(csid->nclocks, csid->clock, dev);
> if (ret < 0) {
> - regulator_disable(csid->vdda);
> + if (csid->vdda)
> + regulator_disable(csid->vdda);
> pm_runtime_put_sync(dev);
> return ret;
> }
> @@ -188,7 +190,8 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
> if (ret < 0) {
> disable_irq(csid->irq);
> camss_disable_clocks(csid->nclocks, csid->clock);
> - regulator_disable(csid->vdda);
> + if (csid->vdda)
> + regulator_disable(csid->vdda);
> pm_runtime_put_sync(dev);
> return ret;
> }
> @@ -197,7 +200,7 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
> } else {
> disable_irq(csid->irq);
> camss_disable_clocks(csid->nclocks, csid->clock);
> - ret = regulator_disable(csid->vdda);
> + ret = csid->vdda ? regulator_disable(csid->vdda) : 0;
> pm_runtime_put_sync(dev);
> }
>
> @@ -634,7 +637,9 @@ int msm_csid_subdev_init(struct camss *camss, struct csid_device *csid,
>
> /* Regulator */
>
> - csid->vdda = devm_regulator_get(dev, res->regulator[0]);
> + csid->vdda = NULL;
> + if (res->regulator[0])
> + csid->vdda = devm_regulator_get(dev, res->regulator[0]);
> if (IS_ERR(csid->vdda)) {
> dev_err(dev, "could not get regulator\n");
> return PTR_ERR(csid->vdda);
> --
> 2.26.1
>
This patch does not seem to apply on upstream-media/master.
Powered by blists - more mailing lists