Author: wmb Date: Sat Dec 3 01:45:08 2011 New Revision: 2727 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2727
Log: OLPC XO-3 - Initial revisions of files to support the new platform
Added: cpu/arm/olpc/3.0/ cpu/arm/olpc/3.0/build/ cpu/arm/olpc/3.0/build/Makefile cpu/arm/olpc/3.0/cforth-version.fth cpu/arm/olpc/3.0/cforth.bth cpu/arm/olpc/3.0/config.fth cpu/arm/olpc/3.0/crypto-version.fth cpu/arm/olpc/3.0/ec-version.fth cpu/arm/olpc/3.0/ec.bth cpu/arm/olpc/3.0/fw-version.fth cpu/arm/olpc/3.0/fw.bth cpu/arm/olpc/3.0/lcdcfg.fth cpu/arm/olpc/3.0/leds.fth cpu/arm/olpc/3.0/mcastnand.bth cpu/arm/olpc/3.0/mcnand-version.fth cpu/arm/olpc/3.0/olpc.bth cpu/arm/olpc/3.0/prefw.bth cpu/arm/olpc/3.0/sd8686.bth cpu/arm/olpc/3.0/sdhci.fth cpu/arm/olpc/3.0/switches.fth cpu/arm/olpc/3.0/testinstructions.fth cpu/arm/olpc/3.0/testitems.fth cpu/arm/olpc/3.0/usb.fth cpu/arm/olpc/3.0/verify.bth cpu/arm/olpc/3.0/wlan-version.fth
Added: cpu/arm/olpc/3.0/build/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/build/Makefile Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,70 @@ +ROMNAME=olpc + +BASEDIR= `(cd ../../../../..; pwd;)` + +OS := $(shell uname) +HOSTCPU= $(shell ${BASEDIR}/forth/lib/hostcpu.sh) +HOSTDIR= ../../../../${HOSTCPU}/${OS} +BUILDSH= ${BASEDIR}/forth/lib/build.sh + +TAGFILES= ../../../build/*.tag *.tag +CLIENTDIR=../../../../../clients +CLIENTPROGS=${CLIENTDIR}/emacs/arm/emacs + +all: ${ROMNAME}.rom tags + +${ROMNAME}.tag: ${ROMNAME}.rom + +tags: ${ROMNAME}.tag + @${BASEDIR}/forth/lib/toctags ${BASEDIR} ${TAGFILES} + +${ROMNAME}.rom: FORCE build ${CLIENTPROGS} ${HOSTDIR}/forth ${HOSTDIR}/armforth + ./build $@ + +${HOSTDIR}/forth: + @make -C ${HOSTDIR} forth + +${HOSTDIR}/armforth: + @make -C ${HOSTDIR} armforth + +../../build/inflate.bin: + @make -C ../../build inflate.bin + +${CLIENTDIR}/emacs/arm/emacs: + @make -C ${CLIENTDIR}/emacs/arm emacs + +build: + @ln -sf ${BUILDSH} build + +clean: + rm -f *.dic *.log headers *~ *.elf *.di *.img builton.fth build *.rom *.version tags *.tag + +clean-all: clean + @make -C ../../build clean + @make -C ${HOSTDIR} clean + +.PHONY: FORCE clean all clean-all + +# LICENSE_BEGIN +# Copyright (c) 2009 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/3.0/cforth-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/cforth-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,17 @@ +\ This file controls which CForth source version to include in the OFW build +\ and the method for fetching it + +\ If CFORTH_VERSION is "modify", the repository will be cloned with git+ssh: so can push changes. +\ You need ssh access to the server. +macro: CFORTH_VERSION modify + +\ If CFORTH_VERSION is "clone", the repository will be cloned with git:. You won't be able to +\ push changes, but you will get the full metadata so you can use commands like git grep. +\ You don't need ssh access to the server. +\ macro: CFORTH_VERSION clone + +\ Otherwise, the source code will be will be downloaded as a tarball via gitweb. +\ macro: CFORTH_VERSION 59859f04454bc2574ab68cf0fd76ebdbc5f26fb6 +\ macro: CFORTH_VERSION HEAD + +macro: CFORTH_BUILD_DIR cforth/build/arm-xo-3.0
Added: cpu/arm/olpc/3.0/cforth.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/cforth.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,7 @@ +purpose: Fetch and compile CForth for the Security Processor + +command: &builder &this +build-now + +fload ${BP}/cpu/arm/olpc/3.0/cforth-version.fth +fload ${BP}/cpu/arm/olpc/build-cforth.fth
Added: cpu/arm/olpc/3.0/config.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/config.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,11 @@ +create debug-startup +create olpc +create trust-ec-keyboard +create use-null-nvram +create use-elf +create olpc-cl3 + +fload ${BP}/cpu/arm/mmp2/hwaddrs.fth +fload ${BP}/cpu/arm/olpc/addrs.fth + +create machine-signature ," CL3"
Added: cpu/arm/olpc/3.0/crypto-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/crypto-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,6 @@ +\ The public keys +macro: KEYS mpkeys +\ macro: KEYS testkeys + +\ The bios_verify image +macro: CRYPTO_VERSION 0.5-ARM
Added: cpu/arm/olpc/3.0/ec-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/ec-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,10 @@ +\ The EC microcode +\ macro: EC_PLATFORM cl3 +macro: EC_PLATFORM cl2 +macro: EC_VERSION 4_0_3_05 + +\ Alternate command for getting EC microcode, for testing new versions. +\ Temporarily uncomment the line and modify the path as necessary +\ macro: GET_EC cp ~rsmith/olpc/ec/ec-code15/image/ecimage.bin ec.img +\ macro: GET_EC wget -q http://dev.laptop.org/pub/ec/ec_test.img -O ec.img +\ macro: GET_EC cp no_event.bin ec.img
Added: cpu/arm/olpc/3.0/ec.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/ec.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,7 @@ +purpose: Fetch the EC (Embedded Controller, i.e. KB3700) microcode + +command: &builder &this +build-now + +fload ${BP}/cpu/arm/olpc/3.0/ec-version.fth +fload ${BP}/cpu/arm/olpc/fetch-ec.fth
Added: cpu/arm/olpc/3.0/fw-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/fw-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,4 @@ +\ The overall firmware revision +macro: FW_PREFIX Q5 +macro: FW_MAJOR A +macro: FW_MINOR 00
Added: cpu/arm/olpc/3.0/fw.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/fw.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,10 @@ +purpose: Build OFW Forth dictionary for OLPC ARM platforms +\ See license at end of file + +dictionary: ${BP}/cpu/arm/olpc/3.0/build/prefw.dic +command: &armforth &dictionary &this +build-now + +" fw.tag" r/w create-file drop tag-file ! + +fload ${BP}/cpu/arm/olpc/build-fw.fth
Added: cpu/arm/olpc/3.0/lcdcfg.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/lcdcfg.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,38 @@ +h# 40001102 value clkdiv \ Display Clock 1 / 2 -> 56.93 MHz +h# 00000700 value pmua-disp-clk-sel \ PLL1 / 7 -> 113.86 MHz + +d# 8 value hsync \ Sync width +d# 1200 value hdisp \ Display width +d# 1256 value htotal \ Display + FP + Sync + BP +d# 24 value hbp \ Back porch + +d# 3 value vsync \ Sync width +d# 900 value vdisp \ Display width +d# 912 value vtotal \ Display + FP + Sync + BP +d# 5 value vbp \ Back porch + +: hfp ( -- n ) htotal hdisp - hsync - hbp - ; \ 24 +: vfp ( -- n ) vtotal vdisp - vsync - vbp - ; \ 4 + +0 [if] +3 constant #lanes +3 constant bytes/pixel +d# 24 constant bpp +[else] +2 constant #lanes +2 constant bytes/pixel +d# 16 constant bpp +[then] + +: >bytes ( pixels -- chunks ) bytes/pixel * ; +: >chunks ( pixels -- chunks ) >bytes #lanes / ; + +alias width hdisp +alias height vdisp +alias depth bpp +width >bytes constant /scanline + +: init-xo-display ; +: bright! ( level -- ) drop ; +: backlight-on ( -- ) ; +: backlight-off ( -- ) ;
Added: cpu/arm/olpc/3.0/leds.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/leds.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,48 @@ +\ See license at end of file +purpose: Driver/selftest for OLPC XO-1.75 LEDs + +0 0 " 0" " /" begin-package +0 0 reg \ So test-all will run the test +" leds" device-name +: open ( -- okay? ) true ; +: close ( -- ) ; + +: selftest ( -- ) + ." Flashing LEDs" cr + + d# 10 0 do ols-led-on d# 200 ms ols-led-off d# 200 ms loop + ols-led-ec-control + ols-assy-mode-on + + " /wlan:quiet" test-dev " /wlan:quiet" test-dev \ Twice for longer flashing + + ols-assy-mode-off + + confirm-selftest? +; + +end-package + +\ 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/3.0/mcastnand.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/mcastnand.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,7 @@ +purpose: Fetch and compile the multicast NAND reflash program + +command: &builder &this +build-now + +fload ${BP}/cpu/arm/olpc/3.0/mcnand-version.fth +fload ${BP}/cpu/arm/olpc/build-mcnand.fth
Added: cpu/arm/olpc/3.0/mcnand-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/mcnand-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,8 @@ +\ The multicast NAND updater code version +\ Use a specific git commit ID for a formal release or "test" for development. +\ With a specific ID, mcastnand.bth will download a tarball without .git stuff. +\ With "test", mcastnand.bth will clone the git head if build/multicast-nand/ +\ is not already present, then you can modify the git subtree as needed. +macro: MCNAND_VERSION 60b7230fcfb4abd42c3274475b5447e0bc344a5b +\ macro: MCNAND_VERSION test +\ macro: MCNAND_VERSION HEAD
Added: cpu/arm/olpc/3.0/olpc.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/olpc.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,219 @@ +purpose: Construct the Open Firmware module collection + +command: &builder &this +in: ec.img +in: fw.img +in: resetvec.img +in: mcastnand.bin +in: sd8686.bin +in: verify.img +in: ${BP}/dev/usb2/device/hub/build/hub.fc +in: ${BP}/dev/usb2/device/generic/build/generic.fc +in: ${BP}/dev/usb2/device/net/build/usbnet.fc +in: ${BP}/dev/usb2/device/keyboard/build/usbkbd.fc +in: ${BP}/dev/usb2/device/mouse/build/usbmouse.fc +in: ${BP}/dev/usb2/device/serial/build/usbserial.fc +in: ${BP}/dev/usb2/device/storage/build/usbstorage.fc +in: testicons.bin +in: ${BP}/clients/emacs/arm/emacs +in: cforth.img +build-now + +fload ${BP}/cpu/arm/olpc/3.0/fw-version.fth + +" macro: FW_VERSION Q5${FW_MAJOR}${FW_MINOR}" expand$ eval + +fload ${BP}/cpu/arm/olpc/3.0/config.fth + +\ Always re-create the builton.fth file when we make a new rom.img +fload ${BP}/cpu/x86/pc/builton.bth +fload ${BP}/cpu/arm/olpc/sourceurl.fth + +fload ${BP}/forth/lib/crc32.fth + +hex + +: pad-file ( location -- ) + ofd @ fsize + 2dup u< abort" The ROM image is too large" + ?do h# ff ofd @ fputc loop +; + +fload ${BP}/cpu/arm/marvell/tim.fth + +\ Marvel Trusted Image Module image creation script for +\ XO-3.0 platform. + +tim: 00030102 0 Sky! PXA688 +flash: SPI'10 +timh: TIMH 0 d101f000 +\ Main Processor code loaded into DRAM +image: OBMI 800 d101c000 ${BP}/cpu/arm/olpc/dummy.img +\ Secure Processor code loaded into SRAM +image: WTMI 1000 d1018000 shim.img +image: CFTH 2000 d1000000 cforth.img +reserved: + term: +end-reserved +end-tim + +h# e.0000 to reserved-start +h# f.0000 to reserved-end + +.( --- Saving as ) +" ${FW_VERSION}.rom" expand$ 2dup lower ( adr len ) +2dup type cr ( adr len ) +$new-file + tim$ ofd @ fputs + + dropin-offset pad-file + +\ Loads the set of drivers that is common to different output formats + + " ${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 + " ${BP}/dev/usb2/device/generic/build/generic.fc" " usbdevice" $add-deflated-dropin + " ${BP}/dev/usb2/device/net/build/usbnet.fc" " usbnet" $add-deflated-dropin + " ${BP}/dev/usb2/device/keyboard/build/usbkbd.fc" " usb,class3,1,1" $add-deflated-dropin + " ${BP}/dev/usb2/device/mouse/build/usbmouse.fc" " usb,class3,1,2" $add-deflated-dropin + " ${BP}/dev/usb2/device/serial/build/usbserial.fc" " usbserial" $add-deflated-dropin + " ${BP}/dev/usb2/device/storage/build/usbstorage.fc" " usbstorage" $add-deflated-dropin + + " sd8686_helper.bin" " helper_sd.bin" $add-deflated-dropin + " sd8686.bin" " sd8686.bin" $add-deflated-dropin + + " builton.fth" " probe-" $add-dropin + +0 [if] + " ${BP}/clients/emacs/x86/emacs" " emacs" $add-deflated-dropin + " ${BP}/clients/emacs/x86/emacs.rc" " emacs.rc" $add-deflated-dropin + " ${BP}/clients/emacs/emacs.hlp" " emacs.hlp" $add-deflated-dropin +[then] + + " ${BP}/ofw/inet/telnetd.fth" " telnetd" $add-deflated-dropin + +\ " ${BP}/cpu/x86/pc/olpc/images/warnings.565" " warnings.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/lightdot.565" " lightdot.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/yellowdot.565" " yellowdot.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/darkdot.565" " darkdot.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/lock.565" " lock.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/unlock.565" " unlock.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/plus.565" " plus.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/minus.565" " minus.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/x.565" " x.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/sad.565" " sad.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/bigdot.565" " bigdot.565" $add-deflated-dropin + + " ${BP}/cpu/x86/pc/olpc/images/check.565" " check.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/xogray.565" " xogray.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/ethernet.565" " ethernet.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/usbkey.565" " disk.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/wireless.565" " wlan.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/laptop.565" " int.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/sd.565" " ext.565" $add-deflated-dropin + + " verify.img" " verify" $add-deflated-dropin + " os.public" " ospubkey" $add-dropin \ Incompressible + " fw.public" " fwpubkey" $add-dropin \ Incompressible + " fs.public" " fspubkey" $add-dropin \ Incompressible + " lease.public" " leasepubkey" $add-dropin \ Incompressible + " developer.public" " develpubkey" $add-dropin \ Incompressible + + " sourceurl" " sourceurl" $add-dropin + + " ${BP}/cpu/x86/pc/olpc/images/Edge1-8k-EQ-Comp-Amp-Short.wav" " splash" $add-deflated-dropin + + \ icons for mfg test gui + " testicons/play.565" " play.565" $add-deflated-dropin + " testicons/quit.565" " quit.565" $add-deflated-dropin + " testicons/cpu.565" " cpu.565" $add-deflated-dropin + " testicons/spi.565" " spi.565" $add-deflated-dropin + " testicons/ram.565" " ram.565" $add-deflated-dropin + " testicons/sdcard.565" " sdcard.565" $add-deflated-dropin + " testicons/keyboard.565" " keyboard.565" $add-deflated-dropin + " testicons/display.565" " display.565" $add-deflated-dropin + " testicons/touchpad.565" " touchpad.565" $add-deflated-dropin + " testicons/audio.565" " audio.565" $add-deflated-dropin + " testicons/usb.565" " usb.565" $add-deflated-dropin + " testicons/battery.565" " battery.565" $add-deflated-dropin + " testicons/camera.565" " camera.565" $add-deflated-dropin + " testicons/wifi.565" " wifi.565" $add-deflated-dropin + " testicons/clock.565" " clock.565" $add-deflated-dropin + " testicons/timer.565" " timer.565" $add-deflated-dropin + " ${BP}/cpu/x86/pc/olpc/images/bigx.di" $add-file + " ${BP}/cpu/x86/pc/olpc/images/bigcheck.di" $add-file + " ${BP}/cpu/x86/pc/olpc/images/leds.di" $add-file + " ${BP}/cpu/x86/pc/olpc/images/ebook.di" $add-file + + " nandblaster15_rx.bin" " nb15_rx" $add-deflated-dropin + " nandblaster_tx.bin" " nb_tx" $add-deflated-dropin + " ec.img" " ecimage.bin" $add-deflated-dropin + " ${BP}/clients/emacs/x86/emacs.rc" " emacs.rc" $add-deflated-dropin + " ${BP}/clients/emacs/emacs.hlp" " emacs.hlp" $add-deflated-dropin + " ${BP}/clients/emacs/arm/emacs" " emacs" $add-deflated-dropin + +.( Dropin top is ) ofd @ fsize .x cr + +/rom pad-file + +\ Insert the revision signature +/rom h# 40 - ofd @ fseek +h# 10 buffer: signature +signature h# 10 blank +machine-signature count signature swap move +" ${FW_VERSION}" expand$ signature 6 + swap move +" ${FW_PREFIX}${FW_MAJOR}" expand$ signature d# 13 + swap move +signature h# 10 ofd @ fputs + +/l buffer: crcbuf +/rom buffer: filebuf + +\ Read the entire image, compute the CRC, and store it h# 28 from the end +0 ofd @ fseek +filebuf /rom ofd @ fgets /rom <> abort" Can't read back image" +0 crctab filebuf /rom ($crc) crcbuf ! + +crc-offset ofd @ fseek +crcbuf /l ofd @ fputs + +ofd @ fclose + +\ Creating olpc.version serves two purposes: +\ a) It reports the firmware revision for use by external scripts +\ b) It provides an olpc.* artifact for the builder dependency management. + +writing olpc.version +" ${FW_VERSION}" expand$ 2dup lower 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 +
Added: cpu/arm/olpc/3.0/prefw.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/prefw.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,13 @@ +purpose: Build OFW Forth dictionary for OLPC XO-1.75 +\ See license at end of file + +dictionary: ${BP}/cpu/arm/build/basefw.dic +command: &armforth &dictionary &this +build-now + +\ This line must be in this file instead of in prefw.fth so the definitions +\ in config.fth will be tagged. +" prefw.tag" r/w create-file drop tag-file ! + +fload ${BP}/cpu/arm/olpc/3.0/config.fth +fload ${BP}/cpu/arm/olpc/prefw.fth
Added: cpu/arm/olpc/3.0/sd8686.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/sd8686.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,8 @@ +purpose: Fetch the firmware for the Marvell 8686 wireless LAN module + +command: &builder &this +build-now + +fload ${BP}/cpu/arm/olpc/3.0/wlan-version.fth + +fload ${BP}/cpu/arm/olpc/build-wlan.fth
Added: cpu/arm/olpc/3.0/sdhci.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/sdhci.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,44 @@ +purpose: Load file for SDHCI (Secure Digital Host Controller Interface) + +0 0 " d4280000" " /" begin-package + + fload ${BP}/cpu/arm/olpc/sdregs.fth + fload ${BP}/dev/mmc/sdhci/sdhci.fth + + d# 1 to power-off-time \ A2 and A3 have turn-off clamps +\ true to avoid-high-speed? + + hex + : olpc-card-inserted? ( -- flag ) + slot 1 = if d# 31 gpio-pin@ 0= else true then + ; + ' olpc-card-inserted? to card-inserted? + + \ Slot:power_GPIO - 1:35, 2:34, 3:33 + : gpio-power-on ( -- ) sdhci-card-power-on d# 36 slot - gpio-set ; + ' gpio-power-on to card-power-on + + : gpio-power-off ( -- ) d# 36 slot - gpio-clr sdhci-card-power-off ; + ' gpio-power-off to card-power-off + + new-device + 2 encode-int " reg" property + fload ${BP}/dev/mmc/sdhci/mv8686/loadpkg.fth + finish-device + + new-device + 3 encode-int " reg" property + fload ${BP}/dev/mmc/sdhci/sdmmc.fth + fload ${BP}/dev/mmc/sdhci/selftest.fth + " internal" " slot-name" string-property + finish-device + +end-package + +stand-init: SDHC clocks + h# 41b h# 282854 io! \ SD0 (external SD) clocks, plus set master clock divisor + h# 1b h# 282858 io! \ SD1 (WLAN) clocks + h# 1b h# 2828e8 io! \ SD2 (internal microSD) clocks + h# 70a h# 200104 io! \ Clock gating + h# 70a h# 201104 io! \ Clock gating +;
Added: cpu/arm/olpc/3.0/switches.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/switches.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,34 @@ +\ See license at end of file +purpose: Driver/selftest for OLPC lid and ebook switches + +0 0 " 0" " /" begin-package +" switches" device-name +0 0 reg \ So test-all will run the test +: open ( -- okay? ) true ; +: close ( -- ) ; +: selftest ( -- error? ) false ; +end-package + +\ 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/3.0/testinstructions.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/testinstructions.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,553 @@ +\ See license at end of file +purpose: Drawings of OLPC XO-1.75 board and components for test instructions + +support-package: test-instructions + +decimal + +\ Common items + +\ FIXME: these might be shared between XO-1.5 and XO-1.75 + +: headphones-logo + 24 5 rmove -6 0 -10 6 -10 13 rcurve + 10 -13 rmove 6 0 10 6 10 13 rcurve + -16 4 rmove -2 0 -3 -1 -3 -2 rcurve 0 -3 1 -3 3 -3 rcurve 0 5 rline + 12 -5 rmove 2 0 3 0 3 2 rcurve 0 3 -1 3 -3 3 rcurve 0 -5 rline +; + +: led-symbol ( x y -- ) + moveto 5 5 rline 5 -5 rline -5 -5 rline -5 5 rline +; +: usb-logo + 14 11 rmove + 1 1 1 3 0 4 rcurve + -1 1 -2 1 -3 0 rcurve + -1 -1 -1 -3 0 -4 rcurve + 1 -1 2 -1 3 0 rcurve + + 10 -4 rmove + 1 -1 1 -2 0 -2 rcurve + 0 -1 -1 -1 -1 0 rcurve + 0 0 0 1 0 2 rcurve + 0 0 1 0 1 0 rcurve + + -12 6 rmove 18 0 rline + 5 0 rmove -5 -2 rline 0 4 rline 5 -2 rline + -7 6 rmove 2 0 rline 0 3 rline -2 0 rline 0 -3 rline + -11 -6 rmove + 1 -2 2 -5 3 -6 rcurve + 1 -2 2 -1 3 -1 rcurve + + -2 7 rmove + 2 2 2 5 4 7 rcurve + 1 1 3 0 5 0 rcurve +; +: mic-logo + -4 0 -6 -3 -6 -5 rcurve + 6 5 rmove 3 0 6 -3 6 -5 rcurve + -4 -8 rmove + 0 8 rline 0 1 -1 2 -2 2 rcurve -1 0 -2 -1 -2 -2 rcurve + 0 -8 rline 0 -1 1 -2 2 -2 rcurve 1 0 2 1 2 2 rcurve + -2 13 rmove 0 3 rline 3 0 rmove -7 0 rline +; + +\ Board bottom items + +: rantenna ( -- ) + -5 -5 rmove 10 10 rbox 5 5 rmove rpoint 5 rcircle +; +: wlan-card + 122 6 75 74 boxat + 10 9 rmove rantenna + 55 0 rmove rantenna +; + +: board-outline + ( lower left corner ) 2 370 moveto + ( left side cutout ) 0 -117 rline 9 0 rline + 0 -17 rline -5 0 rline + ( upper left corner ) 0 -199 rline + ( wireless cutout ) 54 0 rline 0 -37 rline 54 0 rline + 0 96 rline 91 0 rline 0 -96 rline + 319 0 rline 0 37 rline + ( upper right corner ) 56 0 rline + ( right side cutout ) 0 127 rline -11 0 rline 0 43 rline + 7 0 rline 0 35 rline -7 0 rline + 0 17 rline 11 0 rline + ( lower right corner ) 0 111 rline + ( lower cutout ) -85 0 rline 0 -4 rline -49 0 rline + 0 -13 rline -23 0 rline 0 -17 rline + -27 0 rline 0 -105 rline -213 0 rline + 0 102 rline -28 0 rline 0 16 rline + -23 0 rline 0 17 rline -37 0 rline + 0 4 rline + ( lower left corner ) -93 0 rline +; + +: mic-conn + 535 52 45 28 boxat + 24 20 rmove mic-logo + 580 58 8 16 boxat +; +: headphone-conn + 535 90 45 28 boxat + headphones-logo + 580 96 8 16 boxat +; +: ac-conn 553 306 36 27 boxat ; +: ext-sd-slot 2 280 81 90 boxat ; +: kbd-conn 165 300 12 23 boxat ; + +: ext-sd-card + 9 293 moveto + 9 379 lineto 76 379 lineto 76 304 lineto 65 293 lineto 9 293 lineto +; + +: usb0-conn + 537 126 45 27 boxat + usb-logo +; +: usb1-conn + 0 54 45 27 boxat + usb-logo +; +: usb2-conn + 0 99 45 45 boxat + 0 9 rmove usb-logo +; +: battery-conn + 435 321 25 20 boxat + 435 299 10 12 boxat +; + +: led0 103 356 led-symbol ; +: led1 119 356 led-symbol ; +: led2 454 356 led-symbol ; +: led3 474 356 led-symbol ; +: cmos-battery-conn + 259 47 12 18 boxat + 261 43 8 4 boxat + 261 65 8 4 boxat +; + +\ FIXME: find out where this is to go for A2 +: cmos-battery + 262 60 22 circleat + \ Wires + 243 71 moveto + 238 75 228 81 229 86 curveto + 229 90 242 99 249 100 curveto + 255 100 262 89 269 89 curveto + 275 89 280 100 286 100 curveto + 292 100 297 93 303 90 curveto + 247 76 moveto + 241 81 231 89 229 93 curveto + 226 96 230 99 234 99 curveto + 237 99 244 90 250 91 curveto + 255 91 261 101 268 101 curveto + 274 100 280 90 286 90 curveto + 292 90 298 96 304 99 curveto +; + +: rspkr-conn + 20 153 18 16 boxat + 16 157 4 8 boxat + 38 157 4 8 boxat +; +: lspkr-conn + 544 170 18 16 boxat + 540 174 4 8 boxat + 562 174 4 8 boxat +; + +: wlan-conn 109 75 101 28 boxat ; + +: serial-conn + 71 46 18 27 boxat + 75 42 8 4 boxat + 75 73 8 4 boxat + + 519 154 22 12 boxat + +; + +: int-sd-slot 115 143 32 37 boxat ; + +: int-sd-card + 101 146 moveto 43 0 rline 0 27 rline -13 0 rline -5 4 rline + -5 0 rline 0 -4 rline -4 0 rline -2 4 rline -15 0 rline 0 -31 rline +; + +: basic-layout ( -- ) + clear-drawing + d# 10 d# 20 offsetat + double-drawing +; +: draw-board ( -- ) + basic-layout + board-outline + mic-conn + headphone-conn + ac-conn + ext-sd-slot + kbd-conn + usb0-conn + usb1-conn + usb2-conn + battery-conn + led0 led1 led2 led3 + cmos-battery-conn + cmos-battery + rspkr-conn + lspkr-conn + wlan-conn + serial-conn + int-sd-slot + + wlan-card + int-sd-card + ext-sd-card +; + +\ Board top items +\ FIXME: still has XO-1.5 image, yet to update for XO-1.75 + +: button-symbol ( x y -- ) + 2dup 18 18 boxat + swap 9 + swap 9 + 6 circleat +; + +: top-outline + 584 370 moveto + 0 -117 rline -9 0 rline 0 -17 rline 5 0 rline 0 -199 rline -54 0 rline + 0 -37 rline -54 0 rline 0 96 rline -91 0 rline 0 -96 rline -319 0 rline + 0 37 rline -56 0 rline 0 127 rline 11 0 rline 0 43 rline -7 0 rline + 0 35 rline 7 0 rline 0 17 rline -11 0 rline 0 111 rline 85 0 rline + 0 -4 rline 49 0 rline 0 -13 rline 23 0 rline 0 -17 rline 27 0 rline + 0 -105 rline 213 0 rline 0 102 rline 28 0 rline 0 16 rline 23 0 rline + 0 17 rline 37 0 rline 0 4 rline 93 0 rline +; + +: headphones-top + 2 95 7 18 boxat + 9 91 45 28 boxat + headphones-logo +; +: mic-top + 9 54 45 28 boxat + 24 20 rmove mic-logo + 2 59 7 18 boxat +; +: acin 0 307 36 27 boxat ; +: int-mic-conn + 70 146 18 18 boxat + 28 15 rmove mic-logo +; +: usb0 + 7 128 45 27 boxat + usb-logo +; +: usb1 + 543 55 45 27 boxat + usb-logo +; +: usb2 + 543 100 45 45 boxat + 0 9 rmove usb-logo +; +: display-conn 252 1 89 18 boxat ; +: camera-conn 540 154 36 18 boxat ; +: backlight-conn 63 46 27 17 boxat ; +: above-int-mic-conn + 79 87 18 27 boxat + 81 82 9 5 boxat + 81 114 9 5 boxat +; +: pwr-but 543 338 button-symbol ; +: rotate-but 30 338 button-symbol ; +: up-but 37 237 button-symbol ; +: down-but 37 278 button-symbol ; +: left-but 14 258 button-symbol ; +: right-but 57 258 button-symbol ; +: o-but 543 239 button-symbol ; +: x-but + 543 279 18 18 boxat + 548 283 moveto 557 292 lineto 548 292 moveto 557 283 lineto +; +: square-but + 521 260 18 18 boxat + 525 264 moveto 534 264 lineto 534 273 lineto 525 273 lineto 525 264 lineto +; +: check-but + 564 259 18 18 boxat + 570 269 moveto 573 273 lineto 578 263 lineto +; +: led0-top 518 348 led-symbol ; +: led1-top 491 348 led-symbol ; +: led2-top 72 348 led-symbol ; +: led3-top 99 348 led-symbol ; +: mic-led 31 45 led-symbol ; +: camera-led 569 45 led-symbol ; +: wlan-conn-top 374 76 104 27 boxat ; +: wlan-card-top 389 7 75 75 boxat ; +: ext-sd-slot-top 497 360 81 9 boxat ; +: ext-sd-card-top + 504 369 moveto 0 -75 rline 11 -11 rline 56 0 rline 0 86 rline -67 0 rline +; +: draw-top ( -- ) + basic-layout + + top-outline + headphones-top + mic-top + acin + int-mic-conn + usb0 usb1 usb2 + display-conn + camera-conn + backlight-conn + above-int-mic-conn + pwr-but + rotate-but + up-but + down-but + left-but + right-but + o-but + x-but + square-but + check-but + led0-top + led1-top + led2-top + led3-top + mic-led + camera-led + wlan-conn-top + wlan-card-top + ext-sd-slot-top +; + +: usb-key ( -- ) + 95 155 moveto 130 165 lineto 130 155 lineto 95 145 lineto 95 155 lineto + 130 155 moveto 150 140 lineto 150 150 lineto 130 165 lineto + 150 140 moveto 115 130 lineto 95 145 lineto + 146 153 moveto 155 155 lineto 155 135 lineto 110 122 lineto 110 133 lineto + 110 122 moveto 110 122 171 67 197 54 curveto 229 38 295 42 155 135 curveto + 155 156 moveto 218 111 229 100 241 81 curveto 248 65 239 51 239 51 curveto +; + +: scanner ( -- ) + 195 98 moveto + 195 111 174 121 149 121 curveto + 123 121 103 111 102 98 curveto + 103 85 123 75 149 75 curveto + 174 75 195 85 195 98 curveto + + 111 84 moveto + 193 36 228 48 239 61 curveto + 261 90 171 122 171 118 curveto + + 235 85 moveto + 281 177 310 177 267 201 curveto + 251 209 227 200 235 189 curveto + 243 177 249 179 248 172 curveto + 239 121 196 109 200 109 curveto +; + +: usb-ethernet + 130 212 moveto + 141 218 145 220 145 205 curveto 145 190 145 190 125 180 curveto + 105 170 105 171 105 185 curveto 105 190 105 185 105 190 curveto + + 105 190 moveto + 106 190 105 192 105 185 curveto 105 170 105 170 135 155 curveto 165 140 165 140 185 150 curveto + 205 160 205 160 205 175 curveto 205 190 205 190 175 205 curveto 145 220 146 221 130 212 curveto + + 125 190 moveto 135 195 lineto 115 205 lineto 95 195 lineto 115 185 lineto 120 188 lineto + 105 215 moveto 115 220 lineto 115 205 lineto 95 195 lineto 95 206 lineto + 115 220 moveto 135 210 lineto 135 195 lineto 115 205 lineto 115 220 lineto + 102 202 moveto 105 201 109 202 110 205 curveto 111 208 111 211 109 213 curveto + 109 213 moveto 78 232 38 242 38 242 curveto + 103 202 moveto 76 219 38 230 38 230 curveto + 130 188 moveto 121 193 lineto 115 190 lineto 125 185 lineto 130 188 lineto + 130 188 moveto 130 189 130 193 130 193 curveto + 115 185 moveto 120 188 lineto + 135 195 moveto 126 191 lineto + + 321 96 moveto 321 106 lineto 322 106 308 124 287 118 curveto + 306 108 moveto 313 105 321 96 321 96 curveto 303 89 lineto 303 89 296 92 289 98 curveto 275 112 291 117 306 108 curveto + 327 90 moveto 327 96 lineto 321 101 lineto + 307 90 moveto 315 85 lineto 327 90 lineto 319 95 lineto + 283 111 moveto 284 114 287 112 288 113 curveto 289 114 289 116 288 117 curveto + 284 111 moveto 284 110 lineto + + 287 111 moveto 250 134 198 157 198 157 curveto + 288 117 moveto 238 147 203 161 203 161 curveto +; + + +0 value blink-time +-1 value blink-state +0 value blink-color +h# ff0000 constant red-888 +h# 00ff00 constant green-888 +h# 0000ff constant blue-888 +h# 000000 constant black-888 +h# ffffff constant white-888 +h# ff00ff constant magenta-888 +magenta-888 to blink-color + +: set-default-color ( -- ) black-888 set-fg ; + +defer selected-object ' noop to selected-object + +: idle ( -- ) + blink-state -1 = if exit then + 1 ms + get-msecs blink-time - 0>= if + blink-state 1 xor dup to blink-state ( state ) + if blink-color set-fg else white-888 set-fg then + selected-object + get-msecs d# 400 + to blink-time + then +; + +: highlight ( xt color -- ) + to blink-color + to selected-object + get-msecs to blink-time + 0 to blink-state + idle +; +: message-off ( -- ) d# 2 d# 27 at-xy kill-line ; +: message ( adr len -- ) cursor-off message-off red-letters type black-letters ; + +: performed ( -- ) + -1 to blink-state + message-off + set-default-color + selected-object + cr +; + +: connect-scanner ( -- ) + basic-layout + " Connect USB barcode scanner to continue.." message + ['] scanner green-888 highlight +; + +: connect-usb-key ( -- ) + basic-layout + " Connect USB stick to continue.." message + ['] usb-key green-888 highlight +; + +: connect-usb-ethernet ( -- ) + basic-layout + " Connect USB Ethernet to continue.." message + ['] usb-ethernet green-888 highlight +; + +: connect-headphones ( -- ) + draw-top + " Connect headphones to continue.." message + ['] headphones-top h# 00e000 highlight \ Green like headphone jack +; +: disconnect-headphones ( -- ) + draw-top + " Disconnect headphones to continue.." message + ['] headphones-top red-888 highlight +; +: connect-microphone ( -- ) + draw-top + " Connect microphone to continue.." message + ['] mic-top h# ff80c0 highlight \ Close enough to the pink of the mic jack +; +: disconnect-microphone ( -- ) + draw-top + " Disconnect microphone to continue.." message + ['] mic-top red-888 highlight +; +: mic+phones-top ( -- ) mic-top headphones-top ; +: connect-loopback ( -- ) + draw-top + " Connect loopback cable to continue.." message + ['] mic+phones-top green-888 highlight +; +: disconnect-loopback ( -- ) + draw-top + " Disconnect loopback cable to continue.." message + ['] mic+phones-top red-888 highlight +; + +: connect-int-sd ( -- ) + draw-board + " Connect internal SD card to continue.." message + ['] int-sd-card green-888 highlight +; +: connect-ext-sd ( -- ) + draw-top + " Connect external SD card to continue.." message + ['] ext-sd-card-top green-888 highlight +; + +: disconnect-int-sd ( -- ) + draw-board + " Disconnect internal SD card to continue.." message + ['] int-sd-card red-888 highlight +; +: disconnect-ext-sd ( -- ) + draw-top + " Disconnect external SD card to continue.." message + ['] ext-sd-card-top red-888 highlight +; + +: open ( -- ok ) true ; +: close ( -- ) ; + +end-support-package +0 value instructions-ih + +: ($instructions) ( name$ -- ) + instructions-ih 0= if + " " " test-instructions" $open-package to instructions-ih + then + instructions-ih $call-method +; +' ($instructions) to $instructions + +: (instructions-idle) ( -- ) " idle" $instructions ; +' (instructions-idle) to instructions-idle + +: (instructions-done) ( -- ) " performed" $instructions ; +' (instructions-done) to instructions-done + +: diag-mode ( -- ) true to diag-switch? ; + +hex + +\ LICENSE_BEGIN +\ Copyright (c) 2010 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/3.0/testitems.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/testitems.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,94 @@ +icon: cpu.icon rom:cpu.565 +icon: spi.icon rom:spi.565 +icon: ram.icon rom:ram.565 +icon: sdcard.icon rom:sdcard.565 +icon: usb.icon rom:usb.565 +icon: battery.icon rom:battery.565 +icon: camera.icon rom:camera.565 +icon: wifi.icon rom:wifi.565 +icon: audio.icon rom:audio.565 +icon: touchpad.icon rom:touchpad.565 +icon: display.icon rom:display.565 +icon: keyboard.icon rom:keyboard.565 +icon: timer.icon rom:timer.565 +icon: clock.icon rom:clock.565 +icon: ebook.icon rom:ebook.565 +icon: leds.icon rom:leds.565 + +d# 15 to #mfgtests +d# 5 to #mfgcols +d# 4 to #mfgrows + +: cpu-item ( -- ) " /cpu" mfg-test-dev ; +: battery-item ( -- ) " /battery" mfg-test-dev ; +: spiflash-item ( -- ) " /flash" mfg-test-dev ; +: memory-item ( -- ) " /memory" mfg-test-dev ; +: usb-item ( -- ) " /usb/hub" mfg-test-dev ; +: int-sd-item ( -- ) " int:0" mfg-test-dev ; +: ext-sd-item ( -- ) " ext:0" mfg-test-dev ; +: rtc-item ( -- ) " /rtc" mfg-test-dev ; +: display-item ( -- ) " /display" mfg-test-dev ; +: audio-item ( -- ) " /audio" mfg-test-dev ; +: camera-item ( -- ) " /camera" mfg-test-dev ; +: wlan-item ( -- ) " /wlan" mfg-test-dev ; +: timer-item ( -- ) " /timer" mfg-test-dev ; +: touchpad-item ( -- ) " mouse" mfg-test-dev ; +: keyboard-item ( -- ) " keyboard" mfg-test-dev ; +: switch-item ( -- ) " /accelerometer" mfg-test-dev " /switches" mfg-test-dev ; +: leds-item ( -- ) " /leds" mfg-test-dev ; + +: olpc-test-menu-items ( -- ) + clear-menu + +\ " CPU" +\ ['] cpu-item cpu.icon 1 0 install-icon + + " SPI Flash: Contains EC code, firmware, manufacturing data." + ['] spiflash-item spi.icon 1 0 install-icon + + " RAM chips" + ['] memory-item ram.icon 1 1 install-icon + + " Internal mass storage" + ['] int-sd-item sdcard.icon 1 2 install-icon + + " Plug-in SD card" + ['] ext-sd-item sdcard.icon 1 3 install-icon + + " Wireless LAN" + ['] wlan-item wifi.icon 1 4 install-icon + + " Display" + ['] display-item display.icon 2 0 install-icon + + " Camera" + ['] camera-item camera.icon 2 1 install-icon + + " Audio: Speaker and microphone" + ['] audio-item audio.icon 2 2 install-icon + + " Battery" + ['] battery-item battery.icon 2 3 install-icon + + " RTC (Real-Time Clock)" + ['] rtc-item clock.icon 2 4 install-icon + + " USB ports" + ['] usb-item usb.icon 3 0 install-icon + + \ These are last because they require user participation. + \ The earlier tests are all included in automatic batch-mode. + + " Keyboard" + ['] keyboard-item keyboard.icon 3 1 install-icon + + " Touchpad" + ['] touchpad-item touchpad.icon 3 2 install-icon + + " LEDs" + ['] leds-item leds.icon 3 3 install-icon + + " Switches and Accelerometer" + ['] switch-item ebook.icon 3 4 install-icon +; +' olpc-test-menu-items to test-menu-items
Added: cpu/arm/olpc/3.0/usb.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/usb.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,187 @@ +purpose: Platform-specific USB elaborations +\ See license at end of file + +0 0 " d4208000" " /" begin-package \ USB Host Controller + h# 200 constant /regs + my-address my-space /regs reg + : my-map-in ( len -- adr ) + my-space swap " map-in" $call-parent h# 100 + ( adr ) + ; + : my-map-out ( adr len -- ) swap h# 100 - swap " map-out" $call-parent ; + false constant has-dbgp-regs? + false constant needs-dummy-qh? + : grab-controller ( config-adr -- error? ) drop false ; + fload ${BP}/dev/usb2/hcd/ehci/loadpkg.fth +\ false to delay? \ No need for a polling delay on this platform + : otg-set-host-mode 3 h# a8 ehci-reg! ; \ Force host mode + ' otg-set-host-mode to set-host-mode + + \ Port 1 on the hub is connected to unused pins on the WLAN connector, + \ so testing it is confusing + \ Port 2 is right upper + \ Port 3 is left + \ Port 4 is right lower + " 3,4,2" " usb-hub-test-list" string-property + : sleep ( -- ) true to first-open? ; + : wake ( -- ) ; +end-package + +\ Turn on USB power after a delay, to ensure that USB devices are reset correctly on boot +: usb-power-on ( -- ) ; \ The EC controls the USB power +: reset-usb-hub ( -- ) d# 146 gpio-clr d# 10 ms d# 146 gpio-set ; + +: init-usb ( -- ) + h# 9 h# 5c pmua! \ Enable clock to USB block + reset-usb-hub + init-usb-phy +; + +stand-init: Init USB Phy +\ usb-power-on \ The EC now controls the USB power + init-usb +; + +d# 350 config-int usb-delay \ Milliseconds to wait before probing hub ports + +devalias u /usb/disk + +\ Like $show-devs, but ignores pagination keystrokes +: $nopage-show-devs ( nodename$ -- ) + ['] exit? behavior >r ['] false to exit? + $show-devs + r> to exit? +; + +\ Restrict selftest to external USB ports 1,2,3 +\ dev / 3 " usb-test-ports" integer-property dend + +: (probe-usb2) ( -- ) + " device_type" get-property if exit then +[ifdef] use-usb-debug-port + \ I haven't figured out how to turn on the EHCI cleanly + \ when the Debug Port is running + dbgp-off +[then] + get-encoded-string " ehci" $= if + pwd$ open-dev ?dup if close-dev then + then +; +: (show-usb2) ( -- ) + " device_type" get-property if exit then + get-encoded-string " ehci" $= if + pwd$ $nopage-show-devs + then +; + +true value first-usb-probe? +: (silent-probe-usb) ( -- ) " /" ['] (probe-usb2) scan-subtree ; +: silent-probe-usb ( -- ) + (silent-probe-usb) + report-disk report-net report-keyboard +; +: probe-usb ( -- ) + first-usb-probe? if + false to first-usb-probe? + \ Initial probe to awaken the hub + (silent-probe-usb) + \ A little delay to let slow devices like USB scanner wake up + d# 150 ms + then + silent-probe-usb + + ." USB devices:" cr + " /" ['] (show-usb2) scan-subtree + +; +alias p2 probe-usb + +0 value usb-keyboard-ih + +: attach-usb-keyboard ( -- ) + " usb-keyboard" expand-alias if ( devspec$ ) + drop " /usb" comp 0= if ( ) + " usb-keyboard" open-dev to usb-keyboard-ih + usb-keyboard-ih add-input + exit + then + else ( devspec$ ) + 2drop + then +; + +: detach-usb-keyboard ( -- ) + usb-keyboard-ih if + usb-keyboard-ih remove-input + usb-keyboard-ih close-dev + 0 to usb-keyboard-ih + then +; + +: ?usb-keyboard ( -- ) + attach-usb-keyboard + " /usb/serial" open-dev ?dup if + add-input + then +; + +: suspend-usb ( -- ) + detach-usb-keyboard + " /usb" " sleep" execute-device-method drop +; +: has-children? ( devspec$ -- flag ) + locate-device if false else child 0<> then +; +: any-usb-devices? ( -- flag ) " /usb/hub" has-children? ; +: resume-usb ( -- ) + init-usb + " /usb" " wake" execute-device-method drop + any-usb-devices? if + d# 2000 ms \ USB misses devices if you probe too soon + then + silent-probe-usb + attach-usb-keyboard +; + +\ Unlink every node whose phys.hi component matches port +: port-match? ( port -- flag ) + get-unit if drop false exit then + get-encoded-int = +; +: rm-usb-children ( port -- ) + device-context? 0= if drop exit then + also ( port ) + 'child ( port prev ) + first-child begin while ( port prev ) + over port-match? if ( port prev ) + 'peer link@ over link! ( port prev ) \ Disconnect + else ( port prev ) + drop 'peer ( port prev' ) + then ( port prev ) + next-child repeat ( port prev ) + 2drop ( ) + previous definitions +; + +\ LICENSE_BEGIN +\ Copyright (c) 2010 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/3.0/verify.bth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/verify.bth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,7 @@ +purpose: Fetch the Crypto code and keys + +command: &builder &this +build-now + +fload ${BP}/cpu/arm/olpc/3.0/crypto-version.fth +fload ${BP}/cpu/arm/olpc/build-crypto.fth
Added: cpu/arm/olpc/3.0/wlan-version.fth ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ cpu/arm/olpc/3.0/wlan-version.fth Sat Dec 3 01:45:08 2011 (r2727) @@ -0,0 +1,7 @@ +\ The wireless LAN module firmware +macro: WLAN_VERSION 9.0.7.p2 + +\ Alternate command for getting WLAN firmware, for testing new versions. +\ Temporarily uncomment the line and modify the path as necessary +\ macro: GET_WLAN cp "/c/Documents and Settings/Mitch Bradley/My Documents/OLPC/DiskImages/sd8686-9.70.7.p0.bin" sd8686.bin; cp "/c/Documents and Settings/Mitch Bradley/My Documents/OLPC/DiskImages/sd8686_helper.bin" sd8686_helper.bin +\ macro: GET_WLAN wget http://dev.laptop.org/pub/firmware/libertas/thinfirm/lbtf_sdio-9.0.7.p2.bin -O sd8686.bin
openfirmware@openfirmware.info