blob: 8562c3d56d03db8eeba1fa32bf25bf22a8547442 [file] [log] [blame]
Antonio Nino Diazae6779e2017-11-06 14:49:04 +00001/*
Mario Bălănică3a946f32023-12-01 04:30:13 +02002 * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
Antonio Nino Diazae6779e2017-11-06 14:49:04 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Andre Przywara4ea3bd32019-07-09 14:32:11 +01007#ifndef RPI_SHARED_H
8#define RPI_SHARED_H
Antonio Nino Diazae6779e2017-11-06 14:49:04 +00009
Mario Bălănicăc258e4c2023-12-01 04:59:43 +020010#include <stddef.h>
Antonio Nino Diaz4b32e622018-08-16 16:52:57 +010011#include <stdint.h>
Antonio Nino Diazae6779e2017-11-06 14:49:04 +000012
Mario Bălănicăc258e4c2023-12-01 04:59:43 +020013#include <drivers/console.h>
14
Antonio Nino Diazae6779e2017-11-06 14:49:04 +000015/*******************************************************************************
16 * Function and variable prototypes
17 ******************************************************************************/
18
Mario Bălănicăc258e4c2023-12-01 04:59:43 +020019/* Serial console functions */
Andre Przywara57ccecc2020-03-10 12:33:16 +000020void rpi3_console_init(void);
Mario Bălănicăc258e4c2023-12-01 04:59:43 +020021int rpi3_register_used_uart(console_t *console);
22
23/* Utility functions */
Antonio Nino Diazae6779e2017-11-06 14:49:04 +000024void rpi3_setup_page_tables(uintptr_t total_base, size_t total_size,
25 uintptr_t code_start, uintptr_t code_limit,
26 uintptr_t rodata_start, uintptr_t rodata_limit
27#if USE_COHERENT_MEM
28 , uintptr_t coh_start, uintptr_t coh_limit
29#endif
30 );
31
Mario Bălănică3a946f32023-12-01 04:30:13 +020032uintptr_t rpi4_get_dtb_address(void);
33
Antonio Nino Diazae6779e2017-11-06 14:49:04 +000034/* Optional functions required in the Raspberry Pi 3 port */
35unsigned int plat_rpi3_calc_core_pos(u_register_t mpidr);
36
37/* BL2 utility functions */
38uint32_t rpi3_get_spsr_for_bl32_entry(void);
39uint32_t rpi3_get_spsr_for_bl33_entry(void);
40
41/* IO storage utility functions */
42void plat_rpi3_io_setup(void);
43
Antonio Nino Diazecf34712018-07-12 13:38:53 +010044/* VideoCore firmware commands */
45int rpi3_vc_hardware_get_board_revision(uint32_t *revision);
46
Andre Przywara98e48562020-03-12 14:20:04 +000047int plat_rpi_get_model(void);
48
Mario Bălănică3a946f32023-12-01 04:30:13 +020049/*******************************************************************************
50 * Platform implemented functions
51 ******************************************************************************/
52
53void plat_rpi_bl31_custom_setup(void);
54
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000055#endif /* RPI3_PRIVATE_H */