xref: /rk3399_ARM-atf/plat/st/stm32mp1/stm32mp1_private.c (revision fc3c382f2ccb910554d0608a7db67c3fbefca4f7)
1 /*
2  * Copyright (c) 2015-2019, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <assert.h>
8 
9 #include <platform_def.h>
10 
11 #include <lib/xlat_tables/xlat_tables_v2.h>
12 
13 #define MAP_SRAM	MAP_REGION_FLAT(STM32MP_SYSRAM_BASE, \
14 					STM32MP_SYSRAM_SIZE, \
15 					MT_MEMORY | \
16 					MT_RW | \
17 					MT_SECURE | \
18 					MT_EXECUTE_NEVER)
19 
20 #define MAP_DEVICE1	MAP_REGION_FLAT(STM32MP1_DEVICE1_BASE, \
21 					STM32MP1_DEVICE1_SIZE, \
22 					MT_DEVICE | \
23 					MT_RW | \
24 					MT_SECURE | \
25 					MT_EXECUTE_NEVER)
26 
27 #define MAP_DEVICE2	MAP_REGION_FLAT(STM32MP1_DEVICE2_BASE, \
28 					STM32MP1_DEVICE2_SIZE, \
29 					MT_DEVICE | \
30 					MT_RW | \
31 					MT_SECURE | \
32 					MT_EXECUTE_NEVER)
33 
34 #if defined(IMAGE_BL2)
35 static const mmap_region_t stm32mp1_mmap[] = {
36 	MAP_SRAM,
37 	MAP_DEVICE1,
38 	MAP_DEVICE2,
39 	{0}
40 };
41 #endif
42 #if defined(IMAGE_BL32)
43 static const mmap_region_t stm32mp1_mmap[] = {
44 	MAP_SRAM,
45 	MAP_DEVICE1,
46 	MAP_DEVICE2,
47 	{0}
48 };
49 #endif
50 
51 void configure_mmu(void)
52 {
53 	mmap_add(stm32mp1_mmap);
54 	init_xlat_tables();
55 
56 	enable_mmu_svc_mon(0);
57 }
58 
59 unsigned long stm32_get_gpio_bank_clock(unsigned int bank)
60 {
61 	if (bank == GPIO_BANK_Z) {
62 		return GPIOZ;
63 	}
64 
65 	assert(GPIO_BANK_A == 0 && bank <= GPIO_BANK_K);
66 
67 	return GPIOA + (bank - GPIO_BANK_A);
68 }
69