| // SPDX-License-Identifier: BSD-2-Clause |
| /* |
| * Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd. |
| */ |
| |
| #include <initcall.h> |
| #include <io.h> |
| #include <mm/core_memprot.h> |
| #include <platform.h> |
| #include <platform_config.h> |
| #include <stdint.h> |
| |
| int __weak platform_secure_init(void) |
| { |
| return 0; |
| } |
| |
| int __weak platform_secure_ddr_region(int rgn, paddr_t st, size_t sz) |
| { |
| MSG("Not protecting region %d: 0x%lx-0x%lx\n", rgn, st, st + sz); |
| |
| return 0; |
| } |
| |
| static TEE_Result platform_init(void) |
| { |
| int ret = 0; |
| |
| platform_secure_init(); |
| |
| /* |
| * Rockchip SoCs can protect multiple memory regions (mostly 8). |
| * Region 0 is assigned for Trusted-Firmware memory, so use |
| * regions 1 for OP-TEE memory, which leaves on all known SoCs |
| * at least 6 more regions available for other purposes. |
| */ |
| ret = platform_secure_ddr_region(1, CFG_TZDRAM_START, CFG_TZDRAM_SIZE); |
| if (ret < 0) |
| return TEE_ERROR_GENERIC; |
| |
| return TEE_SUCCESS; |
| } |
| |
| service_init(platform_init); |