public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] QE firmware/microcode handling
@ 2012-09-20  9:49 Gerlando Falauto
  2012-09-20 15:16 ` Wolfgang Denk
  2012-09-20 15:22 ` Timur Tabi
  0 siblings, 2 replies; 12+ messages in thread
From: Gerlando Falauto @ 2012-09-20  9:49 UTC (permalink / raw)
  To: u-boot

Hi everyone,

following up Timur's patch on QE microcode:

http://marc.info/?l=u-boot&m=132197537730440&w=2

I was wondering, would it make any sense to *embed* QE's firmware within 
u-boot image itself?
After all, it should be some ~64KB worth of data, right?
Not quite sure whether this has ever been done for similar purposes, but 
to me it looks way more convenient to have a single image file to be 
flashed, rather than reserving room (e.g. within the same NOR flash 
where u-boot lies) for it.
Easier upgrading of this microcode from within the application, is 
perhaps the only reason I could think of for *NOT* doing so.
How to actually implement it, well that's another issue, and on that I'm 
open to suggestions, too.

Looking forward to hearing your thoughts.

Thanks in advance,
Gerlando

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] QE firmware/microcode handling
  2012-09-20  9:49 [U-Boot] QE firmware/microcode handling Gerlando Falauto
@ 2012-09-20 15:16 ` Wolfgang Denk
  2012-09-20 15:22 ` Timur Tabi
  1 sibling, 0 replies; 12+ messages in thread
From: Wolfgang Denk @ 2012-09-20 15:16 UTC (permalink / raw)
  To: u-boot

Dear Gerlando Falauto,

In message <505AE6C3.5080708@keymile.com> you wrote:
> 
> following up Timur's patch on QE microcode:
> 
> http://marc.info/?l=u-boot&m=132197537730440&w=2
> 
> I was wondering, would it make any sense to *embed* QE's firmware within 
> u-boot image itself?

It's a matter of taste/requirements/system design.

> Not quite sure whether this has ever been done for similar purposes, but 
> to me it looks way more convenient to have a single image file to be 
> flashed, rather than reserving room (e.g. within the same NOR flash 
> where u-boot lies) for it.

A similar situation is with the persistent copy of the environment -
it might be "embedded" within the U-Boot image (actually even with
U-Boot code before and after it), it may be prepended or appended, or
it may be completely separate.  All options make sense for certain
configurations, and none for others.

Having a single file may be an advantage, or a disadvantage.  You
cannot tell in advance without knowing the exact specifications of the
hardware and the requirements for the software design.

So the most flexible way is actually to make no assumptions about the
location, and handle it in a board-specific way if needed (say, through
a board specific linker script, or some scripts).

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"One planet is all you get."

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] QE firmware/microcode handling
  2012-09-20  9:49 [U-Boot] QE firmware/microcode handling Gerlando Falauto
  2012-09-20 15:16 ` Wolfgang Denk
@ 2012-09-20 15:22 ` Timur Tabi
  2012-09-20 18:24   ` Scott Wood
  2012-09-21  8:32   ` [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader judge.packham at gmail.com
  1 sibling, 2 replies; 12+ messages in thread
From: Timur Tabi @ 2012-09-20 15:22 UTC (permalink / raw)
  To: u-boot

Gerlando Falauto wrote:
> Hi everyone,
> 
> following up Timur's patch on QE microcode:
> 
> http://marc.info/?l=u-boot&m=132197537730440&w=2
> 
> I was wondering, would it make any sense to *embed* QE's firmware within 
> u-boot image itself?

There are three problems:

1) A lot of U-Boot images are already very close to the 512KB limit.  We
often have to disable features in U-Boot to get it to build properly.  An
additional 64KB would be prohibitive.

2) The firmware license is not exactly GPL-compatible.  The firmware files
themselves are freely distributable, but the source code is closed.  I'm
not sure how that would work in a GPL U-Boot.

3) For Fman, at least, we often update the firmware after the board ships,
which means you would need to update U-Boot to get a new firmware.  So no
one might actually use this feature because they're afraid they won't be
able to update the firmware.

If you can do it, go ahead.  I would approve a patch that adds the ability
to inject a firmware binary into u-boot.bin, provided it's controlled via
a build or CONFIG_SYS_xxx option.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] QE firmware/microcode handling
  2012-09-20 15:22 ` Timur Tabi
@ 2012-09-20 18:24   ` Scott Wood
  2012-09-20 21:28     ` Timur Tabi
  2012-09-21  8:32   ` [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader judge.packham at gmail.com
  1 sibling, 1 reply; 12+ messages in thread
From: Scott Wood @ 2012-09-20 18:24 UTC (permalink / raw)
  To: u-boot

On 09/20/2012 10:22:21 AM, Timur Tabi wrote:
> Gerlando Falauto wrote:
> > Hi everyone,
> >
> > following up Timur's patch on QE microcode:
> >
> > http://marc.info/?l=u-boot&m=132197537730440&w=2
> >
> > I was wondering, would it make any sense to *embed* QE's firmware  
> within
> > u-boot image itself?
> 
> There are three problems:
> 
> 1) A lot of U-Boot images are already very close to the 512KB limit.   
> We
> often have to disable features in U-Boot to get it to build  
> properly.  An
> additional 64KB would be prohibitive.

The 512K limit is arbitrary and can be changed.  It exists just to  
provide a stable start address on something that grows from the end of  
flash.

> 2) The firmware license is not exactly GPL-compatible.  The firmware  
> files
> themselves are freely distributable, but the source code is closed.   
> I'm
> not sure how that would work in a GPL U-Boot.
> 
> 3) For Fman, at least, we often update the firmware after the board  
> ships,
> which means you would need to update U-Boot to get a new firmware.   
> So no
> one might actually use this feature because they're afraid they won't  
> be
> able to update the firmware.
> 
> If you can do it, go ahead.  I would approve a patch that adds the  
> ability
> to inject a firmware binary into u-boot.bin, provided it's controlled  
> via
> a build or CONFIG_SYS_xxx option.

CONFIG_xxx.  CONFIG_SYS_xxx options are supposed to describe hardware,  
and CONFIG_xxx options are supposed to be software config.

-Scott

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] QE firmware/microcode handling
  2012-09-20 18:24   ` Scott Wood
@ 2012-09-20 21:28     ` Timur Tabi
  2012-09-21  1:55       ` McClintock Matthew-B29882
  0 siblings, 1 reply; 12+ messages in thread
From: Timur Tabi @ 2012-09-20 21:28 UTC (permalink / raw)
  To: u-boot

Scott Wood wrote:
> The 512K limit is arbitrary and can be changed.  It exists just to  
> provide a stable start address on something that grows from the end of  
> flash.

True, but we haven't actually done changed it.  Instead of allowing for a
larger u-boot.bin, we have ALWAYS disabled features or rewritten code to
make it smaller.  If making U-boot larger were so simple, it would have
been done by now, I think.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] QE firmware/microcode handling
  2012-09-20 21:28     ` Timur Tabi
@ 2012-09-21  1:55       ` McClintock Matthew-B29882
  0 siblings, 0 replies; 12+ messages in thread
From: McClintock Matthew-B29882 @ 2012-09-21  1:55 UTC (permalink / raw)
  To: u-boot

On Thu, Sep 20, 2012 at 4:28 PM, Timur Tabi <timur@freescale.com> wrote:
> Scott Wood wrote:
>> The 512K limit is arbitrary and can be changed.  It exists just to
>> provide a stable start address on something that grows from the end of
>> flash.
>
> True, but we haven't actually done changed it.  Instead of allowing for a
> larger u-boot.bin, we have ALWAYS disabled features or rewritten code to
> make it smaller.  If making U-boot larger were so simple, it would have
> been done by now, I think.

Hmm, I think it is basically that simple:

$ git diff
diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h
index bbfeda5..2fd7aba 100644
--- a/include/configs/corenet_ds.h
+++ b/include/configs/corenet_ds.h
@@ -52,7 +52,7 @@
 #define CONFIG_MP                      /* support multiple processors */

 #ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE   0xeff80000
+#define CONFIG_SYS_TEXT_BASE   0xeff00000
 #endif

 #ifndef CONFIG_RESET_VECTOR_ADDRESS
$ make P4080DS -j48
[ snip ]
$ ls -alh u-boot.bin
-rwxrwxr-x 1 mattsm mattsm 1.0M Sep 20 20:54 u-boot.bin

-M

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-20 15:22 ` Timur Tabi
  2012-09-20 18:24   ` Scott Wood
@ 2012-09-21  8:32   ` judge.packham at gmail.com
  2012-09-21 11:32     ` Tabi Timur-B04825
  2012-09-21 15:58     ` Wolfgang Denk
  1 sibling, 2 replies; 12+ messages in thread
From: judge.packham at gmail.com @ 2012-09-21  8:32 UTC (permalink / raw)
  To: u-boot

From: Chris Packham <judge.packham@gmail.com>

Instead of storing the mircocode in a separate flash block simply embed
the image as C code array of bytes.

Cc:  Wolfgang Denk <wd@denx.de>
Cc: Timur Tabi <timur@freescale.com>
Cc: Gerlando Falauto <gerlando.falauto@keymile.com>
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
So here's a patch that embeds the Fman firmware in a board specific way for one
of our out of tree boards (based on the P2041RDB) if anyone feels like picking
it up and generalising it. One thing that I haven't done yet is added code to
figure out the offset from the bootloader base and pass that in the device tree
for linux.

 board/alliedtelesis/SBx81CFC960/Makefile           |   12 +-
 .../SBx81CFC960/fsl_fman_ucode_P2041_101_8.bin     |  Bin 0 -> 7240 bytes
 .../SBx81CFC960/fsl_fman_ucode_P2041_101_8.c       |  607 ++++++++++++++++++++
 drivers/net/fm/fm.c                                |    2 +
 include/configs/SBx81CFC960.h                      |   27 +-
 5 files changed, 625 insertions(+), 23 deletions(-)
 create mode 100644 board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.bin
 create mode 100644 board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.c

diff --git a/board/alliedtelesis/SBx81CFC960/Makefile b/board/alliedtelesis/SBx81CFC960/Makefile
index b606873..f1e1d7c 100644
--- a/board/alliedtelesis/SBx81CFC960/Makefile
+++ b/board/alliedtelesis/SBx81CFC960/Makefile
@@ -26,6 +26,16 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).o
 
+ifeq ($(CONFIG_FMAN_ENET),y)
+FMAN_UCODE = fsl_fman_ucode_P2041_101_8.bin
+FMAN_UCODE_C = $(patsubst %.bin,%.c,$(FMAN_UCODE))
+FMAN_UCODE_OBJ = $(patsubst %.bin,%.o,$(FMAN_UCODE))
+
+# xxd not in chroot.
+#$(FMAN_UCODE_C): $(FMAN_UCODE)
+#	xxd -i $< $@
+endif
+
 COBJS-y				+= $(BOARD).o
 COBJS-y				+= ddr.o
 COBJS-y				+= ddr_param.o
@@ -33,7 +43,7 @@ COBJS-y				+= eth.o
 COBJS-y				+= law.o
 COBJS-$(CONFIG_PCI)		+= pci.o
 COBJS-y				+= tlb.o
-COBJS-$(CONFIG_FMAN_ENET)	+= fman.o
+COBJS-$(CONFIG_FMAN_ENET)	+= fman.o $(FMAN_UCODE_OBJ)
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
diff --git a/board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.bin b/board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.bin
new file mode 100644
index 0000000000000000000000000000000000000000..db4477f6f5276431664c752f60ad37a504082795
GIT binary patch
literal 7240
zcmcIpe{5UVbw2Nho}WnCdZK8Bj^gpjaty`sJY{Y>u8AN at R2(|76{VX2$H)-IvKt#l
zXFDt=W|M0=$+ENv1`iEd&q$CAwUO<=Y*8Bml{=D>6-V}J&T|7Q<X}m5+!YM4r-UA!
zszls(E=ie`m99%R0ay3E``vr)`E}1Z_mSwX&|?p7m3AB$c;?W+p}qUeKil_A<iMdn
zHSg=VZ?k`MhxyGz&zSvR>F{@$&;0)84qE<CYOv(xk>4<SYtP?mkKaIPdB}`a#<eSW
zD(urs@9z|8740J(eQOba=zZn>>!n_Kr_{@zlzL6fdsepTSrtt~)6pDgF0 at r>2AUhq
zgVv1ZMY|L2F0|jVY4DgWqbX=An)XjVQlBN8+I=?h9&Z=5lPMx8N^>-Vk!&JycHGqw
z9sJHG6s at 19^YX)oBL_aALCnE8{VF9Zkv({4oaSk>k7TBkPmpwYN|H8rmEJM;+t*SQ
z<GGuC#W|j%QrfF|(j8iJ+OMgkYhI%4SmW6dKWX2;L5;&+k~B4;zg;ZOYu*HncrnLF
z8^gOuo^M=Fo4QQFGt=U~W^dZq<i9mG@0lV^pQ4C8X6^``r_E1FvC_=a|1z#s;n5m=
z^%SY)_1jD957*+?NmWbq`+5ca{k8awrFggoZ=PZLV*fJzUA1@>{V_qmzZS2eU&2GR
zxZvMl`L>@I>jSsp>XgKIpDJ+wZMZ&FFV^b<?^p(RRnc!>ibMYb-%;A%T#7I1uf)Ii
zHoT&r(*DL$JU>Pa))PUmt#0jLK0>8=8qb?=o}x0Y*W$Dw at H?PieM%Pmhgd$cYv|u0
z>?8bVyP!+fGPrt6e)^APaJ>qjT8cwIVtq+Jlv#>{zbgAt`Zm1AesumeyvBZ%SO%}M
zAH|pAwf3X8mg2ScqrblmudyG!u at qn4e)I#LHxK=Pj{W|+gv0-9&L_Q8OJCsC_Khur
zm+X69*gsm0fA~a^<~=iXe%DNuZ_%O3oDzP0DgJaVeq$;AWCg#pH<-*k`fqmR!%ZI2
zqvpJN{eetqCi- at fdd}~9xML}f@xTRrW~j2B=P%(cRKd7soM|ta(^Z+n=Y!NKJ%53W
zkJgivj_y+4E-t*zu~@7x;VYKlKdj)BS1;T1>J#NXc310Y1FtXRB-1XM47B^fznR%Z
z{>uK9_2+lpT041FwQ&v`dCsl#Om2Q>om7pj<gw5Di`IW?sDFFX_0H8|@#^D!Q4gML
zbIiiGzJFsOI_zE8FDrURR>_r5kyHpOQZ`{;DfB9OHboCu!4}C)`Uew=O|KUVBx}ZH
z`LA?hx^f*kcwO%9*66U0R>%tJxnR4U>Gj&#QS%p&w+`zPx!!j1E}l26iI4cGPL{}l
z97&j?x+Np+22IYHVh@=d*`#@NLb4O6X7o&tH=1ju=#P(4ea_VVBV7bLQ5~<(1q^>K
zNd5`raMTYn)(AfHqm-B)rGEK2eHHU+^)yKnvK at 2d9edM1AEy=hM2C6lxbfh0f?Szy
zie5_uC=zxeuX>5~Dr<BZbktm1haLBk0{xK{+(K@R-k0ksogH7-nb{VwSuV9jCrvXb
z`<}fs^Yk`5GhQFJ0?LVr7h7YpWazn8ZxnK`$^~^h7xF#}J_ARlSJF<6#JWsC|3jWz
z2s)(-1{pQR3!z(M{EnL9alzk;3V(j)ua5aEJhVl%g7-6zm)$GMe7^fX@#!q_=>VS_
z?_~QJx!^aVxlm}1Wjk_hE$!S;k}uN at -kHyBC4C;5SuHTD$0>o|m2QdBg-|V)YwNcw
zHgo$Z&2ux`^eE3|d*_qN%h^QWGpoB%N56JRnybqu!$&hcdNeZNr0Vy<r<@d3=TRrc
z{)ByEq^o%IU&aEBOb7Lp0Uu644JzCCr%#bSoudBR?HnuH*${TtylGOUv|;U5=tsrk
z^Qx??JSJ26it0)msJZB;Q>0tF51z<_x|`A`7`quzSY`$9SKPkz3C*!zS67AAiSIoZ
z1O5TVb8g>$S#1fEET=R1q(r$^Bl?z)R)g2;*i&~)z@@ZHmiN=8<FVju(xFeLSU3Ag
zmeQF*ca`lo!vDadwcW{l9=H0M;0wi3;S2J9+3ImiZuAF>pV3at<vj~xES<q~u7ES(
zMlY{R=U|UDp#MJ8ccYhE)9+)<@n*638q@QDzpA~yS>Ed>j9EJl8Y~wYvCQD*1k228
zSZ>s-=UDd4L5B_OyP1h!$1#>*T<Cgb+EC>*^ywsPheF^fqpsSoTDzYo&t2*3KPoQd
ztiHc+fW~F35Ar_B at -EC+yPGIy+Wz4#s^f9cUSaKU^10V!DRvoiKIU;Z9d@{5QTSB{
zO()4UL^fhtqH{K(D15$grX{N%bg`D at 0v*k*#IBG=r%9nRvaX-hRGo5&RaW4S!tpNZ
zL=GUsN2k$CYD at XdKHZITJ{K>aaYwG*;TLDTI}k6dYYM>5T0TjEgI%zP*3Yr-UPGcY
zg`PIakm<~k>v!|m2F65;=nnb|n+8hjMr+osHNcnQqBELqP%apba*UXGX&q%Rwyw>N
zwH_^OZ<8_)-xFn;g5EmA0X;S3*6HzK#O4}5(%X4oooP~;pG>zAW!}Vk;MOAw at tI<M
zztu&mrklJ*$xq;LIm}l)lKBeNnWqr*kU!zqk8HFjoWD*?yx1L+>kat4mvRSo`~UG6
z$JTrOg-2SX#aN<+Df9H>LU+wr at 74_&v>k at eJXP3MJ5S^vpCM-+^u`U at JjMLLPhGi<
zjyU9VT$~8}T{an5JDH+*KB2rcq|DV>fqFeV8tz0)_eb`W<WN;z=e1V%{ck{?rfcV7
zbTJWlisQ{>l5DY7E3X|duN_d>E+=I&b*tNHl;VxZJ&N0By4;fKQjhyZE>un91o)}<
z;C)CE{<fCyh>;KPkv4SE1FXA2NtZk^ztAh6gNq*orn4UeUYi_k^mFXu^T2%NQ;>ss
z=~<&^$HQkcK_ed7+eAaME#*hy)1&0drjnhLW9hj1BE7-+Ew^DV4!vj|#39df^v3L1
z6X!@*WKRo;F}XvG=M%CrIR?FiTWD~gMci2{cVFgJl}VQs19{zW<pxX}GAXJ;bXFk+
zdB?%$ALr$3ZZ&<fd=`0pBagpXq;~Er at ihOQ{B3J at kfz_GG-9egq=5ef_(#6YjwU{v
z9lcYEK*uPz=qypa6%uFh2b|ZNeF3sUL7n?eU7=DwCh(<zudtVW0Q(ki@P1Y|&T>e^
zM8mDr at TD>izQmne at U;p#BB8`^?!!xcWiYHzbmcsatQ53w@>-(9r%Q37g-{o*M(fP<
zD7H*d*?P1I@wkl;*L1F3pqH;2zVxZVZyiv059r^p0^ik#2>C1lpL&e^wR at 14_Ym}%
zR$q&t2Rd!61KEtq$ZxaQi*5$w7~<ipf}en57~qS?e-=Y5L=3h1g!~V2jD$V5Fx`s0
zVojejyvTpI!u}p(-pEX!V!u^are6{AFb^CTAs6_7y@=y$!{^IT{N?g8EPPxg!!Q3A
zGBlTExMefW>+m62PoHG})U-7CbCRYSl-buEW&g^I&G{!@xQ{qCe`CG=Dr(wSfA&17
z9-r=7^dH60tx%hhTfav551&c5Pe18a^^<QF7ml+WRX$zgJIGfC=WAqv)2JoG$o&nO
z9`d6;l{wBpS7+D{R7F?W*Yo4lpuXT0^|uGHXL8Jld!F;UxK1o=*s=mT*Hk#ZwY5dM
zsM0 at 7ro3?vWE1kCfcg1MSjy}pJ2Pg-kKFhw?OdnRwFLd~rY;g^0sH7bQK%)KlIfCS
zoI{=C;y5w5r%BXD!z$`yU_4$KLl9Rly%0NoLADd9lZx4t_tQ%n-qpFl1!ayf9-Bn1
z{_j0zd~(!?^ZT6q71M)th at UFfoQSWdR;Gy@`ZC9%$leyt3-!3ClGvw?Ycu0B)QPsI
z&TBwds@2;j71p;IKR#Bpp_fO$s1C5tM%Dvpy!>-j>Yg4a7seX$@8Y}JllOFjCtogT
z+80o>W*=M=&AwaWqtM%C;JaF<s(6h|PpdyN&_>on_e;6E=b|`YA9KAI*|P;jBXlZL
zBj~UAqC7Hxq84R+jW*J3uc2gT60f0#IKcWESx;Zfry4(H9db+;I+GD|ddM?7W|$uE
z@@4jiJ`&7>un9h7iWtu}Ni`xLw)#DFrh%NQ!Y&eOl+|UM417^}vCnB?6Ua0><_!qB
z2Aa5Fz;{dHdK|X7?`X+3?Iqi6T@%ly*fwkYtRof4GkdP_DC-A#-e#X-{z^HmILl{h
zQD>lCrL(`B9sNJiS%hVPJ|yH7KWt<!?gtzFmb%o-y8OK_q07gFF3&-iz3Yn8=gR&)
z&N?*DBA)vAzIy?8-E6Pq&yE|S#z9?gK%Zw3HVjcKgpo_OZjo~9=Md-M-v}#^;p>s`
zy(}Yg3jM(slu<6rc*mEJ(fj`;Bg@BUuR2abXXWqk#d(hJoD)BK914-95Pqk04QIZY
zbBe5UzPpKM!~w=h<+UCOnO1zqFMeEEPs)_SccYKms1En;7V8No{V+%p@}#Jb&^vi9
zdKdT5{YtJ;@V<)Qk!${jd&cqnU*+d|+`WELe%A1OwfwAL&Ov^zkt@}4crmss^El^g
zlzdWq6Fhr=l_ajQoROy#d{aRV!1J{v?!2XURba<}CFKO>x8sh~UzvY1h~FsSKe)H(
z7;g~wZTzk=n~*(xce<85&iWO!$4QH9>as*WLatH4k5imYX`Vi6CEu`*e)k&gyp{Rb
zOYALbAkZ8py1OzT*bCsHp at Nlb?X?(xd71G$Fus?^{}Zwbxo+oIMa^W0`(6UNLd_W&
zx}}c@<Og2?{#_;#{$%m@pZ2cO??9-JUgFvu?I_>JvEIpb3GX%d=l{yJHQ((ho5UGJ
z9pLfdZjQTjq173{8JW)~B-Dk5?(rF}@qRKYdcrydv5=z3w<8LEC&C>SwJ^>$>hcu%
y`MxT6PIW{V?F)ToM`N8gyX%X%tDttrT>y95LB%U=@D;x^7%qJ`+mU<m_5TKkiTnKk

literal 0
HcmV?d00001

diff --git a/board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.c b/board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.c
new file mode 100644
index 0000000..4ed322f
--- /dev/null
+++ b/board/alliedtelesis/SBx81CFC960/fsl_fman_ucode_P2041_101_8.c
@@ -0,0 +1,607 @@
+unsigned char fsl_fman_ucode_P2041_101_8_bin[] = {
+  0x00, 0x00, 0x1c, 0x48, 0x51, 0x45, 0x46, 0x01, 0x4d, 0x69, 0x63, 0x72,
+  0x6f, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+  0x6e, 0x20, 0x31, 0x30, 0x31, 0x2e, 0x38, 0x2e, 0x30, 0x20, 0x66, 0x6f,
+  0x72, 0x20, 0x50, 0x34, 0x30, 0x38, 0x30, 0x20, 0x72, 0x32, 0x2e, 0x30,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x0f, 0xf0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f, 0x64,
+  0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x50, 0x34, 0x30, 0x38, 0x30, 0x20,
+  0x72, 0x32, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x06, 0xd4, 0x00, 0x00, 0x00, 0xf4, 0x65, 0x08, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0x00, 0x0e, 0x00, 0x65, 0x00, 0x08,
+  0xb7, 0xff, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x1f,
+  0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x3a, 0xff, 0xff, 0xff, 0xff,
+  0xb7, 0xff, 0x03, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x02, 0xf3,
+  0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x06, 0x21, 0xff, 0xff, 0xff, 0xff,
+  0x79, 0x02, 0xf8, 0x00, 0x79, 0x04, 0xf8, 0x00, 0x79, 0x06, 0xf8, 0x00,
+  0x79, 0x08, 0xf8, 0x00, 0x79, 0x0a, 0xf8, 0x00, 0x79, 0x0c, 0xf8, 0x00,
+  0x79, 0x0e, 0xf8, 0x00, 0x79, 0x10, 0xf8, 0x00, 0x79, 0x12, 0xf8, 0x00,
+  0x79, 0x14, 0xf8, 0x00, 0x79, 0x16, 0xf8, 0x00, 0x79, 0x18, 0xf8, 0x00,
+  0x79, 0x1a, 0xf8, 0x00, 0x79, 0x1c, 0xf8, 0x00, 0x79, 0x1e, 0xf8, 0x00,
+  0x77, 0x7f, 0xf8, 0x02, 0x77, 0x7f, 0xf8, 0x03, 0x77, 0x7f, 0xf8, 0x04,
+  0x77, 0x7f, 0xf8, 0x06, 0xb2, 0x1f, 0x00, 0x04, 0x79, 0x00, 0xf8, 0x00,
+  0x28, 0x1f, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xb3, 0xff, 0x06, 0x98,
+  0xc2, 0x00, 0x00, 0x01, 0x78, 0x00, 0xf9, 0x00, 0xbc, 0x00, 0xff, 0xff,
+  0xdb, 0xc0, 0xc0, 0xbd, 0xc6, 0x0c, 0x30, 0x78, 0x77, 0x7e, 0xf3, 0x00,
+  0x78, 0x09, 0xfb, 0x00, 0xc8, 0x02, 0x4a, 0x70, 0x73, 0x69, 0xf3, 0x00,
+  0x77, 0x00, 0x00, 0x01, 0xc6, 0x0c, 0x30, 0x00, 0xe9, 0xc2, 0x02, 0x03,
+  0x73, 0x62, 0xf3, 0x00, 0x77, 0x7e, 0xf3, 0x00, 0x78, 0x00, 0xfb, 0x00,
+  0x2e, 0x1f, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xc0, 0x00, 0x01,
+  0x70, 0xe0, 0x01, 0x01, 0x2e, 0x3f, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff,
+  0xc6, 0x0c, 0x30, 0x74, 0xe3, 0xc2, 0x00, 0x80, 0x73, 0x62, 0xf3, 0x00,
+  0x2e, 0x1f, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0xd0, 0x18,
+  0x06, 0x14, 0xd0, 0x30, 0x06, 0x16, 0xd0, 0x38, 0x06, 0x04, 0x00, 0x08,
+  0x06, 0x18, 0x00, 0x00, 0xdb, 0xc4, 0x11, 0xbd, 0xbc, 0x38, 0x00, 0x06,
+  0x93, 0xe6, 0x00, 0x11, 0xb4, 0x18, 0x00, 0x01, 0x06, 0x04, 0xc0, 0x08,
+  0xb3, 0xff, 0xff, 0xfb, 0x06, 0x18, 0xc0, 0x00, 0xbc, 0x18, 0x00, 0x08,
+  0x06, 0x10, 0xd0, 0x10, 0xb4, 0x58, 0x00, 0x02, 0xfb, 0x11, 0x24, 0x00,
+  0x2c, 0x3f, 0x20, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0x16, 0x18, 0xd0, 0x10, 0x2c, 0x38, 0x20, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x14, 0xe0, 0x00,
+  0x06, 0x08, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4d, 0x48, 0xc8, 0x00,
+  0x2e, 0x5f, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x14, 0xe0, 0x00, 0x06, 0x08, 0xe0, 0x06,
+  0x73, 0xf8, 0xc4, 0x20, 0x4d, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x78,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x15, 0xe0, 0x00, 0x04, 0x08, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x70, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x15, 0xe4, 0x00,
+  0x04, 0x04, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4e, 0x44, 0xc8, 0x00,
+  0x2e, 0x5f, 0x01, 0x68, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x15, 0xe6, 0x00, 0x04, 0x04, 0xe0, 0x00,
+  0x73, 0xf8, 0xc4, 0x20, 0x4e, 0x44, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x60,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x16, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x06, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x58, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe4, 0x00,
+  0x04, 0x04, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4e, 0xc4, 0xc8, 0x00,
+  0x2e, 0x5f, 0x01, 0x50, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe6, 0x00, 0x04, 0x04, 0xe0, 0x00,
+  0x73, 0xf8, 0xc4, 0x20, 0x4e, 0xc4, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x48,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x16, 0xe0, 0x00, 0x04, 0x08, 0xe0, 0x10, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x40, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00,
+  0x04, 0x04, 0xe0, 0x01, 0x73, 0xf8, 0xc4, 0x20, 0x4e, 0x04, 0xc8, 0x00,
+  0x2e, 0x5f, 0x01, 0x38, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00, 0x04, 0x08, 0xe0, 0x09,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x30,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x16, 0xe0, 0x00, 0x04, 0x08, 0xe0, 0x0c, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x28, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00,
+  0x06, 0x08, 0xe0, 0x0c, 0x73, 0xf8, 0xc4, 0x20, 0x4d, 0xc8, 0xc8, 0x00,
+  0x2e, 0x5f, 0x01, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00, 0x04, 0x04, 0xe0, 0x00,
+  0x73, 0xf8, 0xc4, 0x20, 0x4e, 0xc4, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x18,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x16, 0xe0, 0x00, 0x04, 0x08, 0xe0, 0x06, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x10, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00,
+  0xeb, 0xc4, 0x00, 0x0f, 0xf0, 0x5c, 0x43, 0x18, 0xf8, 0x04, 0x46, 0x30,
+  0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x01, 0x06,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00, 0xeb, 0xc4, 0x00, 0x0f,
+  0xf0, 0x5c, 0x43, 0x08, 0xf8, 0x04, 0x46, 0x30, 0x73, 0xf8, 0xc4, 0x20,
+  0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe4, 0x00, 0x04, 0x08, 0xe0, 0x02, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00,
+  0x04, 0x08, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4c, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x04,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xe8,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x08, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00,
+  0x06, 0x08, 0xe0, 0x04, 0x73, 0xf8, 0xc4, 0x20, 0x4d, 0xc8, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x10,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xd0,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe2, 0x00, 0x04, 0x04, 0xe0, 0x01, 0x73, 0xf8, 0xc4, 0x20,
+  0x4e, 0x04, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xc8, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00,
+  0x04, 0x08, 0xe0, 0x09, 0x73, 0xf8, 0xc4, 0x20, 0x4c, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x0c,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xb8,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe2, 0x00, 0x06, 0x08, 0xe0, 0x0c, 0x73, 0xf8, 0xc4, 0x20,
+  0x4d, 0xc8, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xb0, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00,
+  0x04, 0x04, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4e, 0xc4, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00, 0x04, 0x08, 0xe0, 0x06,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0xa0,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe2, 0x00, 0xeb, 0xc4, 0x00, 0x0f, 0xf0, 0x5c, 0x43, 0x18,
+  0xf8, 0x04, 0x46, 0x30, 0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x96, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe2, 0x00,
+  0xeb, 0xc4, 0x00, 0x0f, 0xf0, 0x5c, 0x43, 0x08, 0xf8, 0x04, 0x46, 0x30,
+  0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x8e,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe6, 0x00, 0x04, 0x08, 0xe0, 0x00,
+  0x73, 0xf8, 0xc4, 0x20, 0x4c, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x88,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x17, 0xe6, 0x00, 0x04, 0x08, 0xe0, 0x02, 0x73, 0xf8, 0xc4, 0x20,
+  0x4c, 0x48, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x17, 0xe6, 0x00,
+  0x04, 0x08, 0xe0, 0x00, 0x73, 0xf8, 0xc4, 0x20, 0x4c, 0xc8, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xe5, 0x5c, 0xff, 0x00, 0xfb, 0x14, 0xe2, 0x00,
+  0xc8, 0x58, 0xe2, 0x30, 0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xe5, 0x5c, 0xff, 0x00, 0xfb, 0x14, 0xe4, 0x00, 0xc8, 0x58, 0xe2, 0x30,
+  0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x67,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x5c, 0xff, 0x00,
+  0xfb, 0x14, 0xe6, 0x00, 0xc8, 0x58, 0xe2, 0x30, 0x73, 0xf8, 0xc4, 0x20,
+  0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xcf, 0x64, 0x43, 0xc1, 0xd8, 0x4f, 0xd3, 0xf8,
+  0x73, 0xe5, 0x2c, 0x14, 0x00, 0x08, 0x78, 0x20, 0xfb, 0x04, 0xe4, 0x3c,
+  0xd8, 0x48, 0xe2, 0x78, 0xb3, 0xff, 0x00, 0x42, 0xc8, 0x58, 0x4a, 0x30,
+  0xcf, 0x64, 0x43, 0xc1, 0xd8, 0x4f, 0xd3, 0xf8, 0x73, 0xe5, 0x2c, 0x14,
+  0x00, 0x08, 0x78, 0x20, 0xb3, 0xff, 0x00, 0x40, 0xcb, 0x08, 0xe2, 0x7c,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x04, 0xe4, 0x3c,
+  0xc8, 0x58, 0xe2, 0x30, 0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xfb, 0x04, 0xe4, 0x3c, 0x73, 0xe5, 0x2c, 0x14,
+  0xc8, 0x58, 0xe2, 0x30, 0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xfb, 0x16, 0xe0, 0x00, 0x00, 0x04, 0xe0, 0x08, 0xeb, 0xcb, 0x00, 0x10,
+  0xec, 0x24, 0x00, 0x01, 0xd0, 0x78, 0x58, 0x03, 0xb3, 0xff, 0xfe, 0x9f,
+  0x06, 0x04, 0x00, 0x08, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x16, 0xe0, 0x00,
+  0x00, 0x04, 0xe0, 0x07, 0xeb, 0xcb, 0x00, 0x10, 0xec, 0x24, 0x00, 0x01,
+  0xd0, 0x78, 0x58, 0x03, 0xb3, 0xff, 0xfe, 0x97, 0x06, 0x04, 0x00, 0x08,
+  0xff, 0xff, 0xff, 0xff, 0xd9, 0xdf, 0xd2, 0xf8, 0xfb, 0x04, 0x5c, 0x3c,
+  0x73, 0xe5, 0x2c, 0x14, 0xc8, 0x58, 0x5a, 0x30, 0x73, 0xf8, 0xc4, 0x20,
+  0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x26, 0xff, 0xff, 0xff, 0xff,
+  0xd9, 0xdf, 0xd2, 0xf8, 0xfb, 0x04, 0x5c, 0x00, 0x02, 0x00, 0x58, 0x00,
+  0xd9, 0x40, 0x28, 0x38, 0xb3, 0xff, 0x00, 0x20, 0xd8, 0x58, 0x00, 0x38,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdf, 0xd2, 0xf8,
+  0xfb, 0x04, 0x5c, 0x3c, 0xc8, 0x58, 0x5a, 0x30, 0x73, 0xf8, 0xc4, 0x20,
+  0x48, 0x08, 0xc8, 0x00, 0xd9, 0xdf, 0x04, 0xf8, 0x2e, 0x5f, 0x00, 0x11,
+  0xff, 0xff, 0xff, 0xff, 0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00,
+  0x2e, 0x5f, 0x00, 0x12, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x58, 0x4a, 0x30,
+  0x73, 0xf8, 0xc4, 0x20, 0x48, 0x08, 0xc8, 0x00, 0x2e, 0x5f, 0x00, 0x0d,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+  0xff, 0xff, 0xff, 0xff, 0x78, 0x09, 0xfc, 0x10, 0x04, 0x99, 0x98, 0x0c,
+  0xb7, 0xdf, 0xff, 0xff, 0xdf, 0x59, 0x4e, 0x78, 0x14, 0x99, 0x98, 0x0c,
+  0x06, 0x04, 0x00, 0x08, 0x06, 0x18, 0x00, 0x00, 0xdb, 0xc4, 0x11, 0xbd,
+  0xbc, 0x38, 0xfe, 0x6d, 0x93, 0xe6, 0xfe, 0x78, 0xb4, 0x18, 0xfe, 0x68,
+  0x02, 0x03, 0x08, 0xd8, 0x02, 0x04, 0x00, 0x0c, 0xeb, 0xc2, 0x00, 0x01,
+  0xf4, 0x43, 0x03, 0x01, 0xdb, 0xc0, 0x20, 0xd4, 0xf4, 0x44, 0x03, 0x08,
+  0xdb, 0xc2, 0x00, 0x3c, 0xf0, 0x43, 0x1b, 0x01, 0x12, 0x00, 0x08, 0xda,
+  0xca, 0x03, 0xf8, 0x00, 0x9f, 0xff, 0xf4, 0x00, 0x02, 0x06, 0x10, 0xd2,
+  0x02, 0x87, 0x08, 0x00, 0xb7, 0xdf, 0xff, 0xff, 0x02, 0x05, 0x00, 0x0a,
+  0x02, 0x04, 0x00, 0x0c, 0xdc, 0x25, 0x21, 0x78, 0xb4, 0x1f, 0x00, 0x07,
+  0x02, 0x03, 0x00, 0x08, 0xdc, 0x43, 0x28, 0xf8, 0xd8, 0x44, 0x18, 0xf8,
+  0xdb, 0xc3, 0x20, 0xd5, 0xb3, 0xff, 0x00, 0x05, 0xca, 0x03, 0xf8, 0xc0,
+  0xdc, 0x44, 0x28, 0xf8, 0xdb, 0xc3, 0x20, 0xd5, 0xca, 0x03, 0xf8, 0xc0,
+  0xdc, 0x26, 0x19, 0xb8, 0xbc, 0x1f, 0x00, 0x05, 0x02, 0x01, 0x00, 0x0a,
+  0xeb, 0xc0, 0x00, 0x00, 0xb3, 0xff, 0x00, 0x04, 0x12, 0x01, 0x10, 0xd0,
+  0x12, 0x87, 0x08, 0x00, 0xeb, 0xc0, 0x00, 0x01, 0x9f, 0xff, 0xf4, 0x00,
+  0x02, 0x02, 0x00, 0x0a, 0xdb, 0xc1, 0x20, 0x7d, 0xca, 0x01, 0xf8, 0xc0,
+  0x02, 0x00, 0x00, 0x08, 0xd8, 0x42, 0x18, 0x78, 0xdc, 0x21, 0x00, 0x78,
+  0xb5, 0x7f, 0x00, 0x09, 0xdc, 0x20, 0x08, 0x38, 0xbc, 0x3f, 0x00, 0x03,
+  0xb3, 0xff, 0x00, 0x05, 0xeb, 0xc0, 0x00, 0x00, 0xdc, 0x40, 0x10, 0x38,
+  0xdc, 0x43, 0x00, 0x38, 0xca, 0x00, 0xf8, 0x00, 0xb7, 0xff, 0x00, 0x02,
+  0xca, 0x01, 0xf8, 0x00, 0x9f, 0xff, 0xf4, 0x00, 0xeb, 0xc3, 0x00, 0xc0,
+  0xe1, 0xc3, 0x00, 0x50, 0x02, 0x82, 0x08, 0x0e, 0xb7, 0xdf, 0xff, 0xff,
+  0xf0, 0x42, 0x13, 0x01, 0xca, 0x02, 0xf8, 0x80, 0x12, 0x82, 0x08, 0x0e,
+  0x02, 0x01, 0x00, 0x00, 0xbf, 0x81, 0x00, 0x07, 0xeb, 0xc0, 0x30, 0x20,
+  0xcf, 0x81, 0x10, 0x45, 0xe1, 0xc0, 0x00, 0x0c, 0xd8, 0x41, 0x00, 0x78,
+  0xe3, 0xc0, 0x40, 0x00, 0x73, 0x60, 0x0b, 0x00, 0x2c, 0x3f, 0x18, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0x02, 0x06, 0x00, 0xd2, 0xeb, 0xc3, 0x00, 0x04,
+  0xdc, 0x23, 0x30, 0xf8, 0xb8, 0x1f, 0x00, 0x03, 0x06, 0x04, 0x00, 0x00,
+  0xf0, 0x43, 0x33, 0x00, 0x12, 0x06, 0x00, 0xd6, 0x02, 0x09, 0x00, 0xd0,
+  0xdb, 0xc6, 0x22, 0x3d, 0xd8, 0x49, 0x40, 0xf8, 0xca, 0x03, 0xf8, 0xc0,
+  0x04, 0x1b, 0x08, 0x00, 0x06, 0x06, 0x10, 0x00, 0xdb, 0xc9, 0xf8, 0x55,
+  0xd8, 0x67, 0x49, 0xf8, 0xd8, 0xc6, 0x09, 0xb8, 0xf0, 0x40, 0x03, 0x90,
+  0xca, 0x86, 0x21, 0x80, 0x02, 0x01, 0x10, 0x08, 0xdc, 0x21, 0x18, 0x78,
+  0xbc, 0x1f, 0x00, 0x0e, 0xdc, 0x43, 0x08, 0xf8, 0xdc, 0x48, 0x18, 0x79,
+  0xca, 0x01, 0xf8, 0x40, 0x71, 0xe1, 0x0d, 0x00, 0x55, 0x06, 0x00, 0x00,
+  0x06, 0x06, 0x10, 0x00, 0xd8, 0x40, 0x08, 0x39, 0xca, 0x86, 0x21, 0x80,
+  0xf4, 0x43, 0x0b, 0x01, 0xca, 0x01, 0xf8, 0x40, 0x71, 0xe1, 0x0d, 0x00,
+  0xb3, 0xff, 0x00, 0x06, 0x55, 0x06, 0x00, 0x00, 0xf4, 0x48, 0x0b, 0x01,
+  0xca, 0x01, 0xf8, 0x40, 0x71, 0xe1, 0x0d, 0x00, 0x55, 0x06, 0x00, 0x00,
+  0x2e, 0x3f, 0x00, 0x59, 0xff, 0xff, 0xff, 0xff, 0x02, 0x07, 0x00, 0xd2,
+  0xeb, 0xc3, 0x00, 0x04, 0xdc, 0x23, 0x38, 0xf8, 0xb8, 0x1f, 0x00, 0x05,
+  0x06, 0x04, 0x00, 0x00, 0xf4, 0x47, 0x33, 0x04, 0xf0, 0x43, 0x3b, 0x00,
+  0x12, 0x06, 0x00, 0xd2, 0x12, 0x07, 0x00, 0xd6, 0x02, 0x09, 0x00, 0xd0,
+  0xdb, 0xc7, 0x22, 0x3d, 0xd8, 0x49, 0x40, 0xf8, 0xca, 0x03, 0xf8, 0xc0,
+  0x04, 0x1b, 0x08, 0x00, 0x06, 0x06, 0x10, 0x00, 0xdb, 0xc9, 0xf8, 0x55,
+  0xd8, 0x67, 0x49, 0xf8, 0xd8, 0xc6, 0x09, 0xb8, 0xf0, 0x40, 0x0b, 0x90,
+  0xca, 0x86, 0x21, 0x80, 0x02, 0x0a, 0x10, 0x08, 0xdc, 0x2a, 0x1a, 0xb8,
+  0xbc, 0x1f, 0x00, 0x10, 0xdc, 0x43, 0x52, 0x78, 0xdc, 0x48, 0x48, 0xf9,
+  0xca, 0x03, 0xf8, 0xc0, 0x71, 0xe3, 0x1d, 0x00, 0x55, 0x26, 0x08, 0x00,
+  0x06, 0x06, 0x10, 0x00, 0xd8, 0x41, 0x18, 0x79, 0xca, 0x86, 0x21, 0x80,
+  0xf4, 0x49, 0x13, 0x01, 0xca, 0x02, 0xf8, 0x80, 0x71, 0xe2, 0x15, 0x00,
+  0x55, 0x26, 0x08, 0x00, 0xf0, 0x42, 0x0b, 0x01, 0xb3, 0xff, 0x00, 0x0d,
+  0x12, 0x01, 0x00, 0xd0, 0xf4, 0x48, 0x13, 0x01, 0xca, 0x02, 0xf8, 0x80,
+  0x71, 0xe2, 0x15, 0x00, 0x55, 0x26, 0x08, 0x00, 0xdc, 0x23, 0x50, 0xf8,
+  0xbc, 0x3f, 0x00, 0x03, 0xb3, 0xff, 0x00, 0x05, 0x12, 0x1f, 0x00, 0xd0,
+  0xf0, 0x42, 0x0b, 0x01, 0xd8, 0x49, 0x08, 0x78, 0x12, 0x01, 0x00, 0xd0,
+  0x9f, 0xff, 0xf4, 0x00, 0xeb, 0xc1, 0x03, 0x8c, 0xdb, 0xc0, 0x40, 0xfd,
+  0xf0, 0x41, 0x11, 0x08, 0xdb, 0xc0, 0x40, 0x1d, 0x7c, 0x01, 0xf9, 0x05,
+  0xdb, 0xc1, 0x60, 0x7d, 0xd8, 0x42, 0x08, 0x78, 0x73, 0x63, 0x0b, 0x00,
+  0x7c, 0x01, 0xf9, 0x05, 0xdb, 0xc1, 0x60, 0x7d, 0xd8, 0x42, 0x08, 0x78,
+  0x77, 0x61, 0x0b, 0x00, 0x78, 0x04, 0xfb, 0x00, 0xdb, 0xc4, 0x80, 0x5d,
+  0xdc, 0x21, 0x00, 0x78, 0xbc, 0x3f, 0xff, 0xf5, 0xcd, 0xc4, 0x40, 0x11,
+  0x9f, 0xff, 0xf4, 0x00, 0x04, 0x00, 0xd0, 0x10, 0xeb, 0xc2, 0x00, 0xc0,
+  0x04, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0xbb, 0x61, 0x00, 0x08,
+  0xe1, 0xc2, 0x00, 0x50, 0xeb, 0xc0, 0x30, 0x20, 0xcf, 0x81, 0x10, 0x45,
+  0xe1, 0xc0, 0x00, 0x0c, 0xd8, 0x41, 0x00, 0x78, 0xe3, 0xc0, 0x80, 0x00,
+  0x73, 0x60, 0x0b, 0x00, 0x2c, 0x3f, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff,
+  0x06, 0x18, 0xd0, 0x00, 0x04, 0x01, 0xd0, 0x10, 0xf0, 0x5a, 0x03, 0x00,
+  0xa3, 0xff, 0xff, 0x83, 0x04, 0x02, 0x08, 0x04, 0x06, 0x18, 0xd0, 0x00,
+  0x02, 0x00, 0xd0, 0xd4, 0x04, 0x0c, 0xd0, 0x10, 0x06, 0x10, 0xd0, 0x00,
+  0xbb, 0xe0, 0x00, 0x08, 0xf0, 0x5a, 0x6b, 0x90, 0xeb, 0xc0, 0x04, 0x00,
+  0x12, 0x00, 0xd0, 0x90, 0x02, 0x00, 0xd0, 0xd4, 0xf5, 0x40, 0x03, 0x01,
+  0xb3, 0xff, 0x00, 0x03, 0x12, 0x00, 0xd0, 0xd4, 0x12, 0x1f, 0xd0, 0x90,
+  0x06, 0x0a, 0x68, 0x08, 0x04, 0x0e, 0x60, 0x04, 0xca, 0x8a, 0x82, 0x80,
+  0x02, 0x00, 0xd0, 0xda, 0x12, 0x00, 0xd0, 0xdc, 0x12, 0x1f, 0x68, 0x02,
+  0x04, 0x1b, 0x60, 0x00, 0x02, 0x02, 0xd0, 0xd8, 0xeb, 0xc1, 0x01, 0x00,
+  0xdc, 0x21, 0x10, 0x78, 0xb0, 0x1f, 0x00, 0x15, 0x04, 0x00, 0xd0, 0xe4,
+  0x04, 0x01, 0xd0, 0x08, 0x12, 0x01, 0x68, 0x02, 0x04, 0x01, 0xd0, 0x0c,
+  0x02, 0x02, 0x68, 0x00, 0xcf, 0x81, 0x80, 0x43, 0xf1, 0xc1, 0x0a, 0x08,
+  0xd9, 0xc2, 0x08, 0x78, 0x12, 0x01, 0x68, 0x00, 0x02, 0x01, 0xd0, 0xd8,
+  0xf4, 0x41, 0x0b, 0x01, 0xca, 0x01, 0xf8, 0x40, 0x71, 0xe1, 0x0d, 0x00,
+  0x55, 0x2a, 0x00, 0x00, 0xf0, 0x5a, 0x03, 0x00, 0xf0, 0x4c, 0x0b, 0x00,
+  0xa3, 0xff, 0xff, 0x81, 0xf0, 0x4e, 0x13, 0x00, 0x2e, 0x3f, 0xff, 0xc3,
+  0xff, 0xff, 0xff, 0xff, 0x02, 0x02, 0x68, 0x02, 0xf0, 0x42, 0x12, 0x01,
+  0x12, 0x02, 0x68, 0x02, 0x6b, 0xff, 0xfd, 0x00, 0x55, 0x2a, 0x00, 0x00,
+  0x02, 0x02, 0xd0, 0xd8, 0xf4, 0x42, 0x12, 0x01, 0x12, 0x02, 0xd0, 0xd8,
+  0x02, 0x02, 0xd0, 0xdc, 0xf4, 0x42, 0x13, 0x01, 0x12, 0x02, 0xd0, 0xdc,
+  0x02, 0x22, 0xd0, 0xdc, 0xbc, 0x3f, 0x00, 0x19, 0x02, 0x01, 0xd0, 0xd6,
+  0xf4, 0x41, 0x0b, 0x01, 0x12, 0x01, 0xd0, 0xd6, 0x02, 0x21, 0xd0, 0xd6,
+  0xbc, 0x3f, 0x00, 0x0a, 0xa7, 0xff, 0xff, 0x9d, 0xff, 0xff, 0xff, 0xff,
+  0x14, 0x00, 0xd0, 0xe4, 0xf0, 0x5a, 0x03, 0x00, 0xf0, 0x4c, 0x0b, 0x00,
+  0xa3, 0xff, 0xff, 0x66, 0xf0, 0x4e, 0x13, 0x00, 0x2e, 0x3f, 0xff, 0xb6,
+  0xff, 0xff, 0xff, 0xff, 0xf0, 0x4d, 0x6b, 0x10, 0x12, 0x1f, 0x68, 0x02,
+  0x12, 0x1f, 0x68, 0x00, 0x06, 0x0a, 0x68, 0x08, 0xa3, 0xff, 0xff, 0x90,
+  0xca, 0x8a, 0x82, 0x80, 0x14, 0x00, 0xd0, 0xe4, 0x02, 0x00, 0xd0, 0xda,
+  0xb3, 0xff, 0xff, 0xc5, 0x12, 0x00, 0xd0, 0xdc, 0xd8, 0x6b, 0x0a, 0xf8,
+  0xa3, 0xff, 0xff, 0x89, 0xd8, 0xca, 0xfa, 0xb8, 0xb3, 0xff, 0xff, 0xc0,
+  0x14, 0x00, 0xd0, 0xe4, 0x06, 0x18, 0xd0, 0x00, 0x04, 0x0d, 0xd0, 0x10,
+  0x04, 0x02, 0xd0, 0x08, 0xf0, 0x5a, 0x0b, 0x00, 0xf0, 0x4d, 0x03, 0x00,
+  0x12, 0x02, 0xd0, 0xd8, 0x04, 0x0e, 0x68, 0x04, 0xf0, 0x5a, 0x83, 0x00,
+  0x14, 0x1c, 0xd0, 0xe4, 0xa3, 0xff, 0xfe, 0xdc, 0xf0, 0x4e, 0x7b, 0x0a,
+  0x12, 0x00, 0xd0, 0xd2, 0xf0, 0x4e, 0x03, 0x00, 0xf0, 0x4f, 0x0b, 0x00,
+  0xa3, 0xff, 0xfe, 0xe2, 0xf0, 0x5a, 0x13, 0x00, 0xdc, 0x20, 0xf8, 0x38,
+  0xb4, 0x3f, 0x00, 0x05, 0xf0, 0x4e, 0x03, 0x00, 0xa3, 0xff, 0xff, 0x07,
+  0xf0, 0x4d, 0x0b, 0x00, 0xb7, 0xff, 0x00, 0x06, 0x02, 0x01, 0x80, 0xd2,
+  0xa3, 0xff, 0xfe, 0xf2, 0xf0, 0x4e, 0x03, 0x00, 0x12, 0x00, 0x70, 0x0a,
+  0x12, 0x80, 0x78, 0x00, 0xeb, 0xc1, 0x30, 0x00, 0xe1, 0xc1, 0x00, 0x0c,
+  0x7c, 0x00, 0xf8, 0x01, 0xdb, 0xc0, 0xc0, 0x3d, 0xf1, 0xc0, 0x03, 0x03,
+  0x73, 0x60, 0x0b, 0x00, 0xeb, 0xc3, 0x00, 0x01, 0xf0, 0x50, 0x03, 0x00,
+  0xf0, 0x4d, 0x0b, 0x00, 0xf0, 0x4e, 0x13, 0x00, 0xa3, 0xff, 0xff, 0x06,
+  0x12, 0x03, 0x80, 0xd4, 0x00, 0x06, 0x00, 0xa4, 0x00, 0x03, 0x00, 0xa5,
+  0x02, 0x08, 0x08, 0x98, 0x06, 0x04, 0x08, 0x00, 0xdc, 0x26, 0x19, 0xb8,
+  0xf0, 0x40, 0x53, 0x60, 0xb8, 0x3f, 0x00, 0x3d, 0xeb, 0xcb, 0x00, 0x00,
+  0x10, 0x1f, 0x00, 0xa4, 0xeb, 0xcb, 0x00, 0x01, 0x04, 0x1b, 0x00, 0x00,
+  0x06, 0x06, 0x10, 0x00, 0xd8, 0x67, 0x41, 0xf8, 0xd8, 0xc6, 0xf9, 0xb8,
+  0xca, 0x86, 0x21, 0x80, 0x02, 0x01, 0x10, 0x0a, 0xdc, 0x28, 0x0a, 0x38,
+  0xbc, 0x1f, 0x00, 0x0e, 0xdc, 0x41, 0x40, 0xb8, 0xf4, 0x22, 0x13, 0x40,
+  0xb0, 0x1f, 0x00, 0x06, 0xeb, 0xc1, 0x00, 0x40, 0x6b, 0x3f, 0xfd, 0x00,
+  0x55, 0x06, 0x50, 0x00, 0xb3, 0xff, 0x00, 0x2b, 0x10, 0x01, 0x00, 0xa5,
+  0xf4, 0x42, 0x23, 0x01, 0x10, 0x02, 0x00, 0xa5, 0x71, 0xe4, 0x25, 0x00,
+  0xb3, 0xff, 0x00, 0x26, 0x55, 0x06, 0x50, 0x00, 0x02, 0x01, 0x10, 0x08,
+  0xdc, 0x41, 0x43, 0x38, 0xf4, 0x2c, 0x63, 0x40, 0xb0, 0x1f, 0x00, 0x06,
+  0xeb, 0xc3, 0x00, 0x40, 0x6b, 0x3f, 0xfd, 0x00, 0x55, 0x06, 0x50, 0x00,
+  0xb3, 0xff, 0x00, 0x1d, 0x10, 0x03, 0x00, 0xa5, 0x10, 0x0c, 0x00, 0xa5,
+  0x06, 0x08, 0x10, 0x00, 0xdc, 0x43, 0x60, 0x78, 0xca, 0x01, 0xf8, 0x40,
+  0xca, 0x88, 0x22, 0x00, 0xdb, 0xcc, 0x21, 0x1d, 0xdb, 0xc4, 0x21, 0x7d,
+  0xf4, 0x4c, 0x23, 0x01, 0xd8, 0x4a, 0x29, 0x78, 0x71, 0xe4, 0x25, 0x00,
+  0x55, 0x06, 0x50, 0x00, 0x02, 0x22, 0x10, 0x0a, 0xb4, 0x3f, 0x00, 0x0f,
+  0xdc, 0x22, 0x08, 0xb8, 0xb4, 0x1f, 0x00, 0x07, 0xf4, 0x41, 0x0b, 0x01,
+  0xca, 0x01, 0xf8, 0x40, 0x71, 0xe1, 0x0d, 0x00, 0x55, 0x08, 0x28, 0x00,
+  0xb3, 0xff, 0x00, 0x08, 0x10, 0x03, 0x00, 0xa5, 0x00, 0x01, 0x00, 0xa5,
+  0xf4, 0x42, 0x23, 0x01, 0xd8, 0x41, 0x10, 0x78, 0x10, 0x01, 0x00, 0xa5,
+  0x71, 0xe4, 0x25, 0x00, 0x55, 0x08, 0x28, 0x00, 0xf0, 0x4b, 0x03, 0x00,
+  0x9f, 0xff, 0xf4, 0x00, 0xdc, 0x20, 0xf8, 0x38, 0xb0, 0x3f, 0x00, 0x04,
+  0x06, 0x08, 0x20, 0x00, 0xb3, 0xff, 0x00, 0x03, 0xeb, 0xca, 0x00, 0x00,
+  0x04, 0x0a, 0x20, 0x94, 0x14, 0x01, 0x20, 0x94, 0x00, 0x05, 0x20, 0x9a,
+  0x06, 0x06, 0x10, 0x08, 0xeb, 0xcb, 0x01, 0x00, 0xdc, 0x4b, 0x2a, 0xf8,
+  0xca, 0x0b, 0xfa, 0xc0, 0xca, 0x86, 0x41, 0x80, 0x02, 0x09, 0x10, 0x02,
+  0x04, 0x1b, 0x18, 0x00, 0xdc, 0x69, 0x5a, 0x38, 0xb1, 0x7f, 0x00, 0x0c,
+  0xd8, 0x41, 0x2b, 0x38, 0xf4, 0x4b, 0x1b, 0x01, 0xca, 0x03, 0xf8, 0xc0,
+  0x71, 0xe3, 0x1d, 0x00, 0x55, 0x06, 0x60, 0x00, 0xd8, 0x67, 0x59, 0xf8,
+  0xd8, 0xc6, 0xf9, 0xb8, 0x16, 0x06, 0x10, 0x08, 0x12, 0x08, 0x10, 0x02,
+  0xb3, 0xff, 0x00, 0x0a, 0x10, 0x1f, 0x20, 0x9a, 0xf4, 0x49, 0x1b, 0x01,
+  0xca, 0x03, 0xf8, 0xc0, 0x71, 0xe3, 0x1d, 0x00, 0x55, 0x06, 0x60, 0x00,
+  0xf0, 0x43, 0x1b, 0x01, 0x12, 0x1f, 0x10, 0x02, 0xd8, 0x45, 0x18, 0xb8,
+  0x10, 0x02, 0x20, 0x9a, 0xdc, 0x20, 0xf8, 0x38, 0xbc, 0x3f, 0x00, 0x0c,
+  0xdc, 0x2a, 0x0a, 0xb8, 0xb4, 0x3f, 0x00, 0x0a, 0xcc, 0xca, 0x40, 0xa1,
+  0xdb, 0xc1, 0x40, 0x1d, 0xd9, 0xc2, 0x00, 0xb8, 0xeb, 0xc0, 0x03, 0x88,
+  0x7c, 0x03, 0xf9, 0x05, 0xf0, 0x40, 0x09, 0x08, 0xdb, 0xc3, 0x60, 0x3d,
+  0xd8, 0x41, 0x00, 0x38, 0x73, 0x62, 0x03, 0x00, 0x9f, 0xff, 0xf4, 0x00,
+  0x04, 0x04, 0x08, 0x08, 0xdc, 0x20, 0xf8, 0x38, 0xf0, 0x41, 0x3b, 0xa0,
+  0xb0, 0x3f, 0x00, 0x13, 0xe3, 0xc5, 0x80, 0x00, 0xcc, 0xc0, 0x40, 0x61,
+  0xdb, 0xc0, 0x40, 0x1d, 0xd9, 0xc1, 0x00, 0xf8, 0xeb, 0xc0, 0x03, 0x88,
+  0x7c, 0x06, 0xf9, 0x05, 0xf0, 0x40, 0x09, 0x08, 0xdb, 0xc6, 0x60, 0x3d,
+  0xd8, 0x41, 0x00, 0x38, 0x73, 0x63, 0x03, 0x00, 0x02, 0x01, 0x10, 0x98,
+  0x02, 0x00, 0x20, 0x08, 0xf0, 0x41, 0x0b, 0x10, 0xdc, 0x21, 0x00, 0x78,
+  0xbc, 0x3f, 0x00, 0x03, 0xb3, 0xff, 0x00, 0x03, 0x12, 0x1f, 0x20, 0x0c,
+  0x12, 0x01, 0x20, 0x0c, 0x04, 0x81, 0x38, 0x00, 0xb7, 0xdf, 0xff, 0xff,
+  0x04, 0x20, 0x10, 0x90, 0xb4, 0x3f, 0x00, 0x09, 0x14, 0x81, 0x38, 0x00,
+  0x7c, 0x01, 0xf8, 0x01, 0xdb, 0xc0, 0xc0, 0x1d, 0x77, 0x00, 0x00, 0x01,
+  0x73, 0xe5, 0x29, 0x01, 0x26, 0x3f, 0x00, 0x3c, 0xb3, 0xff, 0x00, 0x03,
+  0x77, 0x01, 0x08, 0x01, 0x14, 0x80, 0x38, 0x00, 0x9f, 0xff, 0xf4, 0x00,
+  0x06, 0x18, 0xd0, 0x00, 0xcc, 0xda, 0x40, 0xe1, 0xdb, 0xda, 0x40, 0x9d,
+  0xd9, 0xc3, 0x11, 0x38, 0x04, 0x00, 0xd0, 0x10, 0xf0, 0x5a, 0x0b, 0x00,
+  0xe3, 0xc5, 0x80, 0x00, 0xeb, 0xc2, 0x03, 0x88, 0x7c, 0x06, 0xf9, 0x05,
+  0xf0, 0x42, 0x19, 0x08, 0xdb, 0xc6, 0x60, 0xbd, 0xd8, 0x43, 0x10, 0xb8,
+  0x73, 0x64, 0x13, 0x00, 0x7c, 0x02, 0xf8, 0x01, 0xeb, 0xc3, 0x30, 0x00,
+  0xe1, 0xc3, 0x00, 0x0c, 0xdb, 0xc2, 0xc1, 0x3d, 0xd9, 0xc4, 0xd0, 0xb8,
+  0x04, 0x86, 0x00, 0xa0, 0xb7, 0xdf, 0xff, 0xff, 0xdc, 0x26, 0xf9, 0xb8,
+  0xbc, 0x3f, 0x00, 0x06, 0x14, 0x1f, 0xd0, 0x90, 0x14, 0x82, 0x00, 0xa0,
+  0xf1, 0xc4, 0x13, 0x03, 0xb3, 0xff, 0x00, 0x0c, 0x73, 0x62, 0x1b, 0x00,
+  0x14, 0x1f, 0xd0, 0x90, 0x14, 0x02, 0x30, 0x90, 0x14, 0x82, 0x00, 0xa0,
+  0xeb, 0xc0, 0x02, 0x03, 0xd9, 0xc4, 0x00, 0x38, 0x73, 0x60, 0x1b, 0x00,
+  0x77, 0x63, 0x1b, 0x00, 0x78, 0x00, 0xfb, 0x00, 0x28, 0x1f, 0xf8, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0x73, 0xe5, 0x29, 0x01, 0x04, 0x02, 0x00, 0x08,
+  0x02, 0x03, 0x10, 0x0a, 0x02, 0x04, 0x10, 0x0c, 0xdc, 0x63, 0x20, 0xf8,
+  0xb4, 0x3f, 0x00, 0x03, 0x04, 0x03, 0x00, 0x00, 0xbd, 0x03, 0x00, 0x03,
+  0x2e, 0x3f, 0x00, 0x0a, 0xff, 0xff, 0xff, 0xff, 0xa3, 0xff, 0xff, 0x36,
+  0x12, 0x04, 0xd0, 0x98, 0xdc, 0x20, 0xf8, 0x38, 0xb4, 0x3f, 0x00, 0x03,
+  0x2e, 0x3f, 0x00, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xff, 0x00, 0x28,
+  0xff, 0xff, 0xff, 0xff, 0x06, 0x18, 0xd0, 0x00, 0x04, 0x01, 0xd0, 0x10,
+  0xeb, 0xc9, 0x02, 0x74, 0xf0, 0x5a, 0x43, 0x00, 0xe1, 0xc9, 0x00, 0xd0,
+  0x04, 0x02, 0x08, 0x08, 0x7c, 0x03, 0xf8, 0x01, 0xeb, 0xc0, 0x30, 0x00,
+  0xe1, 0xc0, 0x00, 0x0c, 0xdb, 0xc3, 0xc0, 0xfd, 0xf1, 0xc3, 0x1a, 0x01,
+  0x73, 0x63, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0xbd, 0x00, 0x00, 0x09,
+  0xf0, 0x48, 0x13, 0x00, 0xa3, 0xff, 0xff, 0x96, 0xeb, 0xc0, 0x00, 0x00,
+  0x16, 0x1f, 0x40, 0x00, 0xf0, 0x48, 0x43, 0x08, 0x16, 0x1f, 0x40, 0x00,
+  0x2c, 0x3f, 0x48, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x10, 0x0a,
+  0x02, 0x03, 0x10, 0x0c, 0xdc, 0x60, 0x18, 0x38, 0xbc, 0x3f, 0x00, 0x03,
+  0x2e, 0x3f, 0xff, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x41, 0x03, 0x00,
+  0xf0, 0x48, 0x0b, 0x00, 0xa3, 0xff, 0xff, 0x10, 0x12, 0x03, 0xd0, 0x98,
+  0xdc, 0x20, 0xf8, 0x38, 0xb4, 0x3f, 0x00, 0x03, 0x2e, 0x3f, 0x00, 0x04,
+  0xff, 0xff, 0xff, 0xff, 0xa7, 0xff, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff,
+  0x06, 0x18, 0xd0, 0x00, 0x04, 0x0e, 0xd0, 0x10, 0xeb, 0xc0, 0x03, 0x80,
+  0xf0, 0x4e, 0x13, 0x60, 0x7c, 0x03, 0xf9, 0x05, 0xf0, 0x40, 0x09, 0x08,
+  0xdb, 0xc3, 0x60, 0x3d, 0xd8, 0x41, 0x00, 0x38, 0x77, 0x60, 0x03, 0x00,
+  0x78, 0x0d, 0xfb, 0x00, 0xbc, 0x0d, 0x00, 0x03, 0x2e, 0x3f, 0xff, 0xf5,
+  0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x70, 0xa4, 0xf0, 0x4d, 0x0b, 0x00,
+  0xf0, 0x4e, 0x1b, 0x00, 0xdb, 0xc0, 0x20, 0x15, 0xdb, 0xc0, 0x20, 0x3d,
+  0xd8, 0x42, 0x03, 0xf8, 0x02, 0x00, 0x78, 0x02, 0xf0, 0x4f, 0x13, 0x00,
+  0xf0, 0x5a, 0x23, 0x00, 0x14, 0x00, 0xd0, 0x08, 0xeb, 0xc0, 0x00, 0x01,
+  0xa3, 0xff, 0xff, 0x35, 0x10, 0x1f, 0xd0, 0x9a, 0x77, 0x6d, 0x69, 0x03,
+  0xeb, 0xc0, 0x03, 0x80, 0xb3, 0xff, 0x00, 0x10, 0xf0, 0x40, 0x89, 0x08,
+  0x7c, 0x00, 0xf9, 0x05, 0xdb, 0xc0, 0x60, 0x3d, 0xd8, 0x51, 0x00, 0x38,
+  0x77, 0x60, 0x03, 0x00, 0x78, 0x0d, 0xfb, 0x00, 0xbc, 0x0d, 0x00, 0x03,
+  0x2e, 0x3f, 0x00, 0x18, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x4d, 0x0b, 0x00,
+  0xf0, 0x4f, 0x13, 0x00, 0xf0, 0x4e, 0x1b, 0x00, 0xf0, 0x5a, 0x23, 0x00,
+  0xa3, 0xff, 0xff, 0x23, 0xeb, 0xc0, 0x00, 0x00, 0x02, 0x20, 0x78, 0x02,
+  0xbc, 0x3f, 0xff, 0xf1, 0x02, 0x00, 0x78, 0x00, 0xf5, 0x40, 0x02, 0x80,
+  0x12, 0x00, 0xd0, 0x9c, 0x00, 0x00, 0x70, 0xa4, 0xf0, 0x40, 0x03, 0x10,
+  0x10, 0x00, 0x70, 0xa4, 0x02, 0x00, 0x78, 0x00, 0xbe, 0x80, 0x00, 0x05,
+  0xf0, 0x4d, 0x03, 0x00, 0xf0, 0x4e, 0x0b, 0x00, 0xa3, 0xff, 0xff, 0x47,
+  0xf0, 0x5a, 0x13, 0x00, 0x2e, 0x3f, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff,
+  0x06, 0x18, 0xd0, 0x00, 0x04, 0x0e, 0xd0, 0x10, 0x00, 0x00, 0x70, 0xa4,
+  0xf0, 0x4e, 0x0b, 0x60, 0xdb, 0xc0, 0x20, 0x15, 0xdb, 0xc0, 0x20, 0x3d,
+  0xd8, 0x41, 0x03, 0xf8, 0xeb, 0xc0, 0x03, 0x80, 0xf0, 0x40, 0x89, 0x08,
+  0x00, 0x20, 0xd0, 0x9a, 0xb4, 0x3f, 0x00, 0x09, 0x04, 0x0d, 0xd0, 0x94,
+  0xf0, 0x4f, 0x13, 0x00, 0xf0, 0x4e, 0x1b, 0x00, 0xf0, 0x4d, 0x0b, 0x00,
+  0xf0, 0x5a, 0x23, 0x00, 0xa3, 0xff, 0xff, 0x01, 0xeb, 0xc0, 0x00, 0x00,
+  0xb7, 0xff, 0x00, 0x0f, 0x7c, 0x00, 0xf9, 0x05, 0xdb, 0xc0, 0x60, 0x3d,
+  0xd8, 0x51, 0x00, 0x38, 0x77, 0x60, 0x03, 0x00, 0x78, 0x0d, 0xfb, 0x00,
+  0xbc, 0x0d, 0x00, 0x03, 0x2e, 0x3f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
+  0xf0, 0x4d, 0x0b, 0x00, 0xf0, 0x4f, 0x13, 0x00, 0xf0, 0x4e, 0x1b, 0x00,
+  0xf0, 0x5a, 0x23, 0x00, 0xa3, 0xff, 0xfe, 0xf2, 0xeb, 0xc0, 0x00, 0x00,
+  0x02, 0x20, 0x78, 0x02, 0xbc, 0x3f, 0xff, 0xe7, 0x02, 0x00, 0x78, 0x00,
+  0xf5, 0x40, 0x02, 0x80, 0x12, 0x00, 0xd0, 0x9c, 0x00, 0x00, 0x70, 0xa4,
+  0xf0, 0x40, 0x03, 0x10, 0x10, 0x00, 0x70, 0xa4, 0x02, 0x00, 0x78, 0x00,
+  0xbe, 0x80, 0x00, 0x05, 0xf0, 0x4d, 0x03, 0x00, 0xf0, 0x4e, 0x0b, 0x00,
+  0xa3, 0xff, 0xff, 0x16, 0xf0, 0x5a, 0x13, 0x00, 0x2e, 0x3f, 0x00, 0x02,
+  0xff, 0xff, 0xff, 0xff, 0x06, 0x18, 0xd0, 0x00, 0x04, 0x00, 0xd0, 0x10,
+  0xeb, 0xc9, 0x00, 0xd0, 0x02, 0x08, 0xd0, 0x98, 0x04, 0x02, 0x00, 0x08,
+  0x06, 0x06, 0xd0, 0x00, 0xf0, 0x5a, 0x0b, 0x00, 0x06, 0x04, 0x10, 0x00,
+  0xd8, 0x65, 0x41, 0x78, 0xe1, 0xc9, 0x00, 0xd0, 0xd8, 0xc4, 0xf9, 0x38,
+  0xca, 0x84, 0x31, 0x00, 0x04, 0x1b, 0x00, 0x00, 0x52, 0x24, 0x08, 0x9c,
+  0x02, 0x03, 0x08, 0x9c, 0xbe, 0x83, 0x00, 0x04, 0x14, 0x1f, 0x08, 0x0c,
+  0x2c, 0x3f, 0x48, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x03, 0x10, 0x08,
+  0xf0, 0x48, 0x23, 0x10, 0xdc, 0x24, 0x19, 0x38, 0xbc, 0x3f, 0x00, 0x03,
+  0xb3, 0xff, 0x00, 0x03, 0x12, 0x1f, 0x08, 0x98, 0x12, 0x04, 0x08, 0x98,
+  0xa7, 0xff, 0xfe, 0x81, 0xff, 0xff, 0xff, 0xff, 0xdc, 0x20, 0xf8, 0x38,
+  0xb4, 0x3f, 0x00, 0x03, 0x2e, 0x3f, 0x00, 0x04, 0xff, 0xff, 0xff, 0xff,
+  0xa7, 0xff, 0x00, 0x02, 0xff, 0xff, 0xff, 0xff, 0x04, 0x02, 0xd0, 0x10,
+  0x04, 0x01, 0xd0, 0x08, 0x00, 0x00, 0x10, 0xa4, 0xf0, 0x42, 0x13, 0x60,
+  0xf5, 0x40, 0x03, 0x0f, 0xd8, 0x42, 0x00, 0x38, 0x02, 0x00, 0x00, 0x02,
+  0xd8, 0x41, 0x00, 0x38, 0xa3, 0xff, 0xff, 0xa5, 0x14, 0x00, 0xd0, 0x08,
+  0x04, 0x03, 0x08, 0x04, 0x04, 0x02, 0x08, 0x08, 0xeb, 0xc6, 0x00, 0x0f,
+  0x04, 0x84, 0x18, 0x0c, 0xb7, 0xdf, 0xff, 0xff, 0x14, 0x04, 0x08, 0x08,
+  0xd9, 0xc4, 0x10, 0xb8, 0x14, 0x82, 0x18, 0x0c, 0x04, 0x1b, 0x08, 0x00,
+  0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08,
+  0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8,
+  0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00,
+  0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8,
+  0x71, 0xe6, 0x35, 0x00, 0x55, 0x22, 0x08, 0x00, 0xe3, 0xc0, 0x00, 0x54,
+  0x2c, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x04, 0x03, 0x08, 0x08,
+  0xb6, 0x03, 0x00, 0x1b, 0xeb, 0xc2, 0x02, 0x00, 0xcf, 0x03, 0x10, 0xc5,
+  0xe1, 0xc2, 0x00, 0x0c, 0xd8, 0x43, 0x10, 0xb8, 0x77, 0x62, 0x13, 0x00,
+  0x78, 0x04, 0xfb, 0x00, 0xb4, 0x04, 0x00, 0x05, 0xeb, 0xc2, 0x02, 0x00,
+  0xe1, 0xc2, 0x00, 0x0c, 0x77, 0x62, 0x13, 0x00, 0x78, 0x04, 0xfb, 0x00,
+  0x04, 0x06, 0x08, 0x04, 0xcf, 0x84, 0x80, 0x81, 0xcb, 0x02, 0xf8, 0xc0,
+  0xeb, 0xc2, 0x00, 0xff, 0xdb, 0xc2, 0x18, 0xfc, 0xcf, 0x06, 0x80, 0x81,
+  0xcb, 0x04, 0xf9, 0x40, 0xcb, 0x03, 0xf9, 0x00, 0xcb, 0x02, 0xf8, 0x80,
+  0xd9, 0x44, 0x28, 0xf8, 0xdd, 0x42, 0x20, 0xb8, 0xd9, 0xc3, 0x10, 0xb8,
+  0xcb, 0x02, 0xf8, 0x80, 0xf9, 0x02, 0x34, 0x20, 0x14, 0x06, 0x08, 0x04,
+  0x04, 0x04, 0x08, 0x04, 0xeb, 0xc2, 0x00, 0x90, 0xb8, 0x24, 0x00, 0x21,
+  0xe1, 0xc2, 0x00, 0x0c, 0xeb, 0xc3, 0x00, 0x8c, 0xe1, 0xc3, 0x00, 0x0c,
+  0x73, 0x64, 0x1b, 0x00, 0xb3, 0xff, 0x00, 0x09, 0xeb, 0xc4, 0x00, 0x00,
+  0x77, 0x62, 0x13, 0x00, 0x78, 0x05, 0xfb, 0x00, 0xdb, 0xc4, 0x10, 0xfd,
+  0xd8, 0x41, 0x18, 0xf8, 0x14, 0x05, 0x18, 0x10, 0xf0, 0x42, 0x13, 0x04,
+  0xf0, 0x44, 0x23, 0x01, 0xf4, 0x24, 0x23, 0x10, 0xb5, 0x7f, 0xff, 0xf8,
+  0xeb, 0xc6, 0x00, 0x4f, 0x04, 0x1b, 0x08, 0x00, 0xf4, 0x26, 0x33, 0x07,
+  0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08, 0xf0, 0x46, 0x1b, 0x01,
+  0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8, 0x14, 0x02, 0x00, 0x08,
+  0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00, 0xce, 0xe2, 0x60, 0x01,
+  0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8, 0x71, 0xe6, 0x35, 0x00,
+  0xb3, 0xff, 0x00, 0x2a, 0x55, 0x22, 0x08, 0x00, 0xeb, 0xc6, 0x00, 0x8c,
+  0xce, 0x04, 0x01, 0x41, 0xe1, 0xc6, 0x00, 0x0c, 0xb3, 0xff, 0x00, 0x0f,
+  0xeb, 0xc7, 0x00, 0x00, 0xdb, 0x5f, 0x29, 0x3d, 0xeb, 0xc3, 0x00, 0x1f,
+  0xdc, 0x43, 0x20, 0xf8, 0xcb, 0x03, 0xf8, 0xc0, 0xdb, 0x45, 0x19, 0x78,
+  0xdb, 0xc7, 0x10, 0xfd, 0xd8, 0x41, 0x18, 0xf8, 0xf4, 0x44, 0x23, 0x10,
+  0xdb, 0xc4, 0x11, 0x3d, 0x04, 0x03, 0x18, 0x10, 0xd8, 0x42, 0x21, 0x38,
+  0x73, 0x63, 0x23, 0x00, 0xf0, 0x47, 0x3b, 0x01, 0xdc, 0x25, 0xf9, 0x78,
+  0xbc, 0x3f, 0xff, 0xf2, 0x04, 0x02, 0x08, 0x04, 0x73, 0x62, 0x33, 0x00,
+  0x04, 0x02, 0x08, 0x08, 0xb6, 0x02, 0x00, 0x11, 0xeb, 0xc6, 0x00, 0x07,
+  0x04, 0x1b, 0x08, 0x00, 0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06,
+  0x04, 0x04, 0x00, 0x08, 0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9,
+  0xd9, 0xc2, 0x18, 0xb8, 0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08,
+  0x06, 0x04, 0x00, 0x00, 0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8,
+  0xd8, 0xc4, 0xf8, 0xb8, 0x71, 0xe6, 0x35, 0x00, 0x55, 0x22, 0x08, 0x00,
+  0x9f, 0xff, 0xf4, 0x00, 0x04, 0x04, 0x08, 0x04, 0xeb, 0xc3, 0x11, 0x00,
+  0xf1, 0x44, 0x10, 0x03, 0xdb, 0xe2, 0xc0, 0x9d, 0xb8, 0x3f, 0x00, 0x69,
+  0xe1, 0xc3, 0x00, 0x0c, 0xbc, 0x24, 0x00, 0x36, 0xeb, 0xc2, 0x11, 0xfc,
+  0xe1, 0xc2, 0x00, 0x0c, 0x73, 0x64, 0x13, 0x00, 0x77, 0x62, 0x13, 0x00,
+  0x78, 0x02, 0xfb, 0x00, 0xbc, 0x42, 0x00, 0x14, 0xf1, 0xc4, 0x10, 0x20,
+  0x14, 0x02, 0x08, 0x04, 0xeb, 0xc6, 0x00, 0x07, 0x04, 0x1b, 0x08, 0x00,
+  0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08,
+  0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8,
+  0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00,
+  0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8,
+  0x71, 0xe6, 0x35, 0x00, 0xb3, 0xff, 0x00, 0xc0, 0x55, 0x22, 0x08, 0x00,
+  0xb3, 0xff, 0x00, 0x09, 0xeb, 0xc2, 0x00, 0x00, 0x77, 0x63, 0x1b, 0x00,
+  0x78, 0x05, 0xfb, 0x00, 0xdb, 0xc2, 0x11, 0x3d, 0xd8, 0x41, 0x21, 0x38,
+  0x14, 0x05, 0x20, 0x10, 0xf0, 0x43, 0x1b, 0x04, 0xf0, 0x42, 0x13, 0x01,
+  0xf4, 0x22, 0x13, 0x15, 0xb5, 0x7f, 0xff, 0xf8, 0xeb, 0xc6, 0x00, 0x63,
+  0x04, 0x1b, 0x08, 0x00, 0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06,
+  0x04, 0x04, 0x00, 0x08, 0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9,
+  0xd9, 0xc2, 0x18, 0xb8, 0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08,
+  0x06, 0x04, 0x00, 0x00, 0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8,
+  0xd8, 0xc4, 0xf8, 0xb8, 0x71, 0xe6, 0x35, 0x00, 0xb3, 0xff, 0x00, 0xa4,
+  0x55, 0x22, 0x08, 0x00, 0xeb, 0xc2, 0x11, 0xfc, 0xf1, 0xc4, 0x18, 0x40,
+  0xe1, 0xc2, 0x00, 0x0c, 0x73, 0x63, 0x13, 0x00, 0x04, 0x06, 0x08, 0x08,
+  0xb3, 0xff, 0x00, 0x10, 0xeb, 0xc2, 0x00, 0x00, 0xdb, 0x5f, 0x31, 0x7d,
+  0xeb, 0xc3, 0x00, 0x1f, 0xdc, 0x43, 0x28, 0xf8, 0xcb, 0x03, 0xf8, 0xc0,
+  0xdb, 0x46, 0x19, 0xb8, 0xdb, 0xc2, 0x10, 0xfd, 0xd8, 0x41, 0x19, 0x38,
+  0xeb, 0xc3, 0x11, 0x00, 0x04, 0x04, 0x20, 0x10, 0xdb, 0xc5, 0x11, 0x7d,
+  0xe1, 0xc3, 0x00, 0x0c, 0xd8, 0x45, 0x18, 0xf8, 0x73, 0x64, 0x1b, 0x00,
+  0xf0, 0x42, 0x13, 0x01, 0xdc, 0x26, 0xf9, 0xb8, 0xbc, 0x3f, 0xff, 0xf1,
+  0x04, 0x03, 0x08, 0x04, 0xeb, 0xc2, 0x11, 0xfc, 0xe1, 0xc2, 0x00, 0x0c,
+  0x73, 0x63, 0x13, 0x00, 0x77, 0x62, 0x13, 0x00, 0x78, 0x02, 0xfb, 0x00,
+  0xbc, 0x42, 0x00, 0x85, 0xf1, 0xc3, 0x10, 0x20, 0x14, 0x02, 0x08, 0x04,
+  0xeb, 0xc6, 0x00, 0x07, 0x04, 0x1b, 0x08, 0x00, 0xf4, 0x26, 0x33, 0x07,
+  0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08, 0xf0, 0x46, 0x1b, 0x01,
+  0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8, 0x14, 0x02, 0x00, 0x08,
+  0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00, 0xce, 0xe2, 0x60, 0x01,
+  0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8, 0x71, 0xe6, 0x35, 0x00,
+  0xb3, 0xff, 0x00, 0x73, 0x55, 0x22, 0x08, 0x00, 0xf4, 0x22, 0x13, 0x01,
+  0xbc, 0x3f, 0x00, 0x38, 0xbc, 0x24, 0x00, 0x20, 0xeb, 0xc2, 0x11, 0xfc,
+  0xe1, 0xc2, 0x00, 0x0c, 0x73, 0x64, 0x13, 0x00, 0xb3, 0xff, 0x00, 0x09,
+  0xeb, 0xc2, 0x00, 0x00, 0x77, 0x63, 0x1b, 0x00, 0x78, 0x05, 0xfb, 0x00,
+  0xdb, 0xc2, 0x11, 0x3d, 0xd8, 0x41, 0x21, 0x38, 0x14, 0x05, 0x20, 0x10,
+  0xf0, 0x43, 0x1b, 0x04, 0xf0, 0x42, 0x13, 0x01, 0xf4, 0x22, 0x13, 0x08,
+  0xb5, 0x7f, 0xff, 0xf8, 0xeb, 0xc6, 0x00, 0x2f, 0x04, 0x1b, 0x08, 0x00,
+  0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08,
+  0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8,
+  0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00,
+  0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8,
+  0x71, 0xe6, 0x35, 0x00, 0xb3, 0xff, 0x00, 0x51, 0x55, 0x22, 0x08, 0x00,
+  0xeb, 0xc5, 0x11, 0xfc, 0xf1, 0x44, 0x22, 0xff, 0xe1, 0xc5, 0x00, 0x0c,
+  0xb3, 0xff, 0x00, 0x0f, 0xeb, 0xc6, 0x00, 0x00, 0xdb, 0x5f, 0x20, 0xbd,
+  0xeb, 0xc0, 0x00, 0x1f, 0xdc, 0x40, 0x10, 0x38, 0xcb, 0x00, 0xf8, 0x00,
+  0xdb, 0x44, 0x01, 0x38, 0xdb, 0xc6, 0x10, 0x3d, 0xd8, 0x41, 0x00, 0x38,
+  0xf4, 0x42, 0x13, 0x10, 0xdb, 0xc2, 0x10, 0xbd, 0x04, 0x00, 0x00, 0x10,
+  0xd8, 0x43, 0x10, 0xb8, 0x73, 0x60, 0x13, 0x00, 0xf0, 0x46, 0x33, 0x01,
+  0xdc, 0x24, 0xf9, 0x38, 0xbc, 0x3f, 0xff, 0xf2, 0x04, 0x00, 0x08, 0x04,
+  0xb3, 0xff, 0x00, 0x3a, 0x73, 0x60, 0x2b, 0x00, 0xf4, 0x22, 0x13, 0x02,
+  0xbc, 0x3f, 0x00, 0x37, 0xbc, 0x24, 0x00, 0x20, 0xeb, 0xc2, 0x11, 0xfc,
+  0xe1, 0xc2, 0x00, 0x0c, 0x73, 0x64, 0x13, 0x00, 0xb3, 0xff, 0x00, 0x09,
+  0xeb, 0xc2, 0x00, 0x00, 0x77, 0x63, 0x1b, 0x00, 0x78, 0x05, 0xfb, 0x00,
+  0xdb, 0xc2, 0x11, 0x3d, 0xd8, 0x41, 0x21, 0x38, 0x14, 0x05, 0x20, 0x10,
+  0xf0, 0x43, 0x1b, 0x04, 0xf0, 0x42, 0x13, 0x01, 0xf4, 0x22, 0x13, 0x02,
+  0xb5, 0x7f, 0xff, 0xf8, 0xeb, 0xc6, 0x00, 0x17, 0x04, 0x1b, 0x08, 0x00,
+  0xf4, 0x26, 0x33, 0x07, 0xb4, 0x3f, 0x00, 0x06, 0x04, 0x04, 0x00, 0x08,
+  0xf0, 0x46, 0x1b, 0x01, 0xcc, 0x04, 0x00, 0xa9, 0xd9, 0xc2, 0x18, 0xb8,
+  0x14, 0x02, 0x00, 0x08, 0x04, 0x02, 0x00, 0x08, 0x06, 0x04, 0x00, 0x00,
+  0xce, 0xe2, 0x60, 0x01, 0xd8, 0x65, 0x00, 0xf8, 0xd8, 0xc4, 0xf8, 0xb8,
+  0x71, 0xe6, 0x35, 0x00, 0xb3, 0xff, 0x00, 0x18, 0x55, 0x22, 0x08, 0x00,
+  0xeb, 0xc5, 0x11, 0xfc, 0xf1, 0x44, 0x22, 0xff, 0xe1, 0xc5, 0x00, 0x0c,
+  0xb3, 0xff, 0x00, 0x0f, 0xeb, 0xc6, 0x00, 0x00, 0xdb, 0x5f, 0x20, 0xbd,
+  0xeb, 0xc0, 0x00, 0x1f, 0xdc, 0x40, 0x10, 0x38, 0xcb, 0x00, 0xf8, 0x00,
+  0xdb, 0x44, 0x01, 0x38, 0xdb, 0xc6, 0x10, 0x3d, 0xd8, 0x41, 0x00, 0x38,
+  0xf4, 0x42, 0x13, 0x10, 0xdb, 0xc2, 0x10, 0xbd, 0x04, 0x00, 0x00, 0x10,
+  0xd8, 0x43, 0x10, 0xb8, 0x73, 0x60, 0x13, 0x00, 0xf0, 0x46, 0x33, 0x01,
+  0xdc, 0x24, 0xf9, 0x38, 0xbc, 0x3f, 0xff, 0xf2, 0x04, 0x00, 0x08, 0x04,
+  0x73, 0x60, 0x2b, 0x00, 0x9f, 0xff, 0xf4, 0x00, 0xe3, 0xc0, 0x00, 0x54,
+  0x2c, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xc0, 0x00, 0x01,
+  0x70, 0xe0, 0x01, 0x01, 0x2e, 0x3f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff,
+  0x06, 0x18, 0xd0, 0x00, 0xec, 0x59, 0x00, 0x08, 0x04, 0x01, 0xe0, 0x04,
+  0x04, 0x00, 0xe0, 0x08, 0x06, 0x02, 0x08, 0x08, 0x16, 0x02, 0x00, 0x08,
+  0x06, 0x02, 0x08, 0x00, 0xa3, 0xff, 0xff, 0xf5, 0x16, 0x02, 0x00, 0x00,
+  0x04, 0x02, 0x00, 0x08, 0x04, 0x01, 0x00, 0x04, 0xeb, 0xc0, 0x00, 0x01,
+  0x14, 0x01, 0x10, 0x00, 0x70, 0xe0, 0x01, 0x01, 0x2e, 0x3f, 0xff, 0xf2,
+  0xff, 0xff, 0xff, 0xff, 0x06, 0x18, 0xd0, 0x00, 0x00, 0x03, 0xe0, 0x03,
+  0xf0, 0x5a, 0x03, 0x00, 0xec, 0x23, 0x00, 0x05, 0xb8, 0x1f, 0x00, 0x1b,
+  0xf0, 0x5c, 0x0b, 0x00, 0x97, 0x43, 0x00, 0x01, 0xb7, 0xff, 0x00, 0x0a,
+  0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x0b, 0xff, 0xff, 0xff, 0xff,
+  0xb7, 0xff, 0x00, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xb3, 0xff, 0x00, 0x0d,
+  0xf0, 0x41, 0x03, 0x00, 0xb7, 0xff, 0x00, 0x0e, 0xff, 0xff, 0xff, 0xff,
+  0xa7, 0xff, 0xfe, 0x91, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x0c,
+  0xa7, 0xff, 0xfe, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x09,
+  0xa7, 0xff, 0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x06,
+  0xa7, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xff, 0x00, 0x03,
+  0xa7, 0xff, 0xfe, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xc0, 0x00, 0x54,
+  0x2c, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xc2, 0x30, 0x70,
+  0xe1, 0xc2, 0x00, 0x0c, 0x77, 0x62, 0x13, 0x00, 0x78, 0x03, 0xfb, 0x00,
+  0x77, 0x63, 0x19, 0x03, 0xeb, 0xc1, 0x06, 0xa7, 0xeb, 0xc0, 0x00, 0x18,
+  0xe9, 0xc1, 0x00, 0x00, 0xe1, 0xc0, 0x00, 0x0b, 0x73, 0x61, 0x03, 0x00,
+  0xeb, 0xc0, 0x02, 0x00, 0xe1, 0xc0, 0x00, 0x0b, 0xe3, 0xc1, 0x80, 0x00,
+  0x73, 0x61, 0x03, 0x00, 0xeb, 0xc0, 0x02, 0x04, 0xe1, 0xc0, 0x00, 0x0b,
+  0x73, 0x7f, 0x03, 0x00, 0xeb, 0xc1, 0x02, 0xc0, 0xeb, 0xc0, 0x00, 0x28,
+  0xe1, 0xc1, 0x00, 0x50, 0xe1, 0xc0, 0x00, 0x0b, 0x73, 0x61, 0x03, 0x00,
+  0xf5, 0x43, 0x00, 0x80, 0x73, 0x60, 0x13, 0x00, 0xeb, 0xc1, 0x00, 0x08,
+  0xe1, 0xc1, 0x00, 0x0f, 0x77, 0x61, 0x0b, 0x00, 0x78, 0x00, 0xfb, 0x00,
+  0xf1, 0xc0, 0x02, 0x14, 0x73, 0x60, 0x0b, 0x00, 0xe3, 0xc1, 0x81, 0x00,
+  0xe3, 0xc0, 0x00, 0x0b, 0x73, 0x61, 0x03, 0x00, 0xc6, 0x00, 0x06, 0x73,
+  0x2c, 0x3f, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xc2, 0x02, 0x04,
+  0xe1, 0xc2, 0x00, 0x0b, 0x77, 0x62, 0x13, 0x00, 0x78, 0x01, 0xfb, 0x00,
+  0xec, 0x21, 0x00, 0x1f, 0xb4, 0x1f, 0x00, 0x2d, 0xe3, 0xc1, 0x01, 0x00,
+  0xe3, 0xc0, 0x00, 0x0b, 0x73, 0x61, 0x03, 0x00, 0xeb, 0xc0, 0x00, 0x04,
+  0xe1, 0xc0, 0x00, 0x0b, 0x77, 0x60, 0x03, 0x00, 0x78, 0x00, 0xfb, 0x00,
+  0xb4, 0x00, 0x00, 0x25, 0x77, 0x62, 0x13, 0x00, 0x78, 0x01, 0xfb, 0x00,
+  0xeb, 0xc0, 0x00, 0x84, 0xe1, 0xc0, 0x00, 0x0f, 0x77, 0x60, 0x03, 0x00,
+  0x78, 0x00, 0xfb, 0x00, 0xdc, 0x21, 0x00, 0x78, 0xbc, 0x3f, 0x00, 0x1d,
+  0xeb, 0xc0, 0x00, 0x8c, 0xe1, 0xc0, 0x00, 0x0f, 0x77, 0x60, 0x03, 0x00,
+  0x78, 0x00, 0xfb, 0x00, 0xdc, 0x21, 0x00, 0x78, 0xbc, 0x3f, 0x00, 0x17,
+  0xeb, 0xc0, 0x00, 0x64, 0xe1, 0xc0, 0x00, 0x0f, 0xef, 0xc1, 0x00, 0x00,
+  0x73, 0x61, 0x03, 0x00, 0xeb, 0xc1, 0x00, 0x08, 0xe1, 0xc1, 0x00, 0x0f,
+  0x77, 0x61, 0x0b, 0x00, 0x78, 0x00, 0xfb, 0x00, 0xf1, 0xc0, 0x02, 0x04,
+  0xf5, 0x40, 0x02, 0x10, 0x73, 0x60, 0x0b, 0x00, 0xeb, 0xc0, 0x30, 0x70,
+  0xe1, 0xc0, 0x00, 0x0c, 0x73, 0x7c, 0x03, 0x00, 0xeb, 0xc0, 0x02, 0x00,
+  0xe1, 0xc0, 0x00, 0x0b, 0x73, 0x7f, 0x03, 0x00, 0xe3, 0xc0, 0x00, 0x40,
+  0xc6, 0x0c, 0x30, 0x74, 0x73, 0x60, 0xf3, 0x00, 0x28, 0x1f, 0xf8, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0x28, 0x3f, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xff,
+  0xeb, 0xc0, 0x03, 0x88, 0xdb, 0xda, 0x40, 0x9d, 0xdb, 0xda, 0x40, 0x7d,
+  0xd9, 0xc2, 0x08, 0x78, 0xe1, 0xc0, 0x00, 0x0b, 0xf0, 0x5a, 0x13, 0x00,
+  0x73, 0x61, 0x03, 0x00, 0x77, 0x7a, 0xd1, 0x03, 0xb3, 0xff, 0x00, 0x06,
+  0xeb, 0xc1, 0x00, 0x00, 0xdb, 0xc1, 0x10, 0x3d, 0xd8, 0x42, 0x00, 0x38,
+  0x14, 0x1f, 0x00, 0x00, 0xf0, 0x41, 0x0b, 0x01, 0xf4, 0x21, 0x0b, 0x40,
+  0xb5, 0x7f, 0xff, 0xfb, 0xeb, 0xc0, 0x01, 0x00, 0x14, 0x00, 0x10, 0x08,
+  0x14, 0x1f, 0x10, 0x0c, 0xc6, 0x50, 0x00, 0x10, 0x2c, 0x3f, 0xf0, 0x00,
+  0xff, 0xff, 0xff, 0xff, 0xb3, 0xff, 0x00, 0x03, 0xeb, 0xc3, 0x00, 0x00,
+  0x78, 0x03, 0xf9, 0x00, 0xbc, 0x03, 0xff, 0xff, 0xeb, 0xc1, 0x30, 0x00,
+  0xdb, 0xc3, 0xc0, 0xbd, 0xeb, 0xc0, 0x02, 0x03, 0xd9, 0xc2, 0x00, 0x38,
+  0xe1, 0xc1, 0x00, 0x0c, 0x73, 0x60, 0x0b, 0x00, 0xeb, 0xc2, 0x30, 0x78,
+  0xe1, 0xc2, 0x00, 0x0c, 0x77, 0x62, 0x13, 0x00, 0x78, 0x01, 0xfb, 0x00,
+  0xdb, 0xc3, 0x80, 0x3d, 0xf5, 0x41, 0x09, 0xff, 0xd9, 0xc1, 0x00, 0x38,
+  0x73, 0x60, 0x13, 0x00, 0x7c, 0x00, 0xf8, 0x01, 0x77, 0x03, 0x18, 0x01,
+  0x26, 0x1f, 0xff, 0x7e, 0x77, 0x60, 0x00, 0x01, 0x9f, 0xff, 0xf4, 0x00,
+  0x4d, 0xdc, 0x86, 0x9f
+};
+unsigned int fsl_fman_ucode_P2041_101_8_bin_len = 7240;
diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index 0b8c33f..6eb6c2a 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -408,6 +408,8 @@ int fm_init_common(int index, struct ccsr_fman *reg)
 		/* flush cache after read */
 		flush_cache((ulong)addr, cnt * 512);
 	}
+#elif defined (CONFIG_SYS_QE_FMAN_FW_IN_IMAGE)
+	void *addr = CONFIG_SYS_QE_FMAN_FW_IMAGE;
 #endif
 
 	/* Upload the Fman microcode if it's present */
diff --git a/include/configs/SBx81CFC960.h b/include/configs/SBx81CFC960.h
index 7e1728a..fff5e5f 100644
--- a/include/configs/SBx81CFC960.h
+++ b/include/configs/SBx81CFC960.h
@@ -374,28 +374,11 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 
 #define CONFIG_SYS_DPAA_FMAN
 #define CONFIG_SYS_DPAA_PME
-/* Default address of microcode for the Linux Fman driver */
-#if defined(CONFIG_SPIFLASH)
-/*
- * env is stored at 0x100000, sector size is 0x10000, ucode is stored after
- * env, so we got 0x110000.
- */
-#define CONFIG_SYS_QE_FW_IN_SPIFLASH
-#define CONFIG_SYS_QE_FMAN_FW_ADDR	0x110000
-#elif defined(CONFIG_SDCARD)
-/*
- * PBL SD boot image should stored@0x1000(8 blocks), the size of the image is
- * about 545KB (1089 blocks), Env is stored after the image, and the env size is
- * 0x2000 (16 blocks), 8 + 1089 + 16 = 1113, enlarge it to 1130.
- */
-#define CONFIG_SYS_QE_FMAN_FW_IN_MMC
-#define CONFIG_SYS_QE_FMAN_FW_ADDR	(512 * 1130)
-#elif defined(CONFIG_NAND)
-#define CONFIG_SYS_QE_FMAN_FW_IN_NAND
-#define CONFIG_SYS_QE_FMAN_FW_ADDR	(6 * CONFIG_SYS_NAND_BLOCK_SIZE)
-#else
-#define CONFIG_SYS_QE_FMAN_FW_IN_NOR
-#define CONFIG_SYS_QE_FMAN_FW_ADDR	0xEF000000
+/* Fman microcode */
+#define CONFIG_SYS_QE_FMAN_FW_IN_IMAGE
+#ifndef __ASSEMBLY__
+extern unsigned char fsl_fman_ucode_P2041_101_8_bin[];
+#define CONFIG_SYS_QE_FMAN_FW_IMAGE		&fsl_fman_ucode_P2041_101_8_bin[0]
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH	0x10000
 #define CONFIG_SYS_FDT_PAD		(0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
-- 
1.7.10.2.dirty

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-21  8:32   ` [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader judge.packham at gmail.com
@ 2012-09-21 11:32     ` Tabi Timur-B04825
  2012-09-21 15:58     ` Wolfgang Denk
  1 sibling, 0 replies; 12+ messages in thread
From: Tabi Timur-B04825 @ 2012-09-21 11:32 UTC (permalink / raw)
  To: u-boot

judge.packham at gmail.com wrote:
>   .../SBx81CFC960/fsl_fman_ucode_P2041_101_8.bin     |  Bin 0 -> 7240 bytes
>   .../SBx81CFC960/fsl_fman_ucode_P2041_101_8.c       |  607 ++++++++++++++++++++

Including the firmware itself in the patch is a bad idea.  I do not want 
any Freescale firmware to be included in the U-Boot source tree itself.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-21  8:32   ` [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader judge.packham at gmail.com
  2012-09-21 11:32     ` Tabi Timur-B04825
@ 2012-09-21 15:58     ` Wolfgang Denk
  2012-09-21 16:30       ` Timur Tabi
  2012-09-22  9:44       ` Chris Packham
  1 sibling, 2 replies; 12+ messages in thread
From: Wolfgang Denk @ 2012-09-21 15:58 UTC (permalink / raw)
  To: u-boot

Dear judge.packham at gmail.com,

In message <1348216335-18105-1-git-send-email-judge.packham@gmail.com> you wrote:
> From: Chris Packham <judge.packham@gmail.com>
> 
> Instead of storing the mircocode in a separate flash block simply embed
> the image as C code array of bytes.

What exactly is the licensing of this code?

Would it not have to be GPL compatible to "link" it in such a way,
which in turn would require the source code and the tools to build
it ?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As far as the laws of mathematics refer  to  reality,  they  are  not
certain;  and  as  far  as  they  are  certain,  they do not refer to
reality.                                           -- Albert Einstein

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-21 15:58     ` Wolfgang Denk
@ 2012-09-21 16:30       ` Timur Tabi
  2012-09-22  9:44       ` Chris Packham
  1 sibling, 0 replies; 12+ messages in thread
From: Timur Tabi @ 2012-09-21 16:30 UTC (permalink / raw)
  To: u-boot

Wolfgang Denk wrote:
> Dear judge.packham at gmail.com,
> 
> In message <1348216335-18105-1-git-send-email-judge.packham@gmail.com> you wrote:
>> From: Chris Packham <judge.packham@gmail.com>
>>
>> Instead of storing the mircocode in a separate flash block simply embed
>> the image as C code array of bytes.
> 
> What exactly is the licensing of this code?

It's not GPL-compatible, so linking the code with U-boot and shipping the
binary as one blob is probably a GPL violation.  That's why I created the
"QE firmware binary format" and wrote all that code to treat the firmware
as a separate binary blob.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-21 15:58     ` Wolfgang Denk
  2012-09-21 16:30       ` Timur Tabi
@ 2012-09-22  9:44       ` Chris Packham
  2012-09-24 14:25         ` Timur Tabi
  1 sibling, 1 reply; 12+ messages in thread
From: Chris Packham @ 2012-09-22  9:44 UTC (permalink / raw)
  To: u-boot

On 09/22/2012 03:58 AM, Wolfgang Denk wrote:
> Dear judge.packham at gmail.com,
> 
> In message <1348216335-18105-1-git-send-email-judge.packham@gmail.com> you wrote:
>> From: Chris Packham <judge.packham@gmail.com>
>>
>> Instead of storing the mircocode in a separate flash block simply embed
>> the image as C code array of bytes.
> 
> What exactly is the licensing of this code?

Good point. I got the firmware out of the SDK that came with our
P2041RDB. I believe the intent was that the Fman microcode is written to
a reserved flash block and downloaded to the frame manager by the OS
when needed. As a Freescale customer I would actually prefer to have the
source released under the GPL and build everything into the u-boot image.

> Would it not have to be GPL compatible to "link" it in such a way,
> which in turn would require the source code and the tools to build
> it ?

Well I took one law paper at university and quickly decided to major in
computer science instead so I am entirely unqualified to comment :).
That being said it probably depends on the definition of "link". No code
is actually being called directly from u-boot, it's just a convenient
transportation mechanism. Still there are statements in the GPL about
what constitutes distributing the code, someone more qualified can
tackle that.

I can understand why for u-boot this might be a gray area. Writing
firmware blobs to a flash block somewhere is a solution that avoids any
problems and makes my patch unsuitable/unnecessary.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader
  2012-09-22  9:44       ` Chris Packham
@ 2012-09-24 14:25         ` Timur Tabi
  0 siblings, 0 replies; 12+ messages in thread
From: Timur Tabi @ 2012-09-24 14:25 UTC (permalink / raw)
  To: u-boot

Chris Packham wrote:
> Good point. I got the firmware out of the SDK that came with our
> P2041RDB. I believe the intent was that the Fman microcode is written to
> a reserved flash block and downloaded to the frame manager by the OS
> when needed. As a Freescale customer I would actually prefer to have the
> source released under the GPL and build everything into the u-boot image.

For the record, Freescale considers embedding Fman or QE microcode into a
"GPL binary" (e.g. a compiled U-boot or Linux image) to be a GPL
violation.  I'm sure there might be some linker or compiler tricks that
some people would say are not GPL violations, but I'm not going to debate
any of that.  I'm just stating what our official position is.

Having said that, I do realize that Freescale still ships some QE firmware
binaries as C header/source files that are supposed to be #included into
customer code.  Unfortunately, not all Freescale developers have gotten
the message.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-09-24 14:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-20  9:49 [U-Boot] QE firmware/microcode handling Gerlando Falauto
2012-09-20 15:16 ` Wolfgang Denk
2012-09-20 15:22 ` Timur Tabi
2012-09-20 18:24   ` Scott Wood
2012-09-20 21:28     ` Timur Tabi
2012-09-21  1:55       ` McClintock Matthew-B29882
2012-09-21  8:32   ` [U-Boot] [PATCH] SBx81CFC960: embed Fman microcode in the bootloader judge.packham at gmail.com
2012-09-21 11:32     ` Tabi Timur-B04825
2012-09-21 15:58     ` Wolfgang Denk
2012-09-21 16:30       ` Timur Tabi
2012-09-22  9:44       ` Chris Packham
2012-09-24 14:25         ` Timur Tabi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox