1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd.
4  */
5 
6 #include <initcall.h>
7 #include <io.h>
8 #include <mm/core_memprot.h>
9 #include <platform.h>
10 #include <platform_config.h>
11 #include <stdint.h>
12 
platform_secure_init(void)13 int __weak platform_secure_init(void)
14 {
15 	return 0;
16 }
17 
platform_secure_ddr_region(int rgn __maybe_unused,paddr_t st __maybe_unused,size_t sz __maybe_unused)18 int __weak platform_secure_ddr_region(int rgn __maybe_unused,
19 				      paddr_t st __maybe_unused,
20 				      size_t sz __maybe_unused)
21 {
22 	MSG("Not protecting region %d: 0x%lx-0x%lx\n", rgn, st, st + sz);
23 
24 	return 0;
25 }
26 
platform_init(void)27 static TEE_Result platform_init(void)
28 {
29 	int ret = 0;
30 
31 	platform_secure_init();
32 
33 	/*
34 	 * Rockchip SoCs can protect multiple memory regions (mostly 8).
35 	 * Region 0 is assigned for Trusted-Firmware memory, so use
36 	 * regions 1 for OP-TEE memory, which leaves on all known SoCs
37 	 * at least 6 more regions available for other purposes.
38 	 */
39 	ret = platform_secure_ddr_region(1, CFG_TZDRAM_START, CFG_TZDRAM_SIZE);
40 	if (ret < 0)
41 		return TEE_ERROR_GENERIC;
42 
43 	return TEE_SUCCESS;
44 }
45 
46 service_init(platform_init);
47