Hi Mark, On Mon, Oct 26, 2020 at 6:24 PM Mark Brown <broonie@xxxxxxxxxx> wrote: > > On Mon, Oct 26, 2020 at 06:18:35PM +0100, Fabien Parent wrote: > > On Mon, Oct 26, 2020 at 1:13 PM Mark Brown <broonie@xxxxxxxxxx> wrote: > > > > On Sat, Oct 24, 2020 at 10:03:03PM +0200, Fabien Parent wrote: > > > > > +Required properties: > > > > +- compatible: "mediatek,mt6392-regulator" > > > > This is no longer used by the driver, should be unneeded and therefore > > > should be removed. > > > It is not used by the driver but it will be used by the MFD driver [0] > > like this: > > static const struct mfd_cell mt6392_devs[] = { > > { > > [snip] > > }, { > > [snip] > > }, { > > .name = "mt6392-regulator", > > .of_compatible = "mediatek,mt6392-regulator" > > This is still unneeded, it's just a reflection of Linux implementation > details and should be removed. The MFD can just register the child > without supplying a compatible and things will continue to work just as > well. I'm not exactly sure how it is supposed to work. mfd_add_devices seems to register devices based on of_compatible or acpi_match from the mfd_cell. This platform does not have ACPI so I don't understand how the regulator driver would probe without this line. Anyway I tried to remove the lines below in the MFD driver and the device tree and the boot of the board failed because the regulator driver didn't probe. Any help to get me understand how it should work without this line would be helpful, thanks. regulators { - compatible = "mediatek,mt6392-regulator"; - mt6392_vproc_reg: buck-vproc { @@ -135,7 +135,6 @@ static const struct mfd_cell mt6392_devs[] = { .of_compatible = "mediatek,mt6392-keys" }, { .name = "mt6392-regulator", - .of_compatible = "mediatek,mt6392-regulator" }, {