xref: /optee_os/core/arch/arm/plat-rockchip/platform.c (revision bce2f88ab347b28f4149dacef2ad48ac67a500b6)
11bb92983SJerome Forissier // SPDX-License-Identifier: BSD-2-Clause
27176a0b4SJoseph Chen /*
37176a0b4SJoseph Chen  * Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd.
47176a0b4SJoseph Chen  */
57176a0b4SJoseph Chen 
67176a0b4SJoseph Chen #include <initcall.h>
77176a0b4SJoseph Chen #include <io.h>
87176a0b4SJoseph Chen #include <mm/core_memprot.h>
96b358e40SHeiko Stuebner #include <platform.h>
107176a0b4SJoseph Chen #include <platform_config.h>
117176a0b4SJoseph Chen #include <stdint.h>
127176a0b4SJoseph Chen 
platform_secure_init(void)136b358e40SHeiko Stuebner int __weak platform_secure_init(void)
146b358e40SHeiko Stuebner {
156b358e40SHeiko Stuebner 	return 0;
166b358e40SHeiko Stuebner }
177176a0b4SJoseph Chen 
platform_secure_ddr_region(int rgn __maybe_unused,paddr_t st __maybe_unused,size_t sz __maybe_unused)188bdc52f7SHeiko Stuebner int __weak platform_secure_ddr_region(int rgn __maybe_unused,
198bdc52f7SHeiko Stuebner 				      paddr_t st __maybe_unused,
208bdc52f7SHeiko Stuebner 				      size_t sz __maybe_unused)
216b358e40SHeiko Stuebner {
22*bce2f88aSVincent Mailhol 	MSG("Not protecting region %d: 0x%lx-0x%lx", rgn, st, st + sz);
23a557db0aSHeiko Stuebner 
246b358e40SHeiko Stuebner 	return 0;
256b358e40SHeiko Stuebner }
267176a0b4SJoseph Chen 
platform_init(void)277176a0b4SJoseph Chen static TEE_Result platform_init(void)
287176a0b4SJoseph Chen {
296b358e40SHeiko Stuebner 	int ret = 0;
307176a0b4SJoseph Chen 
316b358e40SHeiko Stuebner 	platform_secure_init();
327176a0b4SJoseph Chen 
336b358e40SHeiko Stuebner 	/*
346b358e40SHeiko Stuebner 	 * Rockchip SoCs can protect multiple memory regions (mostly 8).
356b358e40SHeiko Stuebner 	 * Region 0 is assigned for Trusted-Firmware memory, so use
366b358e40SHeiko Stuebner 	 * regions 1 for OP-TEE memory, which leaves on all known SoCs
376b358e40SHeiko Stuebner 	 * at least 6 more regions available for other purposes.
386b358e40SHeiko Stuebner 	 */
396b358e40SHeiko Stuebner 	ret = platform_secure_ddr_region(1, CFG_TZDRAM_START, CFG_TZDRAM_SIZE);
406b358e40SHeiko Stuebner 	if (ret < 0)
416b358e40SHeiko Stuebner 		return TEE_ERROR_GENERIC;
427176a0b4SJoseph Chen 
437176a0b4SJoseph Chen 	return TEE_SUCCESS;
447176a0b4SJoseph Chen }
457176a0b4SJoseph Chen 
467176a0b4SJoseph Chen service_init(platform_init);
47