lkml.org 
[lkml]   [2021]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2 29/48] soc/tegra: pmc: Link domains to the parent Core domain
    - trimmed cc-list

    On Thu, 17 Dec 2020 at 19:07, Dmitry Osipenko <digetx@gmail.com> wrote:
    >
    > The Core domain is a parent of PMC power domains, hence PMC domains
    > should be set up as a sub-domains of the parent (Core) domain if
    > "power-domains" phandle presents in a device-tree node of PMC domain.
    >
    > This allows to propagate GENPD performance changes to the parent Core
    > domain if performance change is applied to PMC domain.
    >
    > Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    > ---
    > drivers/soc/tegra/pmc.c | 19 +++++++++++++++++++
    > 1 file changed, 19 insertions(+)
    >
    > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
    > index 4f96dc7745c4..1a659d1c06d7 100644
    > --- a/drivers/soc/tegra/pmc.c
    > +++ b/drivers/soc/tegra/pmc.c
    > @@ -1236,6 +1236,7 @@ static int tegra_powergate_add(struct tegra_pmc *pmc, struct device_node *np)
    > static int tegra_powergate_init(struct tegra_pmc *pmc,
    > struct device_node *parent)
    > {
    > + struct of_phandle_args child_args, parent_args;
    > struct device_node *np, *child;
    > int err = 0;
    >
    > @@ -1249,6 +1250,24 @@ static int tegra_powergate_init(struct tegra_pmc *pmc,
    > of_node_put(child);
    > break;
    > }
    > +
    > + if (of_parse_phandle_with_args(child, "power-domains",
    > + "#power-domain-cells",
    > + 0, &parent_args))
    > + continue;
    > +
    > + child_args.np = child;
    > + child_args.args_count = 0;
    > +
    > + err = of_genpd_add_subdomain(&parent_args, &child_args);
    > + of_node_put(parent_args.np);
    > + if (err) {
    > + if (err == -ENOENT)
    > + err = -EPROBE_DEFER;

    Okay. So this special error treatment is needed because
    of_genpd_add_subdomain may return -ENOENT, in case the providers for
    the parent-domain and child-domain haven't been registered yet.

    I suggest we move this into of_genpd_add_subdomain() instead, thus
    letting it return -EPROBE_DEFER when there are parent/child nodes
    specified in DT, but the providers are lacking.

    > +
    > + of_node_put(child);
    > + break;
    > + }
    > }
    >
    > of_node_put(np);
    > --
    > 2.29.2
    >

    Kind regards
    Uffe

    \
     
     \ /
      Last update: 2021-01-12 14:33    [W:4.216 / U:0.720 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site