Changeset 3238
- Timestamp:
- Aug 29, 2012 3:20:38 AM (9 months ago)
- Location:
- cpu/arm
- Files:
-
- 2 edited
-
mmp2/pmua.fth (modified) (3 diffs)
-
olpc/sound.fth (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cpu/arm/mmp2/pmua.fth
r3236 r3238 122 122 " clock-enable-registers" property 123 123 124 [ifdef] notdef125 " clock-enable-registers" get-property if ( on? clock# )126 2drop exit ( -- )127 then ( on? clock# propval$ )128 129 \ Offset into clock-enable-registers array130 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 offset137 decode-int >r ( on? propval-adr$' r: reg-offset )138 139 \ Apply the clear mask to the register value140 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 on145 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 value152 r> pmua! ( )153 [then]154 155 124 : generic-on/off ( on? clock# -- ) 156 125 get-reg&masks if drop exit then ( on? set-mask clr-mask reg ) … … 158 127 rot if or else nip then ( regval' r: reg ) 159 128 r> pmua! 129 ; 130 131 h# 10c constant audio-clk 132 133 [ifdef] mmp3 134 h# 164 constant audio-dsa 135 h# 1e4 constant isld-dspa-ctrl 136 h# 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 160 194 ; 161 195 … … 232 266 then ( on? clock# ) 233 267 268 dup d# 20 = if \ AUDIO ( on? clock# ) 269 drop audio-on/off exit ( -- ) 270 then 271 234 272 generic-on/off 235 273 ; -
cpu/arm/olpc/sound.fth
r3232 r3238 83 83 : adma@ ( offset -- n ) adma-base + rl@ ; 84 84 85 h# 10c +pmua constant audio-clk86 [ifdef] mmp387 h# 164 +pmua constant audio-dsa88 h# 1e4 +pmua constant isld-dspa-ctrl89 h# 240 +pmua constant audio-sram-pwr90 [then]91 92 : audio-clock! ( -- ) audio-clk io! ;93 85 : audio-clock-off ( -- ) 94 86 0 h# 38 sspa! 95 0 audio-clock!87 my-clock-off 96 88 ; 97 89 : start-audio-pll ( -- error? ) … … 111 103 : dly d# 10 us ; 112 104 113 \ Discrepancies - ms vs us, double-enabling of AXI114 : audio-island-on ( -- )115 [ifdef] mmp3116 h# 200 audio-clk io-set dly \ Power switch on117 h# 400 audio-clk io-set dly \ Power switch more on118 1 audio-sram-pwr io-set dly \ Audio SRAM on119 2 audio-sram-pwr io-set dly \ Audio SRAM more on120 4 audio-sram-pwr io-set dly \ Audio core on121 8 audio-sram-pwr io-set dly \ Audio core more on122 h# 100 audio-clk io-set dly \ Disable isolation123 124 4 audio-clk io-set \ Start audio SRAM redundancy repair125 begin audio-clk io@ 4 and 0= until \ And wait until done126 127 \ Bring audio island out of reset128 1 audio-dsa io-set129 4 audio-dsa io-set130 1 audio-dsa io-set131 132 \ Enable dummy clocks to the SRAMs133 h# 10 isld-dspa-ctrl io-set d# 250 us h# 10 isld-dspa-ctrl io-clr134 135 \ Enable the AXI/APB clocks to the Audio island prior to programming island registers136 2 audio-dsa io-set137 8 audio-dsa io-set138 [else]139 h# 600 audio-clock! dly \ Enable140 h# 610 audio-clock! dly \ Release reset141 h# 710 audio-clock! dly \ Enable142 h# 712 audio-clock! dly \ Release reset143 [then]144 ;145 146 105 false value use-audio-pll? 147 106 : audio-clock-on ( -- error? ) 148 audio-island-on107 my-clock-on 149 108 150 109 use-audio-pll? if
Note: See TracChangeset
for help on using the changeset viewer.
