[openfirmware] [commit] r2521 - cpu/arm/olpc/1.75 dev/hdaudio

repository service svn at openfirmware.info
Sat Sep 17 00:58:25 CEST 2011


Author: wmb
Date: Sat Sep 17 00:58:24 2011
New Revision: 2521
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2521

Log:
OLPC XO-1.75 - audio selftest - fixed problem with intermittent channel reversal failures.

Modified:
   cpu/arm/olpc/1.75/sound.fth
   dev/hdaudio/test.fth

Modified: cpu/arm/olpc/1.75/sound.fth
==============================================================================
--- cpu/arm/olpc/1.75/sound.fth	Fri Sep 16 23:39:35 2011	(r2520)
+++ cpu/arm/olpc/1.75/sound.fth	Sat Sep 17 00:58:24 2011	(r2521)
@@ -156,7 +156,7 @@
    1 h# 80 adma!           \ Enable DMA completion interrupts
    h# 0081.3020   h# 40 adma! \ 16 bits, pack, fetch next, enable, chain, hold dest, inc src
 ;
-: stop-out-ring  ( -- )  h# 100000 h# 40 adma!  ;
+: stop-out-ring  ( -- )  h# 100000 h# 40 adma!  0 h# 80 adma!  ;
 
 : make-in-ring  ( -- )
    in-desc h# 10 +  in-bufs               sspa-base   /audio-buf   in-desc          set-descriptor
@@ -169,6 +169,7 @@
 \   h# 0081.3008   h# 44 adma! \ 16 bits, pack, fetch next, enable, chain, inc dest, hold src
    h# 00a1.31c8   h# 44 adma! \ 16 bits, pack, fetch next, enable, chain, burst32, inc dest, hold src
 ;
+: stop-in-ring  ( -- )  h# 100000 h# 44 adma!  0 h# 84 adma!  ;
 
 : copy-out  ( -- )
    my-out-desc >r                        ( r: desc )
@@ -380,6 +381,7 @@
       copy-in                  ( actual )
    repeat                      ( actual )
    disable-sspa-rx             ( actual )
+   stop-in-ring                ( actual )
    reset-rx                    ( actual )
 ;
 : read  ( adr len -- actual )  open-in audio-in  close-in  ;
@@ -401,7 +403,9 @@
    in-adr0 to in-adr           ( )
    in-len0  mono?  if  2*  then  to in-len     
 
-   ( audio-clock-on  )         ( ) \ This will mess up any frequency settings
+   \ Resetting the clock at this point seems to prevent intermittent channel
+   \ reversal on reception.
+   audio-clock-on              ( ) \ This will mess up any frequency settings
 
    setup-sspa-tx               ( )
    setup-sspa-rx               ( )
@@ -428,6 +432,9 @@
    disable-sspa-rx             ( )
    disable-sspa-tx             ( )
 
+   stop-in-ring
+   stop-out-ring
+
    reset-rx
    reset-tx
 
@@ -523,8 +530,7 @@
 false value force-internal-mic?  \ Can't be implemented on XO-1.75
 2 value #channels
 
-\ Unless you do the audio-clock-on, the L/R phase is often wrong
-: input-test-settings  ( -- )  ( audio-clock-on ) ;
+: input-test-settings  ( -- )  ;
 : output-test-settings  ( -- )  ;
 
 d#  -1 constant case-test-volume

Modified: dev/hdaudio/test.fth
==============================================================================
--- dev/hdaudio/test.fth	Fri Sep 16 23:39:35 2011	(r2520)
+++ dev/hdaudio/test.fth	Sat Sep 17 00:58:24 2011	(r2521)
@@ -183,19 +183,25 @@
       instructions-done
    then
 ;
-\ Returns failure by throwing
-: automatic-test  ( -- )
-   analysis-parameters " set-analysis-parameters" $call-analyzer
+: acoustic-test  ( -- )
    disconnect-loopback  \ Not for 1.5; it can test internal while loopback is connected
    " smt-test?" evaluate  if
       test-with-fixture throw
    else
       test-with-case throw
    then
+;
+: loopback-test  ( -- )
    connect-loopback
    test-with-loopback throw
    disconnect-loopback
 ;
+\ Returns failure by throwing
+: automatic-test  ( -- )
+   analysis-parameters " set-analysis-parameters" $call-analyzer
+   acoustic-test
+   loopback-test
+;
 : selftest  ( -- error? )
    diagnostic-mode?  if
       open 0=  if  ." Failed to open /audio" cr true exit  then



More information about the openfirmware mailing list