Hi Peter, Peter Cai <pe...@typeblog.net> 于2022年2月5日周六 21:49写道: > > Mirroring commit 97ab802aa36f ("adc: meson-saradc: add support for > getting reference voltage value") for meson-saradc, this adds support > for getting the "vref-supply" regulator and register it as the ADC's > reference voltage regulator, so clients can translate sampled ADC values > to voltage. > > Signed-off-by: Peter Cai <pe...@typeblog.net> > Reviewed-by: John Keeping <j...@metanate.com> > Tested-by: John Keeping <j...@metanate.com> > Cc: Simon Glass <s...@chromium.org> > Cc: Philipp Tomsich <philipp.toms...@vrull.eu> > Cc: Kever Yang <kever.y...@rock-chips.com>
Reviewed-by: Kever Yang <kever.y...@rock-chips.com> Thanks, - Kever > --- > Changes in v2: > - Reordered local variables in `rockchip_saradc_probe`. > --- > drivers/adc/rockchip-saradc.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/adc/rockchip-saradc.c b/drivers/adc/rockchip-saradc.c > index e464d33f2267..4007188133c8 100644 > --- a/drivers/adc/rockchip-saradc.c > +++ b/drivers/adc/rockchip-saradc.c > @@ -13,6 +13,7 @@ > #include <asm/io.h> > #include <linux/bitops.h> > #include <linux/err.h> > +#include <power/regulator.h> > > #define SARADC_CTRL_CHN_MASK GENMASK(2, 0) > #define SARADC_CTRL_POWER_CTRL BIT(3) > @@ -100,8 +101,11 @@ int rockchip_saradc_stop(struct udevice *dev) > > int rockchip_saradc_probe(struct udevice *dev) > { > + struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev); > struct rockchip_saradc_priv *priv = dev_get_priv(dev); > + struct udevice *vref; > struct clk clk; > + int vref_uv; > int ret; > > ret = clk_get_by_index(dev, 0, &clk); > @@ -114,6 +118,23 @@ int rockchip_saradc_probe(struct udevice *dev) > > priv->active_channel = -1; > > + ret = device_get_supply_regulator(dev, "vref-supply", &vref); > + if (ret) { > + printf("can't get vref-supply: %d\n", ret); > + return ret; > + } > + > + vref_uv = regulator_get_value(vref); > + if (vref_uv < 0) { > + printf("can't get vref-supply value: %d\n", vref_uv); > + return vref_uv; > + } > + > + /* VDD supplied by common vref pin */ > + uc_pdata->vdd_supply = vref; > + uc_pdata->vdd_microvolts = vref_uv; > + uc_pdata->vss_microvolts = 0; > + > return 0; > } > > -- > 2.35.1 >