Author: quozl Date: Thu Sep 15 07:39:43 2011 New Revision: 2509 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2509
Log: OLPC XO-1.75 - avoid turning off thermal sensor watchdog reset during watchdog configuration, add thermal sensor watchdog test script
Modified: cpu/arm/mmp2/thermal.fth cpu/arm/mmp2/watchdog.fth
Modified: cpu/arm/mmp2/thermal.fth ============================================================================== --- cpu/arm/mmp2/thermal.fth Wed Sep 14 00:43:10 2011 (r2508) +++ cpu/arm/mmp2/thermal.fth Thu Sep 15 07:39:43 2011 (r2509) @@ -7,7 +7,7 @@ 3 h# 015090 io! \ Enable clocks to thermal sensor h# 10000 thermal-base io! \ Enable sensing ; - + : cpu-temperature ( -- celcius ) 0 ( acc ) d# 100 0 do ( acc ) \ Accumulate 100 samples @@ -21,6 +21,35 @@
d# 52940 - d# 196 / ( celcius ) ; + +thermal-base h# 4 + value wd-thresh +: wd-thresh@ ( -- n ) wd-thresh io@ ; +: wd-thresh! ( n -- ) wd-thresh io! ; + +: .thermal + ." degrees=" cpu-temperature .d + ." raw=" thermal-base io@ h# 3ff and . + ." threshold=" wd-thresh@ h# 3ff and . +; + +: test-thermal + .thermal cr + + \ save the threshold set by cforth + thermal-base 4 + io@ >r + + \ temporarily set the threshold close to current value + thermal-base io@ h# 3ff and 8 + wd-thresh! + + begin + (cr .thermal kill-line d# 500 ms key? + until key drop cr + + \ restore the threshold + r> wd-thresh! + .thermal cr +; + stand-init: Thermal sensor init-thermal-sensor ;
Modified: cpu/arm/mmp2/watchdog.fth ============================================================================== --- cpu/arm/mmp2/watchdog.fth Wed Sep 14 00:43:10 2011 (r2508) +++ cpu/arm/mmp2/watchdog.fth Thu Sep 15 07:39:43 2011 (r2509) @@ -1,10 +1,10 @@ \ See license at end of file purpose: System reset using the watchdog timer
+main-pmu-pa h# 200 + constant wdtpcr : enable-wdt-clock main-pmu-pa h# 1020 + dup io@ h# 10 or swap io! \ enable wdt 2 clock PMUM_PRR_PJ - 7 main-pmu-pa h# 200 + io! - 3 main-pmu-pa h# 200 + io! + wdtpcr io@ dup h# 7 or wdtpcr io! h# 3 or wdtpcr io! ;
h# 080000 value wdt-pa @@ -17,7 +17,7 @@ : wdt-reset ( -- ) enable-wdt-clock 2 h# 68 wdt! \ set match register - 3 h# 64 wdt! \ match enable: just interrupt, no reset yet + 3 h# 64 wdt! \ match enable: enable counting, enable reset 1 h# 98 wdt! \ Reset counter begin again ; @@ -26,7 +26,7 @@ : test-wdt ( -- ) enable-wdt-clock h# 100 h# 68 wdt! \ set match register - 1 h# 64 wdt! \ match enable: just interrupt, no reset yet + 1 h# 64 wdt! \ match enable: enable counting, no reset yet h# 6c wdt@ . d# 100 ms h# 6c wdt@ . ; [then]