]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c
ArmPlatformPkg: remove unused PL310 driver
[mirror_edk2.git] / ArmPlatformPkg / Drivers / ArmTrustZone / ArmTrustZone.c
CommitLineData
1bfda055 1/** @file\r
2*\r
65acd8e7 3* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
1bfda055 4*\r
3402aac7
RC
5* This program and the accompanying materials\r
6* are licensed and made available under the terms and conditions of the BSD License\r
7* which accompanies this distribution. The full text of the license may be found at\r
8* http://opensource.org/licenses/bsd-license.php\r
9*\r
10* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
1bfda055 12*\r
13**/\r
14\r
15#include <Library/BaseLib.h>\r
16#include <Library/IoLib.h>\r
65acd8e7 17\r
18#include <Drivers/ArmTrustzone.h>\r
1bfda055 19\r
20#define TZPC_DECPROT0_STATUS_REG 0x800\r
21#define TZPC_DECPROT0_SET_REG 0x804\r
22#define TZPC_DECPROT0_CLEAR_REG 0x808\r
23\r
24#define TZASC_CONFIGURATION_REG 0x000\r
25#define TZASC_REGIONS_REG 0x100\r
26#define TZASC_REGION0_LOW_ADDRESS_REG 0x100\r
27#define TZASC_REGION0_HIGH_ADDRESS_REG 0x104\r
28#define TZASC_REGION0_ATTRIBUTES 0x108\r
29\r
30/**\r
31 FIXME: Need documentation\r
32**/\r
11c20f4e 33EFI_STATUS\r
34TZPCSetDecProtBits (\r
35 IN UINTN TzpcBase,\r
36 IN UINTN TzpcId,\r
37 IN UINTN Bits\r
38 )\r
39{\r
40 if (TzpcId > TZPC_DECPROT_MAX) {\r
41 return EFI_INVALID_PARAMETER;\r
42 }\r
1bfda055 43\r
11c20f4e 44 MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_SET_REG + (TzpcId * 0x0C), Bits);\r
1bfda055 45\r
11c20f4e 46 return EFI_SUCCESS;\r
1bfda055 47}\r
48\r
49/**\r
50 FIXME: Need documentation\r
51**/\r
11c20f4e 52EFI_STATUS\r
53TZPCClearDecProtBits (\r
54 IN UINTN TzpcBase,\r
55 IN UINTN TzpcId,\r
56 IN UINTN Bits\r
57 )\r
58{\r
59 if (TzpcId> TZPC_DECPROT_MAX) {\r
60 return EFI_INVALID_PARAMETER;\r
61 }\r
1bfda055 62\r
11c20f4e 63 MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_CLEAR_REG + (TzpcId * 0x0C), Bits);\r
1bfda055 64\r
11c20f4e 65 return EFI_SUCCESS;\r
1bfda055 66}\r
67\r
68/**\r
69 FIXME: Need documentation\r
70**/\r
11c20f4e 71UINT32\r
72TZASCGetNumRegions (\r
73 IN UINTN TzascBase\r
74 )\r
75{\r
76 return (MmioRead32 ((UINTN)TzascBase + TZASC_CONFIGURATION_REG) & 0xF);\r
1bfda055 77}\r
78\r
79/**\r
80 FIXME: Need documentation\r
81**/\r
11c20f4e 82EFI_STATUS\r
83TZASCSetRegion (\r
84 IN INTN TzascBase,\r
85 IN UINTN RegionId,\r
86 IN UINTN Enabled,\r
87 IN UINTN LowAddress,\r
88 IN UINTN HighAddress,\r
89 IN UINTN Size,\r
465663e9
BS
90 IN UINTN Security,\r
91 IN UINTN SubregionDisableMask\r
11c20f4e 92 )\r
93{\r
94 UINT32* Region;\r
465663e9 95 UINT32 RegionAttributes;\r
1bfda055 96\r
11c20f4e 97 if (RegionId > TZASCGetNumRegions(TzascBase)) {\r
98 return EFI_INVALID_PARAMETER;\r
99 }\r
1bfda055 100\r
465663e9
BS
101 RegionAttributes = TZASC_REGION_ATTR_SECURITY(Security) |\r
102 TZASC_REGION_ATTR_SUBREG_DISABLE(SubregionDisableMask) |\r
103 TZASC_REGION_ATTR_SIZE(Size) |\r
104 TZASC_REGION_ATTR_ENABLE(Enabled);\r
105\r
11c20f4e 106 Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));\r
1bfda055 107\r
465663e9 108 MmioWrite32((UINTN)(Region), TZASC_REGION_SETUP_LO_ADDR(LowAddress));\r
2ac288f9 109 MmioWrite32((UINTN)(Region+1), HighAddress);\r
465663e9 110 MmioWrite32((UINTN)(Region+2), RegionAttributes);\r
1bfda055 111\r
11c20f4e 112 return EFI_SUCCESS;\r
1bfda055 113}\r