On Mon, Nov 23, 2015 at 11:40:55AM -0600, Andrew F. Davis wrote:
But which of_node?
regulator_config->of_node
regulator_config->dev->of_node
The second is the only one I see getting used, the first is only
used when drivers provide their own init_data and automatic init
data getting fails.
The configuration of_node is there to override the device one if there
were some reason to do it. This should only happen in a situation where
we weren't able to use the core parsing, with modern drivers it
indicates a problematic binding so the code deliberately doesn't handle
it. Anything with a problematic binding will have generated the
init_data in driver code anyway. If we come up with a reason to extend
the interface we can do that but for now there is no need.
The same issue is present in GPIO (gpiolib.c:612), where the of_node
Line number references are complately unhelpful if you don't say what
you're looking at (for me that's a call to irq_find_mapping() which I'm
guessing isn't what you were talking about).
of_node = gpiochip->dev->of_node;
#ifdef CONFIG_OF_GPIO
/*
* If the gpiochip has an assigned OF node this takes precedence
* FIXME: get rid of this and use gpiochip->dev->of_node everywhere
*/
if (gpiochip->of_node)
of_node = gpiochip->of_node;
#endif
in the config takes precedence over the one in config->dev, the
opposite is true for regulators, this is very confusing and should be
standardized.
No, they both do the same thing.