<xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>\r
</xs:annotation>\r
<xs:include schemaLocation="NamingConvention.xsd"/>\r
+ <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
<xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
<xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
+ <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
<xs:element name="Capsule">\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element name="FlashDefinition" type="FlashData"/>\r
<xs:element name="FlashDefinitionFile" type="FileNameConvention"/>\r
</xs:choice>\r
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImages"/>\r
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="Capsules"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="Capsules"/>\r
</xs:sequence>\r
<xs:attribute name="MicrocodeFile" type="FileNameConvention" use="optional"/>\r
</xs:complexType>\r
</xs:complexType>\r
</xs:element>\r
</xs:sequence>\r
- <xs:attributeGroup ref="BlockAttributes"/>\r
+ <xs:attributeGroup ref="FlashDeviceInfoAttributes"/>\r
</xs:complexType>\r
</xs:element>\r
<xs:element name="FlashDeviceOverrideImage">\r
<xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageNames"/>\r
<xs:element minOccurs="0" maxOccurs="1" ref="FvImageOptions"/>\r
</xs:sequence>\r
- <xs:attribute name="Type" type="xs:string" use="optional"/>\r
+ <xs:attribute name="Type" type="FvImageTypes" use="optional"/>\r
</xs:complexType>\r
</xs:element>\r
<xs:element name="FvImageName">\r
<xs:attribute name="Name" type="FvRegionTypes" use="required"/>\r
</xs:complexType>\r
</xs:element>\r
- <xs:element name="FvImageNames" type="xs:string"/>\r
+ <xs:element name="FvImageNames" type="xs:NCName"/>\r
<xs:element name="FvImageOptions">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>\r
- <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>\r
+ <xs:choice>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvRegionName"/>\r
+ </xs:choice>\r
<xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImageName"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
+ <xs:element name="FvRegionName">\r
+ <xs:complexType>\r
+ <xs:simpleContent>\r
+ <xs:extension base="KeywordType">\r
+ <xs:attributeGroup ref="FvRegionNameAttributes"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element> \r
<xs:element name="ModuleSA">\r
<xs:annotation>\r
<xs:documentation xml:lang="en">This element is used to specify information in the Platform Description File.</xs:documentation>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence minOccurs="1">\r
+ <!-- DO NOT USE! REMOVE SourceFiles in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>\r
+ <!-- DO NOT USE! REMOVE Includes in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>\r
+ <!-- Libraries stays in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>\r
+ <!-- DO NOT USE! REMOVE Protocols in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
+ <!-- DO NOT USE! REMOVE Events in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
+ <!-- DO NOT USE! REMOVE Hobs in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
+ <!-- DO NOT USE! REMOVE PPIs in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>\r
+ <!-- DO NOT USE! REMOVE Variables in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>\r
+ <!-- DO NOT USE! REMOVE BootModes in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>\r
+ <!-- DO NOT USE! REMOVE SystemTables in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>\r
+ <!-- DO NOT USE! REMOVE DataHubs in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>\r
+ <!-- DO NOT USE! REMOVE Formsets in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>\r
+ <!-- DO NOT USE! REMOVE Guids in FINAL -->\r
<xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>\r
- <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
- <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations">\r
+ <xs:choice minOccurs="0">\r
+ <!-- DO NOT USE! REMOVE Externs stays in FINAL -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="Extern">\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">Only specification is allow here. We need to let this be an addtion OR, if the WORD portion exists, this entry takes precedence.</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Specification"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:choice>\r
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
+ <xs:choice>\r
+ <!-- DO NOT USE! REMOVE PcdBuildDeclarations in FINAL -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
+ <!-- PcdBuildDefinition stays in FINAL -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>\r
+ </xs:choice>\r
+ <!-- BuildOptions stays in FINAL -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>\r
</xs:sequence>\r
<xs:attributeGroup ref="MsaAttributes"/>\r
</xs:complexType>\r
<xs:complexType>\r
<xs:sequence maxOccurs="unbounded">\r
<xs:element ref="Platform"/>\r
+ <xs:element name="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
</xs:annotation>\r
<xs:complexType>\r
<xs:sequence>\r
- <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>\r
- <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>\r
- <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>\r
- <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>\r
- <xs:element minOccurs="0" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>\r
- <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>\r
+ </xs:sequence>\r
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>\r
+ </xs:choice>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
- <xs:simpleType name="EfiFvAttributeType">\r
- <xs:annotation>\r
- <xs:documentation xml:lang="en">The list of EFI_FLASH_AREA Attributes</xs:documentation>\r
- </xs:annotation>\r
- <xs:restriction base="UCNameType">\r
- <xs:enumeration value="EFI_FLASH_AREA_FV"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_MEMMAPPED_FV"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_SUBFV"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="EfiFvAreaType">\r
- <xs:annotation>\r
- <xs:documentation xml:lang="en">The list of valid EFI Area Types</xs:documentation>\r
- </xs:annotation>\r
- <xs:restriction base="UCNameType">\r
- <xs:enumeration value="EFI_FLASH_AREA_EFI_VARIABLES"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_UNUSED"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_MAIN_BIOS"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_GUID_DEFINED"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_FTW_STATE"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_FTW_BACKUP"/>\r
- <xs:enumeration value="EFI_FLASH_AREA_RECOVERY_BIOS"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="EfiNameGuidType">\r
- <xs:annotation>\r
- <xs:documentation xml:lang="en">Right now, only EFI_FLASH_MAP_HOB_GUID is defined</xs:documentation>\r
- </xs:annotation>\r
- <xs:restriction base="UCNameType">\r
- <xs:enumeration value="EFI_FLASH_MAP_HOB_GUID"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="FlashSize">\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="256KB"/>\r
- <xs:enumeration value="512KB"/>\r
- <xs:enumeration value="1MB"/>\r
- <xs:enumeration value="2MB"/>\r
- <xs:enumeration value="4MB"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="FvSubRegionTypes">\r
- <xs:restriction base="UCNameType">\r
- <xs:enumeration value="NV_VARIABLE_STORE"/>\r
- <xs:enumeration value="MICROCODE"/>\r
- <xs:enumeration value="NV_FTW_WORKING"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
+ <xs:element name="FlashDeviceDefinitions">\r
+ <xs:complexType>\r
+ <xs:annotation>\r
+ <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:sequence>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="FlashDefinitionFile" type="PathAndFilename"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="PlatformDefinitions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <!-- This is the list of ALL architectures that are supported by this Platform -->\r
+ <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+ <xs:element minOccurs="1" maxOccurs="1" name="BuildTargets" type="BuildTargetList"/>\r
+ <xs:element default="UNIFIED" name="IntermediateDirectories" type="IntermediateOutputType"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="xs:anyURI"/>\r
+ <!-- SkuInfo is only defined if Sku enabled -->\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceDefinitions"/>\r
+ <xs:element minOccurs="0" maxOccurs="1" ref="FfsFormatDeclarations"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element> \r
<xs:complexType name="Components">\r
<xs:sequence minOccurs="1" maxOccurs="unbounded">\r
<xs:element ref="ModuleSA"/>\r
<xs:element minOccurs="1" maxOccurs="1" name="NameGuid" type="EfiNameGuidType"/>\r
</xs:sequence>\r
</xs:complexType>\r
- <xs:attributeGroup name="BlockAttributes">\r
- <xs:attribute name="Name" type="BlockNameType" use="required"/>\r
- <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
- <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="FlashDeviceImageAttributes">\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="FlashDeviceImageFileAttributes">\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- <xs:attribute name="Region" type="xs:string" use="required"/>\r
- <xs:attribute name="SubRegion" type="xs:string" use="optional"/>\r
- <xs:attribute name="Optional" type="xs:boolean" use="optional"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="FlashDeviceInfoAttributes">\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
- <xs:attribute name="BaseAddress" type="HexAddressType" use="required"/>\r
- <xs:attribute name="ErasePolarity" type="ZeroOrOne" use="required"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="RawDataAttributes">\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- <xs:attribute name="Region" type="xs:string" use="required"/>\r
- <xs:attribute name="SubRegion" type="xs:string" use="required"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="RegionAttributes">\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
- <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
- <xs:attribute name="Alignment" type="HexAddressType" use="optional"/>\r
- <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
- <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
- </xs:attributeGroup>\r
- <xs:attributeGroup name="SubRegionAttributes">\r
- <xs:attribute name="CreateHob" type="xs:boolean" use="required"/>\r
- <xs:attribute name="Name" type="xs:string" use="required"/>\r
- <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
- <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
- <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
- <xs:attribute name="NameGuid" type="xs:string" use="required"/>\r
- <xs:attribute name="AreaTypeGuid" type="xs:string" use="optional"/>\r
- <xs:attribute name="FileSystemGuid" type="xs:string" use="optional"/>\r
- </xs:attributeGroup>\r
</xs:schema>\r