Re: [PATCH 7/7] ARM: dts: s5pv210: Add charger support in Aries

From: Jonathan Bakker
Date: Wed Mar 23 2022 - 13:20:11 EST




On 2022-03-23 8:31 a.m., krzk@xxxxxxxxxx wrote:
> On 23/03/2022 16:03, Jonathan Bakker wrote:
>> Add charger-manager support to Aries boards to allow safe
>> charging of the battery without the need for userspace control.
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@xxxxxxx>
>> ---
>> arch/arm/boot/dts/s5pv210-fascinate4g.dts | 162 ++++++++++++++++++++++
>> arch/arm/boot/dts/s5pv210-galaxys.dts | 144 +++++++++++++++++++
>> 2 files changed, 306 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> index 7427c84f1126..9530231b7a70 100644
>> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> @@ -57,6 +57,168 @@
>> pinctrl-0 = <&main_micbias_ena>;
>> };
>>
>> + thermal-zones {
>> + batt_thermal: batt-thermal {
>> + polling-delay-passive = <60000>; /* 60 seconds */
>
> There is no passive cooling device, so why do you need it?
>

The charger manager code needs a passive cooling device, so that's
why this is present here.

>> + polling-delay = <600000>; /* 600 seconds */
>> +
>> + thermal-sensors = <&batt_thermistor>;
>> + };
>> + };
>> +
>> + batt_thermistor: thermal-sensor-0 {
>> + compatible = "generic-adc-thermal";
>> + #thermal-sensor-cells = <0>;
>> + io-channels = <&adc 6>;
>> + io-channel-names = "sensor-channel";
>> +
>> + temperature-lookup-table = <
>> + (-20000) 1859
>> + (-19000) 1846
>> + (-18000) 1832
>> + (-17000) 1818
>> + (-16000) 1804
>> + (-15000) 1790
>> + (-14000) 1773
>> + (-13000) 1756
>> + (-12000) 1739
>> + (-11000) 1722
>> + (-10000) 1705
>> + (-9000) 1691
>> + (-8000) 1677
>> + (-7000) 1663
>> + (-6000) 1649
>> + (-5000) 1635
>> + (-4000) 1550
>> + (-3000) 1510
>> + (-2000) 1500
>> + (-1000) 1490
>> + 0 1480
>> + 1000 1470
>> + 2000 1460
>> + 3000 1450
>> + 4000 1430
>> + 5000 1420
>> + 6000 1406
>> + 7000 1386
>> + 8000 1366
>> + 9000 1346
>> + 10000 1326
>> + 11000 1302
>> + 12000 1278
>> + 13000 1254
>> + 14000 1230
>> + 15000 1206
>> + 16000 1182
>> + 17000 1158
>> + 18000 1134
>> + 19000 1110
>> + 20000 1086
>> + 21000 1059
>> + 22000 1035
>> + 23000 1011
>> + 24000 987
>> + 25000 963
>> + 26000 937
>> + 27000 913
>> + 28000 889
>> + 29000 865
>> + 30000 841
>> + 31000 816
>> + 32000 794
>> + 33000 772
>> + 34000 750
>> + 35000 728
>> + 36000 708
>> + 37000 690
>> + 38000 672
>> + 39000 654
>> + 40000 636
>> + 41000 616
>> + 42000 599
>> + 43000 580
>> + 44000 565
>> + 45000 548
>> + 46000 529
>> + 47000 512
>> + 48000 495
>> + 49000 478
>> + 50000 461
>> + 51000 440
>> + 52000 431
>> + 53000 416
>> + 54000 405
>> + 55000 396
>> + 56000 375
>> + 57000 360
>> + 58000 347
>> + 59000 334
>> + 60000 325
>> + 61000 311
>> + 62000 303
>> + 63000 296
>> + 64000 290
>> + 65000 279
>> + 66000 265
>> + 67000 254
>> + 68000 240
>> + 69000 220
>> + 70000 206>;
>> + };
>> +
>> + charger_manager: charger-manager-0 {
>> + compatible = "charger-manager";
>
> Sorry, this is not a hardware. It's a hack to configure kernel charging
> driver via DT which was made deprecated.

Thanks, I missed the deprecation notice in the binding file.

What would be the better way of creating a functional charging system?
A new device-specific driver? Userspace monitoring of temperature/connected
device and extensions to the max8998 driver for enabling/disabling/configuring
charging via the power supply subsystem instead of the regulator subsystem?
Something else?

The way I understand the charging system, there is

- The fuelgauge (max17042)
- The max8998 charger portion, including the ability to vary the current
- The thermistor for checking battery temperature
- The FSA9480 to determine what sort of cable is connected

Thanks,
Jonathan

>
> Best regards,
> Krzysztof
>