Aw: Re: Re: Re: Driver load order

Frank Wunderlich frank-w at public-files.de
Tue May 24 02:13:08 PDT 2022


Hi,

as far as i looked into the linux driver and the binding-conversion [1] i think adding those fields is not enough
as the supply needs to be set from the upper values (vccX-supply) of the rk808 pmic.

in core it seems that this recursion is not implemented yet (like the check for rdev->supply)

from binding i mean this part:

vcc1-supply:  The input supply for DCDC_REG1
vcc2-supply:  The input supply for DCDC_REG2
vcc3-supply:  The input supply for DCDC_REG3
vcc4-supply:  The input supply for DCDC_REG4
vcc6-supply:  The input supply for LDO_REG1 and LDO_REG2
vcc7-supply:  The input supply for LDO_REG3 and LDO_REG7
vcc8-supply:  The input supply for SWITCH_REG1
vcc9-supply:  The input supply for LDO_REG4 and LDO_REG5
vcc10-supply: The input supply for LDO_REG6
vcc11-supply: The input supply for LDO_REG8

regards Frank

[1] https://patchwork.kernel.org/project/linux-rockchip/patch/20220519161731.1168-1-macroalpha82@gmail.com/

> Gesendet: Dienstag, 24. Mai 2022 um 10:53 Uhr
> Von: "Ahmad Fatoum" <a.fatoum at pengutronix.de>
> An: "Frank Wunderlich" <frank-w at public-files.de>, "Sascha Hauer" <sha at pengutronix.de>
> Cc: barebox at lists.infradead.org
> Betreff: Re: Aw: Re: Re: Driver load order
>
> Hello Frank,
>
> On 21.05.22 12:31, Frank Wunderlich wrote:
> > Hi,
> >
> > current state is that pmu/ldo regulators work, but not the SWITCH ones.
> >
> > these are read by linux using the supply of the regulator itself
> >
> > 	} else if (rdev->supply) {
> > 		ret = regulator_get_voltage_rdev(rdev->supply->rdev);
> >
> > tried to port this to barebox, but regulator-struct there does not have the supply member
> >
> > 	} else if (rdev->supply) {
> > 		ret = regulator_get_voltage(rdev->supply);
> >
> > so i added it here:
> >
> > +++ b/include/regulator.h
> > @@ -86,6 +86,7 @@ struct regulator_dev {
> >         struct regmap *regmap;
> >         bool boot_on;
> >         bool always_on;
> > +       struct regulator *supply;
>
> I think this should go into struct regulator_internal instead?
> (You'll need to rename the current const char *supply there).
>
> >         /* the device this regulator device belongs to */
> >         struct device_d *dev;
> >
> > but now this needs to be set somwhere...linux set this in
> >
> > set_supply(struct regulator_dev *rdev,
> > 		      struct regulator_dev *supply_rdev)
> > which is called in regulator_resolve_supply (called by _regulator_get).
>
> Ah, I missed b8074eba2a6b ("regulator: RK808: Add proper input supplies
> for rk808"). I recall now that I had ported an older version of the Linux
> driver to make porting work easier.
>
> You should probably add a supply_name member into struct regulator_desc
> and then propagate this to core, so core can request it.
>
> Cheers,
> Ahmad
>
> >
> > regards Frank
> >
> >
> >> Gesendet: Donnerstag, 19. Mai 2022 um 15:10 Uhr
> >> Von: "Sascha Hauer" <sha at pengutronix.de>
> >> I gave it a test with your rk808 driver. It just works \o/
> >>
> >> regulator_get() triggers probing of the rk808 regulator driver and
> >> returns a valid regulator.
> >>
> >> Sascha
> >
> >
>
>
> --
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
>



More information about the barebox mailing list