diff options
Diffstat (limited to 'Documentation/devicetree')
| -rw-r--r-- | Documentation/devicetree/bindings/misc/therm_est.txt | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/misc/therm_est.txt b/Documentation/devicetree/bindings/misc/therm_est.txt index 0dbcb147a..0538981a7 100644 --- a/Documentation/devicetree/bindings/misc/therm_est.txt +++ b/Documentation/devicetree/bindings/misc/therm_est.txt | |||
| @@ -6,6 +6,8 @@ Properties : | |||
| 6 | - tc1 : Coefficient 1 for thermal trend calculation. | 6 | - tc1 : Coefficient 1 for thermal trend calculation. |
| 7 | - tc2 : Coefficient 2 for thermal trend calculation. | 7 | - tc2 : Coefficient 2 for thermal trend calculation. |
| 8 | - node for subdev : Node for subdevice information. Required. | 8 | - node for subdev : Node for subdevice information. Required. |
| 9 | - use_tmargin : if tmargin algorithm should be used for calculating the | ||
| 10 | effective temp. Refer Tmargin section for more info. | ||
| 9 | 11 | ||
| 10 | Properties in subdev node : Required. | 12 | Properties in subdev node : Required. |
| 11 | - subdev_names : list of strings. It contains list of the name of the therm | 13 | - subdev_names : list of strings. It contains list of the name of the therm |
| @@ -45,3 +47,91 @@ Example: | |||
| 45 | }; | 47 | }; |
| 46 | }; | 48 | }; |
| 47 | }; | 49 | }; |
| 50 | |||
| 51 | Tmargin Algorithm: | ||
| 52 | The native max temp algorithm lacks support for accomodating multiple thermal | ||
| 53 | fan curves. Tmargin algorithm solves this by calculating the effective | ||
| 54 | temperature as a difference from critical temperature of the therm fan est | ||
| 55 | group. This allows us to take a union of two fan curves and satisfy the needs | ||
| 56 | of both the therm-fan-est groups. | ||
| 57 | The algorithm use the effective temperature(crit_temp - sensor_reading) to | ||
| 58 | drive the cooling device. | ||
| 59 | |||
| 60 | Properties rules for therm-fan-est dt entry: | ||
| 61 | - use_tmargin : To use the tmargin feature. | ||
| 62 | - profiles : New profile tmargin should be defined and chosen as default. | ||
| 63 | * The trip temperatures need to be given only in ascending order for the | ||
| 64 | thermal framework to register therm-fan-est zone. Hence, the dt values | ||
| 65 | for active trip temps should be given in ascending values of tmargin | ||
| 66 | values. | ||
| 67 | * Hysterysis is used only in cooling scenario. Since tmargin is | ||
| 68 | considered as a diff wrt crit_Temp, hysterysis values should be taken | ||
| 69 | as -ve values. | ||
| 70 | |||
| 71 | Properties rules for fan dt entry: | ||
| 72 | - profiles : New profile for tmargin should be defined and chosen as default. | ||
| 73 | * The trip temps are considered in a ascending order of tmargin temps. | ||
| 74 | Hence, the pwm values should be considered in a descending order of | ||
| 75 | pwms. | ||
| 76 | * active_steps - The tmargin trip values are considered in the ascending | ||
| 77 | order(hence actual trip temps will be in descending order), so the | ||
| 78 | pwm mapping should be in the reverse order starting from 255 for | ||
| 79 | index 0. | ||
| 80 | |||
| 81 | Example : | ||
| 82 | |||
| 83 | thermal-fan-est { | ||
| 84 | compatible = "thermal-fan-est"; | ||
| 85 | name = "thermal-fan-est"; | ||
| 86 | status = "okay"; | ||
| 87 | num_resources = <0>; | ||
| 88 | shared_data = <&thermal_fan_est_shared_data>; | ||
| 89 | trip_length = <10>; | ||
| 90 | use_tmargin; | ||
| 91 | |||
| 92 | profiles { | ||
| 93 | default = "tmargin"; | ||
| 94 | quiet { | ||
| 95 | active_trip_temps = <0 50000 63000 72000 81000 | ||
| 96 | 140000 150000 160000 170000 180000>; | ||
| 97 | active_hysteresis = <0 18000 8000 8000 8000 | ||
| 98 | 0 0 0 0 0>; | ||
| 99 | }; | ||
| 100 | cool { | ||
| 101 | active_trip_temps = <0 35000 53000 62000 73000 | ||
| 102 | 140000 150000 160000 170000 180000>; | ||
| 103 | active_hysteresis = <0 9000 8000 8000 9000 | ||
| 104 | 0 0 0 0 0>; | ||
| 105 | }; | ||
| 106 | tmargin { | ||
| 107 | active_trip_temps = <0 10000 15000 25000 35000 | ||
| 108 | 45000 55000 65000 75000 105000>; | ||
| 109 | active_hysteresis = <0 0 0 0 (-3000) | ||
| 110 | (-4000) (-4000) 0 0 0>; | ||
| 111 | }; | ||
| 112 | }; | ||
| 113 | }; | ||
| 114 | |||
| 115 | pwm-fan { | ||
| 116 | compatible = "pwm-fan"; | ||
| 117 | status = "okay"; | ||
| 118 | #pwm-cells = <1>; | ||
| 119 | pwms = <&tegra_pwm4 0 45334>; | ||
| 120 | shared_data = <&pwm_fan_shared_data>; | ||
| 121 | profiles { | ||
| 122 | default = "tmargin"; | ||
| 123 | quiet { | ||
| 124 | state_cap = <8>; | ||
| 125 | active_pwm = <0 60 90 120 150 180 210 240 255 255>; | ||
| 126 | }; | ||
| 127 | cool { | ||
| 128 | state_cap = <4>; | ||
| 129 | active_pwm = <0 77 120 160 255 255 255 255 255 255>; | ||
| 130 | }; | ||
| 131 | tmargin { | ||
| 132 | state_cap = <0>; | ||
| 133 | active_pwm = <255 255 240 210 180 150 120 90 60 0>; | ||
| 134 | }; | ||
| 135 | }; | ||
| 136 | }; | ||
| 137 | |||
