linux/Documentation/remoteproc.txt
<<
p22t v3/spa v3/form v3a p22t v href="../linux+v3.9.1/Documenta2" /remoteproc.txt">p22t v3img src="../.sta2"c/gfx/right.png" alt=">>">p23/spa p23spa class="lxr_search">p22tp22t v3input typopthidden" namoptnavtarget" 2pt2opt">p22t v3input typopttext" namoptsearch" idptsearch">p22t v3butt optypoptsubmit">Searchp22t vPrefs v3/a>p23/spa 2t v v3/div 2t v v3form ac2" ="ajax+*" method="post" onsubmit="return false;">p23input typopthidden" namoptajax_lookup" idptajax_lookup" 2pt2opt">p2t v v3/form p2t v v3div class="headingbott m">
v v13/a>RemotevProcessor Framowork v v23/a>pv v33/a>1. Introduc2" pv v43/a>pv v53/a>Modern SoCs typically have heterogeneous remote processor devices in asymmetricpv v63/a>multiprocessing (AMP) configura2" s, which may be running different instancespv v73/a>of opera2"ng system, whether it's Linux or any other flavor of real-time OS.pv v83/a>pv v93/a>OMAP4, for example, has dual Cortex-A9, dual Cortex-M3 and a C64x+ DSP.pv 12.1a>In a typical configura2" , the dual cortex-A9 is running Linux in a SMPpv 113/a>configura2" , and each of the other three cores (two M3 cores and a DSP)pv 123/a>is running its own instance of RTOS in an AMP configura2" .pv 133/a>pv 143/a>The remoteproc framowork allows different platforms/architectures topv 153/a>control (power , load firmware, power ff) those remote processors whilepv 163/a>abstrac2"ng the hardware differences, so the entire driver doesn't need to bepv 173/a>duplicated. In addi2" , this framowork also adds rpmsg vir2" devicespv 183/a>for remote processors that supports this kind of communicat" . This way,pv 193/a>platform-specific remoteproc drivers only need to provide a few low-level v 22.1a>handlers, and then all rpmsg drivers will then just work v 213/a>(for more informa2" about the vir2" -based rpmsg bus and its drivers,pv 223/a>please read Documenta2" /rpmsg.txt).pv 233/a>Registra2" of other typos of vir2" devices is now also possible. Firmwarespv 243/a>just need to publish what kind of vir2" devices do they support, and thenpv 253/a>remoteproc will add those devices. This makes it possible to reuse thepv 263/a>exist"ng vir2" drivers with remote processor backends at a minimal developmentpv 273/a>cost.pv 283/a>pv 293/a>2. User APIpv 303/a>pv 313/a> int rproc_boot(struc2 rproc *rproc)pv 323/a> - Boot a remote processor (i.e. load its firmware, power it , ...).pv 333/a> If the remote processor is already powered , this func2" immediatelypv 343/a> returns (successfully).pv 353/a> Returns 0 success, and an appropriate error 2pt2o otherwise.pv 363/a> Note: to use this func2" you should already have a 2ptid rprocpv 373/a> handle. There are several ways to achieve that cleanly (devres, pdata,p 4c.txt#L368txt#L38" i"Doniee="v3.15dptL27" class="line" namoptL27">v 27" namoptcumentve a , or, ifve a 2becumntvpreemoalu, wtxt#L26" idptL26" class="line" namoptL26"3v 293/a>3. User APIp44 int rproc_boot(struc2 4proc 4rproc)pvoteproc.t_shutdgurenta2" /remoteproc.txt#L32" idptL32" class="line" namoptL32"4v 323/a>4 - Boot a remote proc4ssor 4i.e. load iPilep4 If the remote proc4ssor 4s already pon ca hr@/remota 2cesposbeumenuef="bye.pp 4c.4v 353/a>4 Returns 0 succe4s, an4 an approprminits d/remlelyp4 Note: to use this 4unc2"4 you shoulEdevy esso/remoef="Docume) m2" (hrentuemle)ref=accumpanif="bye. essoxt#L36" idptL36" class="line" namoptL36"4v 373/a>4 handle. There are 4evera4 ways to acremoef="Dshutdgure). Cssoumenoef="Dshutdgure)d/rdundantlel immentgtxt#L36" idptL36" class="line" namoptL36"4xt#L368t4t#L38" i"Doniee="v3.15d4tL27"48 you should als:xt#L36" idptL36" class="line" namoptL36"4v 293/a>4. User APIp55 int rproc_boot(struc2 5proc 51lass="line aoef="Dshutdgure)d/rte ererwiseuefrs esn2cespos havremminimapt2bsequc.txt#L27" idptL27" class="line" namoptL27"5v 323/a>5 - Boot a remote proc5ssor 52lass="line aoef="Docume), ifvdeviedtxt#L36" idptL36" class="line" namoptL36"5v 333/a>5 If the remote proc5ssor 5roc.txt#L14" idptL14" class="line" namoptL14"5v43/a>p<5a href="Documenta2" /r5ly).p54lass3thax-A9 isusagtxt#L26" idptL26" class="line" namoptL26"5v53/a>Moddern SoCs typically haves, an55oc.txt#L14" idptL14" class="line" namoptL14"5v 363/a>5 Note: to use this 5unc2"5 you#include <c.txt"line" namophxr_sxt#L14" idptL14" class="line" namoptL14"5v 373/a>5 handle. There are 5evera57oc.txt#L14" idptL14" class="line" namoptL14"5xt#L368t5t#L38" i"Doniee="v3.15d5tL27"58 you/*ocumca hrwhrwhnlygiren aaemotep2" /nef="real-thieve 2*/xt#L14" idptL14" class="line" namoptL14"5v 293/a>5. User APIp66 int rproc_boot(struc2 6proc 61lass="line a6 - Boot a remote proc6ssor 6roc.txt#L3" idptL3" class="line" namoptL3">v 6v 333/a>6 If the remote proc6ssor 63lass="line a/*ole real-tithose rerwiseocum ouis kind of communi2*/xt#L14" idptL14" class="line" namoptL14"6v43/a>p<6a href="Documenta2" /r6ly).p64lass="line aoet =aoef="Documemy_oef="tsxt#L14" idptL14" class="line" namoptL14"6v53/a>Mo6dern SoCs typically hav6s, an65lass="line amulltiprocessing (AMP) confunc2"66lass="line a="line a/*xt#L32" idptL32" class="line" namoptL32"6v 373/a>6 handle. There are 6evera67lass="line a="line a * so;">p entwef="wrong.thieve 2i="wo Mmenvttxt#L36" idptL36" class="line" namoptL36"6xt#L368t6t#L38" i"Doniee="v3.15d6tL27"68lass="line a="line a */xt#L14" idptL14" class="line" namoptL14"6v 293/a>6. User APIpv vv 303/a>77 int rproc_boot(struc2 7proc 71lass="line a/*xt#L31" idptL31" class="line" namoptL31"7v 323/a>7 - Boot a remote proc7ssor 72lass="line a * ouis kind of communi2ref="Doyp7 If the remote proc7ssor 73lass="line a */xt#L14" idptL14" class="line" namoptL14"7v43/a>p<7a href="Documenta2" /r7ly).p7roc.txt#L5" idptL5" class="line" namoptL5">v 7v53/a>Mo7dern SoCs typically hav7s, an75lass="line a/*ole real-tishut2i="dgurf="Do*/xt#L14" idptL14" class="line" namoptL14"7v63/a>mu7ltiprocessing (AMP) con7unc2"76lass="line aoef="Dshutdguremy_oef="tsxt#L14" idptL14" class="line" namoptL14"7v73/a>of opera2"ng system, whethevera77lass}xt#L7" idptL7" class="line" namoptL7">v vxt#L368t7t#L38" i"Doniee="v3.15d7tL27"7roc.txt#L29" idptL29" class="line" namoptL29"7v 293/a>7. User APIp88 int rproc_boot(struc2 8proc 81lass="nta2" /remoteproc._urescenta2" use t * us,nwerst chai2*strutxt#L38" idptL3value="v3.15.6" > 4c.8v 323/a>8 - Boot a remote proc8ssor 82lass="line a="line a werst nta2" /remo_ops *opstxt#L38" idptL3value="v3.15.6" > 4c.8v 333/a>8 If the remote proc8ssor 83lass="line a="line a werst chai2*="Documentp<8a href="Documenta2" /r8ly).p84lass="li- ArescDocuavdews kind of communi2hieve , bu="dga2" /rer devierxt#L36" idptL36" class="line" namoptL36"8v53/a>Mo8dern SoCs typically hav8s, an85lass="linei="yet. Requi hrepacesptfrs anly" naunderlyumenteve t,oc.txt#L26" idptL26" class="line" namoptL26"8v63/a>mu8ltiprocessing (AMP) con8unc2"86lass="lineMP) res anitricpof8 opera2"ng system, whet8evera8 ways to acr naMP) res anef="Documeproc.cum anitrikes it thmoteproc.xt#L26" idptL26" class="line" namoptL26"8v83/a>p8. User APIpv vv 303/a>9v vv 313/a>9 int rproc_boot(struc2 9proc 91lass="lineinitimotzes is nowred , this func2" txt#L36" idptL36" class="line" namoptL36"9v 323/a>9 - Boot a remote proc9ssor 92lass="lineAfter creDoumenan /remothieve 2 humen" a 2ptid rprmoteprw/remcumenext#L26" idptL26" class="line" namoptL26"9v 333/a>9 If the remote proc9ssor 93lass="lineax-M39" cnt insh href=" /remck p<9a href="Documenta2" /r9ly).p94ways to acr nar devices is nowred , this func2" txt#L36" idptL36" class="line" namoptL36"9v53/a>Mo9dern SoCs typically hav9s, an95lass="lineO2pt2o otherr naMews remota 2/rte eedmoteprooptailumentNULLtxt#L36" idptL36" class="line" namoptL36"9v63/a>mu9ltiprocessing (AMP) con9unc2"96oc.txt#L9" idptL9" class="line" namoptL9">v vv73/a>of9 opera2"ng system, whet9evera9 ways to acd alre_n(dev_ di hctleldearescDocu@/remo,phren v vv83/a>p<9a href="Documenta2" /r9tL27"98lass="lineyet. Irstume,rw/remcpOMAAP4, for example, has dumenta99oc.txt#L9" idptL9" class="line" namoptL9">v 10v 12.1a>Inn a typical configura2" emot eproc)pvoteproc.t_put(nta2" /remoteproc.txt#L32" idptL32" class="line" namoptL32"10v 113/a>c0onfigura2" , and each o01mot 1lass="li- Fa hran /remothieve 2t" .masyarescDoc="bye/remo_uresctxt#L10" idptL10" class="line" namoptL10">vv 123/a>i0s running its own instan02mot 2lass="lineT a 2ptid rproothef= emlelunro vv 133/a>p0T0he remoteproc framowork 04mot 4ways to ac c0ontrol (power , load f05mot 5lass="linedropp.ices zerotxt#L10" idptL10" class="line" namoptL10">vv 163/a>a0bstrac2"ng the hardware 06mot 6oc.txt#L9" idptL9" class="line" namoptL9">v 10v 173/a>d0uplicated. In addi2" , 07mot 7proc)pf0or remote processors tha08mot 8lass="li- R deviera@/remotminimtrent platforms/architec, after remnd abe.txt#L25" idptL25" class="line" namoptL25"10v 193/a>p0latform-specific remotep09mot 9lass="linearescDoc="minimaef="Duresce)txt#L10" idptL10" class="line" namoptL10">>v 12.1a>IIn a typical configura2" , t110lass="lineT a 2ismck >v 113/a>coonfigura2" , and each of1mot 11lass="lineavdews kind of communi2 use t itvprobedtxt#L36" idptL36" class="line" namoptL36"1>v 123/a>iis running its own instannce o112lass="lineiate error 2pt2o othrwise.pv 133/a>ppv 1>v 143/a>TThe remoteproc framowork allo114ways to ac8/59cxttancespv 1>v 153/a>ccontrol (power , load ffirmw115lass="line="Documetxt#L36" idptL36" class="line" namoptL36"1>v 163/a>aabstrac2"ng the hardware diff116lass="lineIfal und,le to rthenpv 173/a>dduplicated. In addi2" , this11 ways to ac" /rdevierumen" a 2icpv 183/a>ffor remote processors thaat su118lass="lineprobedtxt#L36" idptL36" class="line" namoptL36"1>v 193/a>pplatform-specific remotepproc 119oc.txt#L9" idptL9" class="line" namoptL9">v 1>v 22.1a>1handlers, and then all r1pmsg 120proc)pv 213/a>1(for more informa2" ab1out t121lass="li- Unro iss running its own instancce o122lass="lineT a 2ptid rpro href="benck pRegistra2" of other ty1pos o123lass="lineax-M39" cnt in decid ncremoineveeanefoef="a use tt2i="shref=xt#L36" idptL36" class="line" namoptL36"12v 143/a>Tjust need to publish wha1t kin124ways to ac_ cremoteproc will add thos1e dev125lass="linend acumple .d /remoteproctxt#L36" idptL36" class="line" namoptL36"12v 163/a>aexist"ng vir2" drivers 1with 126oc.txt#L9" idptL9" class="line" namoptL9">v 1>v 273/a>1cost.pv 1>v 183/a>fpv 293/a>12. User APIpv 1>v 303/a>1pvv 213/a>1 int rproc_boot(struc2 1rproc1*rprocxt#L13" idptL13" class="line" namoptL13">vv 123/a>i - Boot a remote proc1essor1(i.e. lovoteproc.t_re /re_crash(nta2" /remoteproc., enumproc.t_crash_poss poss)xt#L36" idptL36" class="line" namoptL36"13v 133/a>p<T returns (successfu1lly).1c Returns 0 succe1ss, a1d an appropr only ne d to proviremoeax-M39" cnt inepa Note: to use this 1func21 you shoulnon-t platformsds at .cT a 2ptid rproesn2benck v 373/a>1 handle. There are 1sever1l ways to ac8/59cxttxt#L13" idptL13" class="line" namoptL13">vv 183/a>fxt#L38" i"Doniee="v3.15d1ptL2713roc.txt#L29" idptL29" class="line" namoptL29"13v 293/a>13. User APIpv 14v 303/a>1414 int rproc_boot(struc2 14proc14rprocThese ck < hrem" href="benpmenta2d"bye only need to provide a few xt#L31" idptL31" class="line" namoptL31"14v 123/a>i4 - Boot a remote proc14ssor14i.e. ds at a:xt#L36" idptL36" class="line" namoptL36"14v 333/a>14 If the remote proc14ssor14roc.txt#L14" idptL14" class="line" namoptL14">vv 143/a>Thhe remoteproc framowork aly).144lass/**xt#L31" idptL31" class="line" namoptL31"14v 353/a>14 Returns 0 succe14s, a14 an ap* nta2" /remo_ops -e only need to prov use t will thxt#L31" idptL31" class="line" namoptL31"14v 163/a>a4 Note: to use this 14unc214 you * @start:ppropr hose rerin a use trwiseocum inxt#L36" idptL36" class="line" namoptL36"14v 373/a>14 handle. There are 14ever14 ways * @stop:pproprwhilepf4t#L38" i"Doniee="v3.15d14tL27148 you * @kick:pproprwkick aaebacqueue (ebacqueue tepgiren asirmpacesptfr)xt#L36" idptL36" class="line" namoptL36"14v 293/a>14. User APIp1515 int rproc_boot(struc2 15proc151lass="line a15 - Boot a remote proc15ssor152lass="line a15 If the remote proc15ssor153lass="line avotep(*kick)(nta2" /remoteproc.ntT5a href="Documenta2" /r15ly).154lass}sxt#L14" idptL14" class="line" namoptL14"15v 353/a>1ddern SoCs typically hav1es, a155oc.txt#L14" idptL14" class="line" namoptL14"15v 363/a>15 Note: to use this 15unc215 youEdevy t platformsax-M39" cnt in href="D hleastopmenta2rin a-xr_sstartrwise-xr_sstopxt#L14" idptL14" class="line" namoptL14"15v 373/a>15 handle. There are 15ever157oc.t will th.eIfanamop/ backenptid rprmottel immumendesi hr,roc.trin a-xr_skick will txt#L14" idptL14" class="line" namoptL14"15v 183/a>f5t#L38" i"Doniee="v3.15d15tL27158 you href="benpmenta2d"asiwelltxt#L13" idptL13" class="line" namoptL13">5v 293/a>15. User APIpv 16v 303/a>16v 16v 313/a>16 int rproc_boot(struc2 16proc161lass use trwiseocum in ( hav hoc.-xr_sprivata,p< othr only need to provprivDocuroc.ttxt#L36" idptL36" class="line" namoptL36"16v 323/a>16 - Boot a remote proc16ssor16roc.tTn aocum addrothercumca hrdevied,oesn2benl undrcum hoc.-xr_socumaddr (oee a few xt#L31" idptL31" class="line" namoptL31"16v 333/a>16 If the remote proc16ssor163lass" / puway,penly" naELFepT6a href="Documenta2" /r16ly).164lassO2pt2o other0" href="ben/rte eedmoteprooptailument.p16dern SoCs typically hav16s, a165oc.txt#L14" idptL14" class="line" namoptL14"16v 163/a>abbstrac2"ng the hardware dunc2166lassTn a-xr_sstop() will t tf="Doan /remothieve 2wise hosesrin a use trdgurtxt#L36" idptL36" class="line" namoptL36"16v 373/a>16 handle. There are 16ever167lassO2pt2o other0"a 2/rte eedmoteprooptailument.pf6t#L38" i"Doniee="v3.15d16tL2716roc.txt#L29" idptL29" class="line" namoptL29"16v 293/a>16. User APIp1717 int rproc_boot(struc2 17proc171lassf communi2wo Mmem in k="Doremnd apenaumesmothageh.eNotifyumenicp17 - Boot a remote proc17ssor172lasso bepxa" ebacqueue tndex ta,v v3acuma 2 v3/foal:orema 2easy (wo Mnonxt#L36" idptL36" class="line" namoptL36"17v 333/a>17 If the remote proc17ssor173lasstooepxpensire)procgcumerougimtrenprocessor bacqueuehrwisev v3al Codewsbunhxt#L31" idptL31" class="line" namoptL31"17v 143/a>T7a href="Documenta2" /r17ly).17roc.titrin auef="rumestxt#L36" idptL36" class="line" namoptL36"17v53/a>Mo17dern SoCs typically hav17s, a175oc.txt#L14" idptL14" class="line" namoptL14"17v63/a>mu17ltiprocessing (AMP) con17unc2176lass6. Binareloteproc. Sta2" umext#L14" idptL14" class="line" namoptL14"17v 173/a>duuplicated. In addi2" , tever177oc.txt#L14" idptL14" class="line" namoptL14"1vxt#L368t17t#L38" i"Doniee="v3.15d17tL2717roc.tAm anitryp7v 293/a>17. User APIp8v 303/a>1818 int rproc_boot(struc2 18proc18rprocxt#L13" idptL13" class="line" namoptL13">8v 323/a>18 - Boot a remote proc18ssor182lassWc.trinto ruse cksem" hrw up,rwhrwsposa2" tendecouplly" nabinarelsg busxt#L13" idptL13" class="line" namoptL13">8v 333/a>18 If the remote proc18ssor183lassfrom anef=cesp8v 143/a>T8a href="Documenta2" /r18ly).184lassork alsossorcumein codrtxt#L36" idptL36" class="line" namoptL36"18v53/a>Mo18dern SoCs typically hav122ymote50lass="linetL24" class="line" namoptL24">v 243/a>just need Rxt#L368t5t#L38" i"Doniee="v3.15d5tL27"58] int rproc_bootsystem, whethevera77lass}-jhs3LtdptL14" class="line" namoptL14"7v63/a>User APIpv v43/a>pv 353/a> 1ass="line1" namoptL26"8v83/a>p16 If the (class=tdgu physmoptL If the35" class="line" namoptL35">v 353/a> 1aptL19" claass="line" namoptL19">v 1293/a293/a>ieturns (successfully).pv vv 313/a>19 int19onfigura2eprobed tork aletestardben/rseg3Ltdr, mostndex ta,v v3acuma w alsootax-M39" cnt inshdu umext#L9" idptL9" c1l182lassWc/a>9 - Boot a remote p1roc9s1or 92lu hreidptL14"alercumptLse4s, an4icespp<9a h1ref="1ocumenTrns (sour16 tablenamopai2wo enta2s (sour161lass="linedex ta,v v3acumas kind of communi2*/xt#L14" idptL14" cla1sSoCs typi/a>Mo9dern SoCs typicall1y hav1s, an9r"86las)txtft2o it129oc.txt#Lcumenta2" /Donh ptid rproo/remotephysmopttL35" class="line" namoptL35">v 353/a> 1 class="l1ine" namoptL36"9v63/a>mu19ltip19>abstrac2iguemotmclarL p ide a m cl="Docu cerpai22" -chip172riphcume13">8v 323/a>18 - Boot a remote proc18ssoays to ac1d alre_n(dev_ di hctleld1eares1Docu@/Rremotpt2o from t179lc.-xr_uphilepv 163/a>aabstrac2"ng th" idptL9"1 class="line" namoptL9">1v vv81/a>p<9r"86las6"1>es anme29"13v 293/a>13. User APIpc02nfigura2" , and each o02mot 2lass=" (sour16 te ei61lass="dd those).17roc.te" idptLumetxt#L36feahilephieve erwise.pvv 123/a>i0s2runni2g its amoptr it's L6" idptL3aat su118lass="liDonh ptiduple36" clasmesthieve erwise.pRegist class="line" namoptL10"2vv 132/a>p014 Returns 0 succe12 idptL25"2class="line" namoptL25"12v 153204umenTrns (sour16 tablenbegi2woot(struc2 "doner4">vv 143/a>Thhe remoteproc framowork aly22"ng the 2ardware 06mot 6oc.txt#L2" idp20ethevera77lass}-jhs3LtdptL14" class="line" na2t 7proc)2p20User APIprcu: ptL1bed numberv use t will thxt#L31" idptL31" class="21/remotepr typical configura2" ,2t110l2ss="linPIpnum: numberr remosour16 te ei61v use t will thxt#L31" idptL31" class="210" idptL20" class="line" namoptL12">>v 213/a>coPIpmoserved: moserved (css, a1dL9">tL14"15v 303/a>15v2123/a>iis running its ow2 inst2nnce o1PIpoffset:es rny ubliffsetIpv 1332a>pp<2 href="ov use t will thxt#L31" idptL31" class="29" class=2line" namoptL9">v 1>v 142/a>TT2e remot*e="vn"donerrr naMews sour16 table, ptiexp theax-M39" uf=" moptL1423" idptL23" class="line" namoptL23">v 233#L9" idpt29" class="line" namoptL92>v 1>2 153/a>*namopai2woa ptL1bed number (29oc.txwe9oc.txt#Lchangeveral wt#L36 iprivata,p< othr only need to provprivDocuroc.2e hardwar2 diff116lass="lineIfal 2nd,le21se this futL14)2"96oc.umberr reavailablenmosour16 te ei61ed"byeaneirliffsetIta,p< othr only need to provprivDocuroc.2e 7proc)2L36" class="line" namopt236"1>2114ever14s="linetablep15 int rpro2c remotep2roc 119oc.txt#L9" idptL92 clas2="line" idptL1(sour16_tablenc.tsxt#L14" idptL14" class="line" namoptL2 120proc)215 Note: to use this 15un2ne" namopttL21">v 213/a>(for more i t121220 namoptL31"7u32 .um4"15v 363/a>15 Note: to use this 15un2ntL36"1>v2ss="line" namoptL22">v 22lineT221 namoptL31"7u32 moserved[2]4"15v 363/a>15 Note: to use this 15un2n/a>Registrra2" of other typos of >pp<222 namoptL31"7u32 iffset[0]4"15v 363/a>15 Note: to use this 15un2n" class=24" class="line" namoptL24>Tjus2 need } __p8" id4"15v 363/a>15 Note: to use this 15un2nL9" idpt2class="line" namoptL25">vmotep22o*/xt#L14" idptL14" class="line" namoptL14"7v2L26" classs="line" namoptL26">v 26326oc.2xt#L9"IL35" idptL wtwer cessors t"donerrs anitri (sour16 te ei61lasemselveL23" idptL23" class="line" namoptL23">v 233/ 7proc)2L27" class="line" namoptLe ere2 273/a>ce of R4icespbegi2woot(strue wtwer cess (sour16 te ey "doner4">vv 143/a>Thhe remoteproc framowork aly2teproc.txtt#L29" idptL29" class="lipvv 213/a21 in233/a>coPIpmoxt:ws sour16 toxtv use t will thxt#L31" idptL31" class="2"tL36"1>v2voteproc.t_re /re_crash(2ta2" 23nce o1PIpoesn:ws sour16 oesnv use t will thxt#L31" idptL31" class="2"/a>Regist class="line" namoptL36"23v 1323href="ov use t will thxt#L31" idptL31" class="2143/a>T 2 returns (successfu1ll2).11sour16 te ey begi2woot(startex-M" idptLfw_rsc_hdr2" /redonerrline" henp*nta2"pmoxtee="v motevPrrr naMewte ey ta2elf from iL35" idptL wtwer p2 373/a>ass="line" namoptL32"15v 313/a>15 int rpro2e="v3.15d2ptL2713roc.txt#L29" idpt229" c2ass="l" idptLfw_rsc_hdrnc.tsxt#L14" idptL14" class="line" namoptL2t139lass52 Ix-M39" cnt in ck < hre2xt#L9238 namoptL31"7u32 toxt4"15v 363/a>15 Note: to use this 15un2a href="D2cumenta2" /14emot14roc.2xt#L323" namoptL31"7u8 oesn[0]4"15v 363/a>15 Note: to use this 15un2c14rprocT2ese ck < hrem" href="ben2menta2d"bye } __p8" id4"15v 363/a>15 Note: to use this 15un21" class=2line" namoptL31"14v 123/2>i4 24sposa2" tendecouplly" nabinarelsg busxt#L13"2roc14ssor24roc.txt#L14" idptL14" c2ass="2ine" nS"lin (sour161lte ei61ls anmeoad nnounce3Ltdr, w" href="bhostna2" nta2"o v O8roc.te ei61lr"86lasef="bhostnref="in da4 No2e: to2use thisenta2" /, w" href="b/a>pv 233optL36"142 373/a>14 handle. Th2re ar2 14evef="bhostn29oc.txll th.eIprocteprocepails"(e.g. 2If the rean 2ismck v 233o="v3.15d2L38" i"Doniee="v3.15d14t2271482you * mclarL moteonsp1424ne" namoptL30">v 303/a>pvv 143/a>Thhe remoteproc framowork aly2_boot(str2c2 15proc151lass="line a2a h(*25"bye only need to provide a few xt#L31" idptL24"15v 3232a>15 - Boot a remote p2oc15s2or152lprov use t will thxt#L31" idptL31" class="2"15v 333/2>15 If the remote pr2c15ss2r153las*ee. erfw_r(sour16_t" na-hat kind omosour16 te ei61v use t will thxt#L31" idptL31" class="2" namoptL24"15v 143/a>T5a href="Do2ument22" /r1ov use t will thxt#L31" idptL31" class="2", a14 an2xt#L14" idptL14" class="2ine" 25153/a>*n@RSC_CARVEOUTref= (quest6" idd rproo/remoteaephysmopttL rac2iguemov use t will thxt#L31" idptL31" class="2"ne" namo2evy t platformsax-M39" c2t in 25se this mclarL moteonp*n@RSC_DEVMEMref="D (quest6toride a_map" clclarL="Docum72riphcumep*n@RSC_TRACEref="Do nnounce eedmoavailabi27158oteaeduple36" clain koR4icesmu17ltiprocessing (AMP) con17un2t160lassT2 a-xr_sstart() will t t2="Doa25953/a>*n@RSC_VDEVref="Docder_sdptLk alsos" idd6" , this11 roc.txserve ptief=ed"byecssoumenoef="Dput(ttxt#L36" idptL32" idptL9"2class="line" namoptL9">v216v 3260e this " , t"doner4"17v63/a>mu17ltiprocessing (AMP) con17un2txt#L36" 2dptL36" class="line" nam2ptL3626153/a>*n@RSC_LASTref="Docapprokeep ors tonessxt).p*nt#L3uphiable, supces iskeep ora2ssanteeMoreoumenn@RSC_LASTna2"" namref="in d*npces isutve idptL1sptL14"5v43/a>p<5a href="Documenta2" /r5ly).p54l2tL36" cla2s="line" namoptL36"16v 123/a>f26 183/aass="line" namoptL32"15v 313/a>15 int rpro2t169lassT2 a-xr_skick() will t tf2"Doan2/remote. erfw_r(sour16_t" nac.tsxt#L14" idptL14" class="line" namoptL2" idptL292 class="line" namoptL29"2vv 302e" namoptL31"7RSC_CARVEOUT31"7= 023" idptL23" class="line" namoptL23">v 23329" idptL29" class="line" namoptL22"1vv 270 namoptL31"7RSC_DEVMEMtL31"7= 123" idptL23" class="line" namoptL23">v 2332xt#L36" 2L31" class="line" namopt231"172mmuni2ref="DoyRSC_TRACE tL31"7= 223" idptL23" class="line" namoptL23">v 2332t#L31" i2s="line" namoptL36"17v 323/a>12 If the remRSC_VDEV tL31"7= 323" idptL23" class="line" namoptL23">v 2332143/a>T6231" class="line" namoptL21"17v2e" namoptL5">vRSC_LASTn tL31"7= 423" idptL23" class="line" namoptL23">v 2332, a14 an2hav17s, a175oc.txt#L14" 2dptL127moptL14"15v 363/a>15 Note: to use this 15un22176lass62 Binareloteproc. Sta2" u2ext#L24" idptL14" class="line" namoptL14"17v 173/a>d2uplicated2 In addi2" , tever177oc2txt#L24" idpF idmt2o cepails"motarasso aLuhen all rpsour16 at k,npces isseeief=ed"byecssoumenoef="Dput(ttxt#L36" idptL32717roc.tA2 anitrypp<5a href="Documenta2" /r5ly).p54l2idptL19" 2lass="line" namoptL19">72 293/224" class="line" namoptL24"8v 303/a>882 303/2>18828 int ass="linv vat 5" #39s3lasscoc.txes itL addss="linRSC_PLATFORMass="line" namoptL24"8v 303/a>8882 333/28m ouis kind of communi2*/xt#L14" idptL14" cla2 idptL13"2class="line" namoptL13">2v 1432a>T8a 7. V , t"bye14" idptL1s kind of communi2*/xt#L14" idptL14" cla2 , a14 an2cally hav122ymote50lass=2linet28o*/xt#L14" idptL14" class="line" namoptL14"7v2="v3.15d52L27"58] int rproc_bootsy2tem, 2hethevT="b/a>pUser APIp1sour16 te ey#L14" idptL14" class="line" namoptL14"7v2=17roc.tA2" namoptL26"8v83/a>pv 233aptL19" c2aass="line" namoptL19">v21293/2293/a>" , tptr itx="a1 rovoptL1e nta2"oo/re, etv vv 313/a>29 int29onfig If>vs="lineiate error 2pt2o15d16es unro , urns (succdriveumenta2" otax-M39" cnt inshdu umext#L9" idptL9" c2lxt#L36" 2/a>9 - Boot a remote p2roc9s2or 92lload ffirmw115t#L10"sour16 tablen=" /road 16es unridptL" , this11 w#L14" idptL14" class="line" namoptL14"7v2dptL26" c2lass="line" namoptL26"9v2 333/29m ouioteassrema . Ab/a>pp<9a h2ref="29amoptptLanyct" na(aLuptLlns (successfully).pcan 2it#Lns itL rk alsossorcumehieve erwise.pMo9dern SoCs typicall2y hav2s, an9r i"D6" , this11 waors twaynamopf="benpspmu29ltip29" idptL14" class="line" namoptL14"17v 173/a>d2ays to ac2d alre_n(dev_ di hctleld2eares2Docu@/Ofscocrs roRSC_VDEV >1sour16 te ei61ls ant179lgootxenr17lyw115s" na1s kind of communi2*/xt#L14" idptL14" cla2" idptL9"2 class="line" namoptL9">2v vv82/a>p<9d rproo/remote" , this11 w. Dyoptavdd rproo/re1lrocxt2it#Lbhrandinc03nfigura2" , and each o03mot 3lass="
T="borigidtxtLXRs="ftoted"t idptLa href="Dhttp://sour16w11ge.net/proj2" s/lxr">LXRsamopunityss=",aors tnta2rienta2l ptL1bed t ia href="Dmailto:lxr@ls="l.no">lxr@ls="l.noss=". lxr.ls="l.no kiDonybhostax-M39a href="Dhttp://www.enppocx-ls=pro.no">Rnppocx Ls=pro ASss=",all th.err reLs="lDocuaulroc9ssod oa2roo/re1lserv="Docui#ce 1995.