Loading Documentation/devicetree/bindings/thermal/tsens.txt +12 −5 Original line number Diff line number Diff line Loading @@ -34,16 +34,22 @@ Required properties: should be "qcom,msmfalcon-tsens" for falcon TSENS driver. The compatible property is used to identify the respective fusemap to use for the corresponding SoC. - reg : offset and length of the TSENS registers. - reg : offset and length of the QFPROM registers used for storing the calibration data for the individual sensors. - reg : offset and length of the TSENS registers with associated property in reg-names as "tsens_physical" and QFPROM registers with associated property in reg-names as "tsens_eeprom_physical". The efuse registers are used for storing the calibration data for the individual sensors. If the gain and offset are programmed by the TSENS control registers then adding the QFPROM register property is optional. - reg-names : resource names used for the physical address of the TSENS registers, the QFPROM efuse primary calibration address region, Should be "tsens_physical" for physical address of the TSENS, "tsens_eeprom_physical" for physical address where primary calibration data is stored. This includes the backup calibration address region if TSENS calibration data is stored in the region. in the region. The reg-name "tsens_eeprom_physical" property is optional if the gain and offset are programmed by the TSENS control registers and the status registers directly reports the TSENS temperature readings. - interrupts : TSENS interrupt to notify Upper/Lower temperature threshold. - interrupt-names: Should be "tsens-upper-lower" for temperature threshold. Add "tsens-critical" for Critical temperature threshold notification Loading @@ -53,7 +59,8 @@ Required properties: - qcom,slope : One point calibration characterized slope data for each sensor used to compute the offset. Slope is represented as ADC code/DegC and the value is multipled by a factor of 1000. of 1000. If gain and offset are programmed by the TSENS control registers then this property is optional. Optional properties: - qcom,calibration-less-mode : If present the pre-characterized data for offsets Loading drivers/thermal/msm-tsens.c +33 −27 Original line number Diff line number Diff line Loading @@ -831,6 +831,7 @@ struct tsens_tm_device { bool prev_reading_avail; bool calibration_less_mode; bool tsens_local_init; bool gain_offset_programmed; int tsens_factor; uint32_t tsens_num_sensor; int tsens_irq; Loading Loading @@ -5341,6 +5342,13 @@ static int get_device_tree_data(struct platform_device *pdev, return -ENODEV; } /* TSENS calibration region */ tmdev->res_calib_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tsens_eeprom_physical"); if (!tmdev->res_calib_mem) { pr_debug("Using controller programmed gain and offset\n"); tmdev->gain_offset_programmed = true; } else { tsens_slope_data = devm_kzalloc(&pdev->dev, tsens_num_sensors * sizeof(u32), GFP_KERNEL); if (!tsens_slope_data) Loading @@ -5349,9 +5357,10 @@ static int get_device_tree_data(struct platform_device *pdev, rc = of_property_read_u32_array(of_node, "qcom,slope", tsens_slope_data, tsens_num_sensors); if (rc) { dev_err(&pdev->dev, "invalid or missing property: tsens-slope\n"); dev_err(&pdev->dev, "missing property: tsens-slope\n"); return rc; }; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); Loading @@ -5364,9 +5373,13 @@ static int get_device_tree_data(struct platform_device *pdev, return -ENODEV; } if (!tmdev->gain_offset_programmed) { for (i = 0; i < tsens_num_sensors; i++) tmdev->sensor[i].slope_mul_tsens_factor = tsens_slope_data[i]; tmdev->sensor[i].slope_mul_tsens_factor = tsens_slope_data[i]; tmdev->tsens_factor = TSENS_SLOPE_FACTOR; } tmdev->tsens_num_sensor = tsens_num_sensors; tmdev->calibration_less_mode = of_property_read_bool(of_node, "qcom,calibration-less-mode"); Loading Loading @@ -5536,15 +5549,7 @@ static int get_device_tree_data(struct platform_device *pdev, goto fail_unmap_tsens_region; } /* TSENS calibration region */ tmdev->res_calib_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tsens_eeprom_physical"); if (!tmdev->res_calib_mem) { pr_err("Could not get qfprom physical address resource\n"); rc = -EINVAL; goto fail_unmap_tsens; } if (!tmdev->gain_offset_programmed) { tmdev->calib_len = tmdev->res_calib_mem->end - tmdev->res_calib_mem->start + 1; Loading @@ -5555,6 +5560,7 @@ static int get_device_tree_data(struct platform_device *pdev, rc = -EINVAL; goto fail_unmap_tsens; } } return 0; Loading Loading
Documentation/devicetree/bindings/thermal/tsens.txt +12 −5 Original line number Diff line number Diff line Loading @@ -34,16 +34,22 @@ Required properties: should be "qcom,msmfalcon-tsens" for falcon TSENS driver. The compatible property is used to identify the respective fusemap to use for the corresponding SoC. - reg : offset and length of the TSENS registers. - reg : offset and length of the QFPROM registers used for storing the calibration data for the individual sensors. - reg : offset and length of the TSENS registers with associated property in reg-names as "tsens_physical" and QFPROM registers with associated property in reg-names as "tsens_eeprom_physical". The efuse registers are used for storing the calibration data for the individual sensors. If the gain and offset are programmed by the TSENS control registers then adding the QFPROM register property is optional. - reg-names : resource names used for the physical address of the TSENS registers, the QFPROM efuse primary calibration address region, Should be "tsens_physical" for physical address of the TSENS, "tsens_eeprom_physical" for physical address where primary calibration data is stored. This includes the backup calibration address region if TSENS calibration data is stored in the region. in the region. The reg-name "tsens_eeprom_physical" property is optional if the gain and offset are programmed by the TSENS control registers and the status registers directly reports the TSENS temperature readings. - interrupts : TSENS interrupt to notify Upper/Lower temperature threshold. - interrupt-names: Should be "tsens-upper-lower" for temperature threshold. Add "tsens-critical" for Critical temperature threshold notification Loading @@ -53,7 +59,8 @@ Required properties: - qcom,slope : One point calibration characterized slope data for each sensor used to compute the offset. Slope is represented as ADC code/DegC and the value is multipled by a factor of 1000. of 1000. If gain and offset are programmed by the TSENS control registers then this property is optional. Optional properties: - qcom,calibration-less-mode : If present the pre-characterized data for offsets Loading
drivers/thermal/msm-tsens.c +33 −27 Original line number Diff line number Diff line Loading @@ -831,6 +831,7 @@ struct tsens_tm_device { bool prev_reading_avail; bool calibration_less_mode; bool tsens_local_init; bool gain_offset_programmed; int tsens_factor; uint32_t tsens_num_sensor; int tsens_irq; Loading Loading @@ -5341,6 +5342,13 @@ static int get_device_tree_data(struct platform_device *pdev, return -ENODEV; } /* TSENS calibration region */ tmdev->res_calib_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tsens_eeprom_physical"); if (!tmdev->res_calib_mem) { pr_debug("Using controller programmed gain and offset\n"); tmdev->gain_offset_programmed = true; } else { tsens_slope_data = devm_kzalloc(&pdev->dev, tsens_num_sensors * sizeof(u32), GFP_KERNEL); if (!tsens_slope_data) Loading @@ -5349,9 +5357,10 @@ static int get_device_tree_data(struct platform_device *pdev, rc = of_property_read_u32_array(of_node, "qcom,slope", tsens_slope_data, tsens_num_sensors); if (rc) { dev_err(&pdev->dev, "invalid or missing property: tsens-slope\n"); dev_err(&pdev->dev, "missing property: tsens-slope\n"); return rc; }; } if (!of_match_node(tsens_match, of_node)) { pr_err("Need to read SoC specific fuse map\n"); Loading @@ -5364,9 +5373,13 @@ static int get_device_tree_data(struct platform_device *pdev, return -ENODEV; } if (!tmdev->gain_offset_programmed) { for (i = 0; i < tsens_num_sensors; i++) tmdev->sensor[i].slope_mul_tsens_factor = tsens_slope_data[i]; tmdev->sensor[i].slope_mul_tsens_factor = tsens_slope_data[i]; tmdev->tsens_factor = TSENS_SLOPE_FACTOR; } tmdev->tsens_num_sensor = tsens_num_sensors; tmdev->calibration_less_mode = of_property_read_bool(of_node, "qcom,calibration-less-mode"); Loading Loading @@ -5536,15 +5549,7 @@ static int get_device_tree_data(struct platform_device *pdev, goto fail_unmap_tsens_region; } /* TSENS calibration region */ tmdev->res_calib_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tsens_eeprom_physical"); if (!tmdev->res_calib_mem) { pr_err("Could not get qfprom physical address resource\n"); rc = -EINVAL; goto fail_unmap_tsens; } if (!tmdev->gain_offset_programmed) { tmdev->calib_len = tmdev->res_calib_mem->end - tmdev->res_calib_mem->start + 1; Loading @@ -5555,6 +5560,7 @@ static int get_device_tree_data(struct platform_device *pdev, rc = -EINVAL; goto fail_unmap_tsens; } } return 0; Loading