<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
  <!--
    Filename: FrameworkPlatformDataTypes.xsd
    
    Copyright (c) 2006, Intel Corp.
    All rights reserved. This program and the accompanying materials
    are licensed and made available under the terms and conditions of the BSD License
    which may be found at http://opensource.org/licenses/bsd-license.php
    
    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
  -->
  <xs:annotation>
    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Types.</xs:documentation>
  </xs:annotation>
  <xs:include schemaLocation="NamingConvention.xsd"/>
  <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>
  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
  <xs:simpleType name="EfiFfsFileTypes">
    <xs:restriction base="UCNameType">
      <xs:enumeration value="EFI_FV_FILETYPE"/>
      <xs:enumeration value="EFI_FV_FILETYPE_ALL"/>
      <xs:enumeration value="EFI_FV_FILETYPE_RAW"/>
      <xs:enumeration value="EFI_FV_FILETYPE_FREEFORM"/>
      <xs:enumeration value="EFI_FV_FILETYPE_SECURITY_CORE"/>
      <xs:enumeration value="EFI_FV_FILETYPE_PEI_CORE"/>
      <xs:enumeration value="EFI_FV_FILETYPE_DXE_CORE"/>
      <xs:enumeration value="EFI_FV_FILETYPE_PEIM"/>
      <xs:enumeration value="EFI_FV_FILETYPE_DRIVER"/>
      <xs:enumeration value="EFI_VF_FILETYPE_COMBINED_PEIM_DRIVER"/>
      <xs:enumeration value="EFI_VF_FILETYPE_APPLICATION"/>
      <xs:enumeration value="EFI_VF_FILETYPE_FIRMWARE_VOLUME_IMAGE"/>
      <xs:enumeration value="EFI_FV_FILETYPE_FFS_PAD"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EfiFvAreaType">
    <xs:annotation>
      <xs:documentation xml:lang="en">The list of valid EFI Area Types</xs:documentation>
    </xs:annotation>
    <xs:restriction base="UCNameType">
      <xs:enumeration value="EFI_FLASH_AREA_RECOVERY_BIOS"/>
      <xs:enumeration value="EFI_FLASH_AREA_MAIN_BIOS"/>
      <xs:enumeration value="EFI_FLASH_AREA_PAL_B"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_03"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_04"/>
      <xs:enumeration value="EFI_FLASH_AREA_DMI_FRU"/>
      <xs:enumeration value="EFI_FLASH_AREA_OEM_BINARY"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_07"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_08"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_09"/>
      <xs:enumeration value="EFI_FLASH_AREA_RESERVED_0A"/>
      <xs:enumeration value="EFI_FLASH_AREA_EFI_VARIABLES"/>
      <xs:enumeration value="EFI_FLASH_AREA_MCA_LOG"/>
      <xs:enumeration value="EFI_FLASH_AREA_SMBIOS_LOG"/>
      <xs:enumeration value="EFI_FLASH_AREA_FTW_BACKUP"/>
      <xs:enumeration value="EFI_FLASH_AREA_FTW_STATE"/>
      <xs:enumeration value="EFI_FLASH_AREA_UNUSED"/>
      <xs:enumeration value="EFI_FLASH_AREA_GUID_DEFINED"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EfiFvAttributeListType">
    <xs:list itemType="EfiFvAttributeType"/>
  </xs:simpleType>
  <xs:simpleType name="EfiFvAttributeType">
    <xs:annotation>
      <xs:documentation xml:lang="en">The list of EFI_FLASH_AREA Attributes</xs:documentation>
    </xs:annotation>
    <xs:restriction base="UCNameType">
      <xs:enumeration value="EFI_FLASH_AREA_FV"/>
      <xs:enumeration value="EFI_FLASH_AREA_MEMMAPPED_FV"/>
      <xs:enumeration value="EFI_FLASH_AREA_SUBFV"/>
      <xs:enumeration value="EFI_FLASH_AREA_REQUIRED"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EfiNameGuidType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Right now, only EFI_FLASH_MAP_HOB_GUID is defined</xs:documentation>
    </xs:annotation>
    <xs:restriction base="UCNameType">
      <xs:enumeration value="EFI_FLASH_MAP_HOB_GUID"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FfsDataAlignmentType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="[0-7]{1}"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FfsNameType">
    <xs:annotation>
      <xs:documentation xml:lang="en"> This defines what an FFS Name can consist of.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z][_\-a-zA-Z0-9]*(\.)?[a-zA-Z0-9]*"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FlashSize">
    <xs:restriction base="xs:string">
      <xs:enumeration value="256KB"/>
      <xs:enumeration value="512KB"/>
      <xs:enumeration value="1MB"/>
      <xs:enumeration value="2MB"/>
      <xs:enumeration value="4MB"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FvImageTypes">
    <xs:restriction base="xs:NCName">
      <xs:enumeration value="Attributes"/>
      <xs:enumeration value="Options"/>
      <xs:enumeration value="Components"/>
      <xs:enumeration value="ImageName"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="FvSubRegionTypes">
    <xs:restriction base="UCNameType">
      <xs:enumeration value="NV_VARIABLE_STORE"/>
      <xs:enumeration value="MICROCODE"/>
      <xs:enumeration value="NV_FTW_WORKING"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ValidRegionNameListType">
    <xs:list itemType="KeywordType"/>
  </xs:simpleType>
</xs:schema>
