2024-09-09 08:52:07 +00:00
|
|
|
Qualcomm's TSENS driver
|
|
|
|
|
|
|
|
The TSENS driver supports reading temperature from sensors across
|
|
|
|
the MSM. The driver defaults to support a 10 bit ADC.
|
|
|
|
|
|
|
|
The driver uses the Thermal sysfs framework to provide thermal
|
|
|
|
clients the ability to enable/disable the sensors, read trip zones,
|
|
|
|
read cool/warm temperature thresholds, set temperature thresholds
|
|
|
|
for cool/warm notification and receive notification on temperature
|
|
|
|
threshold events.
|
|
|
|
|
|
|
|
TSENS node
|
|
|
|
|
|
|
|
Required properties:
|
2024-09-09 08:57:42 +00:00
|
|
|
- compatible : should be "qcom,msm-tsens" for 8974, 9625, 8084, Samarium TSENS driver.
|
|
|
|
should be "qcom,msm8x10-tsens" for 8x10 TSENS driver.
|
|
|
|
should be "qcom,msm8x26-tsens" for 8x26 TSENS driver.
|
|
|
|
should be "qcom,fsm9900-tsens" for 9900 TSENS driver.
|
|
|
|
should be "qcom,mdm9630-tsens" for 9630 TSENS driver.
|
|
|
|
should be "qcom,msm8994-tsens" for 8994 TSENS driver.
|
|
|
|
should be "qcom,msm8996-tsens" for 8996 TSENS driver.
|
|
|
|
should be "qcom,msm8992-tsens" for 8992 TSENS driver.
|
|
|
|
should be "qcom,msm8916-tsens" for 8916 TSENS driver.
|
|
|
|
should be "qcom,msm8939-tsens" for 8939 TSENS driver.
|
|
|
|
should be "qcom,msm8909-tsens" for 8909 TSENS driver.
|
|
|
|
should be "qcom,msm8952-tsens" for 8952 TSENS driver.
|
|
|
|
should be "qcom,msmzirc-tsens" for zirc TSENS driver.
|
|
|
|
should be "qcom,mdm9607-tsens" for 9607 TSENS driver.
|
|
|
|
should be "qcom,msmtitanium-tsens" for titanium TSENS driver.
|
|
|
|
should be "qcom,msm8937-tsens" for 8937 TSENS driver.
|
|
|
|
should be "qcom,msmgold-tsens" for gold TSENS driver.
|
|
|
|
should be "qcom,msmcobalt-tsens" for cobalt TSENS driver.
|
|
|
|
The compatible property is used to identify the respective fusemap to use
|
|
|
|
for the corresponding SoC.
|
2024-09-09 08:52:07 +00:00
|
|
|
- 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-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.
|
2024-09-09 08:57:42 +00:00
|
|
|
- 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
|
|
|
|
in addition to "tsens-upper-lower" for 8996 TSENS since
|
|
|
|
8996 supports Upper/Lower and Critical temperature threshold.
|
2024-09-09 08:52:07 +00:00
|
|
|
- qcom,sensors : Total number of available Temperature sensors for TSENS.
|
|
|
|
- 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.
|
|
|
|
|
|
|
|
Optional properties:
|
|
|
|
- qcom,calibration-less-mode : If present the pre-characterized data for offsets
|
|
|
|
are used else it defaults to use calibration data from QFPROM.
|
|
|
|
- qcom,tsens-local-init : If the flag is present the TSENS control registers are
|
|
|
|
initialized. If the boot configures the control register there is
|
|
|
|
no need to re-initialize them. The control registers are also
|
|
|
|
under a secure domain which can prevent them from being initialized
|
|
|
|
locally.
|
|
|
|
- qcom,sensor-id : If the flag is present map the TSENS sensors based on the
|
|
|
|
remote sensors that are enabled in HW. Ensure the mapping is not
|
|
|
|
more than the number of supported sensors.
|
2024-09-09 08:57:42 +00:00
|
|
|
- qcom,client-id : If the flag is present use it to identify the SW ID mapping
|
|
|
|
used to associate it with the controller and the physical sensor
|
|
|
|
mapping within the controller. The physical sensor mapping within
|
|
|
|
each controller is done using the qcom,sensor-id property. If the
|
|
|
|
property is not present the SW ID mapping with default from 0 to
|
|
|
|
total number of supported sensors with each controller instance.
|
|
|
|
- qcom,valid-status-check: If property is present, check the VALID bit is set
|
|
|
|
before reporting the temperature data.
|
|
|
|
- qcom,temp1-offset: If property is present, Use these offset values
|
|
|
|
to be added for 30 deg calib points.
|
|
|
|
- qcom,temp2-offset: If property is present, Use these offset values
|
|
|
|
to be added for 120 deg calib points.
|
|
|
|
|
2024-09-09 08:52:07 +00:00
|
|
|
Example:
|
|
|
|
|
|
|
|
tsens@fc4a8000 {
|
|
|
|
compatible = "qcom,msm-tsens";
|
|
|
|
reg = <0xfc4a8000 0x2000>,
|
|
|
|
<0xfc4b8000 0x1000>;
|
|
|
|
reg-names = "tsens_physical",
|
|
|
|
"tsens_eeprom_physical";
|
|
|
|
interrupts = <0 184 0>;
|
2024-09-09 08:57:42 +00:00
|
|
|
interrupt-names = "tsens-upper-lower";
|
2024-09-09 08:52:07 +00:00
|
|
|
qcom,calibration-less-mode;
|
|
|
|
qcom,sensors = <11>;
|
|
|
|
qcom,slope = <3200 3200 3200 3200 3200 3200 3200 3200 3200
|
|
|
|
3200>;
|
|
|
|
};
|