Changeset 3238


Ignore:
Timestamp:
Aug 29, 2012, 3:20:38 AM (2 years ago)
Author:
wmb
Message:

OLPC ARM - Audio driver - use the new "my-clocks-on/off" facility to move the clock enabling code out of this file into the PMUA driver.

Location:
cpu/arm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpu/arm/mmp2/pmua.fth

    r3236 r3238  
    122122" clock-enable-registers" property 
    123123 
    124 [ifdef] notdef 
    125    " clock-enable-registers" get-property  if  ( on? clock# ) 
    126       2drop exit          ( -- ) 
    127    then                   ( on? clock# propval$ ) 
    128  
    129    \ Offset into clock-enable-registers array 
    130    rot  h# 10 *           ( on? propval$ offset ) 
    131    2dup  <=  if           ( on? propval$ offset ) 
    132       4drop exit          ( -- ) 
    133    then                   ( on? propval-adr$ offset ) 
    134    /string                ( on? propval-adr$' ) 
    135     
    136    \ Get register offset 
    137    decode-int >r          ( on? propval-adr$'           r: reg-offset ) 
    138  
    139    \ Apply the clear mask to the register value 
    140    decode-int invert      ( on? propval-adr$' clr-mask  r: reg-offset ) 
    141    r@ pmua@ and           ( on? propval-adr$' regval    r: reg-offset ) 
    142    -rot                   ( on? regval propval-adr$     r: reg-offset ) 
    143  
    144    \ Apply the set mask if the clock is being turned on 
    145    3 roll  if             ( regval propval-adr$         r: reg-offset ) 
    146       get-encoded-int or  ( regval'                     r: reg-offset ) 
    147    else                   ( regval propval-adr$         r: reg-offset ) 
    148       2drop               ( regval                      r: reg-offset ) 
    149    then                   ( regval                      r: reg-offset ) 
    150  
    151    \ Write back the modified register value 
    152    r> pmua!               ( ) 
    153 [then] 
    154  
    155124: generic-on/off  ( on? clock# -- ) 
    156125   get-reg&masks  if  drop exit  then  ( on? set-mask clr-mask reg ) 
     
    158127   rot  if  or  else  nip  then        ( regval'  r: reg ) 
    159128   r> pmua! 
     129; 
     130 
     131h# 10c constant audio-clk 
     132 
     133[ifdef] mmp3 
     134h# 164 constant audio-dsa 
     135h# 1e4 constant isld-dspa-ctrl 
     136h# 240 constant audio-sram-pwr 
     137[then] 
     138 
     139\ Discrepancies - ms vs us, double-enabling of AXI 
     140: dly  d# 10 us  ; 
     141 
     142: audio-island-on  ( -- ) 
     143[ifdef] mmp3 
     144   h# 200  audio-clk  pmua-set  dly  \ Power switch on 
     145   h# 400  audio-clk  pmua-set  dly  \ Power switch more on 
     146   1  audio-sram-pwr  pmua-set  dly  \ Audio SRAM on 
     147   2  audio-sram-pwr  pmua-set  dly  \ Audio SRAM more on 
     148   4  audio-sram-pwr  pmua-set  dly  \ Audio core on 
     149   8  audio-sram-pwr  pmua-set  dly  \ Audio core more on 
     150   h# 100  audio-clk  pmua-set  dly  \ Disable isolation 
     151 
     152   4  audio-clk pmua-set           \ Start audio SRAM redundancy repair 
     153   begin  audio-clk pmua@  4 and 0=  until  \ And wait until done 
     154 
     155   \ Bring audio island out of reset 
     156   1 audio-dsa pmua-set 
     157   4 audio-dsa pmua-set 
     158   1 audio-dsa pmua-set 
     159 
     160   \ Enable dummy clocks to the SRAMs 
     161   h# 10 isld-dspa-ctrl pmua-set  d# 250 us  h# 10 isld-dspa-ctrl pmua-clr 
     162 
     163   \ Enable the AXI/APB clocks to the Audio island prior to programming island registers 
     164   2 audio-dsa pmua-set 
     165   8 audio-dsa pmua-set 
     166[else] 
     167   h# 600  audio-clk  pmua!  dly  \ Turn on power 
     168   h# 610  audio-clk  pmua!  dly  \ Enable clock 
     169   h# 710  audio-clk  pmua!  dly  \ Disable isolation 
     170   h# 712  audio-clk  pmua!  dly  \ Release reset 
     171[then] 
     172; 
     173 
     174: audio-island-off  ( -- ) 
     175[ifdef] true 
     176[ifdef] mmp3 
     177   h#   a  audio-dsa       pmua-clr  \ Disable AXI and APB clocks 
     178   h#   5  audio-dsa       pmua-clr  \ Put AXI and APB clocks in reset 
     179   h# 100  audio-clk       pmua-clr  \ Enable isolation 
     180   h#   c  audio-sram-pwr  pmua-clr  \ Audio core off 
     181   h#   3  audio-sram-pwr  pmua-clr  \ Audio SRAM off 
     182   h# 600  audio-clk       pmua-clr  \ Enable isolation 
     183[else] 
     184   h# 710  audio-clk  pmua!  \ Set peripheral reset 
     185   h# 610  audio-clk  pmua!  \ Enable isolation 
     186   h# 600  audio-clk  pmua!  \ Disable clock 
     187   h# 000  audio-clk  pmua!  \ Turn off power 
     188[then] 
     189[then] 
     190   0 audio-clk pmua! 
     191; 
     192: audio-on/off  ( on? -- ) 
     193   if  audio-island-on  else  audio-island-off  then 
    160194; 
    161195 
     
    232266   then                            ( on? clock# ) 
    233267 
     268   dup d# 20 =  if   \ AUDIO       ( on? clock# ) 
     269      drop  audio-on/off  exit     ( -- ) 
     270   then 
     271 
    234272   generic-on/off 
    235273; 
  • cpu/arm/olpc/sound.fth

    r3232 r3238  
    8383: adma@  ( offset -- n )  adma-base + rl@  ; 
    8484 
    85 h# 10c +pmua constant audio-clk 
    86 [ifdef] mmp3 
    87 h# 164 +pmua constant audio-dsa 
    88 h# 1e4 +pmua constant isld-dspa-ctrl 
    89 h# 240 +pmua constant audio-sram-pwr 
    90 [then] 
    91  
    92 : audio-clock!     ( -- )  audio-clk io!  ; 
    9385: audio-clock-off  ( -- ) 
    9486   0 h# 38 sspa! 
    95    0 audio-clock! 
     87   my-clock-off 
    9688; 
    9789: start-audio-pll  ( -- error? ) 
     
    111103: dly  d# 10 us  ; 
    112104 
    113 \ Discrepancies - ms vs us, double-enabling of AXI 
    114 : audio-island-on  ( -- ) 
    115 [ifdef] mmp3 
    116    h# 200  audio-clk  io-set  dly  \ Power switch on 
    117    h# 400  audio-clk  io-set  dly  \ Power switch more on 
    118    1  audio-sram-pwr  io-set  dly  \ Audio SRAM on 
    119    2  audio-sram-pwr  io-set  dly  \ Audio SRAM more on 
    120    4  audio-sram-pwr  io-set  dly  \ Audio core on 
    121    8  audio-sram-pwr  io-set  dly  \ Audio core more on 
    122    h# 100  audio-clk  io-set  dly  \ Disable isolation 
    123  
    124    4  audio-clk io-set           \ Start audio SRAM redundancy repair 
    125    begin  audio-clk io@  4 and 0=  until  \ And wait until done 
    126  
    127    \ Bring audio island out of reset 
    128    1 audio-dsa io-set 
    129    4 audio-dsa io-set 
    130    1 audio-dsa io-set 
    131  
    132    \ Enable dummy clocks to the SRAMs 
    133    h# 10 isld-dspa-ctrl io-set  d# 250 us  h# 10 isld-dspa-ctrl io-clr 
    134  
    135    \ Enable the AXI/APB clocks to the Audio island prior to programming island registers 
    136    2 audio-dsa io-set 
    137    8 audio-dsa io-set 
    138 [else] 
    139    h# 600 audio-clock!  dly  \ Enable 
    140    h# 610 audio-clock!  dly  \ Release reset 
    141    h# 710 audio-clock!  dly  \ Enable 
    142    h# 712 audio-clock!  dly  \ Release reset 
    143 [then] 
    144 ; 
    145  
    146105false value use-audio-pll? 
    147106: audio-clock-on  ( -- error? ) 
    148    audio-island-on 
     107   my-clock-on 
    149108 
    150109   use-audio-pll?  if 
Note: See TracChangeset for help on using the changeset viewer.