Modify Thermal Zone based on efuse data This driver is to enable/disable pre-configured thermal zones selectively at runtime based on efuse data. It uses QFPROM nvmem cell interface to read efuse data. It supports multiple efuse condition. If any of the efuse condition fails, driver just exits with default enabled thermal zones. Properties: - compatible: Usage: Required Value type: Definition: shall be "qcom,thermal-qfprom-device". - nvmem-cells: Usage: Required Value type: Definition: Array of phandles pointing to a nvmem-cells node representing the efuse registers that has information that is used to select the right thermal zone to enable. Please refer nvmem-cells bindings Documentation/devicetree/bindings/nvmem/nvmem.txt and also example below. nvmem-cell-names: Usage: Required Value type: Definition: Should be array of name for each nvmem-cells phandle data. Please refer nvmem-cells bindings Documentation/devicetree/bindings/nvmem/nvmem.txt and also example below. - qcom,thermal-qfprom-bit-values: It should be array of bit mask values to match with each nvmem-cells bit value respectively. If all nvmem-cells values are matching with respective bit mask value from this property, then driver will update thermal zones as per thermal zones mentioned in 'qcom,thermal-zone-enable-list' and 'qcom,thermal-zone-disable-list'. - qcom,thermal-zone-enable-list: Usage: Required Value type: Definition: Should define this property with list of thermal zone names those need to be enabled if nvmem-cells condition is met. - qcom,thermal-zone-disable-list: Usage: Required Value type: Definition: Should define this property with list of thermal zone names those need to be disabled if nvmem-cells condition is met. Example: qcom-thermal-qfprom { compatible = "qcom,thermal-qfprom-device"; nvmem-cells = <&thermal_cpe>, <&thermal_revision>; nvmem-cell-names = "cpe", "revision"; qcom,thermal-qfprom-bit-values = <0x1 0x3> qcom,thermal-zone-enable-list = "mdm-core-0-cpe-step", "mdm-core-1-cpe-step"; qcom,thermal-zone-disable-list = "mdm-core-0-step", "mdm-core-1-step"; }; In this example, driver gets efuse bit values of nvmem-cell register for both 'cpe' and 'revision' nvmem cells. It then compares these efuse values with property 'qcom,thermal-qfprom-bit-values' values (0x1 and 0x3 here) respectively. If both efuse values are matching with this property values, driver enables thermal zones listed in property 'qcom,thermal-zone-enable-list' and disables thermal zones listed in property 'qcom,thermal-zone-disable-list'. If any of the efuse value is not matching with respective 'qcom,thermal-qfprom-bit-values' values, driver just exits without modifying any thermal zone.