Author: wmb
Date: 2007-10-10 02:10:18 +0200 (Wed, 10 Oct 2007)
New Revision: 670
Added:
cpu/x86/pc/olpc/timertest.fth
Modified:
cpu/x86/pc/olpc/devices.fth
Log:
OLPC Trac #4050 - added selftest /isa/timer to catch broken 14 MHz clocks.
Modified: cpu/x86/pc/olpc/devices.fth
===================================================================
--- cpu/x86/pc/olpc/devices.fth 2007-10-10 00:08:32 UTC (rev 669)
+++ cpu/x86/pc/olpc/devices.fth 2007-10-10 00:10:18 UTC (rev 670)
@@ -64,6 +64,8 @@
[then]
+fload ${BP}/cpu/x86/pc/olpc/timertest.fth \ Selftest for PIT timer
+
1 [if]
dev /interrupt-controller
h# 20 to vector-base0
@@ -111,6 +113,9 @@
[then]
fload ${BP}/dev/pci/isaall.fth
+\ We don't need a serial selftest because the serial port is internal only
+\ and the selftest turns off the diag device
+dev /serial warning @ warning off : selftest false ; warning ! device-end
devalias com1 /isa/serial@i3f8:115200
devalias mouse /isa/8042/mouse
devalias d disk
Added: cpu/x86/pc/olpc/timertest.fth
===================================================================
--- cpu/x86/pc/olpc/timertest.fth (rev 0)
+++ cpu/x86/pc/olpc/timertest.fth 2007-10-10 00:10:18 UTC (rev 670)
@@ -0,0 +1,61 @@
+purpose: Selftest for ISA timer
+\ See license at end of file
+
+dev /isa/timer
+
+: wait-rollover ( -- error? )
+ get-msecs d# 200 + begin ( time-limit )
+ 0 count@ 1 = if drop false exit then
+ dup get-msecs - ( time-limit diff )
+ 0<= until
+ drop true
+;
+: selftest ( -- error? )
+ 0 count@ 0= if
+ 1 ms
+ 0 count@ 0= if
+ ." The ISA PIT timer is not ticking." cr
+ ." Possible cause: bad 14 MHz clock to CS5536 chip." cr
+ true exit
+ then
+ then
+
+ wait-rollover if
+ ." The ISA PIT timer did not reach a count of 1." cr
+ true exit
+ then
+
+ 1 ms
+
+ 0 count@ d# 10000 d# 11000 between 0= if
+ ." The ISA PIT timer is ticking at the wrong rate." cr
+ true exit
+ then
+
+ false
+;
+
+device-end
+\ LICENSE_BEGIN
+\ Copyright (c) 2007 FirmWorks
+\
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END