• Viresh Kumar's avatar
    opp: Attach genpds to devices from within OPP core · 6319aee1
    Viresh Kumar authored
    The OPP core requires the virtual device pointers to set performance
    state on behalf of the device, for the multiple power domain case. The
    genpd API (dev_pm_domain_attach_by_name()) has evolved now to support
    even the single power domain case and that lets us add common code for
    handling both the cases more efficiently.
    
    The virtual device structure returned by dev_pm_domain_attach_by_name()
    isn't normally used by the cpufreq drivers as they don't manage power
    on/off of the domains and so is only useful for the OPP core.
    
    This patch moves all the complexity into the OPP core to make the end
    drivers simple. The earlier APIs dev_pm_opp_{set|put}_genpd_virt_dev()
    are reworked into dev_pm_opp_{attach|detach}_genpd(). The new helper
    dev_pm_opp_attach_genpd() accepts a NULL terminated array of strings
    which contains names of all the genpd's to attach. It then attaches all
    the domains and saves the pointers to the virtual devices. The other
    helper undo the work done by this helper.
    Tested-by: default avatarNiklas Cassel <niklas.cassel@linaro.org>
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    6319aee1
core.c 56.3 KB