Quoting Rajendra Nayak (2018-12-12 01:21:27) > The RPMh power domain driver aggregates the corner votes from various > consumers for the ARC resources and communicates it to RPMh. > > With RPMh we use 2 different numbering space for corners, one used > by the clients to express their performance needs, and another used > to communicate to RPMh hardware. > > The clients express their performance requirements using a sparse > numbering space which are mapped to meaningful levels like RET, SVS, > NOMINAL, TURBO etc which then get mapped to another number space > between 0 and 15 which is communicated to RPMh. The sparse number space, > also referred to as vlvl is mapped to the continuous number space of 0 > to 15, also referred to as hlvl, using command DB. > > Some power domain clients could request a performance state only while > the CPU is active, while some others could request for a certain > performance state all the time regardless of the state of the CPU. > We handle this by internally aggregating the votes from both type of > clients and then send the aggregated votes to RPMh. > > There are also 3 different types of votes that are comunicated to RPMh > for every resource. > 1. ACTIVE_ONLY: > This specifies the requirement for the resource when the CPU is > active > 2. SLEEP: > This specifies the requirement for the resource when the CPU is > going to sleep > 3. WAKE_ONLY: > This specifies the requirement for the resource when the CPU is > coming out of sleep to active state > > We add data for all power domains on sdm845 SoC as part of the patch. > The driver can be extended to support other SoCs which support RPMh > > Signed-off-by: Rajendra Nayak <rnayak@xxxxxxxxxxxxxx> > Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > --- Reviewed-by: Stephen Boyd <swboyd@xxxxxxxxxxxx>