]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - ArmPlatformPkg/Include/Drivers/ArmTrustzone.h
ArmPlatformPkg/TZASC: Allow specifying subregions to be disabled
[mirror_edk2.git] / ArmPlatformPkg / Include / Drivers / ArmTrustzone.h
... / ...
CommitLineData
1/** @file\r
2*\r
3* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
4*\r
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
12*\r
13**/\r
14\r
15#ifndef __ARM_TRUSTZONE_H__\r
16#define __ARM_TRUSTZONE_H__\r
17\r
18#include <Uefi.h>\r
19\r
20// Setup TZ Protection Controller\r
21#define TZPC_DECPROT_0 0\r
22#define TZPC_DECPROT_1 1\r
23#define TZPC_DECPROT_2 2\r
24#define TZPC_DECPROT_MAX 2\r
25\r
26/**\r
27 FIXME: Need documentation\r
28**/\r
29EFI_STATUS\r
30TZPCSetDecProtBits (\r
31 IN UINTN TzpcBase,\r
32 IN UINTN TzpcId,\r
33 IN UINTN Bits\r
34 );\r
35\r
36/**\r
37 FIXME: Need documentation\r
38**/\r
39EFI_STATUS\r
40TZPCClearDecProtBits (\r
41 IN UINTN TzpcBase,\r
42 IN UINTN TzpcId,\r
43 IN UINTN Bits\r
44 );\r
45\r
46// Setup TZ Address Space Controller\r
47#define TZASC_REGION_ENABLED 1\r
48#define TZASC_REGION_DISABLED 0\r
49#define TZASC_REGION_SIZE_32KB 0xE\r
50#define TZASC_REGION_SIZE_64KB 0xF\r
51#define TZASC_REGION_SIZE_128KB 0x10\r
52#define TZASC_REGION_SIZE_256KB 0x11\r
53#define TZASC_REGION_SIZE_512KB 0x12\r
54#define TZASC_REGION_SIZE_1MB 0x13\r
55#define TZASC_REGION_SIZE_2MB 0x14\r
56#define TZASC_REGION_SIZE_4MB 0x15\r
57#define TZASC_REGION_SIZE_8MB 0x16\r
58#define TZASC_REGION_SIZE_16MB 0x17\r
59#define TZASC_REGION_SIZE_32MB 0x18\r
60#define TZASC_REGION_SIZE_64MB 0x19\r
61#define TZASC_REGION_SIZE_128MB 0x1A\r
62#define TZASC_REGION_SIZE_256MB 0x1B\r
63#define TZASC_REGION_SIZE_512MB 0x1C\r
64#define TZASC_REGION_SIZE_1GB 0x1D\r
65#define TZASC_REGION_SIZE_2GB 0x1E\r
66#define TZASC_REGION_SIZE_4GB 0x1F\r
67#define TZASC_REGION_SECURITY_SR (1 << 3)\r
68#define TZASC_REGION_SECURITY_SW (1 << 2)\r
69#define TZASC_REGION_SECURITY_SRW (TZASC_REGION_SECURITY_SR|TZASC_REGION_SECURITY_SW)\r
70#define TZASC_REGION_SECURITY_NSR (1 << 1)\r
71#define TZASC_REGION_SECURITY_NSW 1\r
72#define TZASC_REGION_SECURITY_NSRW (TZASC_REGION_SECURITY_NSR|TZASC_REGION_SECURITY_NSW)\r
73\r
74/* Some useful masks */\r
75#define TZASC_REGION_SETUP_LO_ADDR_MASK 0xFFFF8000\r
76\r
77#define TZASC_REGION_ATTR_SECURITY_MASK 0xF\r
78#define TZASC_REGION_ATTR_SUBREG_DIS_MASK 0xFF\r
79#define TZASC_REGION_ATTR_SIZE_MASK 0x3F\r
80#define TZASC_REGION_ATTR_EN_MASK 0x1\r
81\r
82#define TZASC_REGION_SETUP_LO_ADDR(x) ((x) & TZASC_REGION_SETUP_LO_ADDR_MASK)\r
83\r
84#define TZASC_REGION_ATTR_SECURITY(x) (((x) & TZASC_REGION_ATTR_SECURITY_MASK) << 28)\r
85#define TZASC_REGION_ATTR_SUBREG_DISABLE(x) \\r
86 (((x) & TZASC_REGION_ATTR_SUBREG_DIS_MASK) << 8)\r
87#define TZASC_REGION_ATTR_SIZE(x) (((x) & TZASC_REGION_ATTR_SIZE_MASK) << 1)\r
88#define TZASC_REGION_ATTR_ENABLE(x) ((x) & TZASC_REGION_ATTR_EN_MASK)\r
89\r
90/**\r
91 FIXME: Need documentation\r
92**/\r
93EFI_STATUS\r
94TZASCSetRegion (\r
95 IN INTN TzascBase,\r
96 IN UINTN RegionId,\r
97 IN UINTN Enabled,\r
98 IN UINTN LowAddress,\r
99 IN UINTN HighAddress,\r
100 IN UINTN Size,\r
101 IN UINTN Security,\r
102 IN UINTN SubregionDisableMask\r
103 );\r
104\r
105#endif\r