On Wed, May 27, 2020 at 10:56:07PM +0200, Stephan Gerhold wrote: > > If the CPR driver is not changed, which I doubt, you will simply change > > the device tree to remove the cpu-supply regulator and move it into the > > new CPR DT node. > > > > Old device trees will still use your DVFS solution, new device > > trees will use the CPR DT node and will use the AVS solution. > > > > I think my concern is essentially that I would duplicate the MEMACC code > into a new driver utilizing .set_opp() - and to keep backwards > compatibility we would need to keep that duplication forever. The cleanest solution is probably to create a new memacc platform device driver, and make the new code use that, and refactor CPR to use the same. > > The MEMACC scaling isn't all that complicated, but overall I would > prefer to avoid introducing duplication in the first place. > > Also: If full CPR ever happens we would be basically back > to one part of the current discussion: specifying two "required-opps" > MX and CPR (= APC + MEMACC) would result in the wrong order > when scaling up/down. > > But maybe I just worry too much? I guess that whoever implements CPR on msm8916 will either call dev_pm_genpd_set_performance_state() on MX directly from cpr_scale_voltage() or perhaps change OPP core so that it runs the required-opps in reverse order when scaling down, like you previously suggested. Please don't take my suggestions as the only way forward though. Hopefully I provided more clarity than confusion. Will step back so that someone else has a chance to chime in :) Kind regards, Niklas