BCS v1.2的充电器探测原理如下:
当OTG驱动捕获到VBUS中断的时候,断开DP/DM与SIE接口的连接,然后等待数据线的连接(DCD)并设置超时,一般是750ms,如果超时,可启动usb gadget驱动做识别;否则在DP上加载0.6V的电压,检测DM上是否有0.6V的电压,这里有两种情况:
情况一:如果有0.6V电压,那么可能是DCP或者CDP充电器,接着在DP上撤销0.6V电压并加载0.8V电压,检测DM上的电压,如果是0.8V那么就是DCP充电器,否则由于CDP充电器对DP上的0.8V电压不做响应,得出是CDP充电器;
情况二:如果没有0.6V电压,那么就是SDP即是数据线连到了PC上。
探测完毕后,重新打开DP/DM和SIE的连接。
注:VDAT_REF=0.6V,数据线参考电压
VLGC=0.8V,逻辑电压
充电温度控制相关修改:
835平台充电电压、电流根据温度设置如下图形所示:
设置4个温度点,五个区间分别为cold、cool、normal 、 warm 、hot, 此4个温度点寄存器地址如下:
-
0x00004162 FG_BATT_INFO_JEITA_TOO_COLD
-
0x00004163 FG_BATT_INFO_JEITA_COLD
-
0x00004164 FG_BATT_INFO_JEITA_HOT
-
0x00004165 FG_BATT_INFO_JEITA_TOO_HOT
此四个温度默认值为: 0 、5 、45、50度。可以通过如下程序修改:
-
#define DEFAULT_BATT_TEMP_COLD -5
-
#define DEFAULT_BATT_TEMP_COOL 0
-
#define DEFAULT_BATT_TEMP_WARM 50
-
#define DEFAULT_BATT_TEMP_HOT 55
也可通过 如下dtsi 修改:
-
&pmi8998_fg {
-
qcom,battery-data = <&mtp_batterydata>;
-
qcom,fg-jeita-thresholds = <-5 0 50 55>;
-
};
当在cold和hot区间时,电池不充电,当在cool和warm区间时,电池的充电电压,充电电流为JEITA_FVCOMP和JEITA_CCCOMP。 此两个值分别在如下寄存器中设置: | 0x00001091 | SCHG8998_CHGR_JEITA_FVCOMP_CFG | 寄存器默认值为:0x0E, 默认电压为:4.35 – 0.105 = 4.25 附近。 | 0x00001092 | SCHG8998_CHGR_JEITA_CCCOMP_CFG | 寄存器默认值为:0x28, 默认电流为:3A – 1A = 2A 如果需要修改此区间的充电电压、充电电流修改相应的寄存器即可
- qcom,jeita-soft-fcc-ua: A tuple entry to specify the values of Fast
charging current (in uA) that needs to be applied during
soft JEITA conditions (cool/warm).
Element 0 - FCC value for soft cool.
Element 1 - FCC value for soft warm.
- qcom,jeita-soft-fv-uv: A tuple entry to specify the values of Float
voltage (in uV) that needs to be applied during soft
JEITA conditions (cool/warm).
Element 0 - FV value for soft cool.
Element 1 - FV value for soft warm.