Author: wmb Date: Wed Aug 3 04:13:27 2011 New Revision: 2409 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2409
Log: OLPC XO-1.75 - New ATAG format for reporting OFW memory, and new virtual addresses that dovetail nicely with Linux usage.
Modified: cpu/arm/mmp2/rootnode.fth cpu/arm/olpc/1.75/addrs.fth cpu/arm/olpc/1.75/devices.fth cpu/arm/olpc/1.75/fw.bth cpu/arm/olpc/initmmu.fth
Modified: cpu/arm/mmp2/rootnode.fth ============================================================================== --- cpu/arm/mmp2/rootnode.fth Wed Aug 3 03:04:18 2011 (r2408) +++ cpu/arm/mmp2/rootnode.fth Wed Aug 3 04:13:27 2011 (r2409) @@ -25,7 +25,9 @@ : close ( -- ) ;
: map-in ( phys size -- virt ) - drop io-pa - io-va + + drop ( phys ) + dup fb-pa = if drop fb-va exit then ( phys ) + io-pa - io-va + ; : map-out ( virtual size -- ) 2drop
Modified: cpu/arm/olpc/1.75/addrs.fth ============================================================================== --- cpu/arm/olpc/1.75/addrs.fth Wed Aug 3 03:04:18 2011 (r2408) +++ cpu/arm/olpc/1.75/addrs.fth Wed Aug 3 04:13:27 2011 (r2409) @@ -33,10 +33,10 @@ h# 1f80.0000 constant extra-mem-pa h# 20.0000 constant /extra-mem
-h# ef00.0000 constant dma-va -h# ef80.0000 constant extra-mem-va -h# efa0.0000 constant fw-va -h# efc0.0000 constant fb-va +h# fd00.0000 constant dma-va +h# fd80.0000 constant extra-mem-va +h# fda0.0000 constant fw-va +h# fdc0.0000 constant fb-va h# fe00.0000 constant io-va
[ifdef] virtual-mode
Modified: cpu/arm/olpc/1.75/devices.fth ============================================================================== --- cpu/arm/olpc/1.75/devices.fth Wed Aug 3 03:04:18 2011 (r2408) +++ cpu/arm/olpc/1.75/devices.fth Wed Aug 3 04:13:27 2011 (r2409) @@ -238,7 +238,7 @@ init-lcd ; : map-frame-buffer ( -- ) - fb-pa to frame-buffer-adr + fb-pa fb-size " map-in" $call-parent to frame-buffer-adr ; " display" device-type " ISO8859-1" encode-string " character-set" property
Modified: cpu/arm/olpc/1.75/fw.bth ============================================================================== --- cpu/arm/olpc/1.75/fw.bth Wed Aug 3 03:04:18 2011 (r2408) +++ cpu/arm/olpc/1.75/fw.bth Wed Aug 3 04:13:27 2011 (r2409) @@ -46,27 +46,37 @@ d# 900 tag-w, \ Height d# 24 tag-w, \ Depth d# 1200 3 * tag-w, \ Pitch - fb-pa tag-l, \ Base address + fb-va tag-l, \ Base address d# 1200 3 * d# 900 * tag-l, \ Total size - perhaps could be larger - 8 tag-b, \ Red size - d# 0 tag-b, \ Red position - 8 tag-b, \ Green size - d# 8 tag-b, \ Green position - 8 tag-b, \ Blue size - d# 16 tag-b, \ Blue position + 5 tag-b, \ Red size + d# 11 tag-b, \ Red position + 6 tag-b, \ Green size + d# 5 tag-b, \ Green position + 5 tag-b, \ Blue size + d# 0 tag-b, \ Blue position 0 tag-b, \ Rsvd size - d# 24 tag-b, \ Rsvd position + d# 16 tag-b, \ Rsvd position ; ' mmp-fb-tag, to fb-tag,
\ Add a tag describing the OFW callback +3 constant MT_DEVICE_WC +9 constant MT_MEMORY : (ofw-tag,) ( -- ) - 6 tag-l, \ size - h# 41000501 tag-l, \ ATAG_MEM + 4 2 * 3 + tag-l, \ size + h# 41000502 tag-l, \ ATAG_MEM cif-handler tag-l, \ Client interface handler callback address - page-table@ tag-l, \ OFW's top-level page tables - extra-mem-va d# 20 >> tag-l, \ First section entry number - fw-virt-base /fw-ram + extra-mem-va - d# 20 >> tag-l, \ Number of section entries + + \ Each of these groups is a struct map_desc as defined in arch/arm/include/asm/mach/ + extra-mem-va tag-l, \ VA of OFW memory + extra-mem-pa pageshift rshift tag-l, \ Page frame number of OFW memory + fw-virt-base /fw-ram + extra-mem-va - tag-l, \ Size of OFW memory + MT_MEMORY tag-l, \ Mapping type of OFW memory + + fb-va tag-l, \ VA of OFW Frame Buffer + fb-pa pageshift rshift tag-l, \ PA of OFW Frame Buffer + fb-size tag-l, \ Size of OFW memory + MT_DEVICE_WC tag-l, \ Mapping type of OFW frame buffer ; ' (ofw-tag,) to ofw-tag,
Modified: cpu/arm/olpc/initmmu.fth ============================================================================== --- cpu/arm/olpc/initmmu.fth Wed Aug 3 03:04:18 2011 (r2408) +++ cpu/arm/olpc/initmmu.fth Wed Aug 3 04:13:27 2011 (r2409) @@ -266,6 +266,12 @@ set r4,`dma-va #` \ Virtual address bl `map-sections`
+ set r1,`fb-pa #` \ Address - Frame buffer + set r2,`fb-size #` \ Size of frame buffer + set r3,#0xc06 \ Write bufferable + set r4,`fb-va #` \ Virtual address + bl `map-sections + set r1,`extra-mem-pa #` \ Address of additional allocatable memory set r2,`/extra-mem #` \ Size of additional allocatable memory set r3,#0xc0e \ Write bufferable
openfirmware@openfirmware.info