xref: /rk3399_ARM-atf/plat/rpi/rpi5/include/rpi_hw.h (revision 4d884235789faf9ef422f05c45977f373b400709)
1f834b64fSMario Bălănică /*
2f834b64fSMario Bălănică  * Copyright (c) 2016-2024, Arm Limited and Contributors. All rights reserved.
3f834b64fSMario Bălănică  * Copyright (c) 2024, Mario Bălănică <mariobalanica02@gmail.com>
4f834b64fSMario Bălănică  *
5f834b64fSMario Bălănică  * SPDX-License-Identifier: BSD-3-Clause
6f834b64fSMario Bălănică  */
7f834b64fSMario Bălănică 
8f834b64fSMario Bălănică #ifndef RPI_HW_H
9f834b64fSMario Bălănică #define RPI_HW_H
10f834b64fSMario Bălănică 
11f834b64fSMario Bălănică #include <lib/utils_def.h>
12f834b64fSMario Bălănică 
13f834b64fSMario Bălănică /*
14f834b64fSMario Bălănică  * Peripherals
15f834b64fSMario Bălănică  */
16f834b64fSMario Bălănică 
17f834b64fSMario Bălănică #define RPI_IO_BASE			ULL(0x1000000000)
18f834b64fSMario Bălănică #define RPI_IO_SIZE			ULL(0x1000000000)
19f834b64fSMario Bălănică 
20f834b64fSMario Bălănică /*
21f834b64fSMario Bălănică  * ARM <-> VideoCore mailboxes
22f834b64fSMario Bălănică  */
23f834b64fSMario Bălănică #define RPI3_MBOX_BASE			(RPI_IO_BASE + ULL(0x7c013880))
24f834b64fSMario Bălănică 
25f834b64fSMario Bălănică /*
26f834b64fSMario Bălănică  * Power management, reset controller, watchdog.
27f834b64fSMario Bălănică  */
28f834b64fSMario Bălănică #define RPI3_PM_BASE			(RPI_IO_BASE + ULL(0x7d200000))
29f834b64fSMario Bălănică 
30f834b64fSMario Bălănică /*
31f834b64fSMario Bălănică  * Hardware random number generator.
32f834b64fSMario Bălănică  */
33f834b64fSMario Bălănică #define RPI3_RNG_BASE			(RPI_IO_BASE + ULL(0x7d208000))
34f834b64fSMario Bălănică 
35f834b64fSMario Bălănică /*
36f834b64fSMario Bălănică  * PL011 system serial port
37f834b64fSMario Bălănică  */
38f834b64fSMario Bălănică #define RPI4_PL011_UART_BASE		(RPI_IO_BASE + ULL(0x7d001000))
39f834b64fSMario Bălănică #define RPI4_PL011_UART_CLOCK		ULL(44000000)
40f834b64fSMario Bălănică 
41f834b64fSMario Bălănică /*
42f834b64fSMario Bălănică  * GIC interrupt controller
43f834b64fSMario Bălănică  */
44f834b64fSMario Bălănică #define RPI_HAVE_GIC
45f834b64fSMario Bălănică #define RPI4_GIC_GICD_BASE		(RPI_IO_BASE + ULL(0x7fff9000))
46f834b64fSMario Bălănică #define RPI4_GIC_GICC_BASE		(RPI_IO_BASE + ULL(0x7fffa000))
47f834b64fSMario Bălănică 
48f834b64fSMario Bălănică #define	RPI4_LOCAL_CONTROL_BASE_ADDRESS		(RPI_IO_BASE + ULL(0x7c280000))
49f834b64fSMario Bălănică #define	RPI4_LOCAL_CONTROL_PRESCALER		(RPI_IO_BASE + ULL(0x7c280008))
50f834b64fSMario Bălănică 
51*682607fbSMario Bălănică /*
52*682607fbSMario Bălănică  * PCI Express
53*682607fbSMario Bălănică  */
54*682607fbSMario Bălănică #define RPI_PCIE_RC_BASES		RPI_IO_BASE + ULL(0x00100000), \
55*682607fbSMario Bălănică 					RPI_IO_BASE + ULL(0x00110000), \
56*682607fbSMario Bălănică 					RPI_IO_BASE + ULL(0x00120000)
57*682607fbSMario Bălănică 
58f834b64fSMario Bălănică #endif /* RPI_HW_H */
59