lkml.org 
[lkml]   [2012]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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) {

    }




    \
     
     \ /
      Last update: 2012-05-19 20:21    [W:0.045 / U:30.788 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site