| /** @file | |
| Internal include file for the dummy Legacy Region 2 Protocol implementation. | |
| Copyright (c) 2009, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license 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. | |
| **/ | |
| #ifndef __DUMMY_LEGACY_REGION2_H__ | |
| #define __DUMMY_LEGACY_REGION2_H__ | |
| #include <Protocol/LegacyRegion2.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| /** | |
| Modify the hardware to allow (decode) or disallow (not decode) memory reads in a region. | |
| If the On parameter evaluates to TRUE, this function enables memory reads in the address range | |
| Start to (Start + Length - 1). | |
| If the On parameter evaluates to FALSE, this function disables memory reads in the address range | |
| Start to (Start + Length - 1). | |
| @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance. | |
| @param Start[in] The beginning of the physical address of the region whose attributes | |
| should be modified. | |
| @param Length[in] The number of bytes of memory whose attributes should be modified. | |
| The actual number of bytes modified may be greater than the number | |
| specified. | |
| @param Granularity[out] The number of bytes in the last region affected. This may be less | |
| than the total number of bytes affected if the starting address | |
| was not aligned to a region's starting address or if the length | |
| was greater than the number of bytes in the first region. | |
| @param On[in] Decode / Non-Decode flag. | |
| @retval EFI_SUCCESS The region's attributes were successfully modified. | |
| @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| LegacyRegion2Decode ( | |
| IN EFI_LEGACY_REGION2_PROTOCOL *This, | |
| IN UINT32 Start, | |
| IN UINT32 Length, | |
| OUT UINT32 *Granularity, | |
| IN BOOLEAN *On | |
| ); | |
| /** | |
| Modify the hardware to disallow memory writes in a region. | |
| This function changes the attributes of a memory range to not allow writes. | |
| @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance. | |
| @param Start[in] The beginning of the physical address of the region whose | |
| attributes should be modified. | |
| @param Length[in] The number of bytes of memory whose attributes should be modified. | |
| The actual number of bytes modified may be greater than the number | |
| specified. | |
| @param Granularity[out] The number of bytes in the last region affected. This may be less | |
| than the total number of bytes affected if the starting address was | |
| not aligned to a region's starting address or if the length was | |
| greater than the number of bytes in the first region. | |
| @retval EFI_SUCCESS The region's attributes were successfully modified. | |
| @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| LegacyRegion2Lock ( | |
| IN EFI_LEGACY_REGION2_PROTOCOL *This, | |
| IN UINT32 Start, | |
| IN UINT32 Length, | |
| OUT UINT32 *Granularity | |
| ); | |
| /** | |
| Modify the hardware to disallow memory attribute changes in a region. | |
| This function makes the attributes of a region read only. Once a region is boot-locked with this | |
| function, the read and write attributes of that region cannot be changed until a power cycle has | |
| reset the boot-lock attribute. Calls to Decode(), Lock() and Unlock() will have no effect. | |
| @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance. | |
| @param Start[in] The beginning of the physical address of the region whose | |
| attributes should be modified. | |
| @param Length[in] The number of bytes of memory whose attributes should be modified. | |
| The actual number of bytes modified may be greater than the number | |
| specified. | |
| @param Granularity[out] The number of bytes in the last region affected. This may be less | |
| than the total number of bytes affected if the starting address was | |
| not aligned to a region's starting address or if the length was | |
| greater than the number of bytes in the first region. | |
| @retval EFI_SUCCESS The region's attributes were successfully modified. | |
| @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region. | |
| @retval EFI_UNSUPPORTED The chipset does not support locking the configuration registers in | |
| a way that will not affect memory regions outside the legacy memory | |
| region. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| LegacyRegion2BootLock ( | |
| IN EFI_LEGACY_REGION2_PROTOCOL *This, | |
| IN UINT32 Start, | |
| IN UINT32 Length, | |
| OUT UINT32 *Granularity | |
| ); | |
| /** | |
| Modify the hardware to allow memory writes in a region. | |
| This function changes the attributes of a memory range to allow writes. | |
| @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance. | |
| @param Start[in] The beginning of the physical address of the region whose | |
| attributes should be modified. | |
| @param Length[in] The number of bytes of memory whose attributes should be modified. | |
| The actual number of bytes modified may be greater than the number | |
| specified. | |
| @param Granularity[out] The number of bytes in the last region affected. This may be less | |
| than the total number of bytes affected if the starting address was | |
| not aligned to a region's starting address or if the length was | |
| greater than the number of bytes in the first region. | |
| @retval EFI_SUCCESS The region's attributes were successfully modified. | |
| @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| LegacyRegion2Unlock ( | |
| IN EFI_LEGACY_REGION2_PROTOCOL *This, | |
| IN UINT32 Start, | |
| IN UINT32 Length, | |
| OUT UINT32 *Granularity | |
| ); | |
| /** | |
| Get region information for the attributes of the Legacy Region. | |
| This function is used to discover the granularity of the attributes for the memory in the legacy | |
| region. Each attribute may have a different granularity and the granularity may not be the same | |
| for all memory ranges in the legacy region. | |
| @param This[in] Indicates the EFI_LEGACY_REGION_PROTOCOL instance. | |
| @param DescriptorCount[out] The number of region descriptor entries returned in the Descriptor | |
| buffer. | |
| @param Descriptor[out] A pointer to a pointer used to return a buffer where the legacy | |
| region information is deposited. This buffer will contain a list of | |
| DescriptorCount number of region descriptors. This function will | |
| provide the memory for the buffer. | |
| @retval EFI_SUCCESS The region's attributes were successfully modified. | |
| @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| LegacyRegionGetInfo ( | |
| IN EFI_LEGACY_REGION2_PROTOCOL *This, | |
| OUT UINT32 *DescriptorCount, | |
| OUT EFI_LEGACY_REGION_DESCRIPTOR **Descriptor | |
| ); | |
| #endif |