]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Protocol/LegacyRegion.h
Minor code enhancement.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Protocol / LegacyRegion.h
1 /** @file
2 This protocol manages the legacy memory regions between 0xc0000 - 0xfffff
3
4 Copyright (c) 2007 - 2009, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 @par Revision Reference:
14 This protocol is defined in Framework for EFI Compatibility Support Module spec
15 Version 0.97.
16
17 **/
18
19 #ifndef _EFI_LEGACY_REGION_H_
20 #define _EFI_LEGACY_REGION_H_
21
22
23 #define EFI_LEGACY_REGION_PROTOCOL_GUID \
24 { \
25 0xfc9013a, 0x568, 0x4ba9, {0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b } \
26 }
27
28 typedef struct _EFI_LEGACY_REGION_PROTOCOL EFI_LEGACY_REGION_PROTOCOL;
29
30 /**
31 Sets hardware to decode or not decode a region.
32
33 @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance
34 @param Start Start of region to decode.
35 @param Length Size in bytes of the region.
36 @param On Decode/nondecode flag.
37
38 @retval EFI_SUCCESS Decode range successfully changed.
39
40 **/
41 typedef
42 EFI_STATUS
43 (EFIAPI *EFI_LEGACY_REGION_DECODE)(
44 IN EFI_LEGACY_REGION_PROTOCOL *This,
45 IN UINT32 Start,
46 IN UINT32 Length,
47 IN BOOLEAN *On
48 );
49
50 /**
51 Sets a region to read only.
52
53 @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance
54 @param Start Start of region to lock.
55 @param Length Size in bytes of the region.
56 @param Granularity Lock attribute affects this granularity in bytes.
57
58 @retval EFI_SUCCESS The region was made read only.
59
60 **/
61 typedef
62 EFI_STATUS
63 (EFIAPI *EFI_LEGACY_REGION_LOCK)(
64 IN EFI_LEGACY_REGION_PROTOCOL *This,
65 IN UINT32 Start,
66 IN UINT32 Length,
67 OUT UINT32 *Granularity OPTIONAL
68 );
69
70 /**
71 Sets a region to read only and ensures that flash is locked from being
72 inadvertently modified.
73
74 @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance
75 @param Start Start of region to lock.
76 @param Length Size in bytes of the region.
77 @param Granularity Lock attribute affects this granularity in bytes.
78
79 @retval EFI_SUCCESS The region was made read only and flash is locked.
80
81 **/
82 typedef
83 EFI_STATUS
84 (EFIAPI *EFI_LEGACY_REGION_BOOT_LOCK)(
85 IN EFI_LEGACY_REGION_PROTOCOL *This,
86 IN UINT32 Start,
87 IN UINT32 Length,
88 OUT UINT32 *Granularity OPTIONAL
89 );
90
91 /**
92 Sets a region to read-write.
93
94 @param This Indicates the EFI_LEGACY_REGION_PROTOCOL instance
95 @param Start Start of region to lock.
96 @param Length Size in bytes of the region.
97 @param Granularity Lock attribute affects this granularity in bytes.
98
99 @retval EFI_SUCCESS The region was successfully made read-write.
100
101 **/
102 typedef
103 EFI_STATUS
104 (EFIAPI *EFI_LEGACY_REGION_UNLOCK)(
105 IN EFI_LEGACY_REGION_PROTOCOL *This,
106 IN UINT32 Start,
107 IN UINT32 Length,
108 OUT UINT32 *Granularity OPTIONAL
109 );
110
111 /**
112 Abstracts the hardware control of the physical address region 0xC0000-C0xFFFFF
113 for the traditional BIOS.
114 **/
115 struct _EFI_LEGACY_REGION_PROTOCOL {
116 EFI_LEGACY_REGION_DECODE Decode; ///< Specifies a region for the chipset to decode
117 EFI_LEGACY_REGION_LOCK Lock; ///< Makes the specified OpROM region read only or locked.
118 EFI_LEGACY_REGION_BOOT_LOCK BootLock; ///< Sets a region to read only and ensures tat flash is locked from
119 ///< inadvertent modification.
120 EFI_LEGACY_REGION_UNLOCK UnLock; ///< Makes the specified OpROM region read-write or unlocked.
121 };
122
123 extern EFI_GUID gEfiLegacyRegionProtocolGuid;
124
125 #endif