[Linaro-uefi,6/6] Platforms/FVP-AArch64: switch to simpler DT platform driver

Message ID 20170329134908.13038-7-ard.biesheuvel@linaro.org
State New
Headers show
Series
  • EDK2 spring cleaning -- OpenPlatformPkg edition
Related show

Commit Message

Ard Biesheuvel March 29, 2017, 1:49 p.m.
Replace the elaborate but awkward FdtPlatformDxe with the new
DtPlatformDxe, which supports embedded DTBs only. This is
sufficient for virtually all use cases, and if it is not, there
are various way to override the device tree binary presented to
the OS.

As a bonus, this driver makes ACPI and DT mutually exclusive - this
can be configured via the setup screen.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Binary/DeviceTree/fvp-base-gicv2-psci.dtb       | Bin 0 -> 10368 bytes
 Platforms/ARM/Binary/DeviceTree/fvp-base-gicv3-psci.dtb       | Bin 0 -> 10835 bytes
 Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv2-psci.dtb | Bin 0 -> 7673 bytes
 Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv3-psci.dtb | Bin 0 -> 8140 bytes
 Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc            |  25 +++++++-------
 Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf            |  35 +++++---------------
 6 files changed, 22 insertions(+), 38 deletions(-)

Patch hide | download patch | download mbox

diff --git a/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv2-psci.dtb b/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv2-psci.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..245a6c33b7f6ce0c45f9c7ec8f01010b850e3b69
GIT binary patch
literal 10368
zcmb_iOOG5^6~5Jz3<(gN@P5a5GT=m0ad(d=aUud8kL_T^c1&a}gcLQ^)zvc<S9Mpa
zs@pT!*oYvpK*|mwB&0|z*s|dD1G0b>?AV5g1sfg<kl66}zH{qVpK{NPJf2*sy3V=Z
zz2|=S+;bmQ)qi;CzkfC6<ZWZj*Nl1W-?*Q|^$4zqaUm^zANfD0belg+p1s}i>vETn
z{~)mo*RLKw8x&Dhj`^R)wH)N>+H92h17e~?J6RqTg)PW(_u(Q3+I0E}$StLJD%}gW
zCq*=dW^pe_VptYyta}RAbEk@Qa4MaY+fhE41o`k(JQ-zML2rGnU8PggATN9EXQ<MY
zw9C5Z@49ZVQ1|j(*Bva>{l;C_4ePq}kCzo;%nl&2|0}q}=gjvzPqxM9qO_mv)(VT)
zzJ8@hL#+?rZjMFvMsqB7fU_-L9J^b<A5i)apfe_fUzkm+p{~pCHMS^jJe2j*AhU8Z
zEy^gjqeE<xN0s8*{bALHZ3j4m1WDtRYrHFP11J9)Uth%UuW(z&a;loym(#Mgxd*5B
zX?zb(^yNXEoNrl1%EiMZ@{2Mk=ktJNe$45n;zRsfBvF+4;z|1E7%qvIxeer4AM*aQ
zN~WKFQ>_KgzrRNw*AJ(^19_<Qe?aCKRk+9b{eGp>57f19{iE=c7V7p4_<8@Fw`bk~
z^cSUr--B<@b*cRUrIR1^+Rup3UNZ*0W5`1h=_C6hzJ%XrXP9gAF`nLMtXk(GuDnOp
z*w9BT=i^R0n#Xg{KZr~Fk(``Po(+!8m^(B_w+<hbBl&5Ll<io<kIlG0G)LF}qjF?i
zYmU@wj?MMp&>UU=kIE7C8yu<E96NRcbA32uJjyoCx<}>6HP3NiJkHlZjCH3i5$W*5
za(u7ik-QuS%5L6pT?9voNQWPm<9ij4SOXdysjIP;h`d*htjFu9W6izAai9;~e&i)x
zKMcZcy-za^mL(GclB>rt)oU8<P-kDIziE_C^4;DUo_3IsEp<`OJ7zIvN#1d{zTRdI
z(k**?;I_S+>MnNUF-{fvG%NjZGA{E;l0<p0JDRs*ZLXrKtmQa&l+lhKbT<60IFtjF
z%X&s~Y#Xj$SD;d^baTSOqC@oh71nc{dFYfRQ_+|;r<>y<tyTHP=`C)nOvm}dcHlR!
z#GNHE7RU6O#ynn*AN@>Sd{M?}ltV!x{xGij{^i#wF$_T6#zV&Z&)NNulCfvi`Pjom
zcJ1D}|6hNC8P#sD8=S%7rOw|U)$KoR+xIcntXJ`~`{)zjVHOfu%=_lrsM-|Yv!71q
zBII<4-kbax<v|*e%X)(geCYA)!WLNH`52-+*Ek=;XBDUK5<;?^*pB!(OY8H&9sUI}
ztLL-xFD-l-7wt1~?|1T7l>F67mNxLX166qP+^}54X@(QwpgMWG{+|HG@=m8eT>o|;
z(jRr=!c#SDdjy>WROQi*q)+0v%A;LLpT%#LSKaL7t`zQHlIRds7ox}c<2cdhKeZ+0
zmwiSX_x%F-zf$=WYmSiXHmiJx@vbrU!C{m&#=ba=vc@PojIzeqH-}Ny7}r9FQP!B7
zm&lfVNn;!eS5FNKi^|&TFs{S89?y{uqpUH;iNh#s41TXM${NGmuQAFR!&*>dlr?rt
zVU#t-FmPN{NFaCqUckw^-iMLt>QUC%M-)a`V+><gPlYscjro|uDC>G3R~TiDeL`WB
zHO498+Edd7xyF1-VU%?}zCUsGC~J(*6Aq)SF-|{+si}xuV?L)a%DUd?6-HTOk1C9^
z#*QnDvc|rkFv=P`p)krCTTvKgjXkC?${ORo?fOnxV_#GlWsQAFVU#s?Qel)e_PD|*
zYwQVyQ6}c8*HTd3TI{`@7xfvL{*`@rR=p})n{`t^>zI33*U@HUO(g}p?<GO8-D}rx
z#7G8-YaQdF(Y`-oVH1wxN@7V{7V$iPwyioZw@R+oPVbK>&n#JUXV`Ol-A2<a$2r_=
zmj#iDM4bBpW1TjPxh=n9FXEfNaa7V~cYcy%9j-OYMOuVwNicq<6Lvb{=B7O{XrspQ
zEvvd>KTK|PPp8|jON%uZvpkA-qM;uqlkf&1SNC024t@4+dE=)Xjy2Q!JBIVwJ#4Zp
zS&*}{#eIRg@W`VPs&yO_mf`w**F4Ozvptk&J=nB7_OR)Aa1GZys4E`p-5b^=hv#7j
zkM*$LYaR`ojtBP{&4aq|Sa_`q0EuO}&f2qVItb(>)SNt(Jvk%N=T6sWB652Z7!z@0
zj?1rC>=t>n)oag>uYz+gX~wTD$V#k_y&Lf>amH<~vT0iEOVxghb3o}54=h~a9^-+!
z^dIKKGU?fvM<x=>)qO8AoUrXX-yBE%FiH|v#&V$*`|6+d5KAqt`}8lz+QlLEv(~DO
z6N85WgrEtsK|iCw<hZ>H+4-`~ag`?sl#0e}R*Z6yJ4)^<xjqZKai=ewZT8#w#tVWl
z?zK<51AC*-S<*h;IjGODuKLWjIM;aws@f7CxW3~|)mm-zw(@<NlEcP696DzX^gB<6
zbH8&e$bsiKp3}&KW5HOIK*62K<v$CV`4UN0KKjwxG{2VDjIJMF2lhyXqm8;>u5TFQ
z*6QML+St00qI*xd?n&EqT*1d12lkJr+j;+-kGWQn+g@C7Mr*CUc=_VX=Pzttda)T_
z66?a}>3ihE=vn0B)|GqWbH@iH_DlN*+l;(@-+SJ1q!;-xD)#da#<8`^HWy|e0Mzp=
zpZcTJ;rKA>7Wr@#kI1L~&~-RIoQ;coIEqK)Q-3@=93MvRA|J%fz4N&_#P>&e?L^yR
zr;Z=2+wF~m;)gSMk&m<E;+gU7=DNhs&EaHgzxa{$xz|x!+9IdZ2XW#`v&f0DNnc}c
zl=X*eI1}$&zZ^fDIa{lCbBV^XL&#o%FP3_zsban2Dn~sULu!mC{dXW&VIfN^>$&xb
z@||4CpQV|9Ph2r$d!7B)t@Q)f2|h_K`V@SH57&I|*N)e|dsUc(!(OKjHuj~CwJhP0
z_<*&FPa}&Q+}Y5@8lSNp4~aFlxks$AZLD*xSH5}uh39D*iFxeHKs2k<?yDpzOrb#X
zW^rD|lm37QZk)d6Z|rOx&eCODW-U$Q32W0fY~kERhKv2+a~W-meL2tLWH(KMa+14G
zePV;bvRp&Hltfm|eYSpGpI=(vGu>~!rSP999oem4&M`UTarRVxkTV{2;gp6UM8Q^Y
zZ=5gJ@CthrZ|!lsb+%f+LmfFQObWyyEm>Q%->~JQfS?wq|Njh~bCegkG4DU#t5LS}
z+rPb2<zd{scOf&e4938o=V1=RFD){k<!Fba;B>C%)NMbfJMtfmHZqV{hVNgR98+6}
z1&~<A@su4Ny4V`d;&d{M+yL%vt13i8NZOX{KFFgjeR)|hj*^1K@xKeowguMZUb!rJ
zM6JDj;(Q65<sC2U!7ob~AKYvm>gYEi`Js+?KhM3P^cBcIQu-;#beprs_s3j0oPM#A
zoqiqqw!*&+nFJjEDr6?=u(LF|aJGN_@=NE=_piKk<>HlV=U=|`{O0*{bs4OWOVeu?
zFL(QAH_sUnE?(UfSZv^3%hKzcSFT;^U)nr(?ZP!9^4S+&wgNJ*Z@zT->dDUI^ExL{
z=hh~m{^s*n`x_e@9W&RS+L$Y6&YWQ_$DMv+yz6m$kin3caFS+084r@k%s&EUK^~1u
zvl0x4{8N(8XQaZc6!Gg(B^Oa12T9x5J6^(w-mUKICdJ!_$<W{%V!xOcSv0otWHgez
z$=KjAt)ES9Mmh7SprxoJYS4DRi*Foa0?S&ERG&SHa+29qng8Rd4Etb<7b3P2)~IM4
z?)rGiAMM1Yuk<t?`)DH`x&lc&p6;w=+rb$B6fwhS7Kc&4+|43`B@OlhIK{C5Er0%J
zkiv|k9T<;hQDQ&tnU%Tsthbb2e^Q&fxG?g9#2@9+Yf}<3c`)9>KUL(*i$9*G1AK&<
z+rS@y@F$?+Ml(x%!Pj8++n@YRXb_BV_&4KWxouW#8<vliC(|;Umi`!@cM7wW#S`_x
z&#c%C8Eh%;SlZ&@&}V_d+{`K=4R%xyW_bF;pk!IHYZzQ+T15R}8rVJ!rlS$MG~X>~
zRH+=EG!FC0Y?72ZA8qWFA0#(}-NHvCahtAR3cAHVkB3{$zt;Koy~EmQIu1c8dd(M?
zqbVqOk+*|iv&)|>-jVK`BpQ|dG|0E&vB~4D?OH)6que10qu43i#qK!lC-^hotd=O4
VnYaXpw5|!qB_>{w6=slS=Kthj<*xt$

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv3-psci.dtb b/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv3-psci.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..e175bf02e46c4daadcc8889d59f34d0136c7d986
GIT binary patch
literal 10835
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
STUUjn3Fcvt6>2-n)c*k~k?$Y?

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv2-psci.dtb b/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv2-psci.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..5acb139a3cc99c30314df26296bd4246b2972070
GIT binary patch
literal 7673
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

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv3-psci.dtb b/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv3-psci.dtb
new file mode 100644
index 0000000000000000000000000000000000000000..34bf8db662ccd190da6de31ab70f491b6d38c54d
GIT binary patch
literal 8140
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

literal 0
HcmV?d00001

diff --git a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
index e6778aafe8c6..cde718168f18 100644
--- a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
+++ b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
@@ -35,6 +35,7 @@ 
   DEFINE EDK2_SKIP_PEICORE=1
 !endif
 
+  DT_SUPPORT                     = FALSE
 
 !include OpenPlatformPkg/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
 
@@ -174,13 +175,8 @@ 
   gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize|36
 
 [PcdsDynamicDefault.common]
-  #
-  # The size of a dynamic PCD of the (VOID*) type can not be increased at run
-  # time from its size at build time. Set the "PcdFdtDevicePaths" PCD to a 128
-  # character "empty" string, to allow to be able to set FDT text device paths
-  # up to 128 characters long.
-  #
-  gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L"                                                                                                                                "
+  # embedded DTB to use -- default to a GICv3 Foundation model
+  gEmbeddedTokenSpaceGuid.PcdDtPlatformDefaultDtbSectionIndex|1
 
 ################################################################################
 #
@@ -262,7 +258,13 @@ 
   #
   # ACPI Support
   #
-  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
+  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf {
+!if $(DT_SUPPORT) == TRUE
+  <LibraryClasses>
+    NULL|EmbeddedPkg/Library/PlatformHasAcpiLib/PlatformHasAcpiLib.inf
+!endif
+  }
+
   MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
   OpenPlatformPkg/Platforms/ARM/VExpress/AcpiTables/AcpiTables.inf
 
@@ -316,10 +318,9 @@ 
       NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
   }
 
+!if $(DT_SUPPORT) == TRUE
   #
   # FDT installation
   #
-  EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf {
-    <LibraryClasses>
-      BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf
-  }
+  EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf
+!endif
diff --git a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
index 262515150dd9..f6a2c0e974a1 100644
--- a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
+++ b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
@@ -170,35 +170,18 @@  FvNameGuid         = 87940482-fc81-41c3-87e6-399cf85ac8a0
   # FV Filesystem
   INF MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf
 
+!if $(DT_SUPPORT) == TRUE
   #
   # FDT installation
   #
-  # The UEFI driver is at the end of the list of the driver to be dispatched
-  # after the device drivers (eg: Ethernet) to ensure we have support for them.
-  INF EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf
-
-!ifdef $(DTB_DIR)
-  #
-  # Embed flattened device tree (FDT) images for all known
-  # variants of this platform
-  #
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2) {
-    $(DTB_DIR)/fvp-base-gicv2-psci.dtb
-  }
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV2Legacy) {
-    $(DTB_DIR)/fvp-base-gicv2legacy-psci.dtb
-  }
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpBaseAEMv8x4GicV3) {
-    $(DTB_DIR)/fvp-base-gicv3-psci.dtb
-  }
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2) {
-    $(DTB_DIR)/fvp-foundation-gicv2-psci.dtb
-  }
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV2Legacy) {
-    $(DTB_DIR)/fvp-foundation-gicv2legacy-psci.dtb
-  }
-  FILE RAW = PCD (gArmVExpressTokenSpaceGuid.PcdFdtFvpFoundationGicV3) {
-    $(DTB_DIR)/fvp-foundation-gicv3-psci.dtb
+  INF EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformDxe.inf
+
+  # builtin device tree binaries -- order matches ARM_VEXPRESS_PLATFORM_ID
+  FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 {
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv2-psci.dtb
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Binary/DeviceTree/fvp-base-gicv3-psci.dtb
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv2-psci.dtb
+    SECTION RAW = OpenPlatformPkg/Platforms/ARM/Binary/DeviceTree/fvp-foundation-gicv3-psci.dtb
   }
 !endif