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