[openfirmware] [commit] r1964 - in cpu/arm: marvell mmp2

repository service svn at openfirmware.info
Fri Oct 8 08:31:34 CEST 2010


Author: wmb
Date: Fri Oct  8 08:31:34 2010
New Revision: 1964
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1964

Log:
Added Marvell TIM (Trusted Image Module) compiler and scripts to generate various images with it.

Added:
   cpu/arm/marvell/tim.fth
   cpu/arm/mmp2/ddr_elpida_512m.fth
   cpu/arm/mmp2/ntim_mmp2_nand_cforth_ddr_elpida_512m.fth
   cpu/arm/mmp2/ntim_mmp2_nand_ofw_ddr_elpida_512m.fth
   cpu/arm/mmp2/ntim_mmp2_nand_ofwonly_ddr_elpida_512m.fth
   cpu/arm/mmp2/ntim_mmp2_nand_uboot_ddr_elpida_512m.fth

Added: cpu/arm/marvell/tim.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/marvell/tim.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,191 @@
+: >hex  ( n -- n' )  d# 10 /mod h# 10 * +  ;
+: today>hex  ( -- n )
+   today        ( day month year )
+   d# 100 /mod  ( day month yr century )
+   rot >hex >r  ( day yr century r: hex-month )
+   rot >hex >r  ( yr century r: hex-month hex-day )
+   >hex >r      ( yr r: hex-month hex-day hex-century )
+   >hex r> r> r> bljoin  ( n )
+;
+
+0 value image-size
+0 value image-adr
+0 value new-image-size
+: ?realloc-image  ( new-size -- )
+   dup image-size >  if             ( new-size )
+      to new-image-size             ( )
+      image-adr  if                 ( )
+         image-adr new-image-size resize  abort" resize failed"  ( adr )
+      else                          ( )
+         new-image-size alloc-mem   ( adr )
+      then                          ( adr )
+      to image-adr                  ( )
+      image-adr new-image-size  image-size /string  h# ff  fill
+      new-image-size to image-size
+   else                             ( new-size )
+      drop                          ( )
+   then                             ( )
+;
+
+: hex,  ( -- )  safe-parse-word  $hnumber abort" Bad hex number"  l,  ;
+: get-word  ( -- adr len )  safe-parse-word  ;
+: get-filename  ( -- adr len )  0 parse  ;
+
+: ?4bytes  ( adr len -- adr )  4 <> abort" Tag must be 4 characters"  ;
+: 4c,  ( adr len -- )
+   ?4bytes   ( adr )
+   3 +  4 0  do  dup i - c@ c,  loop  drop  ( )
+;
+: -4c,  ( adr len -- )
+   ?4bytes
+   4 bounds  do  i c@ c,  loop              ( )
+;
+: 4c!  ( adr len dst -- )
+   >r ?4bytes 4 + r>   ( adr' dst )
+   4 0  do             ( adr dst )
+      swap 1- tuck c@  ( adr' dst src-byte )
+      over c!  1+      ( adr dst' )
+   loop                ( adr dst )
+   2drop               ( )
+;
+
+0 value tim-adr
+0 value last-image-adr
+0 value #images-adr
+0 value res-size-adr
+0 value #keys-adr
+0 value res-adr
+: save-tim:  \ filename  ( -- )
+   writing
+   tim-adr  here over -  ofd @ fputs
+   ofd @ fclose
+;
+0 value my-timh-adr
+
+: save-image:  \ filename  ( -- )
+   writing
+   image-adr image-size  ofd @ fputs
+   ofd @ fclose
+   image-adr image-size free-mem
+;
+: tim:  \ version trusted ID Processor 
+   0 to last-image-adr
+   here to tim-adr
+   hex,
+   " TIMH" 4c,
+   hex,        \ Trusted
+\  hex,        \ Date
+   today>hex l,
+   get-word -4c,  \ OEM ID
+   get-word 2drop \ Processor
+;
+: flash:  \ id (e.g. NAN6)
+   5 0  do  -1 l,  loop
+
+   get-word                                   ( adr len )
+   \ Convert trailing number to binary byte value - e.g. NAN'6 -> NAN(06)
+   2dup [char] ' left-parse-string 2drop      ( adr len tail$ )
+   push-decimal $number pop-base  abort" Bad number"  ( adr len n )
+   nip  over 3 + c!  4                                ( adr 4 )
+   4c,
+
+   here to #images-adr   0 l,
+   here to #keys-adr     0 l,
+   here to res-size-adr  0 l,
+;
+: set-last-image  ( adr len -- )
+   last-image-adr  if  last-image-adr 4c!  else  2drop  then
+   here to last-image-adr  -1 l,
+;
+: $file-size  ( adr len -- size )
+   $read-open  ifd @ fsize  ifd @ fclose
+;
+: place-image  ( adr len -- size )
+   $read-open  ifd @ fsize     ( size )
+   here 8 - l@                 ( size offset )
+   2dup + ?realloc-image       ( size offset )
+   image-adr +  over           ( size adr size )
+   ifd @ fgets                 ( size read-size )
+   over <> abort" Read failed" ( size )
+   ifd @ fclose                ( size )
+\   h# 1000 round-up
+   4 round-up
+;
+: place-hash  \ XXX need to implement non-null hash info
+   d# 10 0  do  0 l,  loop
+;
+: +#images  ( -- )  #images-adr l@ 1+ #images-adr l!  ;
+: start-image  ( adr len -- )
+   +#images
+   get-word  2dup 4c,  set-last-image
+   hex,            \ Flash offset
+   hex,            \ Load address
+;
+: image:  \ name flash-offset mem-load-addr filename
+   start-image
+   get-filename place-image l,
+   place-hash
+;
+: timh:  \ name flash-offset mem-load-addr
+   here to my-timh-adr
+   start-image
+   0 l,        \ This will be overwritten later
+   place-hash   
+;
+0 value #res-pkgs-adr
+
+: reserved:
+   here to res-adr
+   " OPTH" 4c,
+   here to #res-pkgs-adr  0 l,
+;
+: end-reserved
+   here res-adr -  res-size-adr l!
+   ['] (do-literal) to do-literal
+;
+0 value pkg-start-adr
+: start-package  ( adr len -- )
+   #res-pkgs-adr l@ 1+ #res-pkgs-adr l!
+   here to pkg-start-adr
+   4c,  
+   0 l,  \ Package size
+;
+: end-package  ( -- )
+   here pkg-start-adr -  pkg-start-adr la1+ l!
+;   
+: end-tim  ( -- )
+   \ If we have used a timh: specifier, set its length and copy the constructed TIM into the image
+   my-timh-adr  if
+      here tim-adr -  my-timh-adr 4 la+ l!
+      tim-adr  image-adr my-timh-adr 2 la+ l@ +   here tim-adr -  move
+   then
+;
+: tbrx:   \ xferloc
+   " TBRX" start-package
+   hex,
+   0 l,    \ #pairs
+;
+: transfer: \ NAME address
+   pkg-start-adr 3 la+ dup l@ 1+ swap l!  \ Increment #pairs
+   get-word 4c,
+   hex,
+;
+: pair:  \ tag value
+   hex,
+   hex,
+;
+: gpios:
+   " GPIO" start-package
+   0 l,    \ #pairs
+;
+: gpio:  \ address value
+   pkg-start-adr 2 la+ dup l@ 1+ swap l!  \ Increment #pairs
+   pair:
+;
+: ddrc:  \
+   " DDRC" start-package
+;
+: cmcc:  \
+   " CMCC" start-package
+;
+: term:  " Term" start-package end-package  ;

Added: cpu/arm/mmp2/ddr_elpida_512m.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/mmp2/ddr_elpida_512m.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,90 @@
+  gpios:
+    gpio: d0000010 d0004d56  \ CONFIG_DECODE_ADDR
+    gpio: d0000100 000c0001  \ MMAP0
+    gpio: d0000110 100c0001  \ MMAP1
+    gpio: d0000020 00006420  \ SDRAM_CONFIG_TYPE1-CS0
+    gpio: d0000030 00006420  \ SDRAM_CONFIG_TYPE1-CS1
+    gpio: d0000b40 00000000  \ SDRAM_CONFIG_TYPE2-CS0
+    gpio: d0000b50 00000000  \ SDRAM_CONFIG_TYPE2-CS1
+    gpio: d0000050 488700c5  \ SDRAM_TIMING1
+    gpio: d0000060 323300d2  \ SDRAM_TIMING2
+    gpio: d0000190 20000e12  \ SDRAM_TIMING3
+    gpio: d00001c0 3023009d  \ SDRAM_TIMING4
+    gpio: d0000650 00050082  \ SDRAM_TIMING5
+    gpio: d0000660 00909064  \ SDRAM_TIMING6
+    gpio: d0000080 00005000  \ SDRAM_CTRL1
+    gpio: d0000090 00080010  \ SDRAM_CTRL2
+    gpio: d00000f0 c0000000  \ SDRAM_CTRL3
+    gpio: d00001a0 20c08115  \ SDRAM_CTRL4
+    gpio: d0000280 01010101  \ SDRAM_CTRL5_ARB_WEIGHTS
+    gpio: d0000760 00000000  \ SDRAM_CTRL6_SDRAM_ODT_CTRL
+    gpio: d0000770 03000000  \ SDRAM_CTRL7_SDRAM_ODT_CTRL2
+    gpio: d0000780 00000133  \ SDRAM_CTRL8_SDRAM_ODT_CTRL2
+    gpio: d00007b0 01010101  \ SDRAM_CTRL11_ARB_WEIGTHS_FAST_QUEUE
+    gpio: d00007d0 0000000f  \ SDRAM_CTRL13
+    gpio: d00007e0 00000000  \ SDRAM_CTRL14
+    gpio: d0000540 00000000  \ MCB_CTRL4
+    gpio: d0000570 00000001  \ MCB_SLFST_SEL
+    gpio: d0000580 00000000  \ MCB_SLFST_CTRL0
+    gpio: d0000590 00000000  \ MCB_SLFST_CTRL1
+    gpio: d00005a0 00000000  \ MCB_SLFST_CTRL2
+    gpio: d00005b0 00000000  \ MCB_SLFST_CTRL3
+    gpio: d0000180 00000000  \ CM_WRITE_PROTECTION
+    gpio: d0000210 00000000  \ PHY_CTRL11
+    gpio: d0000240 80000000  \ PHY_CTRL14
+    gpio: d0000240 2000ce00  \ PHY_CTRL14
+    gpio: d0000240 0000ce00  \ PHY_CTRL14
+    gpio: d0000200 0011ce00  \ PHY_CTRL10
+    gpio: d0000200 0010311c  \ PHY_CTRL10
+    gpio: d0000140 20004422  \ PHY_CTRL3
+    gpio: d00001d0 13300559  \ PHY_CTRL7   (0x2330_0339 / 0x133C_2559)
+    gpio: d00001e0 03300990  \ PHY_CTRL8
+    gpio: d00001f0 00000077  \ PHY_CTRL9
+    gpio: d0000230 20000088  \ PHY_CTRL13    (0x2000_0108 / 0x2024_0109)
+    gpio: d0000e10 00000080  \ PHY_DLL_CTRL1
+    gpio: d0000e20 00000080  \ PHY_DLL_CTRL2
+    gpio: d0000e30 00000080  \ PHY_DLL_CTRL3
+    gpio: d0000e40 00000000  \ PHY_CTRL_WL_SELECT
+    gpio: d0000e50 00000000  \ PHY_CTRL_WL_CTRL0
+    gpio: d0000120 03000001  \ USER_INITIATED_COMMAND0 - init command to both CS (need to wait 200 us for tINIT3)
+    gpio: d0000410 0302003f  \ USER_INITIATED_COMMAND1 - MRW MR63 (RESET) to both CS (need to wait RESET_COUNT)
+    gpio: d0000120 01001000  \ USER_INITIATED_COMMAND0 - MRW MR10 (ZQ long cal) to CS0 (need 360 ns delay for tZQCS)
+    gpio: d0000120 02001000  \ USER_INITIATED_COMMAND0 - MRW MR10 (ZQ long cal) to CS1 (need 360 ns delay for tZQCS)
+    gpio: d0000410 03020001  \ USER_INITIATED_COMMAND1 - MRW MR1 to both CS
+    gpio: d0000410 03020002  \ USER_INITIATED_COMMAND1 - MRW MR2 to both CS
+    gpio: d0000410 03020003  \ USER_INITIATED_COMMAND1 - MRW MR3 to both CS
+  end-package
+  ddrc:
+    pair: 00000000 00006320   \ ConfTypeCS0
+    pair: 00000001 00006320   \ ConfTypeCS1
+    pair: 00000002 4cd800c5   \ Timing1
+    pair: 00000003 84660342   \ Timing2
+    pair: 00000004 2000381b   \ Timing3
+    pair: 00000005 3023009d   \ Timing4
+    pair: 00000006 00110142   \ Timing5
+    pair: 00000007 00005000   \ Cntrl1
+    pair: 00000008 00080000   \ Cntrl2
+    pair: 00000009 c0000000   \ Cntrl3
+    pair: 0000000a 20c08115   \ Cntrl4
+    pair: 0000000b 01010101   \ Cntrl5-arb
+    pair: 0000000c 00000000   \ Cntrl6-odt
+    pair: 0000000d 03000000   \ Cntrl7-odt
+    pair: 0000000e 00000000   \ mcb_cntrl1
+    pair: 0000000f 20004433   \ phy-cntrl3
+    pair: 00000010 13300559   \ phy-cntrl7
+    pair: 00000011 03300770   \ phy_cntrl8
+    pair: 00000012 00000077   \ phy-cntrl9
+    pair: 00000013 00000000   \ phy_cntrl11
+    pair: 00000014 20000088   \ phy-cntrl13
+    pair: 00000015 80000000   \ phy_cntrl14
+    pair: 00000016 00000080   \ dll-ctrl1
+    pair: 00000017 00000080   \ dll_ctrl2
+    pair: 00000018 00000080   \ dll-ctrl3
+    pair: 00000019 000b0001   \ mmap0
+    pair: 0000001a 080b0001   \ mmap1
+    pair: 0000001b 00000000   \ user_cmd0
+  end-package
+  cmcc:
+    pair: 0 0 \ config-ena? false
+    pair: 1 0 \ memtest? false
+  end-package

Added: cpu/arm/mmp2/ntim_mmp2_nand_cforth_ddr_elpida_512m.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/mmp2/ntim_mmp2_nand_cforth_ddr_elpida_512m.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,19 @@
+\ Marvel Trusted Image Module image creation script for
+\ MMP2 platform with 512M of Elpida RAM
+\ Running CForth from the security processor
+
+tim: 00030102 0 Sky! PXA688
+flash: NAN'6
+timh:  TIMH      0 d1020000
+image: OBMI    400        0 dummy.img
+image: WTMI    404 d1000000 /home/wmb/OLPC/1.75/cforth-from-0xc0000.img
+reserved:
+  tbrx: 00020000
+    transfer: TIMH d1020000
+  end-package
+  fload ddr_elpida_512m.fth
+  term:
+end-reserved
+end-tim
+
+save-image: nand_cforth.img

Added: cpu/arm/mmp2/ntim_mmp2_nand_ofw_ddr_elpida_512m.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/mmp2/ntim_mmp2_nand_ofw_ddr_elpida_512m.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,20 @@
+\ Marvel Trusted Image Module image creation script for
+\ MMP2 platform with 512M of Elpida RAM
+\ Running OFW using MMP2_JASPER_LOADER as an intermediate step
+
+tim: 00030102 0 Sky! PXA688
+flash: NAN'6
+timh:  TIMH      0 d1020000
+image: OBMI  80000        0 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/MMP2_JASPER_LOADER_3_2_15.bin
+image: WTMI  c0000 d1000000 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/WtmUnresetPJ4.bin
+image: OSLO 100000   100000 /home/wmb/ofw.test/cpu/arm/mmp2/build/ofw.rom
+reserved:
+  tbrx: 00020000
+    transfer: TIMH d1020000
+  end-package
+  fload ddr_elpida_512m.fth
+  term:
+end-reserved
+end-tim
+
+save-image: nand_ofw.img

Added: cpu/arm/mmp2/ntim_mmp2_nand_ofwonly_ddr_elpida_512m.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/mmp2/ntim_mmp2_nand_ofwonly_ddr_elpida_512m.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,17 @@
+\ Marvel Trusted Image Module image creation script for
+\ MMP2 platform with 512M of Elpida RAM
+\ Running OFW directly, with no intermediate loader
+
+tim: 00030102 0 Sky! PXA688
+flash: NAN'6
+timh:  TIMH        0 d1020000
+image: WTMI     1000 d1000000 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/WtmUnresetPJ4.bin
+image: OBMI    80000        0 /home/wmb/ofw.test/cpu/arm/mmp2/build/ofw.rom
+reserved:
+
+  fload ddr_elpida_512m.fth
+  term:
+end-reserved
+end-tim
+
+save-image: nand_ofwonly.img

Added: cpu/arm/mmp2/ntim_mmp2_nand_uboot_ddr_elpida_512m.fth
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ cpu/arm/mmp2/ntim_mmp2_nand_uboot_ddr_elpida_512m.fth	Fri Oct  8 08:31:34 2010	(r1964)
@@ -0,0 +1,20 @@
+\ Marvel Trusted Image Module image creation script for
+\ MMP2 platform with 512M of Elpida RAM
+\ Running uboot
+
+tim: 00030102 0 Sky! PXA688
+flash: NAN'6
+timh:  TIMH      0 d1020000
+image: OBMI  80000        0 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/MMP2_JASPER_LOADER_3_2_15.bin
+image: WTMI  c0000 d1000000 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/WtmUnresetPJ4.bin
+image: OSLO 100000   100000 /c/Documents and Settings/Mitch Bradley/My Documents/OLPC/Marvell/alpha1_sdcard_update/u-boot.bin
+reserved:
+  tbrx: 00020000
+    transfer: TIMH d1020000
+  end-package
+  fload ddr_elpida_512m.fth
+  term:
+end-reserved
+end-tim
+
+save-image: nand_from_forth.img



More information about the openfirmware mailing list