mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-25 01:58:13 +01: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>
		
			
				
	
	
		
			91 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			4.0 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__
 |