解析:
一、概念
eeprom又称OTP,是用来给camera sensor做校准用的,烧录的数据大概包括:
AF:自动对焦校准数据
AWB:白平衡校准数据
LSC:镜头阴影校准 (Lens Shading Calibration)
Moudle Info:模组信息,包含模组的生产年月日,模组ID等;
二、分类
eeprom分为外挂和内嵌两种。
外挂式:1.存储空间大,2.eeprom与sensor的IIC地址不相同
内嵌式:1.存储空间小,2.eeprom与sensor的IIC地址相同
三、添加/修改路径
(1)/qcom-proprietary/camera-devicetree/lagoon-camera-sensor-mtp.dtsi
在设备树中增加eeprom节点:
eeprom_triple_rear_macro: qcom,eeprom@4 {
cell-index = <4>;
reg = <0x4>;
cam_vio-supply = <&L6P>;
cam_vana-supply = <&L4P>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
regulator-names = "cam_vio", "cam_vana", "cam_clk";
cci-device = <0>;
cci-master = <0>;
qcom,cam-sensor@4 {
cell-index = <4>;
compatible = "qcom,cam-sensor";
reg = <0x4>;
cam_vio-supply = <&L6P>;
cam_vana-supply = <&L4P>;
cam_clk-supply = <&cam_cc_titan_top_gdsc>;
regulator-names = "cam_vio", "cam_vana", "cam_clk";
sensor-mode = <0>;
cci-device = <0>;
cci-master = <0>;
}}
(2)/mm-camerasdk / oem/qcom/eeprom/xx_ov02b10_aux_eeprom.xml
根据OTP指导文档,填写具体eeprom信息:
<EEPROMName>xx_ov02b10_aux</EEPROMName>
<!--8-bit or 10-bit I2C slave Write address -->
<slaveAddress>0xA4</slaveAddress>
<memoryMap>
<regSetting>
<!--Slave address to communicate withe the device -->
<slaveAddr>0xA4</slaveAddr>
<!--Register address that is accessed -->
<registerAddr>0x00</registerAddr>
<!--If operation is WRITE, registerData is the data value to be written into the specified register address
If operation is READ, registerData is the number of bytes to be read from the specified register address -->
<registerData>0x702</registerData>
</regSetting>
</memoryMap>
(3)mm-camerasdk / oem/qcom/module/xx_ov02b10_aux_module.xml
在module文件中添加eeprom的名字(注意:只要使用了eeprom的地方,名字都要保证完全一样)
<eepromName>xx_ov02b10_aux</eepromName>
(4)/mm-camerasdk / tools/buildbins/buildbins_lito.yaml
在对应sensor位置添加eeprom.xml文件:
- com.qti.sensormodule.xx_ov02b10_aux:
- eeprom/xx_ov02b10_aux_eeprom.xml
四、OTP dump 方法
adb shell setprop vendor.debug.camera.dumpSensorEEPROMData 1
adb pull /data/vendor/camera