1 | | {{{#!html |
2 | | <div id="wikipage" class="trac-content"><p> |
3 | | </p><div class="wiki-toc"> |
4 | | <ol> |
5 | | <li> |
6 | | <a href="#VentanaThermalInformation">Ventana Thermal Information</a> |
7 | | <ol> |
8 | | <li> |
9 | | <a href="#GateworksSystemControllerGSC">Gateworks System Controller (GSC)</a> |
10 | | </li> |
11 | | <li> |
12 | | <a href="#IMX6SoC">IMX6 SoC</a> |
13 | | <ol> |
14 | | <li> |
15 | | <a href="#LinuxKernelSupport">Linux Kernel Support</a> |
16 | | </li> |
17 | | <li> |
18 | | <a href="#U-BootSupport">U-Boot Support</a> |
19 | | </li> |
20 | | </ol> |
21 | | </li> |
22 | | <li> |
23 | | <a href="#VivanteGPUthermalmanagement">Vivante GPU thermal management</a> |
24 | | </li> |
25 | | </ol> |
26 | | </li> |
27 | | </ol> |
28 | | </div><p> |
29 | | </p> |
30 | | <h1 id="VentanaThermalInformation">Ventana Thermal Information</h1> |
31 | | <p> |
| 1 | [[PageOutline]] |
| 2 | = Ventana Thermal Information = |
| 3 | |
33 | | </p> |
34 | | <ul><li><a class="wiki" href="/wiki/ventana/thermal_management">Very Resourceful Thermal Management Page</a> |
35 | | </li><li><a class="wiki" href="/wiki/DVFS">Dynamic Voltage and Frequency Scaling of the Processor</a> |
36 | | </li><li><a class="wiki" href="/wiki/ventana/power">Ventana Power Consumption</a> |
37 | | </li><li><a class="wiki" href="/wiki/faq#WhyarecertainareasontheboardwarmwithregardstotemperatureWhyismyboardhot">FAQ - Why is my board running hot?</a> |
38 | | </li></ul><p> |
39 | | <span class="wikianchor" id="gsc-thermal"></span> |
40 | | </p> |
41 | | <h2 id="GateworksSystemControllerGSC">Gateworks System Controller (GSC)</h2> |
42 | | <p> |
| 5 | |
| 6 | * [/wiki/ventana/thermal_management Very Resourceful Thermal Management Page] |
| 7 | * [/wiki/DVFS Dynamic Voltage and Frequency Scaling of the Processor] |
| 8 | * [/wiki/ventana/power Ventana Power Consumption] |
| 9 | * [/wiki/faq#WhyarecertainareasontheboardwarmwithregardstotemperatureWhyismyboardhot FAQ - Why is my board running hot?] |
| 10 | |
| 11 | |
| 12 | |
| 13 | == Gateworks System Controller (GSC) == |
| 14 | |
72 | | </p> |
73 | | <ul><li>Note in first line, hwmon1 may be hwmon2 |
74 | | <pre class="wiki">cat /sys/class/hwmon/hwmon1/temp1_input # current IMX temp in milicelcius |
75 | | cat /sys/class/thermal/thermal_zone0/trip_point_0_temp # current passive temp in milicelcius |
76 | | cat /sys/class/thermal/thermal_zone0/trip_point_1_temp # current critical temp in milicelcius |
77 | | # set passive/crit to 105C/125C for automotive CPU |
78 | | echo 105000 > /sys/class/thermal/thermal_zone0/trip_point_0_temp |
79 | | echo 125000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp |
80 | | </pre></li></ul><p> |
| 41 | |
| 42 | * Note in first line, hwmon1 may be hwmon2 |
| 43 | |
| 44 | {{{ |
| 45 | cat /sys/class/hwmon/hwmon1/temp1_input # current IMX temp in milicelcius |
| 46 | cat /sys/class/thermal/thermal_zone0/trip_point_0_temp # current passive temp in milicelcius |
| 47 | cat /sys/class/thermal/thermal_zone0/trip_point_1_temp # current critical temp in milicelcius |
| 48 | # set passive/crit to 105C/125C for automotive CPU |
| 49 | echo 105000 > /sys/class/thermal/thermal_zone0/trip_point_0_temp |
| 50 | echo 125000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp |
| 51 | }}} |
| 52 | |
82 | | </p> |
83 | | <ul><li>the imx_thermal_zone temp currently starts scaling ARM cpufreq at 85C (until it lowers to 75C) and has a critical temp of 100C. This is really too conservative for the typical IMX6 temperature grades that Gateworks uses |
84 | | </li><li>there is a 10C hysteresis such that the temperature needs to lower by 10C before the alarm is cancelled |
85 | | </li><li>the <strong>passive</strong> trip point is a preventative measure before reaching critical that does things to lower temperature such as reducing cpu/gpu frequencies |
86 | | </li><li>the <strong>critical</strong> trip point should not be exceeded to avoid damaging the CPU and as such when this trip point is reached the Linux shutdown function is called to attempt to gracefully shut down the OS. The default implementation will end up simply resetting the board but before that occurs a usermode helper will exec /sbin/poweroff which the user could implement to do whatever they choose (ie, sync filesystems, use GSC sleep for 'x' seconds, etc). |
87 | | </li><li>the thresholds for the driver can be adjusted in userspace (see above) |
88 | | </li><li>Gateworks has <a class="ext-link" href="http://thread.gmane.org/gmane.linux.ports.arm.kernel/409671/focus=411988"><span class="icon"></span>an upstream Linux patch pending approval</a> that will set the initial setpoints according to the temperature grade of the CPU determined via eFUSE registers. This patch will eventually be rolled into our various kernel support. |
89 | | </li></ul><h3 id="U-BootSupport">U-Boot Support</h3> |
90 | | <p> |
| 54 | |
| 55 | * the imx_thermal_zone temp currently starts scaling ARM cpufreq at 85C (until it lowers to 75C) and has a critical temp of 100C. This is really too conservative for the typical IMX6 temperature grades that Gateworks uses |
| 56 | * there is a 10C hysteresis such that the temperature needs to lower by 10C before the alarm is cancelled |
| 57 | * the '''passive''' trip point is a preventative measure before reaching critical that does things to lower temperature such as reducing cpu/gpu frequencies |
| 58 | * the '''critical''' trip point should not be exceeded to avoid damaging the CPU and as such when this trip point is reached the Linux shutdown function is called to attempt to gracefully shut down the OS. The default implementation will end up simply resetting the board but before that occurs a usermode helper will exec /sbin/poweroff which the user could implement to do whatever they choose (ie, sync filesystems, use GSC sleep for 'x' seconds, etc). |
| 59 | * the thresholds for the driver can be adjusted in userspace (see above) |
| 60 | * Gateworks has [http://thread.gmane.org/gmane.linux.ports.arm.kernel/409671/focus=411988 <span class="icon">​</span>an upstream Linux patch pending approval] that will set the initial setpoints according to the temperature grade of the CPU determined via eFUSE registers. This patch will eventually be rolled into our various kernel support. |
| 61 | |
| 62 | === U-Boot Support === |
| 63 | |
92 | | </p> |
93 | | <ul><li>display the thermal grade of CPU and min/max temperature |
94 | | </li><li>display current temperature of IMX6 |
95 | | </li><li>busyloop if over IMX6 temperature is greater or equal to max temp - 5C |
96 | | </li></ul><p> |
97 | | <span class="wikianchor" id="gpu-thermal"></span> |
98 | | </p> |
99 | | <h2 id="VivanteGPUthermalmanagement">Vivante GPU thermal management</h2> |
100 | | <p> |
| 65 | |
| 66 | * display the thermal grade of CPU and min/max temperature |
| 67 | * display current temperature of IMX6 |
| 68 | * busyloop if over IMX6 temperature is greater or equal to max temp - 5C |
| 69 | |
| 70 | |
| 71 | |
| 72 | == Vivante GPU thermal management == |
| 73 | |
108 | | </p> |
109 | | <ul><li>On Yocto v1.8 (3.14.x): |
110 | | <pre class="wiki">echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64 |
111 | | </pre></li><li>On Yocto v1.6/v1.7 (3.10.17): |
112 | | <pre class="wiki">echo 3 > /sys/module/galcore/parameters/gpu3DMinClock # set GPU freq reduction to 3/64 |
113 | | </pre></li><li>On Linux 3.10.53 (Yocto master / Android kk) |
114 | | <pre class="wiki">echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64 |
115 | | </pre></li></ul><p> |
| 79 | |
| 80 | * On Yocto v1.8 (3.14.x): |
| 81 | {{{ |
| 82 | echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64 |
| 83 | }}} |
| 84 | * On Yocto v1.6/v1.7 (3.10.17): |
| 85 | {{{ |
| 86 | echo 3 > /sys/module/galcore/parameters/gpu3DMinClock # set GPU freq reduction to 3/64 |
| 87 | }}} |
| 88 | * On Linux 3.10.53 (Yocto master / Android kk) |
| 89 | {{{ |
| 90 | echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64 |
| 91 | }}} |
| 92 | |