| * Qualcomm Technologies, Inc. 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 Node Structure if probe happens from userspace |
| ======================================================= |
| The EEPROM device is described in one level of the device node. |
| |
| ====================================== |
| First Level Node - CAM EEPROM device |
| ====================================== |
| - compatible |
| Usage: required |
| Value type: <string> |
| Definition: Should be "qcom,eeprom". |
| |
| - cell-index |
| Usage: required |
| Value type: <u32> |
| Definition: Should specify the hardware index id. |
| |
| - reg |
| Usage: required |
| Value type: <u32> |
| Definition: Register values. |
| |
| - regulator-names |
| Usage: required |
| Value type: <string> |
| Definition: Name of the regulator resources for EEPROM HW. |
| |
| - xxxx-supply |
| Usage: required |
| Value type: <phandle> |
| Definition: Regulator reference corresponding to the names listed in |
| "regulator-names". |
| |
| - rgltr-cntrl-support |
| Usage: required |
| Value type: <bool> |
| Definition: This property specifies if the regulator control is supported |
| e.g. rgltr-min-voltage. |
| |
| - rgltr-min-voltage |
| Usage: required |
| Value type: <u32> |
| Definition: should contain minimum voltage level for regulators |
| mentioned in regulator-names property. |
| |
| - rgltr-max-voltage |
| Usage: required |
| Value type: <u32> |
| Definition: should contain maximum voltage level for regulators |
| mentioned in regulator-names property. |
| |
| - rgltr-load-current |
| Usage: required |
| Value type: <u32> |
| Definition: should contain the maximum current in microamps required for |
| the regulators mentioned in regulator-names property. |
| |
| - gpio-no-mux |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio mux type. |
| |
| - gpios |
| Usage: required |
| Value type: <phandle> |
| Definition: should specify the gpios to be used for the eeprom. |
| |
| - gpio-reset |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the reset gpio index. |
| |
| - gpio-standby |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the standby gpio index. |
| |
| - gpio-req-tbl-num |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio table index. |
| |
| - gpio-req-tbl-flags |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio functions. |
| |
| - gpio-req-tbl-label |
| Usage: required |
| Value type: <string> |
| Definition: should specify the gpio labels. |
| |
| - sensor-position |
| Usage: required |
| Value type: <u32> |
| Definition: should contain the mount angle of the camera sensor. |
| |
| - cci-master |
| Usage: required |
| Value type: <u32> |
| Definition: should contain i2c master id to be used for this camera |
| sensor. |
| |
| - sensor-mode |
| Usage: required |
| Value type: <u32> |
| Definition: should contain sensor mode supported. |
| |
| - clock-names |
| Usage: required |
| Value type: <string> |
| Definition: List of clock names required for EEPROM HW. |
| |
| - clocks |
| Usage: required |
| Value type: <phandle> |
| Definition: List of clocks used for EEPROM HW. |
| |
| - clock-cntl-level |
| Usage: required |
| Value type: <string> |
| Definition: says what all different clock levels eeprom node has. |
| |
| - clock-rates |
| Usage: required |
| Value type: <u32> |
| Definition: List of clocks rates. |
| |
| Example: |
| |
| eprom0: qcom,eeprom@0 { |
| cell-index = <0>; |
| reg = <0x0>; |
| compatible = "qcom,eeprom"; |
| cam_vdig-supply = <&pm8998_l5>; |
| cam_vio-supply = <&pm8998_lvs1>; |
| regulator-names = "cam_vdig", "cam_vio"; |
| rgltr-cntrl-support; |
| rgltr-min-voltage = <1200000 0>; |
| rgltr-max-voltage = <1200000 0>; |
| rgltr-load-current = <0 80000 105000 0>; |
| gpio-no-mux = <0>; |
| gpios = <&msmgpio 26 0>, |
| <&msmgpio 37 0>, |
| <&msmgpio 36 0>; |
| gpio-reset = <1>; |
| gpio-standby = <2>; |
| gpio-req-tbl-num = <0 1 2>; |
| gpio-req-tbl-flags = <1 0 0>; |
| gpio-req-tbl-label = "CAMIF_MCLK", |
| "CAM_RESET1", |
| "CAM_STANDBY"; |
| sensor-position = <0>; |
| sensor-mode = <0>; |
| cci-master = <0>; |
| status = "ok"; |
| clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; |
| clock-names = "cam_clk"; |
| clock-cntl-level = "turbo"; |
| clock-rates = <24000000>; |
| }; |
| |
| ======================================================= |
| Required Node Structure if probe happens from kernel |
| ======================================================= |
| The EEPROM device is described in one level of the device node. |
| |
| ====================================== |
| First Level Node - CAM EEPROM device |
| ====================================== |
| - compatible |
| Usage: required |
| Value type: <string> |
| Definition: Should be "qcom,eeprom". |
| |
| - cell-index |
| Usage: required |
| Value type: <u32> |
| Definition: Should specify the hardware index id. |
| |
| - reg |
| Usage: required |
| Value type: <u32> |
| Definition: Register values. |
| |
| - qcom,eeprom-name |
| Usage: required |
| Value type: <string> |
| Definition: Name of the EEPROM HW. |
| |
| - qcom,slave-addr |
| Usage: required |
| Value type: <u32> |
| Definition: Slave address of the EEPROM HW. |
| |
| - qcom,num-blocks |
| Usage: required |
| Value type: <u32> |
| Definition: Total block number that eeprom contains. |
| |
| - qcom,pageX |
| Usage: required |
| Value type: <u32> |
| Definition: List of values specifying page size, start address, |
| address type, data, data type, delay in ms. |
| size 0 stand for non-paged. |
| |
| - qcom,pollX |
| Usage: required |
| Value type: <u32> |
| Definition: List of values specifying poll size, poll reg address, |
| address type, data, data type, delay in ms. |
| size 0 stand for not used. |
| |
| - qcom,memX |
| Usage: required |
| Value type: <u32> |
| Definition: List of values specifying memory size, start address, |
| address type, data, data type, delay in ms. |
| size 0 stand for not used. |
| |
| - qcom,saddrX |
| Usage: required |
| Value type: <u32> |
| Definition: property should specify the slave address for block (%d). |
| |
| - regulator-names |
| Usage: required |
| Value type: <string> |
| Definition: Name of the regulator resources for EEPROM HW. |
| |
| - qcom,cmm-data-support |
| Usage: required |
| Value type: <u32> |
| Definition: Camera MultiModule data capability flag.. |
| |
| - qcom,cmm-data-compressed |
| Usage: required |
| Value type: <u32> |
| Definition: Camera MultiModule data compression flag. |
| |
| - qcom,cmm-data-offset |
| Usage: required |
| Value type: <u32> |
| Definition: Camera MultiModule data start offset. |
| |
| - qcom,cmm-data-size |
| Usage: required |
| Value type: <u32> |
| Definition: Camera MultiModule data size. |
| |
| - qcom,cam-power-seq-type |
| Usage: required |
| Value type: <string> |
| Definition: should specify the power on sequence types. |
| |
| - qcom,cam-power-seq-val |
| Usage: required |
| Value type: <string> |
| Definition: should specify the power on sequence values. |
| |
| - qcom,cam-power-seq-cfg-val |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the power on sequence config values. |
| |
| - qcom,cam-power-seq-delay |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the power on sequence delay time in ms. |
| |
| - xxxx-supply |
| Usage: required |
| Value type: <phandle> |
| Definition: Regulator reference corresponding to the names listed in |
| "regulator-names". |
| |
| - rgltr-cntrl-support |
| Usage: required |
| Value type: <bool> |
| Definition: This property specifies if the regulator control is supported |
| e.g. rgltr-min-voltage. |
| |
| - rgltr-min-voltage |
| Usage: required |
| Value type: <u32> |
| Definition: should contain minimum voltage level for regulators |
| mentioned in regulator-names property. |
| |
| - rgltr-max-voltage |
| Usage: required |
| Value type: <u32> |
| Definition: should contain maximum voltage level for regulators |
| mentioned in regulator-names property. |
| |
| - rgltr-load-current |
| Usage: required |
| Value type: <u32> |
| Definition: should contain the maximum current in microamps required for |
| the regulators mentioned in regulator-names property. |
| |
| - gpio-no-mux |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio mux type. |
| |
| - gpios |
| Usage: required |
| Value type: <phandle> |
| Definition: should specify the gpios to be used for the eeprom. |
| |
| - gpio-reset |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the reset gpio index. |
| |
| - gpio-standby |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the standby gpio index. |
| |
| - gpio-req-tbl-num |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio table index. |
| |
| - gpio-req-tbl-flags |
| Usage: required |
| Value type: <u32> |
| Definition: should specify the gpio functions. |
| |
| - gpio-req-tbl-label |
| Usage: required |
| Value type: <string> |
| Definition: should specify the gpio labels. |
| |
| - sensor-position |
| Usage: required |
| Value type: <u32> |
| Definition: should contain the mount angle of the camera sensor. |
| |
| - cci-master |
| Usage: required |
| Value type: <u32> |
| Definition: should contain i2c master id to be used for this camera |
| sensor. |
| |
| - sensor-mode |
| Usage: required |
| Value type: <u32> |
| Definition: should contain sensor mode supported. |
| |
| - clock-cntl-level |
| Usage: required |
| Value type: <string> |
| Definition: says what all different clock levels eeprom node has. |
| |
| - clock-names |
| Usage: required |
| Value type: <string> |
| Definition: List of clock names required for EEPROM HW. |
| |
| - clocks |
| Usage: required |
| Value type: <phandle> |
| Definition: List of clocks used for EEPROM HW. |
| |
| - clock-rates |
| Usage: required |
| Value type: <u32> |
| Definition: List of clocks rates. |
| |
| Example: |
| |
| eeprom0: qcom,eeprom@0 { |
| cell-index = <0>; |
| reg = <0x0>; |
| qcom,eeprom-name = "msm_eeprom"; |
| compatible = "qcom,eeprom"; |
| qcom,slave-addr = <0x60>; |
| qcom,num-blocks = <2>; |
| qcom,page0 = <1 0x100 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,cmm-data-support; |
| qcom,cmm-data-compressed; |
| qcom,cmm-data-offset = <0>; |
| qcom,cmm-data-size = <0>; |
| 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>; |
| cam_vdig-supply = <&pm8998_l5>; |
| cam_vio-supply = <&pm8998_lvs1>; |
| regulator-names = "cam_vdig", "cam_vio"; |
| rgltr-cntrl-support; |
| rgltr-min-voltage = <1200000 0>; |
| rgltr-max-voltage = <1200000 0>; |
| rgltr-load-current = <0 80000 105000 0>; |
| qcom,gpio-no-mux = <0>; |
| gpios = <&msmgpio 26 0>, |
| <&msmgpio 37 0>, |
| <&msmgpio 36 0>; |
| gpio-reset = <1>; |
| gpio-standby = <2>; |
| gpio-req-tbl-num = <0 1 2>; |
| gpio-req-tbl-flags = <1 0 0>; |
| gpio-req-tbl-label = "CAMIF_MCLK", |
| "CAM_RESET1", |
| "CAM_STANDBY"; |
| sensor-position = <0>; |
| sensor-mode = <0>; |
| cci-master = <0>; |
| status = "ok"; |
| clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; |
| clock-cntl-level = "turbo"; |
| clock-names = "cam_clk"; |
| clock-rates = <24000000>; |
| }; |