Hi!
Well, mfd_core.c seems to call regulator_bulk_register_supply_alias() with device that does not have dev_name initialized.
OK, that'll be the problem then - we're not mapping the supply into the individual child device but rather system wide, probably because that mapping is being done too early, before we've actually created the device.
Take a look at mfd_add_device(). Yes, we do regulator_bulk_register_supply_alias() before doing platform_device_add().
Looking at this I suspect we need to re-add the code for matching regulators on the actual struct device and do that since this is going to be very error prone.
Well, I guess I can test the patches :-).
So if you look at this just templates out some boilerplate regulator API client code which calls regulator_get() like any other client and then hooks that regulator into the audio power management.
Ok, so SND_SOC_DAPM_REGULATOR_SUPPLY() does not work, because I have two regulators, right? Is there similar macro I can use?
No? What would make you say that?
Well.. the fact that in my setup regulators are global (by mistake as you say?) and it still picks them up without warning?
Plus, I'd expect to see some kind of "struct device" argument to SND_SOC_DAPM_REGULATOR_SUPPLY(). I'm selecting supply name, but I'm not selecting on which device...
Every single sound driver gets this right, none of them assume the name is global. What makes you say that they assume names are global?
Ok, so you are saying that if I fix mfd initialization, sound will automagically switch from global regulators to device-specific regulators and things will start working?
Thanks, Pavel