1*be2fc084SPhilippe Reynes // SPDX-License-Identifier: GPL-2.0+
2*be2fc084SPhilippe Reynes /*
3*be2fc084SPhilippe Reynes  * Copyright (C) 2019 Philippe Reynes <philippe.reynes@softathome.com>
4*be2fc084SPhilippe Reynes  */
5*be2fc084SPhilippe Reynes 
6*be2fc084SPhilippe Reynes #include <common.h>
7*be2fc084SPhilippe Reynes #include <fdtdec.h>
8*be2fc084SPhilippe Reynes #include <linux/io.h>
9*be2fc084SPhilippe Reynes 
10*be2fc084SPhilippe Reynes #ifdef CONFIG_ARM64
11*be2fc084SPhilippe Reynes #include <asm/armv8/mmu.h>
12*be2fc084SPhilippe Reynes 
13*be2fc084SPhilippe Reynes static struct mm_region broadcom_bcm963158_mem_map[] = {
14*be2fc084SPhilippe Reynes 	{
15*be2fc084SPhilippe Reynes 		/* RAM */
16*be2fc084SPhilippe Reynes 		.virt = 0x00000000UL,
17*be2fc084SPhilippe Reynes 		.phys = 0x00000000UL,
18*be2fc084SPhilippe Reynes 		.size = 8UL * SZ_1G,
19*be2fc084SPhilippe Reynes 		.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
20*be2fc084SPhilippe Reynes 			 PTE_BLOCK_INNER_SHARE
21*be2fc084SPhilippe Reynes 	}, {
22*be2fc084SPhilippe Reynes 		/* SoC */
23*be2fc084SPhilippe Reynes 		.virt = 0x80000000UL,
24*be2fc084SPhilippe Reynes 		.phys = 0x80000000UL,
25*be2fc084SPhilippe Reynes 		.size = 0xff80000000UL,
26*be2fc084SPhilippe Reynes 		.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
27*be2fc084SPhilippe Reynes 			 PTE_BLOCK_NON_SHARE |
28*be2fc084SPhilippe Reynes 			 PTE_BLOCK_PXN | PTE_BLOCK_UXN
29*be2fc084SPhilippe Reynes 	}, {
30*be2fc084SPhilippe Reynes 		/* List terminator */
31*be2fc084SPhilippe Reynes 		0,
32*be2fc084SPhilippe Reynes 	}
33*be2fc084SPhilippe Reynes };
34*be2fc084SPhilippe Reynes 
35*be2fc084SPhilippe Reynes struct mm_region *mem_map = broadcom_bcm963158_mem_map;
36*be2fc084SPhilippe Reynes #endif
37*be2fc084SPhilippe Reynes 
board_init(void)38*be2fc084SPhilippe Reynes int board_init(void)
39*be2fc084SPhilippe Reynes {
40*be2fc084SPhilippe Reynes 	return 0;
41*be2fc084SPhilippe Reynes }
42*be2fc084SPhilippe Reynes 
dram_init(void)43*be2fc084SPhilippe Reynes int dram_init(void)
44*be2fc084SPhilippe Reynes {
45*be2fc084SPhilippe Reynes 	if (fdtdec_setup_mem_size_base() != 0)
46*be2fc084SPhilippe Reynes 		printf("fdtdec_setup_mem_size_base() has failed\n");
47*be2fc084SPhilippe Reynes 
48*be2fc084SPhilippe Reynes 	return 0;
49*be2fc084SPhilippe Reynes }
50*be2fc084SPhilippe Reynes 
dram_init_banksize(void)51*be2fc084SPhilippe Reynes int dram_init_banksize(void)
52*be2fc084SPhilippe Reynes {
53*be2fc084SPhilippe Reynes 	fdtdec_setup_memory_banksize();
54*be2fc084SPhilippe Reynes 
55*be2fc084SPhilippe Reynes 	return 0;
56*be2fc084SPhilippe Reynes }
57*be2fc084SPhilippe Reynes 
print_cpuinfo(void)58*be2fc084SPhilippe Reynes int print_cpuinfo(void)
59*be2fc084SPhilippe Reynes {
60*be2fc084SPhilippe Reynes 	return 0;
61*be2fc084SPhilippe Reynes }
62