I think the EC retains full control over the power limits:
- Power limits are set by
update_soc_power_limit
- It mentions
manual_ctl
, however… manual_ctl
is only toggled bycmd_cpupower
, and…cmd_cpupower
is aCONSOLE_COMMAND
, which is only available via serial/thecros_ec
console device (which is not exposed to the AP, I believe)
I believe update_soc_power_limit
is called on every battery charge tick or AC state change. Perhaps if the machine is fully charged, it won’t override those values? Hmm.
EDIT: That having been said… the code doesn’t update PL2/4 unless it thinks it has to (it is unaware of the value set by the kernel), and it only updates PL1 when it updates PL2/4. I just set a different value for PL1 and it stuck across a few charge state transitions.