+++ /dev/null
-/** @file\r
-The header file legacy region initialization in QNC DXE component.\r
-\r
-Copyright (c) 2013-2015 Intel Corporation.\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _LEGACY_REGION_H_\r
-#define _LEGACY_REGION_H_\r
-#include "CommonHeader.h"\r
-\r
-#include <IndustryStandard/Pci.h>\r
-\r
-#define LEGACY_REGION_INSTANCE_SIGNATURE SIGNATURE_32('R','E','G','N')\r
-\r
-typedef struct {\r
- UINT32 Signature;\r
-\r
- EFI_HANDLE Handle;\r
- EFI_LEGACY_REGION2_PROTOCOL LegacyRegion2;\r
- EFI_HANDLE ImageHandle;\r
-\r
- //\r
- // Protocol for PAM register access\r
- //\r
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
-} LEGACY_REGION_INSTANCE;\r
-\r
-#define LEGACY_REGION_INSTANCE_FROM_THIS(this) \\r
- CR(this, LEGACY_REGION_INSTANCE, LegacyRegion2, LEGACY_REGION_INSTANCE_SIGNATURE)\r
-\r
-\r
-EFI_STATUS\r
-LegacyRegionManipluateRegion (\r
- IN LEGACY_REGION_INSTANCE *Private\r
- );\r
-\r
-EFI_STATUS\r
-LegacyRegionInit (\r
- VOID\r
- );\r
-\r
-/**\r
- Modify the hardware to allow (decode) or disallow (not decode) memory reads in a region.\r
-\r
- If the On parameter evaluates to TRUE, this function enables memory reads in the address range\r
- Start to (Start + Length - 1).\r
- If the On parameter evaluates to FALSE, this function disables memory reads in the address range\r
- Start to (Start + Length - 1).\r
-\r
- @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
- @param Start[in] The beginning of the physical address of the region whose attributes\r
- should be modified.\r
- @param Length[in] The number of bytes of memory whose attributes should be modified.\r
- The actual number of bytes modified may be greater than the number\r
- specified.\r
- @param Granularity[out] The number of bytes in the last region affected. This may be less\r
- than the total number of bytes affected if the starting address\r
- was not aligned to a region's starting address or if the length\r
- was greater than the number of bytes in the first region.\r
- @param On[in] Decode / Non-Decode flag.\r
-\r
- @retval EFI_SUCCESS The region's attributes were successfully modified.\r
- @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LegacyRegion2Decode (\r
- IN EFI_LEGACY_REGION2_PROTOCOL *This,\r
- IN UINT32 Start,\r
- IN UINT32 Length,\r
- OUT UINT32 *Granularity,\r
- IN BOOLEAN *On\r
- );\r
-\r
-/**\r
- Modify the hardware to disallow memory writes in a region.\r
-\r
- This function changes the attributes of a memory range to not allow writes.\r
-\r
- @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
- @param Start[in] The beginning of the physical address of the region whose\r
- attributes should be modified.\r
- @param Length[in] The number of bytes of memory whose attributes should be modified.\r
- The actual number of bytes modified may be greater than the number\r
- specified.\r
- @param Granularity[out] The number of bytes in the last region affected. This may be less\r
- than the total number of bytes affected if the starting address was\r
- not aligned to a region's starting address or if the length was\r
- greater than the number of bytes in the first region.\r
-\r
- @retval EFI_SUCCESS The region's attributes were successfully modified.\r
- @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LegacyRegion2Lock (\r
- IN EFI_LEGACY_REGION2_PROTOCOL *This,\r
- IN UINT32 Start,\r
- IN UINT32 Length,\r
- OUT UINT32 *Granularity\r
- );\r
-\r
-/**\r
- Modify the hardware to disallow memory attribute changes in a region.\r
-\r
- This function makes the attributes of a region read only. Once a region is boot-locked with this\r
- function, the read and write attributes of that region cannot be changed until a power cycle has\r
- reset the boot-lock attribute. Calls to Decode(), Lock() and Unlock() will have no effect.\r
-\r
- @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
- @param Start[in] The beginning of the physical address of the region whose\r
- attributes should be modified.\r
- @param Length[in] The number of bytes of memory whose attributes should be modified.\r
- The actual number of bytes modified may be greater than the number\r
- specified.\r
- @param Granularity[out] The number of bytes in the last region affected. This may be less\r
- than the total number of bytes affected if the starting address was\r
- not aligned to a region's starting address or if the length was\r
- greater than the number of bytes in the first region.\r
-\r
- @retval EFI_SUCCESS The region's attributes were successfully modified.\r
- @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.\r
- @retval EFI_UNSUPPORTED The chipset does not support locking the configuration registers in\r
- a way that will not affect memory regions outside the legacy memory\r
- region.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LegacyRegion2BootLock (\r
- IN EFI_LEGACY_REGION2_PROTOCOL *This,\r
- IN UINT32 Start,\r
- IN UINT32 Length,\r
- OUT UINT32 *Granularity\r
- );\r
-\r
-/**\r
- Modify the hardware to allow memory writes in a region.\r
-\r
- This function changes the attributes of a memory range to allow writes.\r
-\r
- @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
- @param Start[in] The beginning of the physical address of the region whose\r
- attributes should be modified.\r
- @param Length[in] The number of bytes of memory whose attributes should be modified.\r
- The actual number of bytes modified may be greater than the number\r
- specified.\r
- @param Granularity[out] The number of bytes in the last region affected. This may be less\r
- than the total number of bytes affected if the starting address was\r
- not aligned to a region's starting address or if the length was\r
- greater than the number of bytes in the first region.\r
-\r
- @retval EFI_SUCCESS The region's attributes were successfully modified.\r
- @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LegacyRegion2Unlock (\r
- IN EFI_LEGACY_REGION2_PROTOCOL *This,\r
- IN UINT32 Start,\r
- IN UINT32 Length,\r
- OUT UINT32 *Granularity\r
- );\r
-\r
-/**\r
- Get region information for the attributes of the Legacy Region.\r
-\r
- This function is used to discover the granularity of the attributes for the memory in the legacy\r
- region. Each attribute may have a different granularity and the granularity may not be the same\r
- for all memory ranges in the legacy region.\r
-\r
- @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance.\r
- @param DescriptorCount[out] The number of region descriptor entries returned in the Descriptor\r
- buffer.\r
- @param Descriptor[out] A pointer to a pointer used to return a buffer where the legacy\r
- region information is deposited. This buffer will contain a list of\r
- DescriptorCount number of region descriptors. This function will\r
- provide the memory for the buffer.\r
-\r
- @retval EFI_SUCCESS The region's attributes were successfully modified.\r
- @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-LegacyRegionGetInfo (\r
- IN EFI_LEGACY_REGION2_PROTOCOL *This,\r
- OUT UINT32 *DescriptorCount,\r
- OUT EFI_LEGACY_REGION_DESCRIPTOR **Descriptor\r
- );\r
-\r
-#endif //_QNC_LEGACY_REGION_H_\r