]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c
ArmPlatformPkg: remove unused PL310 driver
[mirror_edk2.git] / ArmPlatformPkg / Drivers / ArmTrustZone / ArmTrustZone.c
1 /** @file
2 *
3 * Copyright (c) 2011-2012, ARM Limited. All rights reserved.
4 *
5 * 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 **/
14
15 #include <Library/BaseLib.h>
16 #include <Library/IoLib.h>
17
18 #include <Drivers/ArmTrustzone.h>
19
20 #define TZPC_DECPROT0_STATUS_REG 0x800
21 #define TZPC_DECPROT0_SET_REG 0x804
22 #define TZPC_DECPROT0_CLEAR_REG 0x808
23
24 #define TZASC_CONFIGURATION_REG 0x000
25 #define TZASC_REGIONS_REG 0x100
26 #define TZASC_REGION0_LOW_ADDRESS_REG 0x100
27 #define TZASC_REGION0_HIGH_ADDRESS_REG 0x104
28 #define TZASC_REGION0_ATTRIBUTES 0x108
29
30 /**
31 FIXME: Need documentation
32 **/
33 EFI_STATUS
34 TZPCSetDecProtBits (
35 IN UINTN TzpcBase,
36 IN UINTN TzpcId,
37 IN UINTN Bits
38 )
39 {
40 if (TzpcId > TZPC_DECPROT_MAX) {
41 return EFI_INVALID_PARAMETER;
42 }
43
44 MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_SET_REG + (TzpcId * 0x0C), Bits);
45
46 return EFI_SUCCESS;
47 }
48
49 /**
50 FIXME: Need documentation
51 **/
52 EFI_STATUS
53 TZPCClearDecProtBits (
54 IN UINTN TzpcBase,
55 IN UINTN TzpcId,
56 IN UINTN Bits
57 )
58 {
59 if (TzpcId> TZPC_DECPROT_MAX) {
60 return EFI_INVALID_PARAMETER;
61 }
62
63 MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_CLEAR_REG + (TzpcId * 0x0C), Bits);
64
65 return EFI_SUCCESS;
66 }
67
68 /**
69 FIXME: Need documentation
70 **/
71 UINT32
72 TZASCGetNumRegions (
73 IN UINTN TzascBase
74 )
75 {
76 return (MmioRead32 ((UINTN)TzascBase + TZASC_CONFIGURATION_REG) & 0xF);
77 }
78
79 /**
80 FIXME: Need documentation
81 **/
82 EFI_STATUS
83 TZASCSetRegion (
84 IN INTN TzascBase,
85 IN UINTN RegionId,
86 IN UINTN Enabled,
87 IN UINTN LowAddress,
88 IN UINTN HighAddress,
89 IN UINTN Size,
90 IN UINTN Security,
91 IN UINTN SubregionDisableMask
92 )
93 {
94 UINT32* Region;
95 UINT32 RegionAttributes;
96
97 if (RegionId > TZASCGetNumRegions(TzascBase)) {
98 return EFI_INVALID_PARAMETER;
99 }
100
101 RegionAttributes = TZASC_REGION_ATTR_SECURITY(Security) |
102 TZASC_REGION_ATTR_SUBREG_DISABLE(SubregionDisableMask) |
103 TZASC_REGION_ATTR_SIZE(Size) |
104 TZASC_REGION_ATTR_ENABLE(Enabled);
105
106 Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));
107
108 MmioWrite32((UINTN)(Region), TZASC_REGION_SETUP_LO_ADDR(LowAddress));
109 MmioWrite32((UINTN)(Region+1), HighAddress);
110 MmioWrite32((UINTN)(Region+2), RegionAttributes);
111
112 return EFI_SUCCESS;
113 }