[openfirmware] r1369 - cpu/x86/pc/olpc/via dev dev/geode/ac97 dev/hdaudio dev/olpc dev/olpc/dcon dev/olpc/kb3700 dev/olpc/keyboard dev/olpc/touchpad dev/olpc/viacamera

svn at openfirmware.info svn at openfirmware.info
Fri Sep 18 03:19:08 CEST 2009


Author: wmb
Date: 2009-09-18 03:19:07 +0200 (Fri, 18 Sep 2009)
New Revision: 1369

Added:
   dev/hdaudio/test.fth
   dev/olpc/confirm.fth
Modified:
   cpu/x86/pc/olpc/via/devices.fth
   cpu/x86/pc/olpc/via/mfgtest.fth
   dev/geode/ac97/selftest.fth
   dev/hdaudio/core.fth
   dev/hdaudio/hdaudio.bth
   dev/libertas.fth
   dev/olpc/dcon/viadcon.fth
   dev/olpc/kb3700/battery.fth
   dev/olpc/keyboard/selftest.fth
   dev/olpc/touchpad/touchpad.fth
   dev/olpc/viacamera/camera.fth
Log:
OLPC Via - big batch of selftest improvments to make test-all
more suitable for the "SMT test" phase of manufacturing.


Modified: cpu/x86/pc/olpc/via/devices.fth
===================================================================
--- cpu/x86/pc/olpc/via/devices.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ cpu/x86/pc/olpc/via/devices.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -119,6 +119,7 @@
 fload ${BP}/dev/16550pkg/16550.fth  \ Serial port support package
 end-support-package
 [then]
+: serial-enabled?  ( -- flag )  h# 8846 config-b@ h# 40 and 0<>  ;
 
 fload ${BP}/dev/pci/isaall.fth
 \ We don't need a serial selftest because the serial port is internal only
@@ -262,6 +263,7 @@
    atest? 0=  if  wlan-reset  then
 ;
 
+fload ${BP}/dev/olpc/confirm.fth             \ Selftest interaction modalities
 fload ${BP}/cpu/x86/pc/olpc/mfgdata.fth      \ Manufacturing data
 fload ${BP}/cpu/x86/pc/olpc/mfgtree.fth      \ Manufacturing data in device tree
 fload ${BP}/cpu/x86/pc/olpc/kbdtype.fth      \ Export keyboard type

Modified: cpu/x86/pc/olpc/via/mfgtest.fth
===================================================================
--- cpu/x86/pc/olpc/via/mfgtest.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ cpu/x86/pc/olpc/via/mfgtest.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -104,8 +104,8 @@
 : camera-item   ( -- )  " /camera"    mfg-test-dev  ;
 : wlan-item     ( -- )  " /wlan"      mfg-test-dev  ;
 : timer-item    ( -- )  " /timer"     mfg-test-dev  ;
-: touchpad-item ( -- )  " /mouse"     mfg-test-dev  ;
-: keyboard-item ( -- )  " /keyboard"  mfg-test-dev  ;
+: touchpad-item ( -- )  " /8042/mouse"     mfg-test-dev  ;
+: keyboard-item ( -- )  " /8042/keyboard"  mfg-test-dev  ;
 
 : mfgtest-menu  ( -- )
    clear-menu
@@ -125,11 +125,11 @@
    " RAM chips"
    ['] memory-item   ram.icon      1 2 install-icon
 
-   " SD card controllers - internal and external mass storage"
+   " Internal mass storage"
    ['] sd-item       sdcard.icon   1 3 install-icon
 
-   " USB ports"
-   ['] usb-item      usb.icon      1 4 install-icon
+   " Plug-in SD card"
+   ['] sd-item       sdcard.icon   1 4 install-icon
 
    " Battery"
    ['] battery-item  battery.icon  2 0 install-icon
@@ -149,8 +149,8 @@
    " RTC (Real-Time Clock)"
    ['] rtc-item      clock.icon    3 0 install-icon
 
-   " ISA Timer"
-   ['] timer-item    timer.icon    3 1 install-icon
+   " USB ports"
+   ['] usb-item      usb.icon      3 1 install-icon
 
    \ These are last because they require user participation.
    \ The earlier tests are all included in automatic batch-mode.
@@ -160,7 +160,6 @@
 
    " Touchpad"
    ['] touchpad-item touchpad.icon 3 3 install-icon
-
 ;
 
 ' mfgtest-menu to root-menu

Modified: dev/geode/ac97/selftest.fth
===================================================================
--- dev/geode/ac97/selftest.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/geode/ac97/selftest.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -131,7 +131,8 @@
    sweep-test
    mic-test
    record-base record-len la1+  " dma-free" $call-parent
-   close false
+   close
+   false
 ;
 
 \ LICENSE_BEGIN

Modified: dev/hdaudio/core.fth
===================================================================
--- dev/hdaudio/core.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/hdaudio/core.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -424,6 +424,8 @@
 
 \ \\ Playback
 
+false value playing?
+
 : upsampling?  ( -- ? )  scale-factor 1 <>  ;
 
 : open-out  ( -- )
@@ -455,23 +457,31 @@
 ;
 
 : write  ( adr len -- actual )
-   4 to sd#  audio-out  install-playback-alarm
+   4 to sd#  audio-out  install-playback-alarm  true to playing?
 ;
 
 \ Alarm handle to stop the stream when the content has been played.
 : playback-completed-alarm  ( -- )
-   sd#                                 ( sd# )
-   4 to sd#                            ( sd# )
-   stream-done?  if  write-done  then  ( sd# )
-   to sd#                              ( )
+   sd#                                                    ( sd# )
+   4 to sd#                                               ( sd# )
+   stream-done?  if  write-done  false to playing?  then  ( sd# )
+   to sd#                                                 ( )
 ;
 
 ' playback-completed-alarm is playback-alarm
 
-: wait-sound  ( -- )  ; \ sound stops with asynchronous alarm handler
+: wait-sound  ( -- )  begin  playing?  0= until  ;
 
-: set-volume  ( dB -- )  dac to node  dB>step# output-gain  ;
+false value left-mute?
+false value right-mute?
 
+: set-volume  ( dB -- )
+   dac to node
+   dB>step#
+   dup  left-mute?  if  h# 80 or  then  h# 3a000 or cmd  \ left gain
+        right-mute? if  h# 80 or  then  h# 39000 or cmd  \ right gain
+;
+
 \ \\ Recording
 
 0 value recbuf

Modified: dev/hdaudio/hdaudio.bth
===================================================================
--- dev/hdaudio/hdaudio.bth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/hdaudio/hdaudio.bth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -14,6 +14,7 @@
 fload ${BP}/dev/hdaudio/extra.fth
 fload ${BP}/forth/lib/isin.fth
 fload ${BP}/dev/geode/ac97/selftest.fth
+fload ${BP}/dev/hdaudio/test.fth
 end0
 
 end-tokenizing

Added: dev/hdaudio/test.fth
===================================================================
--- dev/hdaudio/test.fth	                        (rev 0)
+++ dev/hdaudio/test.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -0,0 +1,88 @@
+purpose: Manufacturing testing
+\ See license at end of file
+
+: alloc-buffer  ( -- )
+   record-len la1+  " dma-alloc" $call-parent to record-base
+;
+: dealloc-buffer  ( -- )
+   record-base record-len la1+  " dma-free" $call-parent
+;
+
+: jingle  ( -- )  " play-wav rom:splash" evaluate  wait-sound  ;
+
+: speaker-test  ( -- )
+   ." Playing jingle on the left speaker.. "
+   true to right-mute?
+   jingle  cr
+   false to right-mute?
+   true to left-mute?
+   ." Playing jingle on the right speaker.. "
+   jingle  cr
+   false to left-mute?
+;
+
+: headphones-test  ( -- )
+   h# 19 to node
+   pin-sense? 0= if
+      ." Connect headphones to continue.. "
+      begin  pin-sense?  until  cr
+   then
+   ." Press a key to play sound.. "  key drop  cr
+   h# 1f to node  power-off  \ turn off speaker
+   jingle
+   h# 1f to node  power-on   \ turn speaker back on
+;
+
+: builtin-mic-test  ( -- )
+   ." Press a key to test recording / playback on the built-in microphone.. "
+   key drop cr
+   mic-test
+;
+
+: external-mic-test  ( -- )
+   h# 1a to node
+   pin-sense? 0= if
+      ." Connect microphone to continue.. "
+      begin  pin-sense?  until  cr
+   then
+   ." Press a key to test recording / playback on the external microphone.. "
+   key drop cr
+   mic-test
+;
+
+: interactive-test  ( -- error? )
+   alloc-buffer
+   speaker-test
+   headphones-test
+   builtin-mic-test
+   external-mic-test
+   dealloc-buffer
+   " confirm-selftest?" eval
+;
+: selftest  ( -- )
+   diagnostic-mode?  if  interactive-test  else  selftest  then
+;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2009 Luke Gorrie
+\ 
+\ 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

Modified: dev/libertas.fth
===================================================================
--- dev/libertas.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/libertas.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -1696,7 +1696,16 @@
       ." Failed to scan" true cr
    else    ( adr len )
 \     drop .scan false
-      drop .ssids false
+      diagnostic-mode?  if  ( adr len )
+         drop 2+ c@  if     ( )
+            false
+         else
+            ." ERROR: No access points seen" cr
+            true
+         then
+      else                  ( adr len )
+         drop .ssids false
+      then
    then
 
    close

Added: dev/olpc/confirm.fth
===================================================================
--- dev/olpc/confirm.fth	                        (rev 0)
+++ dev/olpc/confirm.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -0,0 +1,18 @@
+purpose: Operator confirmation of selftest results
+
+: confirm-selftest?  ( -- error? )
+   diagnostic-mode?  if
+      ." Did the test pass (n for FAIL) ? "
+      key dup emit cr  upc  [char] N  =
+   else
+      false
+   then
+;
+
+: has-direct-child?  ( name at unit$ -- found? )
+   also  current @ >r           ( name at unit$  r: current )
+   [char] @  left-parse-string  ( unit$ name$ r: current )
+   ['] (find-node) catch        ( unit$ name$ found? r: current )
+   >r 4drop r> 0<>              ( found? r: current )
+   r> set-current  previous     ( found? )
+;

Modified: dev/olpc/dcon/viadcon.fth
===================================================================
--- dev/olpc/dcon/viadcon.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/olpc/dcon/viadcon.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -110,6 +110,7 @@
    ['] dcon!  catch  if  2drop  smb-stop 1 ms  smb-off  1 ms  smb-on  then
 ;
 
+: mode@    ( -- mode )    1 dcon@  ;
 : mode!    ( mode -- )    1 dcon!  ;
 : hres!    ( hres -- )    2 dcon!  ;  \ def: h#  458 d# 1200
 : htotal!  ( htotal -- )  3 dcon!  ;  \ def: h#  4e8 d# 1256
@@ -124,6 +125,9 @@
 : brighter  ( -- )  bright@ 1+  h# f min  bright!  ;
 : dimmer    ( -- )  bright@ 1-  0 max  bright!  ;
 
+: backlight-off  ( -- )  mode@  8 invert and  mode!  ;
+: backlight-on   ( -- )  mode@  8 or  mode!  ;
+
 \ Color swizzle, AA, no passthrough, backlight
 : set-color ( color? -- )
    dup to color?

Modified: dev/olpc/kb3700/battery.fth
===================================================================
--- dev/olpc/kb3700/battery.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/olpc/kb3700/battery.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -595,10 +595,96 @@
 new-device
 " battery" device-name
 0 0 reg  \ Needed so test-all will run the selftest
-: selftest  ( -- error? )
-   .bat
+
+\ Test that the battery is inserted and not broken.
+: test-battery  ( -- error? )
+   bat-status@ h# 01 and  0= if
+      ." Insert battery to continue.. "
+      begin  d# 100 ms  bat-status@ h# 01 and  until
+      cr
+   then
+   ." Testing battery status.. "
+   bat-status@ h# 04 and  if
+      ." error: battery broken" cr
+      true
+   else
+      ." ok: " cr .bat cr
+      false
+   then
+;
+
+: wait-no-ac  ( -- error? )
+   ." Disconnect AC power to continue.. "
+   d# 200 0  do
+      d# 100 ms
+      bat-status@ h# 10 and  0=  if
+         false unloop cr exit
+      then
+   loop
+   cr
+   ." ERROR: AC not disconnected" cr
+   true
+;
+
+\ Test that we can run without AC power.
+: test-discharging  ( -- error? )
+   bat-status@ h# 10 and  0<> if
+      wait-no-ac  if  true exit  then
+   then
+   ." Test running from battery.. "
+   d# 2000 ms
+   bat-status@ h# 40 and  if
+      ." ok: battery discharging" cr
+      false
+   else
+      ." ERROR: battery not discharging" cr
+      true
+   then
+;
+
+: wait-ac  ( -- error? )
+   ." Connect AC power to continue.. "
+   d# 200 0  do
+      d# 100 ms
+      bat-status@ h# 10 and  if
+         false unloop cr exit
+      then
+   loop
+   cr
+   ." ERROR: AC not connected" cr
+   true
+;
+
+: test-charging  ( -- error? )
+   bat-status@ h# 10 and  0= if
+      wait-ac  if  true exit  then
+   then
+   ." Test running from AC.. "
+   d# 2000 ms
+   bat-status@ h# 40 and  0= if
+      ." ok: battery is not discharging" cr
+      false
+   else
+      ." ERROR: battery is discharging" cr
+      true
+   then
+;
+
+: interactive-test  ( -- error? )
+   test-battery      if  true exit  then
+   test-discharging  if  true exit  then
+   test-charging     if  true exit  then
    false
 ;
+
+: selftest  ( -- error? )
+   diagnostic-mode?  if
+      interactive-test
+   else
+      .bat false
+   then
+;
+
 finish-device
 device-end
 

Modified: dev/olpc/keyboard/selftest.fth
===================================================================
--- dev/olpc/keyboard/selftest.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/olpc/keyboard/selftest.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -429,7 +429,7 @@
    screen-ih iselect  erase-screen  iunselect
    page
    close
-   false
+   confirm-selftest?
 ;
 warning !
 

Modified: dev/olpc/touchpad/touchpad.fth
===================================================================
--- dev/olpc/touchpad/touchpad.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/olpc/touchpad/touchpad.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -466,7 +466,7 @@
    close
    cursor-on
    page
-   0
+   confirm-selftest?
 ;
 
 

Modified: dev/olpc/viacamera/camera.fth
===================================================================
--- dev/olpc/viacamera/camera.fth	2009-09-18 01:15:46 UTC (rev 1368)
+++ dev/olpc/viacamera/camera.fth	2009-09-18 01:19:07 UTC (rev 1369)
@@ -505,12 +505,17 @@
 : unmirrored  ( -- )  h# 1e ov@  h# 20 invert and  h# 1e ov!  ;
 
 : selftest  ( -- error? )
+   serial-enabled?  if
+      ." The serial port is in use so the camera cannot be used" cr
+      true exit
+   then
    camera-open 0=  if  true exit  then
    d# 300 ms
    unmirrored  shoot-still  ?dup  if  camera-close exit  then	( error? )
    d# 1,000 ms
    mirrored   shoot-movie  full-brightness		( error? )
    camera-close						( error? )
+   ?dup  0=  if  confirm-selftest?  then		( error? )
 ;
 
 : dump-regs  ( run# -- )




More information about the openfirmware mailing list