1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
4 Filename: FrameworkPlatformDataElements.xsd
6 Copyright (c) 2006, Intel Corp.
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which may be found at http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>
18 <xs:include schemaLocation="NamingConvention.xsd"/>
19 <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>
20 <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
21 <xs:include schemaLocation="FrameworkDataElements.xsd"/>
22 <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>
23 <xs:element name="DataArray">
26 <xs:extension base="HexByteArrayType">
27 <xs:attribute name="Name" type="xs:normalizedString" use="required"/>
32 <xs:element name="DataId">
35 <xs:extension base="xs:NCName">
36 <xs:attribute name="Seq" type="xs:nonNegativeInteger" use="required"/>
37 <xs:attribute name="SubRegion" type="UCNameType" use="required"/>
38 <xs:attribute name="DataSource" type="xs:normalizedString" use="required"/>
39 <xs:attribute name="SourceType" type="xs:NCName" use="required"/>
40 <xs:attribute name="DataSize" type="HexAddressType" use="optional"/>
41 <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>
46 <xs:element name="DataRegions">
49 <xs:element minOccurs="1" maxOccurs="unbounded" name="FvDataRegion">
52 <xs:element minOccurs="1" maxOccurs="unbounded" ref="DataId"/>
53 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DataArray"/>
55 <xs:attribute name="Name" type="UCNameType" use="required"/>
61 <xs:element name="Flash">
64 <xs:element minOccurs="0" maxOccurs="1" ref="FlashDefinitionFile"/>
65 <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>
67 <xs:attribute name="MicrocodeFile" type="PathAndFilename" use="optional"/>
70 <!-- Valid Flash Definition Files that can be used for a platform The UiName and Perferred tags are optional, for use with Wizards.-->
71 <xs:element name="FlashDefinitionFile">
74 <xs:extension base="PathAndFilename">
75 <!-- Id will be required eventually. -->
76 <xs:attribute name="Id" type="KeywordType" use="optional"/>
77 <xs:attribute name="UiName" type="UiNameType" use="optional"/>
78 <xs:attribute name="Preferred" type="xs:boolean" use="optional" default="false"/>
83 <!-- For Future Use! -->
84 <!-- This describes the physical layout of the hardware device, used by tools to verify different regions fit within a given number of blocks. -->
85 <!-- An EFI Region MUST start on a block boundary. A region may span multiple blocks. -->
86 <xs:element name="FlashDevice">
89 <xs:element name="PartNumber" type="xs:NCName"/>
91 <xs:sequence minOccurs="0">
92 <!-- Use this sequence for a part with fixed block sizes -->
93 <xs:element minOccurs="1" maxOccurs="1" name="NumBlocks" type="xs:positiveInteger"/>
94 <xs:element minOccurs="1" maxOccurs="1" name="BlockSize" type="HexAddressType"/>
96 <xs:sequence minOccurs="0">
97 <!-- Use this sequence for a part with variable block sizes -->
98 <xs:element maxOccurs="unbounded" name="VariableBlockSize">
101 <xs:extension base="HexAddressType">
102 <xs:attribute name="BlockNum" type="xs:nonNegativeInteger" use="required"/>
112 <xs:element name="FlashDeviceDefinitions">
115 <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>
118 <xs:element minOccurs="1" maxOccurs="unbounded" ref="FlashDefinitionFile"/>
119 <xs:element minOccurs="1" maxOccurs="1" ref="FvImages"/>
120 <!-- DataRegions is for Future Use! -->
121 <xs:element minOccurs="0" maxOccurs="1" ref="DataRegions"/>
122 <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageBindingSequence"/>
126 <xs:element name="FrameworkModules">
128 <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>
132 <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>
136 <xs:element name="FvAttribute">
138 <xs:attribute name="Name" type="xs:NCName" use="required"/>
139 <xs:attribute name="Value" type="xs:normalizedString" use="required"/>
142 <xs:element name="FwImage">
145 <xs:element minOccurs="1" maxOccurs="1" ref="FvRegionName"/>
146 <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvOption"/>
147 <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvAttribute"/>
151 <xs:element name="FvImageBindingSequence">
154 <xs:extension base="ValidRegionNameListType">
155 <xs:attribute name="PartId" type="KeywordType" use="required"/>
156 <xs:attribute name="OutputFile" type="PathAndFilename" use="required"/>
161 <xs:element name="FvImages">
163 <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>
167 <xs:sequence minOccurs="0">
168 <!-- This is the current style -->
169 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
171 <xs:attribute name="Name" type="xs:string" use="required"/>
172 <xs:attribute name="Value" type="xs:string" use="required"/>
176 <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImage">
179 <xs:element minOccurs="1" maxOccurs="unbounded" name="FvImageNames" type="xs:NCName"/>
180 <xs:element minOccurs="0" maxOccurs="1" name="FvImageOptions">
183 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
185 <xs:attribute name="Name" type="xs:string" use="required"/>
186 <xs:attribute name="Value" type="xs:string" use="required"/>
193 <xs:attribute name="Type" type="FvImageTypes" use="optional"/>
197 <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImageName">
200 <xs:element minOccurs="1" maxOccurs="1" name="FvImageOptions">
203 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
205 <xs:attribute name="Name" type="xs:string" use="required"/>
206 <xs:attribute name="Value" type="xs:string" use="required"/>
213 <xs:attribute name="Name" type="FvRegionTypes" use="required"/>
220 <xs:element name="FvRegionName">
223 <xs:extension base="KeywordType">
224 <xs:attributeGroup ref="FvRegionNameAttributes"/>
229 <xs:element name="ModuleSA">
231 <xs:documentation xml:lang="en">This element is used to specify information in the FPD ModuleSA section.</xs:documentation>
235 <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
236 <!-- Only specification is allow here. We need to let this be an addtion OR, if the WORD portion MATCHES, this entry takes precedence.</xs:documentation -->
237 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>
238 <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>
239 <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>
240 <!-- The following BuildOptions Sections is for Legacy Ffs -->
241 <xs:element minOccurs="0" maxOccurs="1" name="BuildOptions">
244 <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>
245 <xs:element minOccurs="0" maxOccurs="1" name="ImageEntryPoint" type="C_NameType"/>
246 <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory">
249 <xs:extension base="xs:anyURI">
250 <xs:attribute default="UNIFIED" name="IntermediateDirectories" use="optional">
252 <xs:restriction base="UCNameType">
253 <xs:enumeration value="MODULE"/>
254 <xs:enumeration value="UNIFIED"/>
262 <xs:element minOccurs="0" maxOccurs="1" name="Ffs">
265 <xs:element minOccurs="0" maxOccurs="1" name="Attribute">
268 <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_NameType"/>
269 <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_NameType"/>
273 <xs:element minOccurs="0" maxOccurs="1" name="Sections">
275 <xs:sequence minOccurs="1">
276 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
279 <xs:element ref=" Filenames " minOccurs="0"/>
280 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
281 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
282 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
283 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
285 <xs:attributeGroup ref=" SectionsAttributes "/>
288 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
290 <xs:sequence minOccurs="1" maxOccurs="unbounded">
291 <xs:element name="Section">
294 <xs:element ref=" Filenames " minOccurs="0"/>
295 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
296 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
297 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
298 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
300 <xs:attributeGroup ref="SectionsAttributes"/>
304 <xs:attributeGroup ref=" SectionsAttributes "/>
308 <xs:attributeGroup ref=" SectionsAttributes "/>
314 <xs:element name="Sections">
316 <xs:sequence minOccurs="1">
317 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
320 <xs:element ref=" Filenames " minOccurs="0"/>
321 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
322 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
323 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
324 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
326 <xs:attributeGroup ref=" SectionsAttributes "/>
329 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
331 <xs:sequence minOccurs="1" maxOccurs="unbounded">
332 <xs:element name="Section">
335 <xs:element ref=" Filenames " minOccurs="0"/>
336 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
337 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
338 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
339 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
341 <xs:attributeGroup ref=" SectionsAttributes "/>
345 <xs:attributeGroup ref=" SectionsAttributes "/>
349 <xs:attributeGroup ref=" SectionsAttributes "/>
352 <xs:element name="Options">
355 <xs:element name=" Option " minOccurs="1" maxOccurs="unbounded">
358 <xs:extension base=" xs:normalizedString ">
359 <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>
360 <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>
361 <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>
362 <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>
363 <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>
364 <xs:attribute name="Platform" type=" UiNameType " use="optional"/>
373 <!-- Do not use ToolChain - it is a legacy value -->
374 <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>
375 <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>
376 <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>
377 <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>
378 <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>
379 <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>
382 <!-- The following Externs Section is for Legacy Ffs -->
383 <xs:element minOccurs="0" maxOccurs="1" name="Externs">
385 <xs:sequence minOccurs="1">
386 <xs:element name="PcdIsDriver" type=" PcdDriverTypes " minOccurs="0" maxOccurs="1"/>
387 <xs:element name="Specification" type=" Sentence " minOccurs="0" maxOccurs="unbounded"/>
388 <xs:element name="Extern" minOccurs="0" maxOccurs="unbounded">
390 <xs:choice minOccurs="1">
391 <xs:sequence minOccurs="0" maxOccurs="1">
392 <xs:element name=" ModuleEntryPoint " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
393 <xs:element name=" ModuleUnloadImage " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
395 <xs:sequence minOccurs="0" maxOccurs="1">
396 <xs:element name=" Constructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>
397 <xs:element name=" Destructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>
399 <xs:sequence minOccurs="0" maxOccurs="1">
400 <xs:element name=" DriverBinding " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
401 <xs:element name=" ComponentName " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
402 <xs:element name=" DriverConfig " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
403 <xs:element name=" DriverDiag " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
405 <xs:sequence minOccurs="0" maxOccurs="1">
406 <xs:element name=" SetVirtualAddressMapCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
407 <xs:element name=" ExitBootServicesCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
410 <xs:attributeGroup ref=" ExternAttributes "/>
417 <xs:attributeGroup ref="MsaAttributes"/>
420 <xs:element name="FvOption">
422 <xs:attribute name="Name" type="xs:NCName" use="required"/>
423 <xs:attribute name="Value" type="xs:normalizedString" use="required"/>
426 <xs:element name="PlatformList">
427 <!-- Valid for DB usage only! -->
429 <xs:documentation xml:lang="en">This is used in the FrameworkDatabase file</xs:documentation>
433 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>