• Stephan Gerhold's avatar
    cpufreq: qcom-nvmem: Enable virtual power domain devices · 5cbff51e
    Stephan Gerhold authored
    The genpd core caches performance state votes from devices that are
    runtime suspended as of commit 3c5a2722 ("PM: domains: Improve
    runtime PM performance state handling"). They get applied once the
    device becomes active again.
    
    To attach the power domains needed by qcom-cpufreq-nvmem the OPP core
    calls genpd_dev_pm_attach_by_id(). This results in "virtual" dummy
    devices that use runtime PM only to control the enable and performance
    state for the attached power domain.
    
    However, at the moment nothing ever resumes the virtual devices created
    for qcom-cpufreq-nvmem. They remain permanently runtime suspended. This
    means that performance state votes made during cpufreq scaling get
    always cached and never applied to the hardware.
    
    Fix this by enabling the devices after attaching them.
    
    Without this fix performance states votes are silently ignored, and the
    CPU/CPR voltage is never adjusted. This has been broken since 5.14 but
    for some reason no one noticed this on QCS404 so far.
    
    Fixes: 1cb8339c ("cpufreq: qcom: Add support for qcs404 on nvmem driver")
    Signed-off-by: default avatarStephan Gerhold <stephan.gerhold@kernkonzept.com>
    Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    5cbff51e
qcom-cpufreq-nvmem.c 15.5 KB