975 | | The Gateworks System Controller has the ability to monitor board temperature and CPU temperature and disable board primary power when either of those exceeds specified values. |
976 | | |
977 | | If either the GSC 'board temperature' exceeds {{{85C}}} or the 'external thermal sensor' exceeds its threshold ({{{100C}}} for Newport CPU Junction Temperature (Tj)) the GSC will disable the primary power supply for a 'cooldown period'. The cooldown period has a range of {{{5-300}}} seconds, and will increase from {{{5}}} by {{{30}}} seconds each time a thermal threshold event occurs. If no thermal threshold event occurs within {{{300}}} seconds of power-up the cooldown period will be reset to the minimum of {{{5}}} seconds. |
978 | | |
979 | | **Firmware v59+**: For firmware versions v59 and beyond, support has been added to manually set the 'board temperature' limit from 72C to 122C in order to provide better control to customers with boards in varying thermal environments. The top 5 bits in the {{{GSC_THERMAL_PROTECTION}}} register are used to create a specific temperature limit starting at 72C as a minimum. The 5 bit value is multiplied by 2, then added to the base 70C to result in the new temperature limit. A 0 value is defaulted to result in an 120C limit, to support the register settings of older firmware. A max limit of 122C is also enforced, therefore allowing for a total range of {{{72-122C}}}. |
980 | | |
981 | | Some bootloader examples showing control of the thermal protection limit: |
982 | | {{{#!bash |
983 | | i2c dev 0; i2c mw 0x20 0x13 0x9 # set limit to minimum (72C) |
984 | | i2c dev 0; i2c mw 0x20 0x13 0x79 # set limit to 100C |
985 | | i2c dev 0; i2c mw 0x20 0x13 0xd1 # set limit to maximum (122C) |
986 | | i2c dev 0; i2c mw 0x20 0x13 0x1 # return limit to default (120C) |
987 | | i2c dev 0; i2c mw 0x20 0x13 0x0 # disable thermal protection limit |
988 | | }}} |
| 968 | The Gateworks System Controller has the ability to monitor temperatures and disable the primary power supply for a 'cooldown period' when certain values are exceeded. The cooldown period has a range of {{{5-300}}} seconds, and will increase from {{{5}}} by {{{30}}} seconds each time a thermal threshold event occurs. If no thermal threshold event occurs within {{{300}}} seconds of power-up the cooldown period will be reset to the minimum of {{{5}}} seconds. |
| 969 | |
| 970 | The details vary per product family of what the GSC monitors. If GSC Thermal protection is enabled: |
| 971 | * Venice (NXP IMX8M SoC): |
| 972 | - board temperature is monitored via a thermister against a configurable board temp limit |
| 973 | - Note that the IMX8M also has an internal CPU temperature but that is unavailable to the GSC and instead is supported by a Linux driver that will throttle CPU frequency |
| 974 | - see [wiki:venice/thermal] for more details |
| 975 | * Newport (Marvell CN80XX SoC): |
| 976 | - board temperature is monitored via a thermister against a configurable board temp limit |
| 977 | - CPU die junction temp (Tj) is monitored by a Maxim MAX6642 temperature sensor with its alert signal connected to the GSC. The temperature limit of the MAX6642 is configured by the Newport BDK for a limit of 95C (for 1500MHz SoC) and 100C (for 800/1000/12000MHz SoC) |
| 978 | - see [wiki:newport/powerthermal] for more details |
992 | | **Note:** Thermal protection is enabled automatically for Newport by current Gateworks boot firmware. This is indicated by "Thermal Protection Enabled" as seen in the Newport SPL output below: |
| 982 | With the latest boot firmware the state of GSC thermal protection will be shown via the serial console on power-up: |
| 983 | * Venice: |
| 984 | {{{#!bash |
| 985 | U-Boot SPL 2021.07-00079-g8e5ddcb6e1f3 (Mar 29 2022 - 08:19:27 -0700) |
| 986 | GSCv3 : v61 0x1d6f RST:VIN Thermal protection:enabled at 96C |
| 987 | }}} |
| 988 | * Newport: |
| 989 | {{{#!bash |
| 990 | Gateworks Newport SPL (12.7.0-0228336 Sat Mar 19 00:40:54 UTC 2022) |
| 991 | |
| 992 | GSC : v59 0xe619 RST:VIN Thermal Protection Enabled at board temp of 86C |
| 993 | }}} |
| 994 | |
| 995 | With the latest boot firmware the recommended way to configure this is to use the {{{gsc thermal}}} command in U-Boot: |
| 996 | * Disable GSC thermal protection: |
| 997 | {{{#!bash |
| 998 | u-boot=> gsc thermal disable |
| 999 | Thermal protection:disabled |
| 1000 | }}} |
| 1001 | * Enable GSC thermal protection: |
| 1002 | {{{#!bash |
| 1003 | u-boot=> gsc thermal enable |
| 1004 | Thermal protection:enabled at 96C |
| 1005 | }}} |
| 1006 | * Enable GSC thermal protection and specify the board temperature limit (requires GSC Firmware v59+): |
| 1007 | {{{ |
| 1008 | u-boot=> gsc thermal enable 86 |
| 1009 | Thermal protection:enabled at 86C |
| 1010 | }}} |
| 1011 | |
| 1012 | **Note:** Thermal protection is enabled automatically for Newport and Venice via the U-Boot {{{preboot}}} env variable which can be changed by the user: |
| 1013 | * Venice: |
| 1014 | {{{#!bash |
| 1015 | u-boot=> print preboot |
| 1016 | preboot=gsc wd-disable; gsc thermal enable 96 |
| 1017 | u-boot=> setenv preboot 'gsc wd-disable; gsc thermal disable'; saveenv # disable |
| 1018 | }}} |
| 1019 | * Newport: |
| 1020 | {{{#!bash |
| 1021 | u-boot=> print preboot |
| 1022 | preboot=gsc thermal enable 96 |
| 1023 | u-boot=> setenv preboot 'gsc thermal disable'; saveenv # disable |
| 1024 | }}} |
| 1025 | |