Author: wmb
Date: Sat May 21 03:10:36 2011
New Revision: 2210
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2210
Log:
OLPC XO-1.5 - Reinstate C3 and C4 states for board ID C8, which has a hardware fix for the problem that caused C6 and C7 boards to hang in those C-states.
Modified:
cpu/x86/pc/olpc/via/acpi.fth
Modified: cpu/x86/pc/olpc/via/acpi.fth
==============================================================================
--- cpu/x86/pc/olpc/via/acpi.fth Fri May 20 06:24:32 2011 (r2209)
+++ cpu/x86/pc/olpc/via/acpi.fth Sat May 21 03:10:36 2011 (r2210)
@@ -285,7 +285,7 @@
\ Copy in the DSDT
\ I suppose we could point to it in FLASH - if so don't compress it,
\ and fixup the address in the fadt and rechecksum the fadt
- board-revision h# d68 >= if " dsdt-c2only" else " dsdt" then
+ board-revision h# d68 h# d78 between if " dsdt-c2only" else " dsdt" then
find-drop-in 0= abort" No DSDT " ( adr len )
2dup dsdt-adr swap move free-mem
Author: wmb
Date: Fri May 20 06:24:32 2011
New Revision: 2209
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2209
Log:
OLPC trac #10819 - Improved the previous fix for this problem, now correctly handling the case where you unplug a device and immediately plug in a different device on the same port.
Modified:
dev/usb2/hcd/ehci/probe.fth
dev/usb2/hcd/ohci/probe.fth
dev/usb2/hcd/probehub.fth
dev/usb2/hcd/uhci/probe.fth
Modified: dev/usb2/hcd/ehci/probe.fth
==============================================================================
--- dev/usb2/hcd/ehci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/ehci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -22,11 +22,10 @@
0 instance value probe-error? \ Back channel to selftest
: probe-root-hub-port ( port -- )
- false to probe-error? ( port )
- dup portsc@ 1 and 0= if ( port ) \ No device detected
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ false to probe-error? ( port )
+ dup disable-old-nodes ( port )
+ dup portsc@ 1 and 0= if drop exit then ( port ) \ No device detected
+
dup portsc@ h# c00 and h# 400 = if \ A low speed device detected
dup disown-port \ Disown the port
else \ Don't know what it is
Modified: dev/usb2/hcd/ohci/probe.fth
==============================================================================
--- dev/usb2/hcd/ohci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/ohci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -5,20 +5,18 @@
headers
: probe-root-hub-port ( port -- )
- dup hc-rh-psta@ 1 and 0= if ( port )
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ dup disable-old-nodes ( port )
+ dup hc-rh-psta@ 1 and 0= if drop exit then ( port )
\ Reset the port to determine the speed
- dup reset-port ( port )
+ dup reset-port ( port )
dup hc-rh-psta@ 200 and if speed-low else speed-full then ( port speed )
\ hub-port and hub-speed are irrelevant for OHCI (USB 1.1)
- 0 0 ( port speed hub-port hub-dev )
+ 0 0 ( port speed hub-port hub-dev )
\ Execute setup-new-node in root context and make-device-node in hub node context
- setup-new-node if execute then ( port dev xt )
+ setup-new-node if execute then ( port dev xt )
;
false value ports-powered?
Modified: dev/usb2/hcd/probehub.fth
==============================================================================
--- dev/usb2/hcd/probehub.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/probehub.fth Fri May 20 06:24:32 2011 (r2209)
@@ -68,10 +68,8 @@
over clear-status-change ( port error? )
if drop exit then ( port )
- hub-buf c@ 1 and 0= if ( port ) \ No device connected
- disable-old-nodes ( port )
- exit
- then
+ dup disable-old-nodes ( port )
+ hub-buf c@ 1 and 0= if drop exit then ( port ) \ No device connected
hub-buf le-w@ h# 600 and 9 >> ( port speed )
\ hub-port and hub-dev route USB 1.1 transactions through USB 2.0 hubs
@@ -142,10 +140,9 @@
1+ 1 ?do ( hub-dev )
dup i port-status-changed? if ( hub-dev connected? )
+ i disable-old-nodes ( hub-dev connected? )
if ( hub-dev )
dup i safe-probe-hub-port ( hub-dev )
- else \ Handle disconnect
- i disable-old-nodes ( hub-dev )
then ( hub-dev )
else ( hub-dev )
i port-is-hub? if ( hub-dev phandle )
Modified: dev/usb2/hcd/uhci/probe.fth
==============================================================================
--- dev/usb2/hcd/uhci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/uhci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -7,10 +7,8 @@
: probe-root-hub-port ( port -- )
\ Reset the port to perform connection status and speed detection
dup reset-port ( port )
- dup portsc@ 1 and 0= if ( port ) \ No device-connected
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ dup disable-old-nodes ( port )
+ dup portsc@ 1 and 0= if drop exit then ( port ) \ No device-connected
dup portsc@ 100 and if speed-low else speed-full then ( port speed )
Author: wmb
Date: Fri May 20 06:00:11 2011
New Revision: 2208
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2208
Log:
OLPC trac #10819 - When a USB device has been disconnected, disable its device node by setting the assigned-address property to -1, so that subsequent open attempts fail. If the device is later reconnected, the old node can be reused by assigning a new target number to assigned-address, as before.
Modified:
dev/usb2/device/common.fth
dev/usb2/device/generic/generic.fth
dev/usb2/device/keyboard/kbd.fth
dev/usb2/device/net/ethernet.fth
dev/usb2/device/serial/uart.fth
dev/usb2/device/storage/scsi.fth
dev/usb2/device/userial/userial.fth
dev/usb2/hcd/device.fth
dev/usb2/hcd/ehci/probe.fth
dev/usb2/hcd/ohci/probe.fth
dev/usb2/hcd/probehub.fth
dev/usb2/hcd/uhci/probe.fth
Modified: dev/usb2/device/common.fth
==============================================================================
--- dev/usb2/device/common.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/common.fth Fri May 20 06:00:11 2011 (r2208)
@@ -38,6 +38,7 @@
\ This needs to be called every time that the device could have changed
: set-device ( -- ) " assigned-address" get-int-property to device ;
+: set-device? ( -- error? ) set-device device -1 = ;
: init ( -- )
set-device
Modified: dev/usb2/device/generic/generic.fth
==============================================================================
--- dev/usb2/device/generic/generic.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/generic/generic.fth Fri May 20 06:00:11 2011 (r2208)
@@ -1,7 +1,7 @@
purpose: Generic USB device stub driver, useful for client programs
external
-: open ( -- flag ) device set-target true ;
+: open ( -- flag ) set-device? if false exit then device set-target true ;
: close ( -- ) ;
: init ( -- ) init device set-target ;
Modified: dev/usb2/device/keyboard/kbd.fth
==============================================================================
--- dev/usb2/device/keyboard/kbd.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/keyboard/kbd.fth Fri May 20 06:00:11 2011 (r2208)
@@ -327,7 +327,7 @@
\ kbd-buf and led-buf must have been allocated
: setup-hardware? ( -- error? )
- set-device
+ set-device? if true exit then
device set-target
reset? if
configuration set-config if
Modified: dev/usb2/device/net/ethernet.fth
==============================================================================
--- dev/usb2/device/net/ethernet.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/net/ethernet.fth Fri May 20 06:00:11 2011 (r2208)
@@ -217,7 +217,7 @@
: open ( -- ok? )
parse-args
- set-device
+ set-device? if false exit then
device set-target
opencount @ 0= if
Modified: dev/usb2/device/serial/uart.fth
==============================================================================
--- dev/usb2/device/serial/uart.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/serial/uart.fth Fri May 20 06:00:11 2011 (r2208)
@@ -52,7 +52,7 @@
: write ( adr len -- actual ) dup if write-bytes else nip then ;
: open ( -- flag )
- set-device
+ set-device? if false exit then
device set-target
refcount @ 0= if
Modified: dev/usb2/device/storage/scsi.fth
==============================================================================
--- dev/usb2/device/storage/scsi.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/storage/scsi.fth Fri May 20 06:00:11 2011 (r2208)
@@ -181,8 +181,6 @@
: set-address ( lun -- )
0 max max-lun min to lun
- set-device \ The device number may have changed if we recycled the node
- device set-target
reset? if
configuration set-config if
." USB storage scsi layer: Failed to set configuration" cr
@@ -192,7 +190,11 @@
;
: set-timeout ( n -- ) bulk-timeout max set-bulk-in-timeout ;
-: reopen-hardware ( -- ok? ) true ;
+: reopen-hardware ( -- ok? )
+ set-device? if false exit then \ The device number may have changed if we recycled the node
+ device set-target
+ true
+;
: open-hardware ( -- ok? ) alloc-bulk reopen-hardware ;
: reclose-hardware ( -- ) ;
: close-hardware ( -- ) free-bulk ;
Modified: dev/usb2/device/userial/userial.fth
==============================================================================
--- dev/usb2/device/userial/userial.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/device/userial/userial.fth Fri May 20 06:00:11 2011 (r2208)
@@ -17,7 +17,7 @@
;
: open ( -- flag )
- set-device
+ set-device? if false exit then
device set-target
reset? if
configuration set-config if
Modified: dev/usb2/hcd/device.fth
==============================================================================
--- dev/usb2/hcd/device.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/hcd/device.fth Fri May 20 06:00:11 2011 (r2208)
@@ -331,6 +331,23 @@
3drop false
;
+: disable-old-nodes ( port -- )
+ my-self ihandle>phandle child ( port phandle )
+ begin ?dup while ( port phandle )
+ " reg" 2 pick get-package-property 0= if ( port phandle adr len )
+ decode-int nip nip ( port phandle port1 )
+ 2 pick = if ( port phandle )
+ " assigned-address" ( port phandle propname$ )
+ 2 pick get-package-property 0= if ( port phandle adr len )
+ drop -1 swap be-l! ( port phandle )
+ then ( port phandle )
+ then ( port phandle )
+ then ( port phandle )
+ peer ( port phandle' )
+ repeat ( port )
+ drop ( )
+;
+
: (make-device-node) ( dev port intf -- )
swap ( dev intf port )
3dup reuse-old-node? if ( dev intf port )
Modified: dev/usb2/hcd/ehci/probe.fth
==============================================================================
--- dev/usb2/hcd/ehci/probe.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/hcd/ehci/probe.fth Fri May 20 06:00:11 2011 (r2208)
@@ -22,8 +22,11 @@
0 instance value probe-error? \ Back channel to selftest
: probe-root-hub-port ( port -- )
- false to probe-error?
- dup portsc@ 1 and 0= if drop exit then \ No device detected
+ false to probe-error? ( port )
+ dup portsc@ 1 and 0= if ( port ) \ No device detected
+ disable-old-nodes ( )
+ exit ( -- )
+ then ( port )
dup portsc@ h# c00 and h# 400 = if \ A low speed device detected
dup disown-port \ Disown the port
else \ Don't know what it is
Modified: dev/usb2/hcd/ohci/probe.fth
==============================================================================
--- dev/usb2/hcd/ohci/probe.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/hcd/ohci/probe.fth Fri May 20 06:00:11 2011 (r2208)
@@ -5,17 +5,20 @@
headers
: probe-root-hub-port ( port -- )
- dup hc-rh-psta@ 1 and 0= if drop exit then ( port ) \ No device connected
+ dup hc-rh-psta@ 1 and 0= if ( port )
+ disable-old-nodes ( )
+ exit ( -- )
+ then ( port )
\ Reset the port to determine the speed
- dup reset-port ( port )
+ dup reset-port ( port )
dup hc-rh-psta@ 200 and if speed-low else speed-full then ( port speed )
\ hub-port and hub-speed are irrelevant for OHCI (USB 1.1)
- 0 0 ( port speed hub-port hub-dev )
+ 0 0 ( port speed hub-port hub-dev )
\ Execute setup-new-node in root context and make-device-node in hub node context
- setup-new-node if execute then ( port dev xt )
+ setup-new-node if execute then ( port dev xt )
;
false value ports-powered?
Modified: dev/usb2/hcd/probehub.fth
==============================================================================
--- dev/usb2/hcd/probehub.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/hcd/probehub.fth Fri May 20 06:00:11 2011 (r2208)
@@ -68,7 +68,10 @@
over clear-status-change ( port error? )
if drop exit then ( port )
- hub-buf c@ 1 and 0= if drop exit then \ No device connected
+ hub-buf c@ 1 and 0= if ( port ) \ No device connected
+ disable-old-nodes ( port )
+ exit
+ then
hub-buf le-w@ h# 600 and 9 >> ( port speed )
\ hub-port and hub-dev route USB 1.1 transactions through USB 2.0 hubs
@@ -141,7 +144,8 @@
dup i port-status-changed? if ( hub-dev connected? )
if ( hub-dev )
dup i safe-probe-hub-port ( hub-dev )
- \ else Handle disconnect
+ else \ Handle disconnect
+ i disable-old-nodes ( hub-dev )
then ( hub-dev )
else ( hub-dev )
i port-is-hub? if ( hub-dev phandle )
Modified: dev/usb2/hcd/uhci/probe.fth
==============================================================================
--- dev/usb2/hcd/uhci/probe.fth Fri May 20 01:22:54 2011 (r2207)
+++ dev/usb2/hcd/uhci/probe.fth Fri May 20 06:00:11 2011 (r2208)
@@ -7,7 +7,10 @@
: probe-root-hub-port ( port -- )
\ Reset the port to perform connection status and speed detection
dup reset-port ( port )
- dup portsc@ 1 and 0= if drop exit then ( port ) \ No device-connected
+ dup portsc@ 1 and 0= if ( port ) \ No device-connected
+ disable-old-nodes ( )
+ exit ( -- )
+ then ( port )
dup portsc@ 100 and if speed-low else speed-full then ( port speed )
Author: wmb
Date: Fri May 20 01:22:54 2011
New Revision: 2207
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2207
Log:
OLPC XO-1.75 - Halved OFW startup time, mostly by doing the inflation on the P4J processor with caches on.
Added:
cpu/arm/olpc/initmmu.fth
cpu/arm/olpc/resetvec.bth
Modified:
cpu/arm/mmp2/mmuon.fth
cpu/arm/olpc/1.75/addrs.fth
cpu/arm/olpc/1.75/config.fth
cpu/arm/olpc/1.75/devices.fth
cpu/arm/olpc/1.75/fw-version.fth
cpu/arm/olpc/1.75/fw.bth
cpu/arm/olpc/1.75/olpc.bth
cpu/arm/scc.fth
Modified: cpu/arm/mmp2/mmuon.fth
==============================================================================
--- cpu/arm/mmp2/mmuon.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/mmp2/mmuon.fth Fri May 20 01:22:54 2011 (r2207)
@@ -67,6 +67,7 @@
c;
: go-fast
+ control@ 1 and if exit then \ Don't do this if MMU is already on
setup-sections
start-mmu
dcache-on
Modified: cpu/arm/olpc/1.75/addrs.fth
==============================================================================
--- cpu/arm/olpc/1.75/addrs.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/addrs.fth Fri May 20 01:22:54 2011 (r2207)
@@ -36,7 +36,8 @@
h# 0020.0000 constant /fw-ram
-h# 0110.0000 constant def-load-base
+\ h# 0110.0000 constant def-load-base
+h# 0800.0000 constant def-load-base
\ The heap starts at RAMtop, which on this system is "fw-pa /fw-ram +"
@@ -44,3 +45,7 @@
heap-size constant initial-heap-size
h# 40.0000 constant page-table-pa
+
+\ RAM address where the Security Processor code places the subset of the dropin module
+\ image that it copies out of SPI FLASH.
+h# 900.0000 constant 'dropins \ Must agree with 'compressed in cforth/src/app/arm-xo-1.75/
Modified: cpu/arm/olpc/1.75/config.fth
==============================================================================
--- cpu/arm/olpc/1.75/config.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/config.fth Fri May 20 01:22:54 2011 (r2207)
@@ -3,6 +3,7 @@
create debug-startup
create olpc
create trust-ec-keyboard
+create use-null-nvram
fload ${BP}/cpu/arm/olpc/1.75/addrs.fth
fload ${BP}/cpu/arm/mmp2/hwaddrs.fth
Modified: cpu/arm/olpc/1.75/devices.fth
==============================================================================
--- cpu/arm/olpc/1.75/devices.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/devices.fth Fri May 20 01:22:54 2011 (r2207)
@@ -39,6 +39,36 @@
;
warning on
+[ifdef] use-null-nvram
+\ For not storing configuration variable changes across reboots ...
+\ This is useful for "turnkey" systems where configurability would
+\ increase support costs.
+
+fload ${BP}/cpu/x86/pc/nullnv.fth
+stand-init: Null-NVRAM
+ " /null-nvram" open-dev to nvram-node
+ ['] init-config-vars catch drop
+;
+[then]
+
+[ifdef] use-flash-nvram
+\ For configuration variables stored in a sector of the boot FLASH ...
+
+\ Create a node below the top-level FLASH node to access the portion
+\ containing the configuration variables.
+0 0 " d0000" " /flash" begin-package
+ " nvram" device-name
+
+ h# 10000 constant /device
+ fload ${BP}/dev/subrange.fth
+end-package
+
+stand-init: NVRAM
+ " /nvram" open-dev to nvram-node
+ ['] init-config-vars catch drop
+;
+[then]
+
\ Create a pseudo-device that presents the dropin modules as a filesystem.
fload ${BP}/ofw/fs/dropinfs.fth
@@ -186,9 +216,10 @@
fload ${BP}/dev/video/common/rectangle16.fth \ Rectangular graphics
: display-on
- init-xo-display \ Turns on DCON
+\ init-xo-display \ Turns on DCON
+ smb-init
+ fb-pa hdisp vdisp * >bytes h# ffffffff lfill
init-lcd
- fb-pa hdisp vdisp * >bytes h# ff fill
;
: map-frame-buffer ( -- )
fb-pa to frame-buffer-adr
Modified: cpu/arm/olpc/1.75/fw-version.fth
==============================================================================
--- cpu/arm/olpc/1.75/fw-version.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/fw-version.fth Fri May 20 01:22:54 2011 (r2207)
@@ -1,4 +1,5 @@
\ The overall firmware revision
macro: FW_MAJOR A
-macro: FW_MINOR 13
+macro: FW_MINOR 13h
+
Modified: cpu/arm/olpc/1.75/fw.bth
==============================================================================
--- cpu/arm/olpc/1.75/fw.bth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/fw.bth Fri May 20 01:22:54 2011 (r2207)
@@ -70,11 +70,12 @@
ukey? if
ukey upc ascii I = if true unloop exit then
then
- 1 ms
+ d# 1000 us \ 1000 us is more precise than 1 ms, which is often close to 2 ms
loop
false
;
+: rotate-button? ( -- flag ) d# 15 gpio-pin@ 0= ;
warning @ warning off
: init
\ initial-heap add-memory
@@ -83,7 +84,8 @@
standalone? if
disable-interrupts
d# 1000
- i-key-wait if
+\ i-key-wait if
+ rotate-button? if
protect-fw
." Interacting" cr hex interact
then
@@ -225,13 +227,19 @@
;
: cmos! ( data index -- )
h# 38 mod 8 + " rtc!" clock-node @ ( data index adr len ih )
- ['] $call-method if 2drop 3drop then
+ ['] $call-method catch if 2drop 3drop then
;
code halt ( -- ) wfi c;
fload ${BP}/cpu/x86/pc/olpc/sound.fth
fload ${BP}/cpu/x86/pc/olpc/guardrtc.fth
fload ${BP}/cpu/x86/pc/olpc/security.fth
+stand-init: xid
+ 0 cmos@ dup 1+ 0 cmos! ( n )
+ d# 24 lshift ( new-xid )
+ " dev /obp-tftp to rpc-xid dend" evaluate
+;
+
: pre-setup-for-linux ( -- )
[ ' linux-pre-hook behavior compile, ] \ Chain to old behavior
sound-end
@@ -268,7 +276,7 @@
\needs ramdisk " " d# 128 config-string ramdisk
" " ' boot-file set-config-string-default \ Let the boot script set the cmdline
-3 config-int auto-boot-countdown
+2 config-int auto-boot-countdown
\ Eliminate 4 second delay in install console for the case where
\ there is no keyboard. The delay is unnecessary because the screen
Modified: cpu/arm/olpc/1.75/olpc.bth
==============================================================================
--- cpu/arm/olpc/1.75/olpc.bth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/olpc/1.75/olpc.bth Fri May 20 01:22:54 2011 (r2207)
@@ -2,6 +2,7 @@
command: &builder &this
in: ${BP}/cpu/arm/olpc/1.75/build/fw.img
+in: ${BP}/cpu/arm/olpc/1.75/build/resetvec.img
in: sd8686.bin
in: verify.img
in: ${BP}/dev/usb2/device/hub/build/hub.fc
@@ -66,6 +67,7 @@
" ${BP}/cpu/arm/build/inflate.bin" " inflate" $add-dropin
" fw.img" " firmware" $add-deflated-dropin
\ " fw.img" " firmware" $add-dropin
+ " resetvec.img" " reset" $add-dropin
\ " ${BP}/dev/usb2/hcd/ehci/build/ehci.fc" " class0c0320" $add-deflated-dropin
" ${BP}/dev/usb2/device/hub/build/hub.fc" " usb,class9" $add-deflated-dropin
Added: cpu/arm/olpc/initmmu.fth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/initmmu.fth Fri May 20 01:22:54 2011 (r2207)
@@ -0,0 +1,272 @@
+\ See license at end of file
+purpose: Setup the initial virtual address map
+
+[ifdef] notdef
+\ Synchronizes the instruction and data caches over the indicated
+\ address range, thus allowing the execution of instructions that
+\ have recently been written to memory.
+label sync-cache-range \ r0: adr, r1: len
+ begin
+ mcr p15, 0, r0, cr7, cr10, 1 \ clean D$ line
+ mcr p15, 0, r0, cr7, cr5, 1 \ invalidate I$ line
+ add r0, r0, #32 \ Advance to next line
+ subs r1, r1, #32
+ 0<= until
+ mov pc, lr
+end-code
+
+\ Forces data in the cache within the indicated address range
+\ into memory.
+label clean-dcache-range \ r0: adr, r1: len
+ begin
+ mcr p15, 0, r0, cr7, cr10, 1 \ clean D$ line
+ add r0, r0, #32 \ Advance to next line
+ subs r1, r1, #32
+ 0<= until
+ mov pc, lr
+end-code
+[then]
+
+\ Turn on the caches
+label caches-on
+
+ \ Invalidate the entire L1 data cache by looping over all sets and ways
+ mov r0,#0 \ Start with set/way 0 of L1 cache
+ begin
+ \ In this unrolled loop, the number of iterations (8) and the increment
+ \ value (0x20000000) depend on fact that this cache has 8 ways.
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way - will wrap to 0
+
+ inc r0,#32 \ Next set
+ ands r1,r0,#0xfe0 \ Mask set bits - depends on #sets=128
+ 0= until
+
+ \ Invalidate the entire L2 cache by looping over all sets and ways
+ mov r0,#2 \ Start with set/way 0 of L2 cache
+ begin
+ \ In this unrolled loop, the number of iterations (8) and the increment
+ \ value (0x20000000) depend on fact that this cache has 8 ways.
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr6, 2 \ Invalidate D$ line by set/index
+ inc r0,#0x20000000 \ Next way - will wrap to 0
+
+ inc r0,#32 \ Next set
+ set r2,#0xffe0 \ Mask for set field for L2 cache - depends on #sets=2048
+ ands r1,r0,r2 \ Mask set bits
+ 0= until
+
+ mcr p15, 0, r0, cr7, cr5, 0 \ Invalidate entire I$
+
+ mcr p15, 0, r0, cr7, cr5, 6 \ Flush branch target cache
+
+ mrc p15,0,r0,cr1,cr0,0 \ Read control register
+ orr r0,r0,#0x1000 \ ICache on
+ orr r0,r0,#0x0800 \ Branch prediction on
+ orr r0,r0,#0x0004 \ DCache on
+ mcr p15,0,r0,cr1,cr0,0 \ Write control register with new bits
+
+ mrc p15,0,r0,cr1,cr0,1 \ Read aux control register
+ orr r0,r0,#0x0002 \ L2 Cache on
+ mcr p15,0,r0,cr1,cr0,1 \ Write control register with new bits
+
+ mov pc, lr
+end-code
+
+\ Synchronizes the instruction and data caches, thus allowing the
+\ execution of instructions that have recently been written to memory.
+\ This version, which operates on the entire cache, is more efficient
+\ than an address-range version when the range is larger than the
+\ L1 cache size.
+label sync-caches \ No args or returns, kills r0 and r1
+
+ \ Clean (push the data out to a higher level) the entire L1 data cache
+ \ by looping over all sets and ways
+ mov r0,#0 \ Start with set/way 0 of L1 cache
+ begin
+ \ In this unrolled loop, the number of iterations (8) and the increment
+ \ value (0x20000000) depend on fact that this cache has 8 ways.
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way
+ mcr p15, 0, r0, cr7, cr10, 2 \ clean D$ line by set/index
+ inc r0,#0x20000000 \ Next way - will wrap to 0
+
+ inc r0,#32 \ Next set
+ ands r1,r0,#0xfe0 \ Mask set bits - depends on #sets=128
+ 0= until
+
+ mcr p15, 0, r0, cr7, cr5, 0 \ Invalidate entire I$
+ mov pc, lr
+end-code
+
+\ Insert zeros into the code stream until a cache line boundary is reached
+\ This must be enclosed with "ahead .. then" to branch around the zeros.
+: cache-align ( -- )
+ begin
+ here [ also assembler ] asm-base [ previous ] - h# 1f and
+ while
+ 0 l,
+ repeat
+;
+
+\ Turn on the MMU
+label enable-mmu ( -- )
+ mvn r2, #0 \ Set domains for Manager access - all domains su
+ mcr p15,0,r2,3,0,0 \ Update register 3 in CP15 - domain access control
+
+ \ Enable the MMU
+ mrc p15, 0, r2, 1, 0, 0 \ Read current settings in control reg
+ mov r2, r2, LSL #18 \ Upper 18-bits must be written as zero,
+ mov r2, r2, LSR #18 \ ... clear them now.
+
+ orr r2, r2, 0x200 \ Set the ROM Protection bit
+ bic r2, r2, 0x100 \ Clear the System Protection bit
+ orr r2, r2, 0x001 \ Set the MMU bit
+
+ \ Align following code to a cache line boundary
+ ahead
+ cache-align
+ then
+
+ mcr p15, 0, r2, cr1, cr0, 0 \ Go Virtual
+ mrc p15, 0, r2, cr2, cr0, 0 \ Ensure that the write completes
+ mov r2, r2 \ before continuing
+ sub pc, pc, #4
+
+ mov pc, lr
+end-code
+
+\ Map sections virtual=physical within the given address range, using
+\ the given protection/cacheability mode. pt-adr is the page table base address.
+label map-sections-v=p ( r0: pt-adr, r1: adr, r2: len, r3: mode -- )
+ begin
+ add r4, r1, r3 \ PA+mode
+ str r4, [r0, r1, lsr #18]
+
+ inc r1, #0x100000
+ decs r2, #0x100000
+ 0<= until
+
+ mov pc, lr
+end-code
+
+\ Initial the section table, setting up mappings for the platform-specific
+\ address ranges that the firmware uses.
+\ Destroys: r0-r4
+label init-map ( r0: section-table -- )
+ mov r10,lr
+
+ mcr p15,0,r0,cr2,cr0,0 \ Set table base address
+
+ \ Clear the entire section table for starters
+ mov r2, #0x1000 \ Section#
+ mov r3, #0 \ Invalid section entry
+ begin
+ subs r2, r2, #1 \ Decrement section number
+ str r3, [r0, r2, lsl #2] \ Invalidate section entry
+ 0= until
+
+ mov r1,0 \ Address of low memory
+ set r2,`dma-base #` \ Size of low memory - up to dma-base
+ set r3,#0xc0e \ Cache and write bufferable
+ bl `map-sections-v=p`
+
+ set r1,`dma-base #` \ Address of DMA area
+ set r2,`dma-size #` \ Size of DMA area
+ set r3,#0xc02 \ No caching or write buffering
+ bl `map-sections-v=p`
+
+ set r1,`fw-pa #` \ Address of Firmware region
+ set r2,`/fw-ram #` \ Size of firmware region
+ set r3,#0xc0e \ Write bufferable
+ bl `map-sections-v=p`
+
+ set r1,`fb-pa #` \ Address - Frame buffer
+ set r2,`fb-size #` \ Size of frame buffer
+ set r3,#0xc06 \ Write bufferable
+ bl `map-sections-v=p`
+
+ set r1,#0xd1000000 \ Address of SRAM
+ set r2,#0x00300000 \ Size of SRAM
+ set r3,#0xc02 \ No caching or write buffering
+ bl `map-sections-v=p`
+
+ set r1,#0xd4000000 \ Address of I/O
+ set r2,#0x00400000 \ Size of I/O region
+ set r3,#0xc02 \ No caching or write buffering
+ bl `map-sections-v=p`
+
+ set r1,#0xe0000000 \ Address of Audio SRAM
+ set r2,#0x00100000 \ Size of audio SRAM
+ set r3,#0xc02 \ No caching or write buffering
+ bl `map-sections-v=p`
+
+\ The cache is not on yet
+\ set r1,#0x4000 \ Size of section table
+\ bl `clean-dcache-range`
+
+ mov pc, r10
+end-code
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2011 FirmWorks
+\
+\ 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
Added: cpu/arm/olpc/resetvec.bth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/resetvec.bth Fri May 20 01:22:54 2011 (r2207)
@@ -0,0 +1,262 @@
+\ See license at end of file
+purpose: Low-level startup code
+
+command: &builder &this
+build-now
+
+\ create debug-reset
+
+\needs start-assembling fload ${BP}/cpu/arm/asmtools.fth
+\needs write-dropin fload ${BP}/forth/lib/mkdropin.fth
+
+fload ${BP}/cpu/arm/olpc/1.75/config.fth
+
+hex
+
+also forth definitions
+: c$, ( adr len -- )
+ 1+ here swap note-string dup allot move 4 (align)
+;
+previous definitions
+
+also arm-assembler definitions
+: $find-dropin, ( adr len -- )
+ 2>r
+ " mov r0,pc" evaluate \ Get address of string
+ " ahead" evaluate \ Skip string
+ 2r> c$, \ Place string
+ " then" evaluate
+ " bl `find-dropin`" evaluate \ and call find routine
+;
+previous definitions
+
+/fw-ram h# 2.0000 - constant workspace-offset \ Offset of inflater workspace within destination RAM
+/fw-ram constant stack-offset \ Offset of top of inflater stack within destination RAM
+
+start-assembling
+
+label my-entry
+\ **** This is the primary entry point; it will contain a branch instruction
+\ that skips a few subroutines and lands at the startup sequence. That
+\ branch instruction is patched in below. The entry point for this module
+\ is in turn reached from a branch instruction at the beginning of the ROM,
+\ which is created by the file arch/dna/resetvec.bth
+ 0 , \ To be patched later
+end-code
+
+\ This subroutine is used by the startup code.
+\ It compares two null-terminated strings, returning zero if they match.
+\ Destroys: r2, r3
+label strcmp ( r0: str1 r1: str2 -- r0: 0 if match, nonzero if mismatch )
+ begin
+ ldrb r2,[r0],#1
+ ldrb r3,[r1],#1
+ cmp r2,r3
+ <> if
+ sub r0,r3,r2
+ mov pc,lr
+ then
+
+ cmp r2,#0
+ = until
+ mov r0,#0
+ mov pc,lr
+end-code
+
+\ This subroutine is used by the startup code.
+\ It searches the ROM for a dropin module whose name field matches the
+\ null-terminated string that is passed in r0.
+\ Destroys: r1-6
+label find-dropin ( r0: module-name-ptr -- r0: address|-1 )
+ mov r6,lr \ r6: return address
+ mov r5,r0 \ r5: module name
+
+ \ Compute address of first dropin (the one containing this code)
+\ sub r4,pc,`here asm-base - h# 20 + 8 + #` \ r4: module pointer
+ set r4,`'dropins #`
+
+ begin
+ ldr r1,[r4]
+ set r2,#0x444d424f \ 'OBMD' in little-endian
+ cmp r1,r2
+ = while
+ mov r0,r5
+ add r1,r4,#16
+ bl `strcmp`
+ cmp r0,#0
+ = if \ It the strings match, we found the dropin
+ mov r0,r4
+ mov pc,r6
+ then
+ ldr r0,[r4,#4] \ Length of dropin image
+ eor r1,r0,r0, ror #16 \ Byte reverse r0
+ bic r1,r1,#0xff0000 \ using the tricky sequence
+ mov r0,r0,ror #8 \ shown in the ARM Programming Techniques
+ eor r0,r0,r1,lsr #8 \ manual
+
+ add r0,r0,r4 \ Added to base address of previous dropin
+ add r0,r0,#35 \ Plus length of header (32) + roundup (3)
+ bic r4,r0,#3 \ Aligned to 4-byte boundary = new dropin addr
+ repeat
+
+ mvn r0,#0 \ No more dropins; return -1 to indicate failure
+ mov pc,r6
+end-code
+
+\ This subroutine is used by the startup code.
+\ It copies n (r2) bytes of memory from src (r1) to dst (r0)
+\ Destroys: r0-r3
+label memcpy ( r0: dst r1: src r2: n -- r0: dst )
+ ahead begin
+ ldr r3,[r1],#4
+ str r3,[r0],#4
+ but then
+ subs r2,r2,#4
+ 0< until
+
+ mov pc,lr
+end-code
+
+\ Load some additional subroutines that are used by the startup code
+fload ${BP}/cpu/arm/olpc/initmmu.fth \ Setup the initial virtual address map
+
+\ **** This is the main-line code for the initial startup sequence.
+\ It is reached from a branch instruction (which will be patched in later)
+\ at the beginning of this module.
+
+label startup
+
+\ Place a branch instruction to this location at the entry address
+\ (i.e. the beginning) of this module
+here my-entry put-branch
+
+[ifdef] notdef
+ \ Locate and execute the dropin module named "start".
+ \ That module's job is to initialize the core logic and memory controller
+ \ at least to the point that memory works, and to size the memory.
+ \ It returns in r0 the physical address just past the end of the last
+ \ bank of memory. Near the beginning of the last megabyte of memory,
+ \ it stores bitmasks describing which memory banks are populated.
+
+ " start" $find-dropin, \ Assemble call to find-dropin with literal arg
+
+ add r0,r0,#32 \ Skip dropin header
+ mov lr,pc \ Set return address
+ mov pc,r0 \ Execute the dropin
+[then]
+
+ \ Setup the page (section) table and turn on the MMU and caches
+ set r0,`page-table-pa #`
+ bl `init-map` \ Setup the initial virtual address map
+ bl `enable-mmu` \ Turn on the MMU
+ bl `caches-on` \ Turn on the caches
+
+ \ Now we are running with the MMU and caches on, thus going faster
+
+ \ Locate the dropin module named "firmware".
+
+ " firmware" $find-dropin, \ Assemble call to find-dropin with literal arg
+
+ ldr r1,[r0,#12] \ Get the module's "expanded size" field,
+ cmp r1,#0 \ which will be non0 if the module's compressed
+ <> if
+ \ The firmware dropin is compressed, so we find the inflater
+ \ and use it to inflate the firmware into RAM
+ mov r11,r0 \ Save address of firmware dropin
+
+
+ \ Locate the "inflate" module.
+ " inflate" $find-dropin, \ Assemble call to find-dropin with literal arg
+
+ add r4,r0,#32 \ r1: Base address of inflater code
+
+ \ Execute the inflater, giving it the address of the compressed firmware
+ \ module, the address where the inflated firmware should be placed, and
+ \ the address of some RAM the inflater can use for scratch variables.
+
+ set r0,`fw-virt-base workspace-offset + #` \ Scratch RAM for inflater
+ mov r1,#0 \ No-header flag (false)
+ set r2,`fw-virt-base #` \ Firmware RAM address
+ add r3,r11,#32 \ Address of compressed bits of firmware dropin
+
+ set sp,`fw-virt-base stack-offset + #` \ Stack for inflater
+
+[ifdef] notdef
+ \ Simple recipe for debug output to serial port
+ set r11, #0xd4018000
+ begin
+ ldr r10,[r11,0x14]
+ ands r10,r10,#0x20
+ 0<> until
+ set r10, #0x43 \ C
+ str r10, [r11]
+[then]
+
+ mov lr,pc
+ mov pc,r4 \ Inflate the firmware
+
+ else
+ \ The firmware dropin isn't compressed, so we just copy it to RAM
+
+ ldr r2,[r0,#4] \ Length of image
+
+ eor r1,r2,r2, ror #16 \ Byte reverse r2 using the
+ bic r1,r1,#0xff0000 \ tricky sequence shown in the
+ mov r2,r2,ror #8 \ ARM Programming Techniques
+ eor r2,r2,r1,lsr #8 \ manual
+
+ add r1,r0,#32 \ src: Skip dropin header
+
+ set r0,`fw-virt-base #` \ dst: Firmware RAM address
+ bl `memcpy` \ Copy the firmware
+ then
+
+ \ Synchronize the instruction and data caches so the firmware code can
+ \ be executed.
+ bl `sync-caches` \ Push Forth dictionary to memory
+
+[ifdef] notdef
+ " nanoforth" $find-dropin, \ Assemble call to find-dropin with literal arg
+
+ add r0,r0,#32 \ Skip dropin header
+ mov lr,pc \ Set return address
+ mov pc,r0 \ Execute the dropin
+[then]
+
+ \ Jump to the RAM firmware image
+ set r4, `fw-virt-base #` \ RAM start address
+ mov pc, r4
+
+ \ Notreached, in theory
+ begin again
+end-code
+
+end-assembling
+
+writing resetvec.img
+asm-base here over - ofd @ fputs
+ofd @ fclose
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2011 FirmWorks
+\
+\ 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: cpu/arm/scc.fth
==============================================================================
--- cpu/arm/scc.fth Fri May 20 01:15:27 2011 (r2206)
+++ cpu/arm/scc.fth Fri May 20 01:22:54 2011 (r2207)
@@ -6,6 +6,7 @@
code cache-type@ ( -- n ) psh tos,sp mrc p15,0,tos,cr0,cr0,1 c;
code tlb-type@ ( -- n ) psh tos,sp mrc p15,0,tos,cr0,cr0,3 c;
code control@ ( -- n ) psh tos,sp mrc p15,0,tos,cr1,cr0,0 c;
+code aux-control@ ( -- n ) psh tos,sp mrc p15,0,tos,cr1,cr0,1 c;
code ttbase@ ( -- n ) psh tos,sp mrc p15,0,tos,cr2,cr0,0 c;
code ttbase0@ ( -- n ) psh tos,sp mrc p15,0,tos,cr2,cr0,0 c;
code ttbase1@ ( -- n ) psh tos,sp mrc p15,0,tos,cr2,cr1,0 c;
@@ -18,6 +19,7 @@
code i-fault-address@ ( -- n ) psh tos,sp mrc p15,0,tos,cr6,cr2,0 c;
code control! ( n -- ) mcr p15,0,tos,cr1,cr0,0 pop tos,sp c;
+code aux-control! ( n -- ) mcr p15,0,tos,cr1,cr0,1 pop tos,sp c;
code ttbase! ( n -- ) mcr p15,0,tos,cr2,cr0,0 pop tos,sp c;
code ttbase0! ( n -- ) mcr p15,0,tos,cr2,cr0,0 pop tos,sp c;
code ttbase1! ( n -- ) mcr p15,0,tos,cr2,cr1,0 pop tos,sp c;
@@ -162,8 +164,13 @@
\ operation, so it uses the Open Firmware nomenclature.
defer flush-cache ' noop to flush-cache
+[ifdef] notdef
: l2cache-on ( -- ) flush-l2$ control@ h# 0400.0000 or control! ;
: l2cache-off ( -- ) clean-l2$ control@ h# 0400.0000 invert and control! ;
+[else]
+: l2cache-on ( -- ) flush-l2$ aux-control@ 2 or aux-control! ;
+: l2cache-off ( -- ) clean-l2$ aux-control@ 2 invert and aux-control! ;
+[then]
: bpu-on ( -- ) flush-bt$ control@ h# 0800 or control! ;
: bpu-off ( -- ) control@ h# 0800 invert and control! ;
Author: quozl
Date: Thu May 19 09:32:58 2011
New Revision: 2203
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2203
Log:
OLPC XO-1.5 - apply -r2202 to D6 too, requested by John
Modified:
cpu/x86/pc/olpc/via/acpi.fth
Modified: cpu/x86/pc/olpc/via/acpi.fth
==============================================================================
--- cpu/x86/pc/olpc/via/acpi.fth Thu May 19 08:11:17 2011 (r2202)
+++ cpu/x86/pc/olpc/via/acpi.fth Thu May 19 09:32:58 2011 (r2203)
@@ -285,7 +285,7 @@
\ Copy in the DSDT
\ I suppose we could point to it in FLASH - if so don't compress it,
\ and fixup the address in the fadt and rechecksum the fadt
- board-revision h# d78 >= if " dsdt-c2only" else " dsdt" then
+ board-revision h# d68 >= if " dsdt-c2only" else " dsdt" then
find-drop-in 0= abort" No DSDT " ( adr len )
2dup dsdt-adr swap move free-mem