+++ /dev/null
-/** @file\r
-*\r
-* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
-*\r
-* This program and the accompanying materials\r
-* are licensed and made available under the terms and conditions of the BSD License\r
-* which accompanies this distribution. The full text of the license may be found at\r
-* http://opensource.org/licenses/bsd-license.php\r
-*\r
-* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-*\r
-**/\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/IoLib.h>\r
-\r
-#include <Drivers/ArmTrustzone.h>\r
-\r
-#define TZPC_DECPROT0_STATUS_REG 0x800\r
-#define TZPC_DECPROT0_SET_REG 0x804\r
-#define TZPC_DECPROT0_CLEAR_REG 0x808\r
-\r
-#define TZASC_CONFIGURATION_REG 0x000\r
-#define TZASC_REGIONS_REG 0x100\r
-#define TZASC_REGION0_LOW_ADDRESS_REG 0x100\r
-#define TZASC_REGION0_HIGH_ADDRESS_REG 0x104\r
-#define TZASC_REGION0_ATTRIBUTES 0x108\r
-\r
-/**\r
- FIXME: Need documentation\r
-**/\r
-EFI_STATUS\r
-TZPCSetDecProtBits (\r
- IN UINTN TzpcBase,\r
- IN UINTN TzpcId,\r
- IN UINTN Bits\r
- )\r
-{\r
- if (TzpcId > TZPC_DECPROT_MAX) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_SET_REG + (TzpcId * 0x0C), Bits);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- FIXME: Need documentation\r
-**/\r
-EFI_STATUS\r
-TZPCClearDecProtBits (\r
- IN UINTN TzpcBase,\r
- IN UINTN TzpcId,\r
- IN UINTN Bits\r
- )\r
-{\r
- if (TzpcId> TZPC_DECPROT_MAX) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_CLEAR_REG + (TzpcId * 0x0C), Bits);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- FIXME: Need documentation\r
-**/\r
-UINT32\r
-TZASCGetNumRegions (\r
- IN UINTN TzascBase\r
- )\r
-{\r
- return (MmioRead32 ((UINTN)TzascBase + TZASC_CONFIGURATION_REG) & 0xF);\r
-}\r
-\r
-/**\r
- FIXME: Need documentation\r
-**/\r
-EFI_STATUS\r
-TZASCSetRegion (\r
- IN INTN TzascBase,\r
- IN UINTN RegionId,\r
- IN UINTN Enabled,\r
- IN UINTN LowAddress,\r
- IN UINTN HighAddress,\r
- IN UINTN Size,\r
- IN UINTN Security,\r
- IN UINTN SubregionDisableMask\r
- )\r
-{\r
- UINT32* Region;\r
- UINT32 RegionAttributes;\r
-\r
- if (RegionId > TZASCGetNumRegions(TzascBase)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- RegionAttributes = TZASC_REGION_ATTR_SECURITY(Security) |\r
- TZASC_REGION_ATTR_SUBREG_DISABLE(SubregionDisableMask) |\r
- TZASC_REGION_ATTR_SIZE(Size) |\r
- TZASC_REGION_ATTR_ENABLE(Enabled);\r
-\r
- Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10));\r
-\r
- MmioWrite32((UINTN)(Region), TZASC_REGION_SETUP_LO_ADDR(LowAddress));\r
- MmioWrite32((UINTN)(Region+1), HighAddress);\r
- MmioWrite32((UINTN)(Region+2), RegionAttributes);\r
-\r
- return EFI_SUCCESS;\r
-}\r