>>5306712 Спасибо за фотку, убедил.
>>5306709
- Я извиняюсь, чип всё-таки BGA. SMD - это другой чип. А этот (max77693) не просто контроллер заряда, a SuperIO.
-
>Эээ а чем ты там меришь??? С такой-то точностью.
Начал копаться и вчитываться в исходники дров чипа, чтобы разобраться, что это за числа. Дейташита на него не нашёл, в инете есть дейташиты на "сходные" чипы от того же производителя из того же семейства, но они другие, у них другие адреса регистров, другие битовые маски и даже другие енамы. Для получения инфы напрямую приходится i2cget -f юзать. Утром было 3%, заряжало в состоянии MAX77693_CHARGING_FAST_CONST_CURRENT=1, но иногдa прыгало между MAX77693_BATTERY_GOOD=3, MAX77693_BATTERY_LOWVOLTAGE=4,
https://elixir.bootlin.com/linux/latest/source/drivers/regulator/max77693-regulator.c#L181
MAX77693_CHG_REG_CHG_CNFG_09 = 0xC0 - это лимит тока с шагом 20 миллиампер, а не полампера.
2cget: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
0x17
cat /sys/class/power_supply/max77693-charger/current_max
460
cat /sys/class/power_supply/max77693-charger/current_now <
466
i2cget -f 17 66 c0 b
i2cget: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
0x17
0x17=23,
23*20 = 460, откуда тогда взялось 466ma? В исходниках Lineage я суммирования не нашёл
https://raw.githubusercontent.com/LineageOS/android_kernel_samsung_smdk4412/lineage-17.0/drivers/battery/max77693_charger.c#L173
как и в исходниках более древнего репликанта
https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/battery/max77693_charger.c
зато в мэйнлайновом линуксе как раз прибавляется, но не 2, а 6. При этом в мэйнлайне отсутствует "сглаживание", присутствующее в Lineage
Судя по именам в исходниках (имена функций им там не соответствуют), ток должен быть в
MAX77693_CHG_REG_CHG_CNFG_02 = 0xB9
(reg_data & (MAX77693_CHG_CC = 0x3F)) * 33.3;
i2cget -f 17 66 b9 b
i2cget: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
0x8e
0x8e & 0x3F = 0x0e = 14
14 * 33.3 = 466.2
i2cset -f 17 66 c0 34 b ничего не меняет
При маленьком заряде вообще пошло на
cat /sys/class/power_supply/max77693-charger/current_max
100
и в dmesg были записи
https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/battery/max77693_charger.c#n917
max77693_get_battery_state: battery is okay but its voltage is low(VPQLB~VSYSMIN)
https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/battery/max77693_charger.c#n457
max77693_set_input_current: now in soft regulation loop: 100
Сейчас заряд 5% но
max77693_get_battery_state: battery is okay but its voltage is low(VPQLB~VSYSMIN) всё равно присутствует.
подключил временно алкателевский аккум (tli009aa, он вроде нашего любимого BL-5C по размерам и форме, только чуть меньше)
cat /sys/class/power_supply/max77693-charger/current_max
600
cat /sys/class/power_supply/max77693-charger/current_now <
1698
На BL-5C выдаёт те же 466 mA. Хрень какая-то. Более того, все эти измерения чипом мне доверия не внушают (максимальный ток меньше "намерянного настоящего" тока), есть подозрение, что разрабы драйверов напутали с коэффициентами и/или формулами, особенно учитывая отсутствие дейташитов.
Неисправен измеритель напряжения в чипе max77693 (который контролирует зарядку)? Надо будет проверить как-то (наверное, прочитать через i2c (но для начала узнать нужные регистры и маски) и сравнить с показаниями мультиметра на контактных площадках батареи?) Но в телефоне напряжение для целей индикации заряда на батарее меряет другой чип max17047 и он вроде верно состояние зарядки показывает.