{{{#!html
See also:
The Gateworks System Controller has a temperature sensor that measures board temperature as well as a fan controller on some models.
For more information:
The IMX6 System On Chip has an internal die temperature sensor.
There are several temperature grades of IMX6 SoC's that are used across various Gateworks products:
The Linux IMX6 cpufreq cooling driver (drivers/thermal/imx_thermal.c) provides several functions:
There is a Linux sysfs API for accessing this information:
cat /sys/class/hwmon/hwmon1/temp1_input # current IMX temp in milicelcius cat /sys/class/thermal/thermal_zone0/trip_point_0_temp # current passive temp in milicelcius cat /sys/class/thermal/thermal_zone0/trip_point_1_temp # current critical temp in milicelcius # set passive/crit to 105C/125C for automotive CPU echo 105000 > /sys/class/thermal/thermal_zone0/trip_point_0_temp echo 125000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
Notes:
The Gateworks Ventana Bootloader driver (drivers/thermal/imx_thermal.c) provides several functions:
The Vivante GPU has some frequency scaling based on temperature which enabled by default in the [drivers/mxc/gpu-viv/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c Vivante driver]. If enabled the driver will scale the GPU frequency down by a specified divisor. By default this is 3/64 for the Gateworks Yocto and Android BSP's.
The GPU frequency scaling is triggered by the IMX thermal zone passive trip point (see above). Note that because the temperature is triggered by the IMX thermal zone, the ARM cpu frequency will be reduced at the same time.
The minimum devisor used to reduce GPU frequency by default is 1 (meaning 1/64th frequency scaling which is the maximum amount of frequency reduction possible) you can use the drivers sysfs interface:
echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64
echo 3 > /sys/module/galcore/parameters/gpu3DMinClock # set GPU freq reduction to 3/64
echo 3 > /sys/bus/platform/drivers/galcore/gpu3DMinClock # set GPU freq reduction to 3/64
You can change this value from 1 to 64, where 1 is 1/64 frequency (maximum reduction) and 64 is no reduction. Note that depending on what the GPU is being used for, you may want to increase this value. We have found that a value of 3 for example offers adequate cooling without sacrificing significant performance.
}}}