From: "Heiko Stübner" <heiko@sntech.de> To: Jonathan Cameron <jic23@kernel.org>, Simon Xue <xxm@rock-chips.com> Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, robh+dt@kernel.org, Johan Jonker <jbx6244@gmail.com>, Lars-Peter Clausen <lars@metafoo.de>, Peter Meerwald-Stadler <pmeerw@pmeerw.net>, linux-iio@vger.kernel.org, David Wu <david.wu@rock-chips.com>, Simon Xue <xxm@rock-chips.com> Subject: Re: [PATCH v2] iio: adc: rockchip_saradc: add voltage notifier so get referenced voltage once at probe Date: Fri, 06 Aug 2021 13:06:23 +0200 [thread overview] Message-ID: <5442190.6fTUFtlzNn@diego> (raw) In-Reply-To: <20210806105524.231838-1-xxm@rock-chips.com> Am Freitag, 6. August 2021, 12:55:24 CEST schrieb Simon Xue: > From: David Wu <david.wu@rock-chips.com> > > Add voltage notifier, no need to query regulator voltage for > every saradc read, just get regulator voltage once at probe. > > Signed-off-by: Simon Xue <xxm@rock-chips.com> > Signed-off-by: David Wu <david.wu@rock-chips.com> > Reviewed-by: Heiko Stuebner <heiko@sntech.de> patch looks great to me now :-) Thanks Heiko > --- > drivers/iio/adc/rockchip_saradc.c | 47 ++++++++++++++++++++++++++----- > 1 file changed, 40 insertions(+), 7 deletions(-) > > diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c > index f3eb8d2e50dc..295da1ad6edb 100644 > --- a/drivers/iio/adc/rockchip_saradc.c > +++ b/drivers/iio/adc/rockchip_saradc.c > @@ -49,10 +49,12 @@ struct rockchip_saradc { > struct clk *clk; > struct completion completion; > struct regulator *vref; > + int uv_vref; > struct reset_control *reset; > const struct rockchip_saradc_data *data; > u16 last_val; > const struct iio_chan_spec *last_chan; > + struct notifier_block nb; > }; > > static void rockchip_saradc_power_down(struct rockchip_saradc *info) > @@ -105,13 +107,7 @@ static int rockchip_saradc_read_raw(struct iio_dev *indio_dev, > mutex_unlock(&indio_dev->mlock); > return IIO_VAL_INT; > case IIO_CHAN_INFO_SCALE: > - ret = regulator_get_voltage(info->vref); > - if (ret < 0) { > - dev_err(&indio_dev->dev, "failed to get voltage\n"); > - return ret; > - } > - > - *val = ret / 1000; > + *val = info->uv_vref / 1000; > *val2 = chan->scan_type.realbits; > return IIO_VAL_FRACTIONAL_LOG2; > default: > @@ -298,6 +294,26 @@ static irqreturn_t rockchip_saradc_trigger_handler(int irq, void *p) > return IRQ_HANDLED; > } > > +static int rockchip_saradc_volt_notify(struct notifier_block *nb, > + unsigned long event, > + void *data) > +{ > + struct rockchip_saradc *info = > + container_of(nb, struct rockchip_saradc, nb); > + > + if (event & REGULATOR_EVENT_VOLTAGE_CHANGE) > + info->uv_vref = (unsigned long)data; > + > + return NOTIFY_OK; > +} > + > +static void rockchip_saradc_regulator_action(void *data) > +{ > + struct rockchip_saradc *info = data; > + > + regulator_unregister_notifier(info->vref, &info->nb); > +} > + > static int rockchip_saradc_probe(struct platform_device *pdev) > { > struct rockchip_saradc *info = NULL; > @@ -410,6 +426,13 @@ static int rockchip_saradc_probe(struct platform_device *pdev) > return ret; > } > > + info->uv_vref = regulator_get_voltage(info->vref); > + if (info->uv_vref < 0) { > + dev_err(&pdev->dev, "failed to get voltage\n"); > + ret = info->uv_vref; > + return ret; > + } > + > ret = clk_prepare_enable(info->pclk); > if (ret < 0) { > dev_err(&pdev->dev, "failed to enable pclk\n"); > @@ -450,6 +473,16 @@ static int rockchip_saradc_probe(struct platform_device *pdev) > if (ret) > return ret; > > + info->nb.notifier_call = rockchip_saradc_volt_notify; > + ret = regulator_register_notifier(info->vref, &info->nb); > + if (ret) > + return ret; > + > + ret = devm_add_action_or_reset(&pdev->dev, > + rockchip_saradc_regulator_action, info); > + if (ret) > + return ret; > + > return devm_iio_device_register(&pdev->dev, indio_dev); > } > >
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de> To: Jonathan Cameron <jic23@kernel.org>, Simon Xue <xxm@rock-chips.com> Cc: linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, robh+dt@kernel.org, Johan Jonker <jbx6244@gmail.com>, Lars-Peter Clausen <lars@metafoo.de>, Peter Meerwald-Stadler <pmeerw@pmeerw.net>, linux-iio@vger.kernel.org, David Wu <david.wu@rock-chips.com>, Simon Xue <xxm@rock-chips.com> Subject: Re: [PATCH v2] iio: adc: rockchip_saradc: add voltage notifier so get referenced voltage once at probe Date: Fri, 06 Aug 2021 13:06:23 +0200 [thread overview] Message-ID: <5442190.6fTUFtlzNn@diego> (raw) In-Reply-To: <20210806105524.231838-1-xxm@rock-chips.com> Am Freitag, 6. August 2021, 12:55:24 CEST schrieb Simon Xue: > From: David Wu <david.wu@rock-chips.com> > > Add voltage notifier, no need to query regulator voltage for > every saradc read, just get regulator voltage once at probe. > > Signed-off-by: Simon Xue <xxm@rock-chips.com> > Signed-off-by: David Wu <david.wu@rock-chips.com> > Reviewed-by: Heiko Stuebner <heiko@sntech.de> patch looks great to me now :-) Thanks Heiko > --- > drivers/iio/adc/rockchip_saradc.c | 47 ++++++++++++++++++++++++++----- > 1 file changed, 40 insertions(+), 7 deletions(-) > > diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c > index f3eb8d2e50dc..295da1ad6edb 100644 > --- a/drivers/iio/adc/rockchip_saradc.c > +++ b/drivers/iio/adc/rockchip_saradc.c > @@ -49,10 +49,12 @@ struct rockchip_saradc { > struct clk *clk; > struct completion completion; > struct regulator *vref; > + int uv_vref; > struct reset_control *reset; > const struct rockchip_saradc_data *data; > u16 last_val; > const struct iio_chan_spec *last_chan; > + struct notifier_block nb; > }; > > static void rockchip_saradc_power_down(struct rockchip_saradc *info) > @@ -105,13 +107,7 @@ static int rockchip_saradc_read_raw(struct iio_dev *indio_dev, > mutex_unlock(&indio_dev->mlock); > return IIO_VAL_INT; > case IIO_CHAN_INFO_SCALE: > - ret = regulator_get_voltage(info->vref); > - if (ret < 0) { > - dev_err(&indio_dev->dev, "failed to get voltage\n"); > - return ret; > - } > - > - *val = ret / 1000; > + *val = info->uv_vref / 1000; > *val2 = chan->scan_type.realbits; > return IIO_VAL_FRACTIONAL_LOG2; > default: > @@ -298,6 +294,26 @@ static irqreturn_t rockchip_saradc_trigger_handler(int irq, void *p) > return IRQ_HANDLED; > } > > +static int rockchip_saradc_volt_notify(struct notifier_block *nb, > + unsigned long event, > + void *data) > +{ > + struct rockchip_saradc *info = > + container_of(nb, struct rockchip_saradc, nb); > + > + if (event & REGULATOR_EVENT_VOLTAGE_CHANGE) > + info->uv_vref = (unsigned long)data; > + > + return NOTIFY_OK; > +} > + > +static void rockchip_saradc_regulator_action(void *data) > +{ > + struct rockchip_saradc *info = data; > + > + regulator_unregister_notifier(info->vref, &info->nb); > +} > + > static int rockchip_saradc_probe(struct platform_device *pdev) > { > struct rockchip_saradc *info = NULL; > @@ -410,6 +426,13 @@ static int rockchip_saradc_probe(struct platform_device *pdev) > return ret; > } > > + info->uv_vref = regulator_get_voltage(info->vref); > + if (info->uv_vref < 0) { > + dev_err(&pdev->dev, "failed to get voltage\n"); > + ret = info->uv_vref; > + return ret; > + } > + > ret = clk_prepare_enable(info->pclk); > if (ret < 0) { > dev_err(&pdev->dev, "failed to enable pclk\n"); > @@ -450,6 +473,16 @@ static int rockchip_saradc_probe(struct platform_device *pdev) > if (ret) > return ret; > > + info->nb.notifier_call = rockchip_saradc_volt_notify; > + ret = regulator_register_notifier(info->vref, &info->nb); > + if (ret) > + return ret; > + > + ret = devm_add_action_or_reset(&pdev->dev, > + rockchip_saradc_regulator_action, info); > + if (ret) > + return ret; > + > return devm_iio_device_register(&pdev->dev, indio_dev); > } > > _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2021-08-06 11:06 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-06 10:55 [PATCH v2] iio: adc: rockchip_saradc: add voltage notifier so get referenced voltage once at probe Simon Xue 2021-08-06 10:55 ` Simon Xue 2021-08-06 11:06 ` Heiko Stübner [this message] 2021-08-06 11:06 ` Heiko Stübner 2021-08-07 10:36 ` Andy Shevchenko 2021-08-07 10:36 ` Andy Shevchenko 2021-08-08 16:48 ` Jonathan Cameron 2021-08-08 16:48 ` Jonathan Cameron
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5442190.6fTUFtlzNn@diego \ --to=heiko@sntech.de \ --cc=david.wu@rock-chips.com \ --cc=devicetree@vger.kernel.org \ --cc=jbx6244@gmail.com \ --cc=jic23@kernel.org \ --cc=lars@metafoo.de \ --cc=linux-iio@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=pmeerw@pmeerw.net \ --cc=robh+dt@kernel.org \ --cc=xxm@rock-chips.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.