[openfirmware] r1398 - cpu/x86/pc/olpc/via

svn at openfirmware.info svn at openfirmware.info
Tue Oct 6 23:49:09 CEST 2009


Author: wmb
Date: 2009-10-06 23:49:09 +0200 (Tue, 06 Oct 2009)
New Revision: 1398

Modified:
   cpu/x86/pc/olpc/via/resume.bth
Log:
Via resume.bth - eliminated a lot of ifdef'ed out cruft that was leftover
from the Geode code and will never be used for the Via case.


Modified: cpu/x86/pc/olpc/via/resume.bth
===================================================================
--- cpu/x86/pc/olpc/via/resume.bth	2009-10-06 21:36:16 UTC (rev 1397)
+++ cpu/x86/pc/olpc/via/resume.bth	2009-10-06 21:49:09 UTC (rev 1398)
@@ -21,11 +21,6 @@
 \ This code will be copied to RAM at suspend-base
 
 \ create measure-suspend
-\ create save-display
-\ create reset-smbus
-\ create reset-smbus-bitbang
-\ create restore-usb-power
-\ create checksum-test
 
 : resume-progress  ( byte -- )
    " h# 34 # al mov   al h# 70 # out  ( byte ) # al mov  al h# 71 # out" eval
@@ -168,42 +163,20 @@
 \ This is where Geode saves the PIT state
 \ This is where Geode saves the SMBUS controller state
 \ This is where Geode saves the MFGPT state
-\ This is where Geode saves the CaFe configuration
 
    \ Other state we might want to save:
    \ ISA DMA Controller
-   \ AC97
+   \ HDaudio
    \ Codec
    \ USB
 
 \ This is where Geode stops the video refresh
 
-[ifdef] checksum-test
-   \ Checksum memory from 1M to top (excluding framebuffer)
-   h# 0010.0000 #  si  mov
-   h# 4d534b43 # ax mov  ax stos    \ Marker 'CKSM'
-   di resume-data h# 10 - #)  mov   \ Save checksum base address
-   begin
-      bx bx xor
-      h# 10.0000 2 rshift #  cx  mov  \ Word count for 1MB
-      begin  ax lods  ax bx add  loopa
-      ax stos
-      h# ec0.0000 # si cmp
-   = until
-[then]
-
 [ifdef] measure-suspend
    di 0 #) mov
    rdtsc ax h# 18 #) mov  dx h# 1c #) mov
 [then]
 
-   \ This is where the Geode sets up the sleep/wakeup sequence timing
-
-[ifdef] notdef
-   \ Clear existing wakeup status
-   h# 400 port-rw  op: ax dx out
-[then] \ notdef
-
    \ The caller chooses the wakeup conditions, so we don't do it here
    h# ffff h# 420 port-ww   \ Clear all status bits
 
@@ -215,19 +188,6 @@
 
    wbinvd                                 \ Flush the cache
 
-[ifdef] delete-me
-   \ Setup the register values in advance so the active instruction sequence
-   \ is as short as possible, thus keeping all the activity in one cache line.
-\   h# 0400 h# 404 port-ww               \ Setup sleep type
-[then]
-
-[ifdef] notdef
-   \ Align to a cache line boundary
-   also forth
-   begin  here asm-base - h# 1f and  while  h# 90 c,  repeat  \ Align with NOPs
-   previous
-[then]
-
    h# 2400 h# 404 port-ww               \ Go to sleep
 
    h# 1000000 # cx mov  begin  nop  loopa   \ Spin in this cache line while going down
@@ -246,8 +206,6 @@
 \   Running from a 32-bit identity-mapped code segment
 \   Using physical addresses
 
-\ char < 3f8 port-wb  begin  3fd port-rb 20 bitand  0<> until
-
    resume-data #  bp  mov
 
    cld
@@ -260,134 +218,8 @@
 
    h# 21 resume-progress
 
-[ifdef] checksum-test
-   \ Checksum memory from 1M to top (excluding framebuffer)
-   h# 0010.0000 #  si  mov
-   resume-data h# 10 - #)  di  mov   \ Save checksum base address
-   begin
-      bx bx xor
-      h# 10.0000 2 rshift #  cx  mov \ Word count for 1MB
-      begin  ax lods  ax bx add  loopa
-      ax  0 [di]  cmp
-      <>  if
-         char C 3f8 port-wb  begin  3fd port-rb 20 bitand  0<> until
-         ret
-      then   
-      4 [di]  di  lea
-      h# ec0.0000 # si cmp
-   = until
-[then]
-
    h# 38 [bp]  si  lea    \ Save area
 
-   h# 22 resume-progress
-
-[ifdef] reset-smbus-bitbang
-   \ GPIO15 is SMB_DATA
-   \ GPIO14 is SMB_CLOCK
-   h# 5140.000c rmsr  ax bx  mov
-   h#     c000 # ax mov         \ Mask to set SMB_DATA and SMB_CLOCK
-   h# 00 [bx] dx lea  ax dx out  \ Set output values to high
-   h# 04 [bx] dx lea  ax dx out  \ Set pins to output
-   h# c0000000 # ax mov         \ Mask to clear SMB_DATA and SMB_CLOCK
-   h# 10 [bx] dx lea  ax dx out  \ Deselect OUT AUX1
-   h# 14 [bx] dx lea  ax dx out  \ Deselect OUT AUX2
-   h# 34 [bx] dx lea  ax dx out  \ Deselect IN AUX1
-
-   d# 16 # cx mov  forget-msr  \ Generate 8 low pulses on SMB_CLOCK
-   begin
-      \ 5 uS delay (slightly longer for GX)
-      rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
-      begin  rdtsc  bx ax sub  0>= until
-
-      cx bx mov                          \ Save cx for use by rmsr
-      h# 5140.000c rmsr  ax dx  mov      \ GPIO output register
-      h# 40000000 # ax mov  ax dx out    \ Clear SMB_CLOCK
-      bx cx mov  forget-ms               \ Restore cx
-
-      \ 5 uS delay (slightly longer for GX)
-      rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
-      begin  rdtsc  bx ax sub  0>= until
-
-      cx bx mov                          \ Save cx for use by rmsr
-      h# 5140.000c rmsr  ax dx  mov      \ GPIO output register
-      h#     4000 # ax mov  ax dx out    \ Set SMB_CLOCK
-      bx cx mov  forget-msr              \ Restore cx
-   loopa
-
-   \ 5 uS delay (slightly longer for GX)
-   rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
-   begin  rdtsc  bx ax sub  0>= until
-[then]
-
-   h# 23 resume-progress
-
-\ GPIO restore
-
-   h# 24 resume-progress
-
-\ Display restore
-
-\ Flat panel turn-on
-
-   h# 25 resume-progress
-
-\ PIC restore
-
-   h# 26 resume-progress
-
-\ PIT restore
-  
-   h# 27 resume-progress
-
-\ SMBUS controller restore
-
-[ifdef] reset-smbus
-   \ This little dance resets the DCON's SMbus interface
-   \ We start with dx pointing to SMBUS reg 5
-   dx dec  dx dec    \ Point back to smbus reg3 (control 1)
-   h# 1 #  al mov    \ START
-   al dx out         \ Initiate an SMBUS cycle to the DCON
-
-   \ We could split here and move the following down, so as to overlap
-   \ the delay time with other work, but it doesn't matter because the
-   \ later CaFe chip setup will stall anyway.
-
-   d#   32 # cx mov  forget-msr \ Loop count (usually ready in 20 uS)
-   dx dec  dx dec    \ SMBUS reg1 (status)
-   begin
-      dx al in
-      h# 40 # al test
-   loope             \ Wait for ready to accept byte or timeout
-
-   h#   1a # al mov  \ Address byte
-   dx dec            \ SMBUS reg0 (data)
-   al dx out         \ Initiate address out cycle
-
-   \ Another possible split point, in case we should need to overlap
-   d#  256 # cx mov  forget-msr  \ Loop count (usually ready in 172 uS)
-   dx inc            \ SMBUS reg1 (status)
-   begin
-      dx al in
-      h# 50 # al test
-   loope             \ Wait for done or error or timeout
-
-   h#    2 # al mov  \ Stop
-   dx inc  dx inc    \ SMBUS reg3 (control 1)
-   al dx out         \ Initiate STOP
-
-   h#   10 # al mov  \ Ack NEGACK
-   dx dec  dx dec    \ SMBUS reg1 (status)
-   al dx out         \ While acking the NEGACK
-   \ End of DCON SMbus reset dance
-[then]
-
-   h# 28 resume-progress
-
-\ MFGPTs restore
-
-   h# 29 resume-progress
-
    \ D12F0 SDIO
    h# 6010 config-setup  ax lods  ax dx out  \ BAR0
    h# 6014 config-setup  ax lods  ax dx out  \ BAR1
@@ -448,15 +280,6 @@
 
    h# 2a resume-progress
 
-\ Restore CaFe configuration
-
-   h# 2b resume-progress
-
-\ Display base addresses
-
-   \ There is a lot of other stuff that must be done to turn on the
-   \ video - but we will let the gx driver take care of that.
-
    \ XXX keyboard init
    \ DCON fiddling
    \ USB
@@ -501,8 +324,6 @@
 
    \ Identity mapping of low memory might not exist now
 
-\  char > 3f8 port-wb  begin  3fd port-rb 20 bitand  0<> until
-
    gs pop
 
    fs pop




More information about the openfirmware mailing list