[openfirmware] r912 - in cpu/x86/pc/neptune: . build

svn at openfirmware.info svn at openfirmware.info
Tue Sep 2 04:45:16 CEST 2008


Author: wmb
Date: 2008-09-02 04:45:16 +0200 (Tue, 02 Sep 2008)
New Revision: 912

Modified:
   cpu/x86/pc/neptune/addrs.fth
   cpu/x86/pc/neptune/banner.fth
   cpu/x86/pc/neptune/build/Makefile
   cpu/x86/pc/neptune/devices.fth
   cpu/x86/pc/neptune/fw.bth
   cpu/x86/pc/neptune/neptune.bth
Log:
Neptune - fixes to support FPGA programming; also big cleanup
of "startup" to eliminate OLPC-centric UI stuff, aligning the
Neptune startup sequence with the conventional OFW
"probe-all,install-console,banner" sequence.


Modified: cpu/x86/pc/neptune/addrs.fth
===================================================================
--- cpu/x86/pc/neptune/addrs.fth	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/addrs.fth	2008-09-02 02:45:16 UTC (rev 912)
@@ -11,6 +11,14 @@
 
 dropin-base h# 20 +  constant ResetBase	\ Location of "reset" dropin in ROM
 
+h# ffe0.0000   constant rom1-pa		\ Secondary ROM (FLASH) on dongle
+
+h# ff80.0000   constant lpc-pa		\ Extra stuff decoded by LPC FLASH chips
+h#   60.0000   constant /lpc		\ Space to reserve for LPC stuff
+
+h# ffbc.0100   constant lpc-gpi0-pa	\ GPI port for LPC FLASH 0
+h# ffac.0100   constant lpc-gpi1-pa	\ GPI port for LPC FLASH 1
+
 \ Firmware reflash parameters
 h# 8.0000 constant fw-offset       \ Where to start reflashing
 h# 8.0000 constant /fw-reflash     \ Expected size of a reflash image
@@ -40,10 +48,6 @@
 
 h#   80.0000 constant fb-size
 
-\ If you change these, also change {g/l}xmsrs.fth and {g/l}xearly.fth
-h# fd00.0000 constant fw-map-base
-h# ffc0.0000 constant fw-map-limit
-
 h# fd00.0000 constant fb-pci-base
 h# fe00.0000 constant gp-pci-base
 h# fe00.4000 constant dc-pci-base
@@ -57,11 +61,19 @@
 h# fe02.8000 constant camera-pci-base
 h# fe02.c000 constant uoc-pci-base
 
+\ These two are used when running in physical mode, to delimit
+\ a set of v=p mappings that we create just before invoking Linux.
+h# fd00.0000 constant fw-map-base
+h# ffc0.0000 constant fw-map-limit
+
 fload ${BP}/cpu/x86/pc/virtaddr.fth
-[ifndef] virtual-mode
-h# fec0.0000 to fw-virt-base  \ Override the usual setting; we use an MSR to double-map some memory up high
+
+\ Override the usual fw-virt-base setting.
+\ There's some LPC stuff in the way of the normal OFW virtual address ff80.0000
+\ And if we are running in physical mode, we use an MSR to double-map some memory up high
+
+h# ff40.0000 to fw-virt-base
 h#   40.0000 to fw-virt-size
-[then]
 
 \ LICENSE_BEGIN
 \ Copyright (c) 2006 FirmWorks

Modified: cpu/x86/pc/neptune/banner.fth
===================================================================
--- cpu/x86/pc/neptune/banner.fth	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/banner.fth	2008-09-02 02:45:16 UTC (rev 912)
@@ -3,6 +3,26 @@
 
 headerless
 
+: geode-print-pll ( -- )
+   ." Geode CPU Speed "
+   h# 4c00.0014 rdmsr swap drop
+   h# 3E and 2/
+   1 + d# 66 * 2/ decimal . cr
+
+   ." GeodeLink Speed "
+   h# 4c00.0014 rdmsr swap drop
+   h# FFF and 7 >>
+   1 + d# 66 * 2/ decimal . cr
+
+   ." PCI Speed "
+   h# 4c00.0014 rdmsr drop
+   1 7 << and
+   0= if d# 33 . else d# 66 . then cr
+
+   hex
+;
+' geode-print-pll to banner-extras
+
 : .rom  ( -- )
    ." OpenFirmware  "
    push-decimal
@@ -14,22 +34,14 @@
 ;
 
 : (xbanner-basics)  ( -- )
-   ?spaces  cpu-model type  ." , "   .memory
-   ?spaces  .rom
+   ?spaces  cpu-model type  ." , "   .memory  cr
+   ?spaces  .rom cr
 ;
 ' (xbanner-basics) to banner-basics
 
 ' (banner-warnings) to banner-warnings
 
-: stop-auto?  ( -- flag )  idprom-valid? 0=  auto-boot?  and ;
 
-defer gui-banner  ' true to gui-banner
-: ?gui-banner  ( -- )
-   stop-auto?  if  suppress-auto-boot  then
-
-   gui-banner drop
-;
-
 headers
 \ LICENSE_BEGIN
 \ Copyright (c) 2006 FirmWorks

Modified: cpu/x86/pc/neptune/build/Makefile
===================================================================
--- cpu/x86/pc/neptune/build/Makefile	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/build/Makefile	2008-09-02 02:45:16 UTC (rev 912)
@@ -1,8 +1,17 @@
 OS := $(shell uname)
+BASEDIR= `(cd ../../../../..; pwd;)`
+TAGFILES= ../../../build/*.tag *.tag
+CLIENTDIR=../../../../../clients
+CLIENTPROGS=${CLIENTDIR}/memtest86/memtest
 
-all: neptune.rom
+all: neptune.rom tags
 
-neptune.rom: FORCE build ../../../build/inflate.bin ../../../../../clients/memtest86/memtest
+fw.tag: neptune.rom
+
+tags: fw.tag
+	@${BASEDIR}/forth/lib/toctags ${BASEDIR} ${TAGFILES}
+
+neptune.rom: FORCE build ../../../build/inflate.bin ${CLIENTPROGS}
 	./build $@
 
 ../../../${OS}/forth:
@@ -11,8 +20,8 @@
 ../../../build/inflate.bin:
 	@make -C ../../../build inflate.bin
 
-../../../../../clients/memtest86/memtest:
-	@make -C ../../../../../clients/memtest86 memtest
+${CLIENTDIR}/memtest86/memtest:
+	@make -C ${CLIENTDIR}/memtest86 memtest
 
 build: ../../../${OS}/forth
 	@ln -sf ../../../${OS}/forth build
@@ -24,5 +33,6 @@
 	@make -C ../../../build clean
 	@make -C ../../../${OS} clean
 	@make -C ../../../../../clients/memtest86 clean
+	@make -C ../../../../../clients/ispvme clean
 
 .PHONY: FORCE clean all clean-all

Modified: cpu/x86/pc/neptune/devices.fth
===================================================================
--- cpu/x86/pc/neptune/devices.fth	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/devices.fth	2008-09-02 02:45:16 UTC (rev 912)
@@ -340,7 +340,7 @@
    root-device
 \ XXX perhaps report subordinate version info?
       " Neptune"  model
-      " Neptune" " banner-name" string-property
+      " Dave Neptune" " banner-name" string-property
    dend
 
    " /openprom" find-device

Modified: cpu/x86/pc/neptune/fw.bth
===================================================================
--- cpu/x86/pc/neptune/fw.bth	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/fw.bth	2008-09-02 02:45:16 UTC (rev 912)
@@ -6,6 +6,7 @@
 in: builton.fth
 build-now
 
+" fw.tag" r/w create-file drop  tag-file !
 
 hex
 \ ' $report-name is include-hook
@@ -193,14 +194,19 @@
 
 [ifdef] virtual-mode
 fload ${BP}/cpu/x86/pc/mmusetup.fth	\ Initial values for MMU lists
-\ XXX check me
-\ dev /mmu
-\ : claim-rom  ( -- )
-\    (initial-claim)
-\   rom-pa  h# ffff.0000 over -  claim-virtual drop   \ ROM 1-1 map
-\ ;
-\ ' claim-rom to initial-claim
-\ dend
+dev /mmu
+
+\ The LPC FLASH chips decode several addresses below the FLASH "memory" array,
+\ for "registers" used for programming and access to general purpose inputs.
+\ The FPGA programming program wants to access the GPI register at virtual
+\ address = physical address, so we pre-claim that range of virtual addresses.
+
+: claim-lpc  ( -- )
+   (initial-claim)
+   lpc-pa  /lpc  claim-virtual drop   \ Space for 1-1 mapping LPC GPIO stuff
+;
+' claim-lpc to initial-claim
+dend
 [then]
 
 : background-rgb  ( -- r g b )  h# ff h# ff h# ff  ;
@@ -226,7 +232,7 @@
 
 h# 3ea constant usb-port-power-map  \ USB4:PWR2  USB3:PWR1  USB2:PWR1  USB1:PWR1
 fload ${BP}/dev/geode/usb.fth
-\ ' noop to go-hook	\ this is required for accessing USB device from client program (e.g. VME)
+' noop to go-hook	\ this is required for accessing USB device from client program (e.g. VME)
 
 \ false to stand-init-debug?
 true to stand-init-debug?
@@ -274,24 +280,20 @@
 ' (.firmware) to .firmware
 
 : probe-all  ( -- )
-   probe-pci
-   probe-usb
+   ." Probe PCI" cr  probe-pci
+   ." Probe USB" cr  probe-usb
 ;
 
-fload ${BP}/ofw/gui/bmptools.fth
 fload ${BP}/dev/null.fth
 fload ${BP}/ofw/core/bailout.fth
 
 fload ${BP}/cpu/x86/pc/neptune/banner.fth
 
-fload ${BP}/ofw/gui/loadmenu.fth
-\ fload ${BP}/ofw/gui/insticon.fth
-
 \ Use values like these if you want to boot directly instead of through an intermediate script
  " u:\boot\bzImage"   ' boot-device  set-config-string-default
 \ " console=uart,io,0x3f8,115200" ' boot-file  set-config-string-default
  \ " console=uart,io,0x3f8,115200 root=/dev/nfs rw nfsroot=192.168.42.100:/usr/local/rfs_x86,proto=tcp,hard ip=192.168.42.99:192.168.42.100::255.255.255.0:neptune:eth0:off init=/bin/sh" ' boot-file  set-config-string-default
- " console=uart,io,0x3f8,115200 console=tty0 root=/dev/nfs rw nfsroot=192.168.0.23:/home/shared/devel/neptune/sw/rfs/x86_32_rfs,proto=tcp,hard ip=192.168.0.77:192.168.0.23::255.255.255.0:neptune:eth0:off video=1027x768M at 60m init=/bin/bash" ' boot-file  set-config-string-default
+ " console=uart,io,0x3f8,115200 root=/dev/nfs rw nfsroot=192.168.0.23:/home/shared/devel/neptune/sw/rfs/x86_32_rfs,proto=tcp,hard ip=192.168.0.78:192.168.0.23::255.255.255.0:neptune:eth0:off video=1027x768M at 60m ethaddr=00:50:C2:1E:AF:B0 init=/bin/sh" ' boot-file  set-config-string-default
 \ \needs ramdisk  " u:\boot\initrd.img" d# 128 config-string ramdisk
 \needs ramdisk  " " d# 128 config-string ramdisk
 \ " "   ' boot-file      set-config-string-default   \ Let the boot script set the cmdline
@@ -349,16 +351,6 @@
 \ fload ${BP}/cpu/x86/pc/report.fth
 fload ${BP}/ofw/core/dualconsole.fth
 
-true constant user-switch?  ( -- flag )
-: fast-boot?  ( -- flag )
-[ifdef] rom-loaded
-false exit
-   user-switch? 0=
-[else]
-   false
-[then]
-;
-
 : interpreter-init  ( -- )
    hex
    warning on
@@ -376,49 +368,14 @@
 [ifdef] rom-loaded
    video-map cr
 [then]
-   " screen" open-dev  ?dup  if
-      set-stdout
-\       logo-banner drop
-\       close-dev
-\       0 stdout !
-   then
-
+   install-console
+\  ?usb-keyboard
    install-dual-console
 
-   ?gui-banner
-   " probe-" do-drop-in
-\   ." nvramrc" cr
-\   use-nvramrc?  if  nvramrc safe-evaluate  then
+   " nvramrc-" do-drop-in
+   use-nvramrc?  if  nvramrc safe-evaluate  then
 ;
-: debug-interact  ( -- )
-   early-interact?  if
-      " Interrupting startup sequence prior to probing" .because
-      ." Type 'resume'  to resume normal startup sequence." cr
-      \ fallback-device io console-io
-      ( help-msg ) interact
-   then
-;
 
-: geode-print-pll ( -- )
-   ." Geode CPU Speed "
-   h# 4c00.0014 rdmsr swap drop
-   h# 3E and 2/
-   1 + d# 66 * 2/ decimal . cr
-
-   ." GeodeLink Speed "
-   h# 4c00.0014 rdmsr swap drop
-   h# FFF and 7 >>
-   1 + d# 66 * 2/ decimal . cr
-
-   ." PCI Speed "
-   h# 4c00.0014 rdmsr drop
-   1 7 << and
-   0= if d# 33 . else d# 66 . then cr
-
-   hex
-
-;
-
 fload ${BP}/dev/flashui.fth
 
 \ Copies internal flash to external - everything, including config vars
@@ -443,49 +400,37 @@
    " devalias flash /flash at fff00000" evaluate
 ;
 
+\ Change this to lpc-gpi1-pa to use the dongle LPC FLASH
+lpc-gpi0-pa value lpc-gpi-pa
+
 : vme ( -- )
-	." Running Lattice programmer "
-	com1 io
-	verbose-cif
-	" u:\neptune.vme" to boot-file
-	" u:\vme.elf" $boot
+   ." Running Lattice programmer "
+
+   lpc-gpi-pa lpc-gpi-pa h# 100 -1 mmu-map
+   \ verbose-cif
+   " rom:\isp u:\neptune.vme" $boot
+	
+   lpc-gpi-pa h# 100 mmu-unmap
 ;
 
 fload ${BP}/cpu/x86/pc/neptune/versions.fth
 
-: optional-startup  ( -- )
-   probe-usb
-   ?usb-keyboard
-;
+0 to major-release
+9 to minor-release
+: subrel  " .3"  ;  ' subrel to sub-release
 
 : startup  ( -- )
    standalone?  0=  if  exit  then
 
 \   ?bailout
 
-   no-page
-
+   probe-all
    console-start
-	." Welcome to Dave Neptune (OFW 0.9.3)" cr
-   geode-print-pll
+   banner
 
-   fast-boot?   if
-      probe-pci
-      ['] false to interrupt-auto-boot?
-      interpreter-init
-      auto-boot
-      optional-startup
-   else
-      ." Interactive boot" cr
+   interpreter-init
+   auto-boot
 
-      ." PCI Probe" cr
-       probe-pci
-      ." USB probe" cr
-      optional-startup
-      interpreter-init
-      auto-boot
-   then
-
    blue-letters ." Type 'help' for more information." black-letters
    cr cr
 
@@ -499,6 +444,8 @@
 warning !
 previous previous definitions
 
+tag-file @ fclose  tag-file off
+
 .( --- Saving fw.dic ...)
 " fw.dic" $save-forth cr
 

Modified: cpu/x86/pc/neptune/neptune.bth
===================================================================
--- cpu/x86/pc/neptune/neptune.bth	2008-09-02 02:34:47 UTC (rev 911)
+++ cpu/x86/pc/neptune/neptune.bth	2008-09-02 02:45:16 UTC (rev 912)
@@ -18,6 +18,7 @@
 in: ${BP}/dev/pci/build/pcibridg.fc
 in: ${BP}/dev/dnet/build/dnet.fc
 \ in: ${BP}/clients/memtest86/memtest
+in: vme.elf
 
 build-now
 
@@ -72,6 +73,7 @@
    " ${BP}/clients/memtest86/memtest"               " memtest"  $add-deflated-dropin
 [then]
    " ${BP}/dev/pci/build/pcibridg.fc"           " class060400"     $add-deflated-dropin
+   " vme.elf"                                   " isp"             $add-deflated-dropin
 
    dropin-size h# 400 - pad-file	\ rmstart image must start 0x400 from end
    " rmstart.img"    $add-file




More information about the openfirmware mailing list