mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 20:58:22 +00:00

Add the necessary DSDT files copied from tianocore to boot the RPi4. In addition generate a board specific SSDT to dynamically enable/disable ACPI devices based on FDT. This is required to support the various variants and boot options. It also allows to test the code on QEMU 9.0 without modifications, since it doesn't emulate PCIe yet. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Simon Glass <sjg@chromium.org> Cc: Matthias Brugger <mbrugger@suse.com> Cc: Peter Robinson <pbrobinson@gmail.com>
90 lines
4 KiB
C
90 lines
4 KiB
C
/** @file
|
|
*
|
|
* RPi defines for constructing ACPI tables
|
|
*
|
|
* Copyright (c) 2020, Pete Batard <pete@akeo.ie>
|
|
* Copyright (c) 2019, ARM Ltd. All rights reserved.
|
|
* Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
*
|
|
**/
|
|
|
|
#ifndef __RPI_ACPITABLES_H__
|
|
#define __RPI_ACPITABLES_H__
|
|
|
|
#include <acpi/acpi_table.h>
|
|
|
|
// The ASL compiler can't perform arithmetic on MEMORY32FIXED ()
|
|
// parameters so you can't pass a constant like BASE + OFFSET.
|
|
// We therefore define a macro that can perform arithmetic base
|
|
// address update with an offset.
|
|
#define MEMORY32SETBASE(BufName, MemName, VarName, Offset) \
|
|
CreateDwordField (^BufName, ^MemName._BAS, VarName) \
|
|
Add (BCM2836_SOC_REGISTERS, Offset, VarName)
|
|
|
|
//------------------------------------------------------------------------
|
|
// Interrupts. These are specific to each platform
|
|
//------------------------------------------------------------------------
|
|
#if defined(CONFIG_TARGET_RPI_3)
|
|
#define BCM2836_V3D_BUS_INTERRUPT 0x2A
|
|
#define BCM2836_DMA_INTERRUPT 0x3B
|
|
#define BCM2836_SPI1_INTERRUPT 0x3D
|
|
#define BCM2836_SPI2_INTERRUPT 0x3D
|
|
#define BCM2836_HVS_INTERRUPT 0x41
|
|
#define BCM2836_HDMI0_INTERRUPT 0x48
|
|
#define BCM2836_HDMI1_INTERRUPT 0x49
|
|
#define BCM2836_PV2_INTERRUPT 0x4A
|
|
#define BCM2836_PV0_INTERRUPT 0x4D
|
|
#define BCM2836_PV1_INTERRUPT 0x4E
|
|
#define BCM2836_MBOX_INTERRUPT 0x61
|
|
#define BCM2836_VCHIQ_INTERRUPT 0x62
|
|
#define BCM2386_GPIO_INTERRUPT0 0x51
|
|
#define BCM2386_GPIO_INTERRUPT1 0x52
|
|
#define BCM2386_GPIO_INTERRUPT2 0x53
|
|
#define BCM2386_GPIO_INTERRUPT3 0x54
|
|
#define BCM2836_I2C1_INTERRUPT 0x55
|
|
#define BCM2836_I2C2_INTERRUPT 0x55
|
|
#define BCM2836_SPI0_INTERRUPT 0x56
|
|
#define BCM2836_USB_INTERRUPT 0x29
|
|
#define BCM2836_SDHOST_INTERRUPT 0x58
|
|
#define BCM2836_MMCHS1_INTERRUPT 0x5E
|
|
#define BCM2836_MINI_UART_INTERRUPT 0x3D
|
|
#define BCM2836_PL011_UART_INTERRUPT 0x59
|
|
#elif defined(CONFIG_TARGET_RPI_4)
|
|
#define BCM2836_V3D_BUS_INTERRUPT 0x2A
|
|
#define BCM2836_DMA_INTERRUPT 0x3B
|
|
#define BCM2836_SPI1_INTERRUPT 0x7D
|
|
#define BCM2836_SPI2_INTERRUPT 0x7D
|
|
#define BCM2836_HVS_INTERRUPT 0x41
|
|
#define BCM2836_HDMI0_INTERRUPT 0x48
|
|
#define BCM2836_HDMI1_INTERRUPT 0x49
|
|
#define BCM2836_PV2_INTERRUPT 0x4A
|
|
#define BCM2836_PV0_INTERRUPT 0x4D
|
|
#define BCM2836_PV1_INTERRUPT 0x4E
|
|
#define BCM2836_MBOX_INTERRUPT 0x41
|
|
#define BCM2836_VCHIQ_INTERRUPT 0x42
|
|
#define BCM2386_GPIO_INTERRUPT0 0x91
|
|
#define BCM2386_GPIO_INTERRUPT1 0x92
|
|
#define BCM2386_GPIO_INTERRUPT2 0x93
|
|
#define BCM2386_GPIO_INTERRUPT3 0x94
|
|
#define BCM2836_I2C1_INTERRUPT 0x95
|
|
#define BCM2836_I2C2_INTERRUPT 0x95
|
|
#define BCM2836_SPI0_INTERRUPT 0x96
|
|
#define BCM2836_USB_INTERRUPT 0x69
|
|
#define BCM2836_SDHOST_INTERRUPT 0x98
|
|
#define BCM2836_MMCHS1_INTERRUPT 0x9E
|
|
#define BCM2836_MINI_UART_INTERRUPT 0x7D
|
|
#define BCM2836_PL011_UART_INTERRUPT 0x99
|
|
#define GENET_INTERRUPT0 0xBD
|
|
#define GENET_INTERRUPT1 0xBE
|
|
#define GENET_BASE_ADDRESS 0xFD580000
|
|
#define GENET_LENGTH 0x10000
|
|
#define THERM_SENSOR_BASE_ADDRESS 0xFD5d2200
|
|
#define THERM_SENSOR_LENGTH 0x8
|
|
#else
|
|
#error "Unsupported rpi module for ACPI tables"
|
|
#endif
|
|
|
|
#endif // __ACPITABLES_H__
|