Messages in this thread | | | Date | Sat, 19 May 2012 23:26:00 +0530 | From | Laxman Dewangan <> | Subject | Re: [PATCH] regulator: core: use correct device for device supply lookup |
| |
On Saturday 19 May 2012 11:10 PM, Mark Brown wrote: > * PGP Signed by an unknown key > > On Sat, May 19, 2012 at 10:50:54PM +0530, Laxman Dewangan wrote: > >> Am I missing anything here in understanding? > I certainly am. Please go back to square one: what's the problem you > are seeing here? Then go forward and step by step relate it to the code > change.
Sorry again for not clearing the things. Here is my connection: There is two rail V1 and V2. V2 is supplied by V1. There is some devices on V1 and V2. V1---->V2-----device-v2-1 |------------------device-v1-1
Now I make the dts as: v1_reg: v1@0 { regulator-name="v1"; ::::::::::: };
v2_reg: v2@1 { regulator-name="v2"; v2-supply=<&v1_reg>; :::::::::::::: }
Now when registering the v1, I am setting init_data->input_supply = NULL and reg_desc->supply_name = NULL; Config->of_node is the node for v1_reg; dev->of_node is NULL as it is mfd sub device driver tps65910-pmic.
So registration went fine.
When registering the V2, I am setting init_data->input_supply = NULL and reg_desc->supply_name = v2. config->of_node is node for v2_reg; dev->of_node is NULL as it is mfd sub device driver tps65910-pmic.
At the time of registration, as becasue there is valid reg_desc->supply_name and hence it tries to lookup the entry for <name>-supply i.e. v2-supply in this case for getting regulator_dev. regulator_register() { ::::::::::: if (init_data && init_data->supply_regulator) supply = init_data->supply_regulator; else if (regulator_desc->supply_name) supply = regulator_desc->supply_name;
if (supply) { struct regulator_dev *r;
r = regulator_dev_lookup(dev, supply, &ret); :::::::::::::::::::::::: }
static struct regulator_dev *regulator_dev_lookup(struct device *dev, const char *supply, int *ret) { /* first do a dt based lookup */ ----> Checked here, dev is not null but dev->of_node is null. if (dev && dev->of_node) {
------------>The issue is that I am not getting here as dev->node is null here.
node = of_get_regulator(dev, supply); if (node) {
}
| |