--- /dev/null
+/** @file\r
+ This protocol manages the legacy memory regions between 0xc0000 - 0xfffff\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Module Name: LegacyRegion.h\r
+\r
+ @par Revision Reference:\r
+ This protocol is defined in Framework for EFI Compatibility Support Module spec\r
+ Version 0.96\r
+\r
+**/\r
+\r
+#ifndef _EFI_LEGACY_REGION_H_\r
+#define _EFI_LEGACY_REGION_H_\r
+\r
+#define EFI_LEGACY_REGION_PROTOCOL_GUID \\r
+ { \\r
+ 0xfc9013a, 0x568, 0x4ba9, {0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b } \\r
+ }\r
+\r
+typedef struct _EFI_LEGACY_REGION_PROTOCOL EFI_LEGACY_REGION_PROTOCOL;\r
+\r
+/**\r
+ Sets hardware to decode or not decode a region.\r
+\r
+ @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
+ @param Start Start of region to decode.\r
+ @param Length Size in bytes of the region.\r
+ @param On Decode/nondecode flag.\r
+\r
+ @retval EFI_SUCCESS Decode range successfully changed.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_LEGACY_REGION_DECODE) (\r
+ IN EFI_LEGACY_REGION_PROTOCOL *This,\r
+ IN UINT32 Start,\r
+ IN UINT32 Length,\r
+ IN BOOLEAN *On\r
+ );\r
+\r
+/**\r
+ Sets a region to read only.\r
+\r
+ @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
+ @param Start Start of region to lock.\r
+ @param Length Size in bytes of the region.\r
+ @param Granularity Lock attribute affects this granularity in bytes.\r
+\r
+ @retval EFI_SUCCESS The region was made read only.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_LEGACY_REGION_LOCK) (\r
+ IN EFI_LEGACY_REGION_PROTOCOL *This,\r
+ IN UINT32 Start,\r
+ IN UINT32 Length,\r
+ OUT UINT32 *Granularity OPTIONAL\r
+ );\r
+\r
+/**\r
+ Sets a region to read only and ensures that flash is locked from being \r
+ inadvertently modified.\r
+\r
+ @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
+ @param Start Start of region to lock.\r
+ @param Length Size in bytes of the region.\r
+ @param Granularity Lock attribute affects this granularity in bytes.\r
+\r
+ @retval EFI_SUCCESS The region was made read only and flash is locked.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_LEGACY_REGION_BOOT_LOCK) (\r
+ IN EFI_LEGACY_REGION_PROTOCOL *This,\r
+ IN UINT32 Start,\r
+ IN UINT32 Length,\r
+ OUT UINT32 *Granularity OPTIONAL\r
+ );\r
+\r
+/**\r
+ Sets a region to read-write.\r
+\r
+ @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance\r
+ @param Start Start of region to lock.\r
+ @param Length Size in bytes of the region.\r
+ @param Granularity Lock attribute affects this granularity in bytes.\r
+\r
+ @retval EFI_SUCCESS The region was successfully made read-write.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_LEGACY_REGION_UNLOCK) (\r
+ IN EFI_LEGACY_REGION_PROTOCOL *This,\r
+ IN UINT32 Start,\r
+ IN UINT32 Length,\r
+ OUT UINT32 *Granularity OPTIONAL\r
+ );\r
+\r
+/**\r
+ @par Protocol Description:\r
+ Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF \r
+ for the traditional BIOS.\r
+\r
+ @param Decode\r
+ Specifies a region for the chipset to decode\r
+\r
+ @param Lock\r
+ Makes the specified OpROM region read only or locked.\r
+\r
+ @param BootLock\r
+ Sets a region to read only and ensures tat flash is locked from \r
+ inadvertent modification.\r
+\r
+ @param Unlock\r
+ Makes the specified OpROM region read-write or unlocked. \r
+\r
+**/\r
+struct _EFI_LEGACY_REGION_PROTOCOL {\r
+ EFI_LEGACY_REGION_DECODE Decode;\r
+ EFI_LEGACY_REGION_LOCK Lock;\r
+ EFI_LEGACY_REGION_BOOT_LOCK BootLock;\r
+ EFI_LEGACY_REGION_UNLOCK UnLock;\r
+};\r
+\r
+extern EFI_GUID gEfiLegacyRegionProtocolGuid;\r
+\r
+#endif\r