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

svn at openfirmware.info svn at openfirmware.info
Fri May 29 04:26:08 CEST 2009


Author: wmb
Date: 2009-05-29 04:26:07 +0200 (Fri, 29 May 2009)
New Revision: 1205

Added:
   cpu/x86/pc/olpc/via/boardrev.fth
   cpu/x86/pc/olpc/via/ec.bth
Modified:
   cpu/x86/pc/olpc/via/config.fth
   cpu/x86/pc/olpc/via/devices.fth
   cpu/x86/pc/olpc/via/fw.bth
   cpu/x86/pc/olpc/via/ioinit.fth
   cpu/x86/pc/olpc/via/romreset.bth
   cpu/x86/pc/olpc/via/startgfxinit.fth
   cpu/x86/pc/olpc/via/versions.fth
Log:
VIA - checkpoint - video works


Added: cpu/x86/pc/olpc/via/boardrev.fth
===================================================================
--- cpu/x86/pc/olpc/via/boardrev.fth	                        (rev 0)
+++ cpu/x86/pc/olpc/via/boardrev.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -0,0 +1,50 @@
+purpose: Determine the board revision based on hardware and EC info
+\ See license at end of file
+
+0 value board-revision
+
+\ Constructs a string like "B4" or "preB4" or "postB4"
+: model-name$  ( -- model$ )
+   board-revision  h# 10 /mod               ( minor major )
+   swap  dup 8 =  if                        ( major minor )
+      drop " "                              ( major prefix$ )
+   else                                     ( major minor )
+      8 <  if  " pre"  else  " post"  then  ( major prefix$ )
+   then                                     ( major prefix$ )
+   push-hex
+   rot <# u# u# drop hold$ 0 u#>            ( adr len )
+   pop-base
+   2dup + 2-  2  upper                      ( model$ )  \ Upper case for base model
+;
+
+stand-init: board revision
+   ['] board-id@ catch  if  0  then   case
+      0      of  0       endof  \ EC broken
+      ( board-id )  dup h# 10 * 8 +  swap  \ E.g. b3 -> b38
+   endcase
+   to board-revision
+;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2007 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/x86/pc/olpc/via/config.fth
===================================================================
--- cpu/x86/pc/olpc/via/config.fth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/config.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -6,6 +6,9 @@
 create compute-timings
 \ create demo-board
 create xo-board
+[ifdef] xo-board
+\ create use-ec
+[then]
 
 \ --- The environment that "boots" us ---
 \ - Image Format - Example Media - previous stage bootloader

Modified: cpu/x86/pc/olpc/via/devices.fth
===================================================================
--- cpu/x86/pc/olpc/via/devices.fth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/devices.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -260,9 +260,11 @@
 
 fload ${BP}/dev/olpc/kb3700/ecserial.fth   \ Serial access to EC chip
 
+.( Implement ignore-power-button) cr
+: ignore-power-button ( -- ) ;
 fload ${BP}/dev/olpc/kb3700/ecio.fth       \ I/O space access to EC chip
 
-fload ${BP}/cpu/x86/pc/olpc/boardrev.fth   \ Board revision decoding
+fload ${BP}/cpu/x86/pc/olpc/via/boardrev.fth   \ Board revision decoding
 [then]
 
 : cpu-mhz  ( -- n )
@@ -305,7 +307,7 @@
 [ifdef] use-ec
 fload ${BP}/cpu/x86/pc/olpc/mfgdata.fth      \ Manufacturing data
 fload ${BP}/cpu/x86/pc/olpc/mfgtree.fth      \ Manufacturing data in device tree
-fload ${BP}/cpu/x86/pc/olpc/kbdtype.fth      \ Export keyboard type
+\ fload ${BP}/cpu/x86/pc/olpc/kbdtype.fth      \ Export keyboard type
 
 fload ${BP}/dev/olpc/kb3700/battery.fth      \ Battery status reports
 

Added: cpu/x86/pc/olpc/via/ec.bth
===================================================================
--- cpu/x86/pc/olpc/via/ec.bth	                        (rev 0)
+++ cpu/x86/pc/olpc/via/ec.bth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -0,0 +1,18 @@
+purpose: Fetch the EC (Embedded Controller, i.e. KB3700) microcode
+
+command: &builder &this
+build-now
+
+fload ${BP}/cpu/x86/pc/olpc/via/versions.fth
+
+\ If there is a GET_EC macro, use it instead of fetching the released version.
+" ${GET_EC}" expand$  nip  [if]
+   " ${GET_EC}" expand$ $sh
+[else]
+   " wget -q http://dev.laptop.org/pub/ec/ec_v${EC_VERSION}.img -O ec.img" expand$ $sh
+[then]
+
+\ This forces the creation of an ec.log file, so we don't re-fetch ec.img
+writing ec.version
+" ${EC_VERSION}"n" expand$  ofd @ fputs
+ofd @ fclose

Modified: cpu/x86/pc/olpc/via/fw.bth
===================================================================
--- cpu/x86/pc/olpc/via/fw.bth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/fw.bth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -697,6 +697,12 @@
 \   " flash http:\\18.85.46.172\new.rom" eval
 ;
 
+: sci-wakeup ( -- ) ;
+: acpi-l@  ( index -- l )  drop 0  ;
+: acpi-l!  ( l index -- )  2drop  ;
+: s3  ( -- )  ;
+
+
 [ifdef] use-ec
 \ Fancy battery charge logger.
 fload ${BP}/cpu/x86/pc/olpc/charge.fth

Modified: cpu/x86/pc/olpc/via/ioinit.fth
===================================================================
--- cpu/x86/pc/olpc/via/ioinit.fth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/ioinit.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -103,11 +103,13 @@
    c1 20 00 mreg  \ Disable USB PIRQ
    end-table
 
+[ifndef] xo-board
    d# 16 2 devfunc  \ UHCI Ports 4,5
    4a 02 02 mreg  \ Enable Stop Bus Master Cycle if HALT Bit is Asserted
    4b 60 60 mreg  \ Enable New UHCI Dynamic Scheme - 66MHz (40) & 33MHz (20)
    c1 20 00 mreg  \ Disable USB PIRQ
    end-table
+[then]
 
    d# 16 4 devfunc  \ EHCI
    42 40 40 mreg  \ Enable Check PRESOF of ITDOUT Transaction during Fetching Data from DRAM
@@ -139,17 +141,27 @@
 \  4d 01 01 mreg  \ Enable LPC TPM
 \  4e 08 08 mreg  \ Enable ports 74/75 for CMOS RAM access
    4e 18 18 mreg  \ Enable ports 74/75 for CMOS RAM access  - 10 res be like Phx
-\  50 40 40 mreg  \ Disable USB device mode
-   50 c0 c0 mreg  \ Disable USB device mode - 80 res be like Phx
+
+[ifdef] demo-board
+   50 40 40 mreg  \ Disable USB device mode
+[then]
 [ifdef] xo-board
+   50 40 40 mreg  \ Disable USB device mode
    51 9f 88 mreg  \ Enable SDIO and internal RTC, disable card reader, int mouse & kbd
 [then]
+
    52 1b 19 mreg  \ No wait state between SIRQ transactions (10), Enable SIRQ (08), SIRQ frame is 6 clocks (3>1)
+.( Check PC/PCI DMA necessity) cr
    53 80 80 mreg  \ Enable PC/PCI DMA
+.( Check interrupt routing) cr
    55 ff a0 mreg  \ INTA and External General interrupt routing - INTA:IRQ10
    56 ff b9 mreg  \ INTB,C routing - INTC:IRQ11, INTB:IRQ9
    57 f0 a0 mreg  \ INTD routing - INTD:IRQ10
+.( Check RTC century byte mapping to cmos 32 - see d17f0 rx58) cr
    58 40 40 mreg  \ Enable Internal APIC
+[ifdef] xo-board
+   59 ff 18 mreg  \ Keyboard (ports 60,64) and ports 62,66 on LPC bus (EC)
+[then]
 \  5b 10 10 mreg  \ Enable APIC Clock Gating
    5b 53 53 mreg  \ Enable APIC Clock Gating - 43 res be like Phx
    68 80 80 mreg  \ Enable HPETs
@@ -179,12 +191,14 @@
 [ifdef] demo-board
    97 ff 80 mreg  \ be like Phx 
 [then]
-[ifdef] xo-board
-   97 ff 81 mreg  \ GPIO4/5 not KBDT/KBCK
-[then]
 
-   9b ff 88 mreg  \ 80 res be like Phx
+\ NO! This doesn't work.  If these lines are set as GPIOs, the system
+\ will crash when you disable the internal KBC.
+\ [ifdef] xo-board
+\   97 ff 81 mreg  \ GPIO4/5 not KBDT/KBCK
+\ [then]
 
+   9b ff 88 mreg  \ 80 undoc but is LVDS power.  0 forces LVDS power off, 1 lets 3d5.D2[7,6,3] control it
 [ifdef] xo-board
    9f ff 08 mreg  \ Slot 3 is SDIO, no pullup on KB/MS, fastest SD
 [then]

Modified: cpu/x86/pc/olpc/via/romreset.bth
===================================================================
--- cpu/x86/pc/olpc/via/romreset.bth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/romreset.bth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -164,7 +164,6 @@
 
 \   fload ${BP}/cpu/x86/pc/olpc/via/startgtlinit.fth
 
-.( Not doing io init)
    fload ${BP}/cpu/x86/pc/olpc/via/ioinit.fth
 
 \ Enable the keyboard controller

Modified: cpu/x86/pc/olpc/via/startgfxinit.fth
===================================================================
--- cpu/x86/pc/olpc/via/startgfxinit.fth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/startgfxinit.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -51,7 +51,12 @@
    5a 3c4 port-wb  00 3c5 port-wb  \ Point back to primary registers
 
    6d 3c4 port-wb  e0 3c5 port-wb  \ Base address [28:21] of SL in System Memory - base is 1c00.0000 - fbsize, memsize
+[ifdef] demo-board
    6e 3c4 port-wb  00 3c5 port-wb  \ Base address [36:29] of SL in System Memory
+[then]
+[ifdef] xo-board
+   6e 3c4 port-wb  01 3c5 port-wb  \ Base address [36:29] of SL in System Memory
+[then]
    6f 3c4 port-wb  00 3c5 port-wb  \ Base address [47:37] of SL in System Memory
 
    36 3c4 port-wb  11 3c5 port-wb  \ Subsystem Vendor ID 1

Modified: cpu/x86/pc/olpc/via/versions.fth
===================================================================
--- cpu/x86/pc/olpc/via/versions.fth	2009-05-27 23:07:49 UTC (rev 1204)
+++ cpu/x86/pc/olpc/via/versions.fth	2009-05-29 02:26:07 UTC (rev 1205)
@@ -2,7 +2,7 @@
 
 \ The overall firmware revision
 macro: FW_MAJOR A
-macro: FW_MINOR 03d
+macro: FW_MINOR 03e
 
 \ The EC microcode
 macro: EC_VERSION a00




More information about the openfirmware mailing list