On 31-07-17, 09:44, Viresh Kumar wrote: > On 29-07-17, 10:24, Ulf Hansson wrote: > > Let's invent a new genpd flag, GENPD_FLAG_PERF_STATE! > > > > The creator of the genpd then needs to set this before calling > > pm_genpd_init(). Similar as we are dealing with GENPD_FLAG_PM_CLK. > > > > The requirement for GENPD_FLAG_PERF_STATES, is to have the > > ->get_performance_state() assigned. This shall be verified during > > pm_genpd_init(). > > > > The pm_genpd_has_performance_state() then only need to return true, in > > cases the device's genpd has GENPD_FLAG_PERF_STATE set - else false. > > > > Regarding ->set_performance_state(), let's just make it optional - and > > when trying to set a new performance state, just walk the genpd > > hierarchy, from bottom to up, then invoke the callback when it's > > assigned. > > Sounds good.
Actually, I don't think we need this flag at all. The presence of the get_performance_state() callback itself can be used as a flag here instead of defining a new one. As with both, your above solution and my solution, we pretty much don't check presence of set_performance_state() callbacks in the master hierarchy. If its present, we call it, else nothing happens. -- viresh