1 /*
2 * Copyright (c) 2023 Institute of Parallel And Distributed Systems (IPADS), Shanghai Jiao Tong University (SJTU)
3 * Licensed under the Mulan PSL v2.
4 * You can use this software according to the terms and conditions of the Mulan PSL v2.
5 * You may obtain a copy of Mulan PSL v2 at:
6 * http://license.coscl.org.cn/MulanPSL2
7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9 * PURPOSE.
10 * See the Mulan PSL v2 for more details.
11 */
12 #include <machine.h>
13 #include <mm/mm.h>
14 #include <common/macro.h>
15 #include <common/types.h>
16 #include <arch/tools.h>
17 #include <rk_atags.h>
18
secure_ddr_region(int rgn,paddr_t st,paddr_t ed)19 static int secure_ddr_region(int rgn, paddr_t st, paddr_t ed)
20 {
21 vaddr_t fw_base = phys_to_virt(0xFE200000);
22 u32 bitmap;
23
24 put32(fw_base + rgn * 4, (st >> 17) | ((ed - 1) >> 17 << 16));
25 bitmap = get32(fw_base + 0x80);
26 bitmap |= (1U << rgn);
27 put32(fw_base + 0x80, bitmap);
28
29 return 0;
30 }
31
parse_mem_map(void * info)32 void parse_mem_map(void *info)
33 {
34 extern char img_end;
35
36 secure_ddr_region(1, get_tzdram_start(), get_tzdram_end());
37
38 physmem_map_num = 1;
39 physmem_map[0][0] = ROUND_UP((paddr_t)&img_end, PAGE_SIZE);
40 physmem_map[0][1] = ROUND_DOWN(get_tzdram_end(), PAGE_SIZE);
41 kinfo("[ChCore] physmem_map: [0x%lx, 0x%lx)\n",
42 physmem_map[0][0],
43 physmem_map[0][1]);
44
45 struct tag_tos_mem tag_tos_mem;
46 memset(&tag_tos_mem, 0, sizeof(tag_tos_mem));
47 memcpy(tag_tos_mem.tee_mem.name, "tee.mem", 8);
48 tag_tos_mem.tee_mem.phy_addr = get_tzdram_start();
49 tag_tos_mem.tee_mem.size = get_tzdram_end() - get_tzdram_start();
50 tag_tos_mem.tee_mem.flags = 1;
51 memcpy(tag_tos_mem.drm_mem.name, "drm.mem", 8);
52 tag_tos_mem.drm_mem.phy_addr = 0;
53 tag_tos_mem.drm_mem.size = 0;
54 tag_tos_mem.drm_mem.flags = 0;
55 tag_tos_mem.version = 65536;
56 set_tos_mem_tag(&tag_tos_mem);
57 }
58