qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] allwinner-a10: add config script support


From: liguang
Subject: [Qemu-devel] [PATCH] allwinner-a10: add config script support
Date: Wed, 25 Dec 2013 16:35:03 +0800

sunxi-linux kernel parse config script
to do hardware configurations

Signed-off-by: liguang <address@hidden>
---
 hw/arm/allwinner-a10.c         |   18 ++++++++++++++++++
 hw/arm/cubieboard.c            |    2 ++
 include/hw/arm/allwinner-a10.h |    5 +++++
 pc-bios/aw-script.bin          |  Bin 0 -> 50188 bytes
 4 files changed, 25 insertions(+), 0 deletions(-)
 create mode 100644 pc-bios/aw-script.bin

diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index 4658e19..b189897 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -18,6 +18,7 @@
 #include "hw/sysbus.h"
 #include "hw/devices.h"
 #include "hw/arm/allwinner-a10.h"
+#include "hw/loader.h"
 
 static void aw_a10_init(Object *obj)
 {
@@ -33,6 +34,23 @@ static void aw_a10_init(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->timer), sysbus_get_default());
 }
 
+ void aw_a10_load_script(const char *s)
+{
+    char *file_name;
+    int file_size;
+
+    file_name = qemu_find_file(QEMU_FILE_TYPE_BIOS, s);
+    file_size = get_image_size(file_name);
+    if (file_size < 0) {
+        error_report("%s size is wrong\n", AW_CONFIG_SCRIPT);
+        return;
+    }
+    if (load_image_targphys(file_name, AW_SCRIPT_ADDR, file_size) < 0) {
+        error_report("can't load %s\n", AW_CONFIG_SCRIPT);
+        return;
+    }
+}
+
 static void aw_a10_realize(DeviceState *dev, Error **errp)
 {
     AwA10State *s = AW_A10(dev);
diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c
index 3fcb6d2..888256e 100644
--- a/hw/arm/cubieboard.c
+++ b/hw/arm/cubieboard.c
@@ -48,6 +48,8 @@ static void cubieboard_init(QEMUMachineInitArgs *args)
     memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE,
                                 &s->sdram);
 
+    aw_a10_load_script(AW_CONFIG_SCRIPT);
+
     cubieboard_binfo.ram_size = args->ram_size;
     cubieboard_binfo.kernel_filename = args->kernel_filename;
     cubieboard_binfo.kernel_cmdline = args->kernel_cmdline;
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
index da36647..d395067 100644
--- a/include/hw/arm/allwinner-a10.h
+++ b/include/hw/arm/allwinner-a10.h
@@ -17,6 +17,9 @@
 
 #define AW_A10_SDRAM_BASE       0x40000000
 
+#define AW_CONFIG_SCRIPT        "aw-script.bin"
+#define AW_SCRIPT_ADDR          0x43000000
+
 #define TYPE_AW_A10 "allwinner-a10"
 #define AW_A10(obj) OBJECT_CHECK(AwA10State, (obj), TYPE_AW_A10)
 
@@ -31,5 +34,7 @@ typedef struct AwA10State {
     AwA10PICState intc;
 } AwA10State;
 
+void aw_a10_load_script(const char *s);
+
 #define ALLWINNER_H_
 #endif
diff --git a/pc-bios/aw-script.bin b/pc-bios/aw-script.bin
new file mode 100644
index 
0000000000000000000000000000000000000000..47bca6ff62695aca99ca4b9f2c6d74e98828b062
GIT binary patch
literal 50188
zcmbuI37BM6b;s`v42&$pHVO<V6Ab$Zy-&{wG7K;Xj-taNi?OV(s_rhPwyCP_=`m5%
zh%vz^Bmqn!2E~}5Y(@~=kSvl#Ocav{ikK)S3dtvaZZTra`QLYM)address@hidden
z)bE{p?m6c!Z>jgTxolZRtL60SblcU1N<T=8D=^c05!Wd9XWQLok;o*_x0SelxjR?W
z)address@hidden|^`vnx8|GZv<{^H{9ua
address@hidden(EfCy2ks}9IYNcvzW??R<8LYrPLflpT@|>j)etCwtPSc{C
zLp+WpxY{k7<Z9y95!Wm?%nHNLKOnBwELW_O4<l~nKHh&L7Ki#ilyRfG<DSg8vE6aY
address@hidden(f;(>#<?+>Bg8$(xpAG_XC<?5LgrxKR?bc8+#5MJrE_<4
zZoSTZgScL&ZpIDuT}_RNI5TeGuE;nuZs2aoxN$4K;Qo!cO21=a?f~M}?U!+ldQWYe
zlv3^k#Pzq=c3BFkskwh4uG#Lly9S8%v67OeRc=)c%pFDC(Zp5jy-um#s%!n)5yYKL
zm1$I}W;`|%x8^|address@hidden
address@hidden|address@hidden<address@hidden@GWng{`{72$?<$ig0
z+_#BqHY;X4R#Dl{W}I0MaBn}{>address@hidden(=<AQhl3dH}1J#
zBd*gMD_IprKmKswtO|pBinvPI42J`^a*cD;EIVbRC1IR7p16hHOhxJHiOBl#Cj+N+
address@hidden<>^24FHaEH>address@hidden
zT7yF#Tm`OUCjxb8?nlJ!tk0V5oVpBm#q%j&address@hidden@WFK}+$oaHzN
z|address@hidden;J^EctF)V)a!-eSe^1<u)wz%^^ph)(ajrh5>mtO#&l`#B
zb*lAQqiLet_YzlLfTQhx?IGyfS?^cobrAjYS74ttXc2>P>q+7owW?VW8hYJ-5!Y!h
z=!FuqkzU)@address@hidden)~Gdd*iV*4ld62O8xRoLvBXy5aK>W++4?Wi#wON
zi(lv*mD#JeTZQtXV4veLH(pNj-O7Bur4&l=zQpZC91U*0+H9jd7ZoJy{k*<q4!bBN
zW2a{Sz*Q^N%2;W!-AMGrj|VVr+~5ujT%+2y)VWnd&Qj+N8gdgxvF_l&^=LX&o~xDm
zyE>v14+&hS(ZJBIE{6^|Wk#HBdf1SgQkBsctB0I2)6KSi?vR_d^gS<djrLr<Qf`!b
zw1X?n*$xj}uhXsfYbB(sI4m9ExfR)dZKdDU^5Dpz&address@hidden
zkBatHE2XM25FSn3KGa+Gz=<`;OgNTtm4?12e<J6aMf+ogPGwxx$e0Pv83Xmkz<K`}
ze%?gfGWy${pU>i);pfePga0Z<ea{Z|dCu_P`HZvTaUti7_+G*}!+%$D&WJ}jaQ=8n
zTWlIW#B;>K&)|9$E$eB&gX!y4i^p+dzO(address@hidden
zYLOGmee)ic`<9|UvD~)@&L1DDwbTLgouORMHG8av`M2-l`ivuSH*l`n&MRS`{xHYY
z**E#O?+YCDqpj-9u2QpI6~~W1ArATCk6+Eu7+kJayLnaq)1PwA=!kCPoHl5Y#t(6>
zTW)PHwHBm<o*(8MO(i;XSg+Nq_tVMF?VR&d=xTpnsK*_gn_1}5Bw7UT<Xok!2KX+{
zy?%#KVkWwqbM0!sRFmgUAK_fD{(3QJr1H-=*Y9+-A>^Y8r*&EPB%Ib|-J5V)m-VrP
z(<UAFC7f~?&fU+sTC=Ow<KqdZ)#DQhr`6+=f%C_07ka|XAdBy(I7jWHT3-}%;nRWh
z$9D~V4{)x#qz=`eArA8hua7vbzMoAv&3~UuI4!Tf$hp35-<K0kv+rvOr`h+-gwyQ%
z4(GZ{YLE5ZJXh;>#jv>_=DF&nGUk5Dxn{MZU~bt7EN)HO7gfN0IoDrOdJX3e%yVje
z593^=tM+S0<~VgX${oYGZmp-ClR7SNG%pz`8F_ySabf;4VohMyaec-FW^BlfTIEg;
address@hidden<(@address@hidden;kJB9hN(address@hidden>I6n_F{Jbrco1MpzW^`FXUc@<LJij={
zNi(`k-zD5WaR!!gS8~p%N12x^&JZ(wGn_N(QOR+7J*wP3qaIh~xW3xnI-INM+#=_y
address@hidden>f$Pvzc{<0|To<J&pct+(bfw-)}tlXFJgevde`^WEj&4V*LLc4Lmy<8~9b
z&xqU2IZltqt(-IBb{ppmzuZOKp7`Z%&KZ9BNRHF}@@L#W!!P&eINdJ~aL(|{UvbXx
address@hidden(FIdOaTJ_8Il~2Iq`=
ze4CeR)Z;sxGwShFj??S$G`G*F$M-mA)address@hidden|address@hidden;7>*Nm
z>ee*E?L!>address@hidden|Gs~AVeo74l8s~Oj9
z_tXOyYdBZ$Y13l2mT^XS-SNcjiC<30ak^hlWaV0ZIhApiUnUr5`DG*L48Lq*oaL7-
z#O;Y+&dYJSUtY?}wfyo5##w&3m~ob0uHc;Em)9}Q^2;o7d*YY59H;wbo|S9)rNubQ
zFMY;YetA9T48Oc7aJb&b^2^(address@hidden|JRfx|address@hidden)R
z7UO!AZmrfTHOot-LdSZo%%z73-8&f9t<hP`erc&address@hidden
zr2_jd#?99C>pQPwT)jmn$CX{P>xsj0ANYA^d3$Z4BS+*W##L*5HO4oGa%cOKOC^0;
z=iVE*x&HK6AqdQbKZ;zhaoN<g-ac-LTz|uoRq*=;-1MkE8aem=!1?RVjD)_Gb4H?m
zAmx-q{bSBi;Fv3NZ$C&J;+9?KrW<&B(3f$&c?xk(PyBF4(C4p*)780;27R8}DeHpH
zd$_)`cC~<WpWs|Y=N`;)H8pe(<address@hidden)R-GpfEv^PFnm6Pz<n5I&jX
zRCVsD9H$)>rE7h1oOYC&t})7S+R=8pW-iBRN870nKPk&opD$JYQh=2?PQMgj73X#;
zofXAxHRmcd)iG=Goa&address@hidden(2otBrhpD>c<IC*(QRF(>9Z)iEb=jwbJDgVJ&`
zap*U^eXZ&a?Lg8<;O5$Gx}F~w|ChSue(~_~lrNXg`^D>H>4cPYvU5G>address@hidden
zF?s|Szjo-t(ZZh62AL~p-k9S?Redj(xq`ma12;P}Qktb}_35_(v$M5s;jH5soTJ}i
zl$D<RC5-FTmuhsyN^QqNtyM|7)-xH`qYGQ8NZ3~J_ND<hYT9=e=M4KcGtRQ_Y{psk
zof9~Jo%Bq(vb{mq$_TzWcgT&F3~tMiqo0#>Wo49C=W(vmZuRLpF`-!ZQqIvu#tS~{
zi|1I+=iK~460Kp&yI{ysJ#_nC#yP{jt(-ILdpYL}`(82R)Hxk$b0Oob`PwTPSC}*p
address@hidden<zsBZH(*eY?fMd*`72#xhUZ(^HD>7eR0Am#kxxpuA`i~x|DI)
zq0mD7YR=Im?izO)<La|{+xe%<88<(pkAqimPD=Qo^h(Ap8v0(tIYZyCaIV+c$!+KF
zU(2|address@hidden)gna<%FA_o)(qPB;2kAx$p|(8jEyou9AS&lv50>r5qiJ
zlP)otO*y(|rP6Kp(s6x`ah1-3SXa1ao^iAK?xm|address@hidden&ljLHp`_-yGs`v
z(^R6xuU*+*;QBL-Qc-6^<cjm-rpS#=rW3Lj<ETJ7EFkqR&b3pHCoy~9ArA8^8sBK2
zdnXOkvc5&8&vQ%%f4h_GqyA6U=G+^&zMaw)P?^>@4)qy(AI`m%aYgSAE&MIUsgrEN
zuVb7#$tLbb#!U>1DZG0R<I<RN`2CDiC)u>YpE6FJWD|EM<address@hidden;}nCfBXdF
zMvLh_Kp*6s5s-&CX9VP7&address@hidden(;hYhWA2Dvs
zh{v;>GvcxQ<UxN>9W&ywl5<8pRt-7hED7!Z4mtUP&5&7ZhTME_S4+LlXzh?&w7BDk
zoZ45R=yk;address@hidden<address@hidden<YC&v;address@hidden&YDk7
zaL$-dPBKoNG*LXJ7-!8V*K^L8|4lQ_non-voS|<c=Ztyciy3FlCr{^`Jf-t3<cvJ0
z&L>}zaN2zG%!JeClbaZ4%_q-FIb}Y%Ipvi3<k=~w%qP!boHd_3mvPp7atq_E`Q&+w
address@hidden<(address@hidden(l%qL&T
z^%?WYR}mNIyZ$$S%9#0TR<7rYF7}nbEaj9j^YWBa#>^{*oH^gUlDJS0>*rRk%s9m~
zUynJ)address@hidden(r<$8=WrdMtk<BaK*yP9#v^vYesIAeO{u4SAty>izx&YJJu#5pBb
z;J}+XX9VO{&address@hidden&6#gkb6021mu&address@hidden&WOij
zoHOF_b<P>__|}j!=eti2Idi`Iy&-4LcYi$O%=zxm0*4!PX#3{K)4fi~=DWnv_2^x7
zp1t>wqwB|YZpDzJ>%DbupCLDHar*|&-$%r#$jZQ__Yp}e|D3?J7uQd%SH=YRWxv49
zRYt}~jC|fda{aN95u?2w5V-mJ`Vph~x&s5(>address@hidden|AJFT(iHSIXbE*^g%gJPw0aK
z*Ipc(DjbZ0L&9=M;O6UNle#wN4h@|5pV4m|Hngv5)noO*zR9TxBW}+flsh&uYQ*Dt
z1ASvt6GlZ2ALttyA2a%^BN#Vga7PBNzu1`^ozyF`CUCvU?GrV%RXTT6;M$9mQ<Ed5
z=HiC&ajDuzM}76h(XmnGq9uy)^8+_m85<E5g*<pc;OIU(X%ma7;@address@hidden
zF~ip~uGiOp(address@hidden@179ZQ_QPK)d_E`M>q%=B5;X&uKnYk&24#x2e^>Ybc7h96E~
z+`Pe^$hdlYv8qMxB;s(N3B;address@hidden>->9&&V-iIP?}^!e-NNFO*&=Zic?_bUjT
address@hidden
zon)NP1BIJnoR5XVttXD>fr7b>#PK}X6K;?P0t|gT4-j7gb1(MXFb|L~5_dY|26-TW
zXRvZR#_!KxLLBy^kbef|&S9K25xanK)<o=;jI(z1F6Eptk9`g2^kLu4aLyRt<~e6f
zOj?|i2AI(address@hidden<9z-Vh)nQq
z;&5G+?{{bUnZx`Bzt1>d4<VPa#UHS8V?8AF7RLGUQt634$hfQ>$>8nGzB1||6-xHq
z!8l_&?(Xy)T~Cd1#u)eSVw^SZ-_1B{-2Vu1vA?&*>5npf+SrD8+(R7iPa%_*`-tQH
zsl-6Wxj}y_z~Fd)s*S7ndv4gDYUAq1IcLl_KEcYh<|address@hidden>hUSgl`HBGD?iOR
zYrghC!YP+4yU#Gr8W$cUZcoOAhZtv#3lB5S8W$d6oHZ^y$~j|Pc!G1rxbP(BjB(*9
z&KcvvGn_NVg&%Rw7#E)9oG~seUpI`KH7=}VT<lMUG<B;OXN?Q11DD-5RPO=T5Qp}g
zaroUti>address@hidden&address@hidden|?I977!12ktLrsB_0feYoFO
address@hidden&4sQT{`5$a{}Y618gTU`>gw9oys_?y-je=Xm1-iXSBCXoHN?n7S3rm
znIO+>WgNw$q+M#hjX2~V;-)ch^hKUq;address@hidden;)eW*R9Ph&~4n?U4gsAbIW&|
zFPAcXR=&KNaaO)u#yBfqE+;PLvz0F;###AN<D8K%+c{_C%MQ*N`LdI9M!vj(ILuE&
z`&address@hidden&&royXPlKUZ)Kd72iFic$d|@;A>%XA
zwT!d!<$BH;address@hidden<3_^5sLG+kL)#nCY|f<#wje%9lGlxBGm#
zlj*ba<u1lq`EobotbF+haeI<4_c6}Omrrxf$d|w5oRKeo%Q+)o{(*BwzWft$dy+5z
z?77|address@hidden<UE`mB6;%yV>address@hidden<5{LK_XALv%Ux%C(Uia^e
zGs5fslW|6P-S-)1gxCFqaYlIE&x!N#rTe^F^FQ|@a1>wSy5cWbGN&#h&bJTZ7CRmJ
zAPu4W<~i*!x;v0@)Xvq&9mcrDN<}UANXGSy1BJ(M&bYtmae>address@hidden(#7n
z)?*#hXWS;sjWNzDcX|)Y-N5u&<(address@hidden<{+Ykq
address@hidden&vym-jfTl(odcgfJcddq0&S8~p1=w;3s4SkMt#(sR0bH;vr
zk8{R;{4UNJ`|(!~Ir6jaz-w}x?!aqvobJHubDZwLn{u4)z?*ZN?!a4fobJHea-8nK
zy8?&jC0On4UgFTdfWti(ioaaV8r;address@hidden@address@hidden
z0C6~O3;U|wMU{Jy>7(O5{cfEs#D#lF=?^h(zD>{X!83Aj*Y$q>address@hidden>jp
zpBFefeoIf;%Io`kfvc1|bmTLC;`<*MXT|LcjI-kQMaEfidxUd_pT9&L#%aXE^7CU}
z-wMxJe*Ow8*YfjM8E5(BamHDG`5NOazdXS?!!KVaZcqI3Ew69)e)%_6uH~1158Ps{
zRi($fXt$kl-ws?84=0HaR}kp$1g>12(Unn~dTOArwJ=+*;5jw)qw?Yna-Jq`Z)(5c
zIe-%4Tj+O*Lp$%)x^;RC0v!;YsdbaKi;v$6T&S;5Vz$xu1Gl?!e;DlR)*3as3%F2X
zCi)3+=nonTEo(Qx{deHv^LDgc{b|B!=Qf^AIJ(7(ILQ6Xb1MeV`5{gm<o+k&(DzC<
z{ydaB(address@hidden)q*$bP;IbjNerie|&zBFm>8Z&jH6D8ft~^^_Z`rqZ
z;OKcq<8=Fhaz(jjY6a)!b#9-)ZC~ow^`kztpAxuglO8Z>TsXXvb0hk=|D3=zmnu_Z
address@hidden<0IqR)kDr55I8*VNy?KLpaU6)d+`Zfi$_-_9Nn|8
zc=ChDgBaK7mem_dAIvyw$NLcC&_AOdz4}}$+MTWsXIxW#Di2)`$2i(=R8R1~ka2B#
address@hidden;?Q4t4hMOafJ||Y26YWwU*HP2IPtEW<{X{vq1%Iq
zJFOcy=g%{xk;p!8Bn~4(w@){8={Kg=kByh<;RSR-Sv}VegF}4t96e<#;WmjJ>GP8m
z+)*qmcZ<l8zJ%KvxN>J|address@hidden(address@hidden
zmwQ#<hR<P>ldD4<@@address@hidden;address@hidden@xaMwgn;S6kfv_`XLR;@b<{pccsu;C3Y(
zE+doL+|?<kwBc(address@hidden;^_Lxq2vbE2jUd?(}ZsNiCW
z8TYOs*V!petU|fhd2R)spJ&}(&s{&{jJv)address@hidden<6aoSYKTljl<address@hidden
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
address@hidden;m_!D^fX$2K7fyrQgTc
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
OR4(L_e&nE(Z~qHdc_O6%

literal 0
HcmV?d00001

-- 
1.7.2.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]