On 13 March 2017 at 16:09, Viresh Kumar <viresh.ku...@linaro.org> wrote: > On 10-03-17, 12:38, Kevin Hilman wrote: >> Why limit it to just voltage levels. >> >> As I suggested earlier, I think this should use OPPs. Remember that a >> PM domain is not limited to a hardware power domain, but is just a >> grouping mechanism for devices that share some PM properties. As >> mentioned by Geert, this can also be a clock domain, where frequencies >> would make sense as well. One can imagine using this type of PM domain >> to manage an interconnect/bus which has scalable voltage/frequencies as >> well. > > Okay, I tried to do that change today and am blocked a bit right now. > > The OPP core and all of its APIs/interfaces have dependency on the > "struct device" for their working. It gets the of_node from it, stores > the device pointer to manage cases where multiple devices share OPP > table, uses it to get clk and regulators. > > But the "genpd" structure doesn't have a 'struct device' associated > with it. How should I make both of them work together? > > I tried to create separate helpers that don't accept 'dev', but that > is also not good. Just too much redundant code everywhere. > > Would creating a 'dev' structure within 'generic_pm_domain' be > acceptable? Or should we ask the domain-drivers to call something like > of_genpd_parse_idle_states(), with a fake 'dev' structure which has > its of_node initialized? Or maybe move that hack within the OPP-core > API, which can create a dev structure at runtime for the genpd passed > to it and get the OPP table out?
Ulf/Kevin, I am currently blocked on this decision. Will it be possible for you guys to suggest something, so that I can send V3 soon ? The most ideal solution seems to be adding a device structure in genpd structure and add a genpd bus as well probably. -- viresh