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@xxxxxxxxx/ > Gesendet: Dienstag, 24. Mai 2022 um 10:53 Uhr > Von: "Ahmad Fatoum" <a.fatoum@xxxxxxxxxxxxxx> > An: "Frank Wunderlich" <frank-w@xxxxxxxxxxxxxxx>, "Sascha Hauer" <sha@xxxxxxxxxxxxxx> > Cc: barebox@xxxxxxxxxxxxxxxxxxx > 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@xxxxxxxxxxxxxx> > >> 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 | > _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox