Changes between Version 98 and Version 99 of gsc


Ignore:
Timestamp:
03/29/2022 04:13:55 PM (4 months ago)
Author:
Tim Harvey
Comment:

updated GSC thermal protection details

Legend:

Unmodified
Added
Removed
Modified
  • gsc

    v98 v99  
    228228|| 3-7   || GSC_TP_LIMIT  || Max temp limit additive value. This value is multiplied by 2, then added to 70C. Valid values are 0x01-0x1a resulting in a range of 72-122C ||
    229229
    230 For example, to configure a value of 100C use the following formula:
    231 {{{#!bash
    232 bit value = ((target_temp_limit_in_celcius - 70) / 2) << 3
    233 0x78 = ((100 - 70) / 2) << 3
    234 
    235 # In U-Boot:
    236 i2c dev 0; i2c mw 0x20 0x13 0x79  # add 1 for enable bit
    237 }}}                             
     230See [#thermal-protection] for more details
    238231
    239232[=#GSC_BOOT_OPTIONS]
     
    973966[=#thermal-protection]
    974967== GSC Thermal Protection (GSCv3 firmware v53+)
    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 }}}
     968The 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
     970The 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
    989979
    990980Thermal protection is controlled by [#gsc_thermal_protect GSC_THERMAL_PROTECT (R19)].
    991981
    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:
     982With the latest boot firmware the state of GSC thermal protection will be shown via the serial console on power-up:
     983 * Venice:
     984{{{#!bash
     985U-Boot SPL 2021.07-00079-g8e5ddcb6e1f3 (Mar 29 2022 - 08:19:27 -0700)
     986GSCv3   : v61 0x1d6f RST:VIN Thermal protection:enabled at 96C
     987}}}
     988 * Newport:
     989{{{#!bash
     990Gateworks Newport SPL (12.7.0-0228336 Sat Mar 19 00:40:54 UTC 2022)
     991
     992GSC     : v59 0xe619 RST:VIN Thermal Protection Enabled at board temp of 86C
     993}}}
     994
     995With 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
     998u-boot=> gsc thermal disable
     999Thermal protection:disabled
     1000}}}
     1001 * Enable GSC thermal protection:
     1002{{{#!bash
     1003u-boot=> gsc thermal enable
     1004Thermal protection:enabled at 96C
     1005}}}
     1006 * Enable GSC thermal protection and specify the board temperature limit (requires GSC Firmware v59+):
     1007{{{
     1008u-boot=> gsc thermal enable 86
     1009Thermal 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
     1015u-boot=> print preboot
     1016preboot=gsc wd-disable; gsc thermal enable 96
     1017u-boot=> setenv preboot 'gsc wd-disable; gsc thermal disable'; saveenv # disable
     1018}}}
     1019 * Newport:
     1020{{{#!bash
     1021u-boot=> print preboot
     1022preboot=gsc thermal enable 96
     1023u-boot=> setenv preboot 'gsc thermal disable'; saveenv # disable
     1024}}}
     1025
    9931026{{{#!bash
    9941027GSC     : v53 0x0e68 RST:VIN Thermal Protection Enabled