Re: power_supply cooling interface

Pavel Machek
2023-05-12T16:48:44Z

Hi!

> I've been working on a driver for the charger found in most Snapdragon
> 845 phones (the OnePlus 6, SHIFT6mq, PocoPhone F1, etc). I wanted to
> include support for the POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT
> property.
>
> My understanding is that it exposes the current limit as a cooling
> device so that userspace (or frameworks like DTPM) can optimise for
> performance in a thermally constrained device by limiting the input
> current and thus reducing the heat generated by the charger circuitry,
> a similar idea was applied on the Pixel C:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a4496d52b3430cb3c4c16d03cdd5f4ee97ad1241
>
> However, reading through the sysfs docs for cooling devices, and
> looking at the implementation in power_supply_core.c, it seems like the
> behavior here is wrong in a few ways:
> 1. The values should scale from 0: no cooling to max_state: max
> cooling, but the power_supply docs and the only existing implementation
> (the smbb driver) just export the current_limit, such that increasing
> cur_state would increase the current limit, not decrease it.
> 2. (unsure?)The scale is completely different to most other cooling
> devices, most cooling devices don't seem to have a max state much
> beyond the double digits, but CHARGE_CONTROL_LIMIT is on the scale of
> uA, so approaches like incrementing the cooling state by 1 don't really
> work.

Did this get solved somehow?

Anyway, I am not sure mW will be useful here, as elsewhere it is mW
thermal and here it is mW from charger. Most of that energy should be
stored in battery, not converted to heat.

Best regards,
Pavel

--