| * Qualcomm MSM EEPROM |
| |
| EEPROM is an one time programmed(OTP) device that stores the calibration data |
| use for camera sensor. It may either be integrated in the sensor module or in |
| the sensor itself. As a result, the power, clock and GPIOs may be the same as |
| the camera sensor. The following describes the page block map, power supply, |
| clock, GPIO and power on sequence properties of the EEPROM device. |
| |
| Required properties: |
| - cell-index: eeprom hardware core index |
| - compatible : |
| - "qcom,eeprom" |
| - reg : offset of eeprom device registers. |
| - qcom,eeprom-name : should specify relevant names of the eeprom module |
| library. |
| - qcom,slave-addr : should specify the slave address of the eeprom. |
| - qcom,cci-master : should specify the cci core index that eeprom use. |
| - qcom,num-blocks : should specify the total block number that eeprom contains, |
| every block should contains page poll and mem. |
| - qcom,page%d : number %d page size, start address, address type, data, |
| data type, delay in ms. size 0 stand for non-paged. |
| - address type : 1 byte, 2 word. |
| - data type : 1 byte, 2 word. |
| - qcom,poll%d : number %d poll size, poll reg address, address type, data, |
| data type, delay in ms. size 0 stand for not used. |
| - address type : 1 byte, 2 word. |
| - data type : 1 byte, 2 word. |
| - qcom,mem%d : number %d memory size, start address, address type, data, |
| data type, delay in ms. size 0 stand for not used. |
| - address type : 1 byte, 2 word. |
| - data type : 1 byte, 2 word. |
| - cam_vio-supply : should contain regulator to be used for the IO vdd. |
| - qcom,cam-vreg-name : should specify the regulator name to be used for |
| this eeprom. |
| - qcom,cam-vreg-type : should specify the regulator type to be used for |
| this eeprom. |
| - qcom,cam-vreg-min-voltage : should specify minimum voltage level |
| for eeprom in uV. |
| - qcom,cam-vreg-max-voltage : should specify maximum voltage level |
| for eeprom in uV. |
| - qcom,cam-vreg-op-mode : should specify current level for eeprom in uA. |
| - qcom,gpio-no-mux : should specify the gpio mux type. |
| - gpios : should specify the gpios to be used for the eeprom. |
| - qcom,gpio-reset : should specify the reset gpio index. |
| - qcom,gpio-standby : should specify the standby gpio index. |
| - qcom,gpio-req-tbl-num : should specify the gpio table index. |
| - qcom,gpio-req-tbl-flags : should specify the gpio functions. |
| - qcom,gpio-req-tbl-label : should specify the gpio labels. |
| - qcom,cam-power-seq-type : should specify the power on sequence types. |
| - qcom,cam-power-seq-val : should specify the power on sequence values. |
| - qcom,cam-power-seq-cfg-val : should specify the power on sequence config |
| values. |
| - qcom,cam-power-seq-delay : should specify the power on sequence delay |
| time in ms. |
| |
| Optional properties: |
| - qcom,pageen%d : number %d page enable reg size, start address, address type, |
| data, data type, delay in ms. size 0 stand for not used. |
| - cam_vdig-supply : should contain regulator to be used for the digital vdd. |
| - qcom,saddr%d : property should specify the slave address for block (%d). |
| |
| Optional properties -EEPROM Camera Multimodule |
| - qcom,mm-data-support - Camera Multimodule data capability flag. |
| - qcom,mm-data-compressed - Camera Multimodule data compresion flag. |
| - qcom,mm-data-offset - Camera Multimodule data start offset. |
| - qcom,mm-data-size - Camera Multimodule data size. |
| |
| |
| Example: |
| |
| eeprom0: qcom,eeprom@60 { |
| cell-index = <0>; |
| reg = <0x60 0x0>; |
| qcom,eeprom-name = "msm_eeprom"; |
| compatible = "qcom,eeprom"; |
| qcom,slave-addr = <0x60>; |
| qcom,cci-master = <0>; |
| qcom,num-blocks = <2>; |
| qcom,page0 = <1 0x0100 2 0x01 1 1>; |
| qcom,poll0 = <0 0x0 2 0 1 1>; |
| qcom,mem0 = <0 0x0 2 0 1 0>; |
| qcom,page1 = <1 0x0200 2 0x8 1 1>; |
| qcom,pageen1 = <1 0x0202 2 0x01 1 10>; |
| qcom,poll1 = <0 0x0 2 0 1 1>; |
| qcom,mem1 = <32 0x3000 2 0 1 0>; |
| qcom,saddr1 = <0x62>; |
| |
| qcom,mm-data-support; |
| qcom,mm-data-compressed; |
| qcom,mm-data-offset = 0; |
| qcom,mm-data-size = 0; |
| |
| cam_vdig-supply = <&pm8226_l5>; |
| cam_vio-supply = <&pm8226_lvs1>; |
| qcom,cam-vreg-name = "cam_vdig", "cam_vio"; |
| qcom,cam-vreg-type = <0 1>; |
| qcom,cam-vreg-min-voltage = <1200000 0>; |
| qcom,cam-vreg-max-voltage = <1200000 0>; |
| qcom,cam-vreg-op-mode = <200000 0>; |
| qcom,gpio-no-mux = <0>; |
| gpios = <&msmgpio 26 0>, |
| <&msmgpio 37 0>, |
| <&msmgpio 36 0>; |
| qcom,gpio-reset = <1>; |
| qcom,gpio-standby = <2>; |
| qcom,gpio-req-tbl-num = <0 1 2>; |
| qcom,gpio-req-tbl-flags = <1 0 0>; |
| qcom,gpio-req-tbl-label = "CAMIF_MCLK", |
| "CAM_RESET1", |
| "CAM_STANDBY"; |
| qcom,cam-power-seq-type = "sensor_vreg", |
| "sensor_vreg", "sensor_clk", |
| "sensor_gpio", "sensor_gpio"; |
| qcom,cam-power-seq-val = "cam_vdig", |
| "cam_vio", "sensor_cam_mclk", |
| "sensor_gpio_reset", |
| "sensor_gpio_standby"; |
| qcom,cam-power-seq-cfg-val = <1 1 24000000 1 1>; |
| qcom,cam-power-seq-delay = <1 1 5 5 10>; |
| }; |