xref: /rk3399_ARM-atf/plat/st/common/stm32mp_common.c (revision c9d75b3cf98c7f2a78d3f916bcf9e2b3a2c55967)
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 <arch_helpers.h>
12 #include <common/debug.h>
13 #include <dt-bindings/clock/stm32mp1-clks.h>
14 #include <plat/common/platform.h>
15 
16 uintptr_t plat_get_ns_image_entrypoint(void)
17 {
18 	return BL33_BASE;
19 }
20 
21 unsigned int plat_get_syscnt_freq2(void)
22 {
23 	return read_cntfrq_el0();
24 }
25 
26 static uintptr_t boot_ctx_address;
27 
28 void stm32mp1_save_boot_ctx_address(uintptr_t address)
29 {
30 	boot_ctx_address = address;
31 }
32 
33 uintptr_t stm32mp1_get_boot_ctx_address(void)
34 {
35 	return boot_ctx_address;
36 }
37 
38 uintptr_t stm32_get_gpio_bank_base(unsigned int bank)
39 {
40 	if (bank == GPIO_BANK_Z) {
41 		return GPIOZ_BASE;
42 	}
43 
44 	assert(GPIO_BANK_A == 0 && bank <= GPIO_BANK_K);
45 
46 	return GPIOA_BASE + (bank * GPIO_BANK_OFFSET);
47 }
48 
49 unsigned long stm32_get_gpio_bank_clock(unsigned int bank)
50 {
51 	if (bank == GPIO_BANK_Z) {
52 		return GPIOZ;
53 	}
54 
55 	assert(GPIO_BANK_A == 0 && bank <= GPIO_BANK_K);
56 
57 	return GPIOA + (bank - GPIO_BANK_A);
58 }
59 
60 uint32_t stm32_get_gpio_bank_offset(unsigned int bank)
61 {
62 	if (bank == GPIO_BANK_Z) {
63 		return 0;
64 	}
65 
66 	assert(GPIO_BANK_A == 0 && bank <= GPIO_BANK_K);
67 
68 	return bank * GPIO_BANK_OFFSET;
69 }
70