• Enric Balletbo i Serra's avatar
    power: supply: add input power and voltage limit properties · a4496d52
    Enric Balletbo i Serra authored
    For thermal management strategy you might be interested on limit the
    input power for a power supply. We already have current limit but
    basically what we probably want is to limit power. So, introduce the
    input_power_limit property.
    
    Although the common use case is limit the input power, in some
    specific cases it is the voltage that is problematic (i.e some regulators
    have different efficiencies at higher voltage resulting in more heat).
    So introduce also the input_voltage_limit property.
    
    This happens in one Chromebook and is used on the Pixel C's thermal
    management strategy to effectively limit the input power to 5V 3A when
    the screen is on. When the screen is on, the display, the CPU, and the GPU
    all contribute more heat to the system than while the screen is off, and
    we made a tradeoff to throttle the charger in order to give more of the
    thermal budget to those other components.
    
    So there's nothing fundamentally broken about the hardware that would
    cause the Pixel C to malfunction if we were charging at 9V or 12V instead
    of 5V when the screen is on, i.e. if userspace doesn't change this.
    
    What would happen is that you wouldn't meet Google's skin temperature
    targets on the system if the charger was allowed to run at 9V or 12V with
    the screen on.
    
    For folks hacking on Pixel Cs (which is now outside of Google's official
    support window for Android) and customizing their own kernel and userspace
    this would be acceptable, but we wanted to expose this feature in the
    power supply properties because the feature does exist in the Emedded
    Controller firmware of the Pixel C and all of Google's Chromebooks with
    USB-C made since 2015 in case someone running an up to date kernel wanted
    to limit the charging power for thermal or other reasons.
    
    This patch exposes a new property, similar to input current limit, to
    re-configure the maximum voltage from the external supply at runtime
    based on system-level knowledge or user input.
    Signed-off-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
    Reviewed-by: default avatarGuenter Roeck <groeck@chromium.org>
    Acked-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
    Reviewed-by: default avatarBenson Leung <bleung@chromium.org>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    a4496d52
sysfs-class-power 21.3 KB