• Mario Limonciello's avatar
    power: supply: Fix logic checking if system is running from battery · 95339f40
    Mario Limonciello authored
    The logic used for power_supply_is_system_supplied() counts all power
    supplies and assumes that the system is running from AC if there is
    either a non-battery power-supply reporting to be online or if no
    power-supplies exist at all.
    
    The second rule is for desktop systems, that don't have any
    battery/charger devices. These systems will incorrectly report to be
    powered from battery once a device scope power-supply is registered
    (e.g. a HID device), since these power-supplies increase the counter.
    
    Apart from HID devices, recent dGPUs provide UCSI power supplies on a
    desktop systems. The dGPU by default doesn't have anything plugged in so
    it's 'offline'. This makes power_supply_is_system_supplied() return 0
    with a count of 1 meaning all drivers that use this get a wrong judgement.
    
    To fix this case adjust the logic to also examine the scope of the power
    supply. If the power supply is deemed a device power supply, then don't
    count it.
    
    Cc: Evan Quan <Evan.Quan@amd.com>
    Suggested-by: default avatarLijo Lazar <Lijo.Lazar@amd.com>
    Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    95339f40
power_supply_core.c 45.6 KB