summaryrefslogtreecommitdiff
path: root/Tools/XMLSchema
diff options
context:
space:
mode:
authorlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-08 23:46:59 +0000
committerlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-08 23:46:59 +0000
commitc12c6c7dc6051365bbbe0eefd123f88b58177d60 (patch)
tree55fc37d8032d3e65bc7c1de7d2f047ef83eeddaa /Tools/XMLSchema
parent2da8968bb588b2bf72501a90597b8de464394024 (diff)
downloadedk2-platforms-c12c6c7dc6051365bbbe0eefd123f88b58177d60.tar.xz
Intermediate Check-in This is not the final version of the XML Transition Schema - what is here works. More will come later.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@445 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/XMLSchema')
-rw-r--r--Tools/XMLSchema/FrameworkDataAttributes.xsd62
-rw-r--r--Tools/XMLSchema/FrameworkDataElements.xsd112
-rw-r--r--Tools/XMLSchema/FrameworkDataTypes.xsd888
-rw-r--r--Tools/XMLSchema/FrameworkHeaders.xsd28
-rw-r--r--Tools/XMLSchema/SurfaceArea.xsd21
5 files changed, 283 insertions, 828 deletions
diff --git a/Tools/XMLSchema/FrameworkDataAttributes.xsd b/Tools/XMLSchema/FrameworkDataAttributes.xsd
index 4ed390e4b7..eb82e73da6 100644
--- a/Tools/XMLSchema/FrameworkDataAttributes.xsd
+++ b/Tools/XMLSchema/FrameworkDataAttributes.xsd
@@ -23,7 +23,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="BootModeAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="BootModeName" type="BootModeNames" use="required"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -38,7 +38,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="DataHubAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -51,7 +51,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="EventAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="EventGroup" type="EventTypes" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
@@ -62,7 +62,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="ExternAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -72,7 +72,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="FilenameAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<!-- LAH Does a Filename need to have FeatureFlag Attribute? -->
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
@@ -86,7 +86,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="FormsetAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -96,7 +96,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="GuidAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Usage" type="GuidUsage" use="optional"/>
@@ -105,7 +105,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="HobAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -115,9 +115,10 @@
<!-- DO NOT USE remove OverrideID from use -->
<xs:attribute name="OverrideID" type="xs:int" use="optional"/>
</xs:attributeGroup>
+ <!-- DO NOT USE remove IncludeAttributes from use -->
<xs:attributeGroup name="IncludeAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="Class" type="BaseNameConvention" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<!-- LAH Does a Include need to have FeatureFlag Attribute? -->
@@ -129,10 +130,20 @@
<!-- DO NOT USE remove OverrideID from use -->
<xs:attribute name="OverrideID" type="xs:int" use="optional"/>
</xs:attributeGroup>
+ <xs:attributeGroup name="IncludeHeaderAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="IndustryStdHeaderAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>
+ </xs:attributeGroup>
<xs:attributeGroup name="LibraryAttributes">
<!-- LibraryAttributes is used for Libraries -> Library elements in FPD files -->
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<!-- LAH Does a LibraryInstance need to have FeatureFlag Attribute? -->
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
@@ -159,7 +170,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="LibraryClassAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>
<xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
@@ -184,7 +195,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="MsaAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="BuildSequence" type="xs:int" use="optional"/>
<xs:attribute name="FvBinding" type="xs:string" use="optional"/>
<xs:attribute name="ModuleName" type="xs:NCName" use="optional"/>
@@ -194,7 +205,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="OptionAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="BuildTarget" type="BuildTargets" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<!-- LAH Does an Option need to have FeatureFlag Attribute? -->
@@ -207,7 +218,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="PackageAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="PackageGuid" type="GuidType" use="optional"/>
<xs:attribute name="PackageType" type="PackageType" use="optional"/>
<xs:attribute name="PackageVersion" type="xs:string" use="optional"/>
@@ -217,7 +228,7 @@
<!-- PackageNameAttributres are only used in the Package Dependencies section of an SPD file. -->
<xs:attributeGroup name="PackageNameAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<!-- DO NOT USE remove Guid and start using PackageGuid instead -->
<xs:attribute name="Guid" type="GuidType" use="optional"/>
<xs:attribute name="PackageGuid" type="GuidType" use="optional"/>
@@ -234,7 +245,7 @@
<xs:documentation xml:lang="en">Only NON FEATURE_FLAG PCDS should have the FeatureFlag attribute set.</xs:documentation>
</xs:annotation>
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>
@@ -242,11 +253,16 @@
<!-- DO NOT USE remove OverrideID from use -->
<xs:attribute name="OverrideID" type="xs:int" use="optional"/>
</xs:attributeGroup>
+ <xs:attributeGroup name="PcdDeclarationAttributes">
+ <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="SupModuleTypes" type="ModuleTypeList" use="optional"/>
+ </xs:attributeGroup>
<xs:attributeGroup name="PlatformAttributes">
<!-- DO NOT USE remove AlternateName from use -->
<xs:attribute name="AlternateName" type="FileNameConvention" use="optional"/>
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<!-- DO NOT USE remove Guid from use -->
<xs:attribute name="Guid" type="GuidType" use="optional"/>
<xs:attribute name="PlatformName" type="PlatformNamingConvention" use="optional"/>
@@ -257,7 +273,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="PpiAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -267,7 +283,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="PpiNotifyAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -277,7 +293,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="ProtocolAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -287,7 +303,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="ProtocolNotifyAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
<xs:attribute name="Usage" type="ProtocolNotifyUsage" use="optional"/>
@@ -321,7 +337,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="SystemTableAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
@@ -334,7 +350,7 @@
</xs:attributeGroup>
<xs:attributeGroup name="VariableAttributes">
<xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
- <xs:attribute name="ArchType" type="ArchList" use="optional"/>
+ <xs:attribute name="ArchType" type="ArchListType" use="optional"/>
<xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
<xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
<xs:attribute name="Guid" type="GuidType" use="optional"/>
diff --git a/Tools/XMLSchema/FrameworkDataElements.xsd b/Tools/XMLSchema/FrameworkDataElements.xsd
index 65db34a324..cc9302a53b 100644
--- a/Tools/XMLSchema/FrameworkDataElements.xsd
+++ b/Tools/XMLSchema/FrameworkDataElements.xsd
@@ -472,9 +472,6 @@
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Formset">
- <xs:annotation>
- <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>
- </xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="C_Name">
@@ -586,11 +583,26 @@
</xs:complexType>
</xs:element>
<xs:element name="GuidValue" type="GuidType"/>
- <xs:element name="HelpText" type="Paragraph">
+ <xs:element name="HelpText" type="Paragraph"/>
+ <xs:element name="HiiPackages">
<xs:annotation>
- <xs:documentation xml:lang="en">This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs.</xs:documentation>
+ <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>
</xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="HiiPackage">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="FormsetAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
</xs:element>
+
<xs:element name="Hobs">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
@@ -632,7 +644,8 @@
<xs:element name="IncludeHeader">
<xs:complexType>
<xs:simpleContent>
- <xs:extension base="FileNameConvention">
+ <xs:extension base="PathAndFilename">
+ <!-- Need to use IncludeHeaderAttributes in final -->
<xs:attributeGroup ref="IncludeAttributes"/>
</xs:extension>
</xs:simpleContent>
@@ -657,11 +670,21 @@
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="IndustryStdHeaders">
+ <xs:element name="IndustryStdIncludes">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="1" maxOccurs="unbounded" ref="IncludeHeader"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IndustryStdHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Header" type="UiNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="HelpText"/>
</xs:sequence>
+ <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="InstalledDate" type="DateType"/>
@@ -713,21 +736,19 @@
</xs:simpleContent>
</xs:complexType>
</xs:element>
+ <!-- LAH This is LibraryClassDeclaration FINAL version -->
<xs:element name="LibraryClassDeclaration">
<xs:annotation>
<xs:documentation xml:lang="en">This element defines a class of library, along with the path to the Include Header for this library</xs:documentation>
</xs:annotation>
<xs:complexType>
- <xs:sequence minOccurs="0">
+ <xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="LibraryClass">
- <xs:annotation>
- <xs:documentation xml:lang="en">Used in MSA and SPD files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>
- </xs:annotation>
<xs:complexType>
<xs:simpleContent>
- <xs:extension base="BaseNameConvention">
- <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>
+ <xs:extension base="xs:NCName">
<xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="RecommendedInstanceVersion" type="xs:decimal" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
@@ -736,13 +757,11 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <!-- LAH This is LibraryClassDeclarations FINAL version -->
<xs:element name="LibraryClassDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>
- </xs:annotation>
- <xs:complexType mixed="true">
- <xs:sequence minOccurs="1" maxOccurs="unbounded">
- <xs:element ref="LibraryClassDeclaration"/>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClassDeclaration"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -853,30 +872,6 @@
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="MsaPcdDeclarations">
- <xs:annotation>
- <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence minOccurs="1">
- <xs:element maxOccurs="unbounded" name="PcdEntry">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>
- <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
- <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>
- <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
- </xs:sequence>
- <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->
- <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
<xs:element name="MsaFileList">
<xs:annotation>
<xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>
@@ -1363,7 +1358,7 @@
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
<xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>
- <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>
</xs:sequence>
<!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->
<xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
@@ -1372,19 +1367,15 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <!-- LAH This is PcdDeclarations FINAL version -->
<xs:element name="PcdDeclarations">
<xs:annotation>
<xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>
- <xs:documentation xml:lang="en">This permits entering information about a package's PCD information</xs:documentation>
+ <xs:documentation xml:lang="en">This section is for entering information about a package's PCDs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1">
<xs:element maxOccurs="unbounded" name="PcdEntry">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>
- <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>
- <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>
- </xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
@@ -1393,9 +1384,9 @@
<xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
<xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>
<xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>
- <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="HelpText"/>
</xs:sequence>
- <xs:attributeGroup ref="PcdAttributes"/>
+ <xs:attributeGroup ref="PcdDeclarationAttributes"/>
</xs:complexType>
</xs:element>
</xs:sequence>
@@ -1685,6 +1676,21 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="SkuInfo">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="UiSkuName">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="UiNameType">
+ <xs:attribute name="SkuID" type="xs:nonNegativeInteger" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
<xs:element name="Specification">
<xs:annotation>
<xs:documentation xml:lang="en">This string is used to provide the name and version of the Specification that the component conforms to.</xs:documentation>
diff --git a/Tools/XMLSchema/FrameworkDataTypes.xsd b/Tools/XMLSchema/FrameworkDataTypes.xsd
index 10bde1f703..af67ab0b19 100644
--- a/Tools/XMLSchema/FrameworkDataTypes.xsd
+++ b/Tools/XMLSchema/FrameworkDataTypes.xsd
@@ -16,107 +16,35 @@
<xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>
</xs:annotation>
<xs:include schemaLocation="NamingConvention.xsd"/>
- <xs:simpleType name="ArchList">
- <xs:annotation>
- <xs:documentation xml:lang="en">A list of one or more: IA32, X64, IPF and/or EBC</xs:documentation>
- </xs:annotation>
+ <xs:simpleType name="ArchListType">
<xs:list itemType="SupportedArchitectures"/>
</xs:simpleType>
<xs:simpleType name="BlockNameType">
- <xs:annotation>
- <xs:documentation xml:lang="en">FIRMWARE: Define a block name to be BLOCK[A-F0-9]{2}</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:pattern value="BLOCK([A-F0-9]){2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BootModeNames">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes what boot modes can be set (produced) or what boot modes can be supported, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="FULL">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="MINIMAL">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_WITH_MINIMAL_CONFIGURATION</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="NO_CHANGE">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ASSUMING_NO_CONFIGURATION_CHANGES</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DIAGNOSTICS">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_WITH_DEFAULT_SETTINGS</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="S2_RESUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ON_S2_RESUME</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="S3_RESUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ON_S3_RESUME</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="S4_RESUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ON_S4_RESUME</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="S5_RESUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ON_S5_RESUME</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="FLASH_UPDATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_ON_FLASH_UPDATE</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="RECOVERY">
- <xs:annotation>
- <xs:documentation xml:lang="en">BOOT_IN_RECOVERY_MODE</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="FULL"/>
+ <xs:enumeration value="MINIMAL"/>
+ <xs:enumeration value="NO_CHANGE"/>
+ <xs:enumeration value="DIAGNOSTICS"/>
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="S2_RESUME"/>
+ <xs:enumeration value="S3_RESUME"/>
+ <xs:enumeration value="S4_RESUME"/>
+ <xs:enumeration value="S5_RESUME"/>
+ <xs:enumeration value="FLASH_UPDATE"/>
+ <xs:enumeration value="RECOVERY"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BootModeUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Boot Mode Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Supports the Boot Mode</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Supports the Boot Mode on some execution path</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Always changes the Boot Mode</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Sometimes changes the Boot Mode</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BuildTargets">
@@ -127,9 +55,6 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ComponentExecutionPhase">
- <xs:annotation>
- <xs:documentation xml:lang="en">These are the supported EFI/Framework Execution Phases</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="MDE"/>
<xs:enumeration value="SEC"/>
@@ -145,47 +70,18 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ConditionalTarget">
- <xs:annotation>
- <xs:documentation xml:lang="en">Conditional Targets are Other FeatureFlag Identifiers</xs:documentation>
- </xs:annotation>
<xs:list itemType="C_Name"/>
</xs:simpleType>
<xs:simpleType name="DataHubUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Data Hub Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The module always consumes a data hub entry via registering a filter driver.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The module will use a data hub entry if it exists via registering a filter driver.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The module always logs data into the data hub.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The module will log data into the data hub under certain circumstances</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">DataHub is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateType">
- <xs:annotation>
- <xs:documentation xml:lang="en">Date Format is YYYY-MM-DD HH:MM (24hr time format)</xs:documentation>
- </xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]"/>
</xs:restriction>
@@ -197,9 +93,6 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DefaultValue">
- <xs:annotation>
- <xs:documentation xml:lang="en"> The DefaultValue is a union of a string and an integer. </xs:documentation>
- </xs:annotation>
<xs:union memberTypes="xs:normalizedString xs:int UnicodeString"/>
</xs:simpleType>
<xs:simpleType name="EfiSectionType">
@@ -220,9 +113,6 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EventTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Supported Event Groups, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
<xs:enumeration value="EVENT_GROUP_EXIT_BOOT_SERVICES"/>
<xs:enumeration value="EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE"/>
@@ -232,41 +122,15 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EventUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Event Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module registers a notification function and requires it to be executed for the module to fully function.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module registers a notification function and utilizes it if it's signaled.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module will always signal the event.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module will sometimes signal the event.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Event is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExecutionType">
- <xs:annotation>
- <xs:documentation xml:lang="en"> This defines the output types: Relocatable (REL,) Non-Relocatable (NREL,) Execute in Place (XIP) or Position Independent Code (PIC) </xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="REL" id="Relocatable"/>
<xs:enumeration value="NREL" id="Non-Relocatable"/>
@@ -275,88 +139,33 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternType">
- <xs:annotation>
- <xs:documentation xml:lang="en">C Identifier Name for the Extern data as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(_*\w*\W*)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Extern Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The EXTERN is always imported by the module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The EXTERN is always exported by the module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FileNameUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the FileName Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module requires a file named GUID in an FV</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will use a file named GUID in an FV if it is present</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module Always produces a file named GUID in an FV</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module sometimes produces a file named GUID in an FV</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Filename is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FormSetUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Formset Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The Formset is always registered into HII by the module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Some execution paths through the modules register forms into HII</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Formset is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FrameworkComponentTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en"> These are the EFI/Framework Component Types defined in the EFI Development Kit (EDK) Getting Started Guide </xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="APRIORI"/>
<xs:enumeration value="SEC"/>
@@ -379,10 +188,23 @@
<xs:enumeration value="CUSTOM_BUILD"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="FrameworkModuleTypes">
+ <xs:restriction base="ModuleTypeDef">
+ <xs:enumeration value="BASE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="UEFI_DRIVER"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
<xs:simpleType name="FvRegionTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en">FIRMWARE: Pre-defined Firmware Volume Region Types</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="FV_MAIN"/>
<xs:enumeration value="FV_MAIN_COMPACT"/>
@@ -396,231 +218,83 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GuidUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Guid Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module always consumes the GUID</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will consume the GUID only if the GUID is present</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will always produce the GUID</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module sometimes produces the GUID</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Guid is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="PRIVATE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HiiPackageUsage">
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HobTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en">Type of HOB that is being produced or consumed, as specified in the Module Surface Area Specification.</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="PHIT">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_HANDOFF</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="MEMORY_ALLOCATION">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_MEMORY_ALLOCATION Note: The BaseName of the GUID is also required</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="RESOURCE_DESCRIPTOR">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_RESOURCE_DESCRIPTOR</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="GUID_EXTENSION">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_GUID_EXTENSION Note: The BaseName of the GUID is also required.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="FIRMWARE_VOLUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_FV</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="CPU">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_CPU</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="POOL">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_PEI_MEMORY_POOL</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="CAPSULE_VOLUME">
- <xs:annotation>
- <xs:documentation xml:lang="en">EFI_HOB_TYPE_CV</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="PHIT"/>
+ <xs:enumeration value="MEMORY_ALLOCATION"/>
+ <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
+ <xs:enumeration value="GUID_EXTENSION"/>
+ <xs:enumeration value="FIRMWARE_VOLUME"/>
+ <xs:enumeration value="CPU"/>
+ <xs:enumeration value="POOL"/>
+ <xs:enumeration value="CAPSULE_VOLUME"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HobUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Hob Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The HOB must be present in the system</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The HOB will be used if it's present in the system</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The HOB is always produced by the module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The HOB will sometimes be produced by the module.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">HOB is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="IntList">
+ <xs:list itemType="xs:positiveInteger"/>
+ </xs:simpleType>
<xs:simpleType name="LibraryUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Library Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module always consumes the library. This Guid represents the class of the library.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
<xs:enumeration value="SOMETIMES_CONSUMED"/>
<xs:enumeration value="ALWAYS_PRODUCED"/>
<xs:enumeration value="SOMETIMES_PRODUCED"/>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the library.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Library is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="DEFAULT"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ModuleTypeDef">
- <xs:annotation>
- <xs:documentation xml:lang="en"> These are the supported Framework Module Types </xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="BASE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module only depends on things in the MDE package and is environment neutral</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SEC">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is the Security Section and depends on catching the reset vectory</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEI_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is the PEI Core</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PEIM">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a PEIM and depends on the PEI Services Table</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_CORE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is the DXE Core</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_RUNTIME_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical or virtual mode.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SAL_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical AND in virtual mode.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DXE_SMM_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module also runs in SMM mode and depends on the SMM Service Table. </xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="TOOLS">
- <xs:annotation>
- <xs:documentation xml:lang="en">The TOOLS ModuleType is to be used for Tiano Tools modules</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_DRIVER">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a UEFI Driver and depends on the EFI and Service Tables.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="UEFI_APPLICATION">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module is a UEFI Applciation and depens on the EFI and Service Tables.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="USER_DEFINED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module does not fit into other classifications. The user must have an apriori knowledge of its Usage, and must provide that information to others using this module.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="BASE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="TOOLS"/>
+ <xs:enumeration value="UEFI_DRIVER"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ <xs:enumeration value="USER_DEFINED"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="ModuleTypeList">
+ <xs:list itemType="FrameworkModuleTypes"/>
+ </xs:simpleType>
<xs:simpleType name="Module_Unified">
- <xs:annotation>
- <xs:documentation xml:lang="en">Define a flag to determine whether to put intermediate build files into a directory under the Module, or into a unified tree under the package or platform build trees</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="MODULE"/>
<xs:enumeration value="UNIFIED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PackageType">
- <xs:annotation>
- <xs:documentation xml:lang="en">Packages are either source, binary or mixed packages.</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="SOURCE"/>
<xs:enumeration value="BINARY"/>
@@ -628,25 +302,10 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PackageUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Package Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">A module always consumes a package. This GUID represents the class of the package.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the Package we are creating. This GUID represents the class of the package.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="DEFAULT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdListType">
@@ -654,27 +313,11 @@
</xs:simpleType>
<xs:simpleType name="PcdTypes">
<xs:restriction base="NameConvention">
- <xs:enumeration value="FIXED_AT_BUILD">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="FIXED_AT_BUILD"/>
<xs:enumeration value="FEATURE_FLAG"/>
- <xs:enumeration value="PATCHABLE_IN_MODULE">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DYNAMIC">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DYNAMIC_EX">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="PATCHABLE_IN_MODULE"/>
+ <xs:enumeration value="DYNAMIC"/>
+ <xs:enumeration value="DYNAMIC_EX"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdDriverTypes">
@@ -694,188 +337,63 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdFeatureFlagUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the PCD FEATURE_FLAG Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="UsageTypes">
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is tagged as the default</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="DEFAULT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdItemTypes">
<xs:restriction base="NameConvention">
- <xs:enumeration value="FEATURE_FLAG">
- <xs:annotation>
- <xs:documentation xml:lang="en">The PCD Item represents a feature flag for the module. Features can only be selected at build time. Items of type FeatureFlag are used to conditionally construct module surface area that is produced as a result of a buld.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="FIXED_AT_BUILD">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PATCHABLE_IN_MODULE">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DYNAMIC">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DYNAMIC_EX">
- <xs:annotation>
- <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. Any PCD token database is supported</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="FEATURE_FLAG"/>
+ <xs:enumeration value="FIXED_AT_BUILD"/>
+ <xs:enumeration value="PATCHABLE_IN_MODULE"/>
+ <xs:enumeration value="DYNAMIC"/>
+ <xs:enumeration value="DYNAMIC_EX"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PcdUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">The PCD Usage is only relevant to Items tagged with FeatureFlag, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The PCD entry must always be provide as the build will include the code and the associated Surface Area.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">The PCD Entry is Always included in the build code</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">"true" or "false". Indicates the default value for the PCD entry. This is used by the platform wizard to suggest values for a given platform build.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="DEFAULT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PpiNotifyUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the PPI Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will consume the PPI if it's produced. Consumption is defined by executing the PPI notify function.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PpiUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the PPI Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Ppi is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ProtocolNotifyUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the PROTOCOL Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will Consume protocol if it's produced. Consumption is defined by executing the protocol notify function.</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ProtocolUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the PROTOCOL Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="TO_START">
- <xs:annotation>
- <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="BY_START">
- <xs:annotation>
- <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Protocol is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SkuListType">
<xs:list itemType="HexByteDataType"/>
</xs:simpleType>
<xs:simpleType name="SupportedArchitectures">
- <xs:annotation>
- <xs:documentation xml:lang="en"> These are the currently Supportted Architectures type codes </xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
<xs:enumeration value="ALL"/>
<xs:enumeration value="EBC"/>
@@ -887,47 +405,18 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SystemTableUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the System Table Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module requires a GUIDed entry in the system table</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will use the GUIDed entry in the system table only if the GUID is present</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module Always produces a GUIDed entry in the system table</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module sometimes produces a GUIDed entry in the system table for some of its execution flow</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">SystemTable is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Token">
- <xs:annotation>
- <xs:documentation xml:lang="en"> The Token data is union of HexDoubleWordDataType, GuidNaming Convetion and GuidArrayType. </xs:documentation>
- </xs:annotation>
<xs:union memberTypes="GuidArrayType GuidNamingConvention HexDoubleWordDataType"/>
</xs:simpleType>
<xs:simpleType name="ToolChains">
- <xs:annotation>
- <xs:documentation xml:lang="en">Supported Tool Chains are MSFT, INTEL, GCC and CYGWIN</xs:documentation>
- </xs:annotation>
<xs:restriction base="UCNameType">
<xs:enumeration value="MSFT"/>
<xs:enumeration value="INTEL"/>
@@ -936,107 +425,45 @@
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ToothPick">
- <xs:annotation>
- <xs:documentation xml:lang="en">Describes which way the directory separator is leaning, either \ for WINDOWS or / for UNIX</xs:documentation>
- </xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="UNIX"/>
<xs:enumeration value="WINDOWS"/>
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="UiNameType">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(([a-zA-Z][a-zA-Z0-9]*)(_)*(.)*)+"/>
+ </xs:restriction>
+ </xs:simpleType>
<xs:simpleType name="UnicodeString">
- <xs:annotation>
- <xs:documentation xml:lang="en">Define how we specify unicode strings</xs:documentation>
- </xs:annotation>
<xs:restriction base="xs:normalizedString">
<xs:pattern value="L(:)?(&quot;)(\w+)*((\W*)*(\s*)*(\w*)*)*(&quot;)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="UsageTypes">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Generic Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="TO_START">
- <xs:annotation>
- <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="BY_START">
- <xs:annotation>
- <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Item is Private to the module and cannot be used by other modules</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="DEFAULT">
- <xs:annotation>
- <xs:documentation xml:lang="en">This is the default value for an Item</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="TO_START"/>
+ <xs:enumeration value="BY_START"/>
+ <xs:enumeration value="PRIVATE"/>
+ <xs:enumeration value="DEFAULT"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VariableOffsetValues">
- <xs:annotation>
- <xs:documentation xml:lang="en">Describes the available Variable Offset data types, Bytes:Bits or BitSize</xs:documentation>
- </xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="\d+(:)?\d*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VariableUsage">
- <xs:annotation>
- <xs:documentation xml:lang="en">This describes the Variable Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
- </xs:annotation>
<xs:restriction base="NameConvention">
- <xs:enumeration value="ALWAYS_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module requires the variable entry to be set</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_CONSUMED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module will use the variable entry if it's set</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="ALWAYS_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module Always will write the variable</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="SOMETIMES_PRODUCED">
- <xs:annotation>
- <xs:documentation xml:lang="en">Module sometimes writes the variable</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
- <xs:enumeration value="PRIVATE">
- <xs:annotation>
- <xs:documentation xml:lang="en">Variable is produced and consumed only by this module</xs:documentation>
- </xs:annotation>
- </xs:enumeration>
+ <xs:enumeration value="ALWAYS_CONSUMED"/>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="PRIVATE"/>
</xs:restriction>
</xs:simpleType>
<!-- Complex Data Types -->
@@ -1046,9 +473,6 @@
</xs:sequence>
</xs:complexType>
<xs:complexType name="ToolType">
- <xs:annotation>
- <xs:documentation xml:lang="en">This type is to permit adding specific tools and tool arguments for User Defined tools, into the Module Build Description file.</xs:documentation>
- </xs:annotation>
<xs:sequence>
<xs:element name="ToolName" type="xs:string"/>
<xs:element name="ToolArgs" type="xs:string"/>
diff --git a/Tools/XMLSchema/FrameworkHeaders.xsd b/Tools/XMLSchema/FrameworkHeaders.xsd
index a34d7a088f..a798526839 100644
--- a/Tools/XMLSchema/FrameworkHeaders.xsd
+++ b/Tools/XMLSchema/FrameworkHeaders.xsd
@@ -212,43 +212,49 @@
</xs:element>
<xs:element name="SpdHeader">
<xs:annotation>
- <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD) The Guid may change when the contents of the file are changed.</xs:documentation>
+ <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD)</xs:documentation>
+ <xs:documentation xml:lang="en">The Guid MUST change when the contents of the file undergo MAJOR FUNCTIONALITY changes.</xs:documentation>
+ <xs:documentation xml:lang="en">The Version MUST change when the contents of the file undergo MINOR FUNCTIONALITY changes.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="1" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageName" type="UiNameType"/>
<xs:choice minOccurs="1" maxOccurs="1">
+ <!-- DO NOT USE! Guid needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
- <!-- Guid needs to be removed -->
- <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>
<!-- GuidValue needs to be required -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>
</xs:choice>
- <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Version" type="xs:decimal"/>
<xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
<xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
<xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
<xs:element minOccurs="1" maxOccurs="1" ref="License"/>
<xs:choice minOccurs="1" maxOccurs="1">
- <xs:element minOccurs="0" maxOccurs="1" ref="Created"/>
<!-- Created needs to be removed -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Created"/>
+ <!-- CreatedDate needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="CreatedDate"/>
- <!-- CreatedDate needs to be required -->
</xs:choice>
+ <!-- E_Mail needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="E-Mail"/>
<xs:choice minOccurs="0" maxOccurs="1">
+ <!-- Updated needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
- <!-- Created needs to be removed -->
+ <!-- UpdatedDate needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="ModifiedDate"/>
- <!-- CreatedDate needs to be required -->
</xs:choice>
+ <!-- URL needs to be removed -->
<xs:element minOccurs="0" maxOccurs="1" ref="URL"/>
+ <!-- PackageType needs to be removed -->
<xs:element minOccurs="1" maxOccurs="1" ref="PackageType"/>
+ <!-- ReadOnly and RePackage remain in final -->
<xs:element minOccurs="0" maxOccurs="1" ref="ReadOnly"/>
<xs:element minOccurs="0" maxOccurs="1" ref="RePackage"/>
+ <!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 -->
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>
- <!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00090000 -->
- <xs:element minOccurs="0" maxOccurs="1" ref="OutputDirectory"/>
<!-- OutputDirectory needs to be removed -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="OutputDirectory"/>
</xs:sequence>
</xs:complexType>
</xs:element>
diff --git a/Tools/XMLSchema/SurfaceArea.xsd b/Tools/XMLSchema/SurfaceArea.xsd
index e5e0276c38..7b0c08c78f 100644
--- a/Tools/XMLSchema/SurfaceArea.xsd
+++ b/Tools/XMLSchema/SurfaceArea.xsd
@@ -23,11 +23,7 @@
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>
<xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>
- <xs:choice>
- <xs:element minOccurs="0" maxOccurs="1" ref="PlatformList"/>
- <!-- DO NOT USE! removing PlatformDescriptions, use PlatformList instead. -->
- <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDescriptions"/>
- </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PlatformList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -38,6 +34,7 @@
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>
<!-- DO NOT USE! removing TianoImage, use FrameworkModules instead. -->
<xs:element minOccurs="0" maxOccurs="1" ref="TianoImage"/>
@@ -45,6 +42,7 @@
<!-- DO NOT USE! removing PcdBuildDeclarations here, use PcdBuildDeclaratiion in ModuleSA instead. -->
<xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>
<xs:choice minOccurs="0">
+ <!-- DO NOT USE! removing PcdDynamicBuildDeclarations here, use DynamicPcdBuildDefinitions in ModuleSA instead. -->
<xs:element minOccurs="0" maxOccurs="1" ref="PcdDynamicBuildDeclarations"/>
<xs:element minOccurs="0" maxOccurs="1" ref="DynamicPcdBuildDefinitions"/>
</xs:choice>
@@ -89,6 +87,7 @@
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
<xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
@@ -141,8 +140,9 @@
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
<xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>
<xs:choice minOccurs="0">
- <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
+ <!-- DO NOT USE! removing Includes, use PackageDependencies instead -->
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
</xs:choice>
<xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
@@ -152,11 +152,13 @@
<xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
<xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
<xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <!-- DO NOT USE! removing Formsets, use HiiPackages instead -->
<xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HiiPackages"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
<xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
<xs:choice minOccurs="0">
- <!-- DO NOT USE! removing PCDs, use MsaPcdDeclarations instead -->
+ <!-- DO NOT USE! removing PCDs, use PcdCoded instead -->
<xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
<xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>
</xs:choice>
@@ -173,7 +175,8 @@
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>
<xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>
- <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdHeaders"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>
+ <!-- DO NOT USE removing PackageDependencies, this is moving to FDP installation process -->
<xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
<xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>
<xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>