Commit 60bad509 authored by Loren HUANG's avatar Loren HUANG Committed by Terry Lv

ENGR00221197-2 Update gpu driver to check Soc temperature

-Update gpu driver to check the SoC temperature, if the thermal_hot flag
is set by thermal driver. GPU3D clock will be slown down to the minimum
 value, the clock will be recovery when the flag is cleared by thermal driver.
-This patch depends on ENGR00220848, without it, kernel build can't pass.
Signed-off-by: default avatarLoren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
parent fab781fe
...@@ -30,6 +30,9 @@ ...@@ -30,6 +30,9 @@
#define _GC_OBJ_ZONE gcvZONE_COMMAND #define _GC_OBJ_ZONE gcvZONE_COMMAND
#if gcdENABLE_FSCALE_VAL_ADJUST
extern int thermal_hot;
#endif
/******************************************************************************\ /******************************************************************************\
********************************* Support Code ********************************* ********************************* Support Code *********************************
\******************************************************************************/ \******************************************************************************/
...@@ -1080,6 +1083,24 @@ gckCOMMAND_Commit( ...@@ -1080,6 +1083,24 @@ gckCOMMAND_Commit(
/* Extract the gckHARDWARE and gckEVENT objects. */ /* Extract the gckHARDWARE and gckEVENT objects. */
hardware = Command->kernel->hardware; hardware = Command->kernel->hardware;
#if gcdENABLE_FSCALE_VAL_ADJUST
if(hardware->core == gcvCORE_MAJOR){
static gctUINT orgFscale,minFscale,maxFscale;
static gctBOOL bAlreadyTooHot = gcvFALSE;
if((thermal_hot > 0) && (!bAlreadyTooHot)) {
gckHARDWARE_GetFscaleValue(hardware,&orgFscale,&minFscale, &maxFscale);
gckHARDWARE_SetFscaleValue(hardware, minFscale);
bAlreadyTooHot = gcvTRUE;
gckOS_Print("System is too hot. GPU3D will work at %d/64 clock.\n", minFscale);
} else if((!(thermal_hot > 0)) && bAlreadyTooHot) {
gckHARDWARE_SetFscaleValue(hardware, orgFscale);
gckOS_Print("Hot alarm is canceled. GPU3D clock will return to %d/64\n", orgFscale);
bAlreadyTooHot = gcvFALSE;
}
}
#endif
/* Check wehther we need to copy the structures or not. */ /* Check wehther we need to copy the structures or not. */
gcmkONERROR(gckOS_QueryNeedCopy(Command->os, ProcessID, &needCopy)); gcmkONERROR(gckOS_QueryNeedCopy(Command->os, ProcessID, &needCopy));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment