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