On Sat, Nov 14, 2015 at 10:16:33PM +0100, Pavel Machek wrote:
HiOn Sat 2015-11-14 18:49:40, Mark Brown wrote:
On Sat, Nov 14, 2015 at 06:59:16PM +0100, Pavel Machek wrote:
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.
I guess Charles Keepax should be listed there?
Possibly, up to them.
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?
Do you have an example (filename, linenumber) of sound driver that gets this right?
I'm not aware of any drivers that get this wrong.
I'm not sure how I can be any clearer that supply names are namespaced by client device and that as a result fiddling around with the supply name is not going to help anything.
Well, you are saying that pretty clearly, but sound driver I seen assumes names are global, and /sys interface assumed the names are global. Give me an example I can look at and I should be able to figure it out... You are clear, but the kernel code seems to disagree with you.
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?