1 /** @file
2 
3   Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
4   This program and the accompanying materials
5   are licensed and made available under the terms and conditions of the BSD License
6   which accompanies this distribution.  The full text of the license may be found at
7   http://opensource.org/licenses/bsd-license.php.
8 
9   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 **/
13 
14 #ifndef _CACHE_LIB_H_
15 #define _CACHE_LIB_H_
16 
17 //
18 // EFI_MEMORY_CACHE_TYPE
19 //
20 typedef INT32 EFI_MEMORY_CACHE_TYPE;
21 
22 #define EFI_CACHE_UNCACHEABLE                 0
23 #define EFI_CACHE_WRITECOMBINING              1
24 #define EFI_CACHE_WRITETHROUGH                4
25 #define EFI_CACHE_WRITEPROTECTED              5
26 #define EFI_CACHE_WRITEBACK                   6
27 
28 /**
29  Reset all the MTRRs to a known state.
30 
31   @retval  EFI_SUCCESS All MTRRs have been reset successfully.
32 
33 **/
34 EFI_STATUS
35 EFIAPI
36 ResetCacheAttributes (
37   VOID
38   );
39 
40 /**
41   Given the memory range and cache type, programs the MTRRs.
42 
43   @param[in] MemoryAddress           Base Address of Memory to program MTRR.
44   @param[in] MemoryLength            Length of Memory to program MTRR.
45   @param[in] MemoryCacheType         Cache Type.
46 
47   @retval EFI_SUCCESS            Mtrr are set successfully.
48   @retval EFI_LOAD_ERROR         No empty MTRRs to use.
49   @retval EFI_INVALID_PARAMETER  The input parameter is not valid.
50   @retval others                 An error occurs when setting MTTR.
51 
52 **/
53 EFI_STATUS
54 EFIAPI
55 SetCacheAttributes (
56   IN  EFI_PHYSICAL_ADDRESS      MemoryAddress,
57   IN  UINT64                    MemoryLength,
58   IN  EFI_MEMORY_CACHE_TYPE     MemoryCacheType
59   );
60 
61 #endif
62 
63