Simon Glass | 18d4a11 | 2024-10-23 15:20:12 +0200 | [diff] [blame] | 1 | /** @file |
| 2 | * |
| 3 | * RPi defines for constructing ACPI tables |
| 4 | * |
| 5 | * Copyright (c) 2020, Pete Batard <pete@akeo.ie> |
| 6 | * Copyright (c) 2019, ARM Ltd. All rights reserved. |
| 7 | * Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com> |
| 8 | * Copyright (c) Microsoft Corporation. All rights reserved. |
| 9 | * |
| 10 | * SPDX-License-Identifier: BSD-2-Clause-Patent |
| 11 | * |
| 12 | **/ |
| 13 | |
| 14 | #ifndef __RPI_ACPITABLES_H__ |
| 15 | #define __RPI_ACPITABLES_H__ |
| 16 | |
| 17 | #include <acpi/acpi_table.h> |
| 18 | |
| 19 | // The ASL compiler can't perform arithmetic on MEMORY32FIXED () |
| 20 | // parameters so you can't pass a constant like BASE + OFFSET. |
| 21 | // We therefore define a macro that can perform arithmetic base |
| 22 | // address update with an offset. |
| 23 | #define MEMORY32SETBASE(BufName, MemName, VarName, Offset) \ |
| 24 | CreateDwordField (^BufName, ^MemName._BAS, VarName) \ |
| 25 | Add (BCM2836_SOC_REGISTERS, Offset, VarName) |
| 26 | |
| 27 | //------------------------------------------------------------------------ |
| 28 | // Interrupts. These are specific to each platform |
| 29 | //------------------------------------------------------------------------ |
| 30 | #if defined(CONFIG_TARGET_RPI_3) |
| 31 | #define BCM2836_V3D_BUS_INTERRUPT 0x2A |
| 32 | #define BCM2836_DMA_INTERRUPT 0x3B |
| 33 | #define BCM2836_SPI1_INTERRUPT 0x3D |
| 34 | #define BCM2836_SPI2_INTERRUPT 0x3D |
| 35 | #define BCM2836_HVS_INTERRUPT 0x41 |
| 36 | #define BCM2836_HDMI0_INTERRUPT 0x48 |
| 37 | #define BCM2836_HDMI1_INTERRUPT 0x49 |
| 38 | #define BCM2836_PV2_INTERRUPT 0x4A |
| 39 | #define BCM2836_PV0_INTERRUPT 0x4D |
| 40 | #define BCM2836_PV1_INTERRUPT 0x4E |
| 41 | #define BCM2836_MBOX_INTERRUPT 0x61 |
| 42 | #define BCM2836_VCHIQ_INTERRUPT 0x62 |
| 43 | #define BCM2386_GPIO_INTERRUPT0 0x51 |
| 44 | #define BCM2386_GPIO_INTERRUPT1 0x52 |
| 45 | #define BCM2386_GPIO_INTERRUPT2 0x53 |
| 46 | #define BCM2386_GPIO_INTERRUPT3 0x54 |
| 47 | #define BCM2836_I2C1_INTERRUPT 0x55 |
| 48 | #define BCM2836_I2C2_INTERRUPT 0x55 |
| 49 | #define BCM2836_SPI0_INTERRUPT 0x56 |
| 50 | #define BCM2836_USB_INTERRUPT 0x29 |
| 51 | #define BCM2836_SDHOST_INTERRUPT 0x58 |
| 52 | #define BCM2836_MMCHS1_INTERRUPT 0x5E |
| 53 | #define BCM2836_MINI_UART_INTERRUPT 0x3D |
| 54 | #define BCM2836_PL011_UART_INTERRUPT 0x59 |
| 55 | #elif defined(CONFIG_TARGET_RPI_4) |
| 56 | #define BCM2836_V3D_BUS_INTERRUPT 0x2A |
| 57 | #define BCM2836_DMA_INTERRUPT 0x3B |
| 58 | #define BCM2836_SPI1_INTERRUPT 0x7D |
| 59 | #define BCM2836_SPI2_INTERRUPT 0x7D |
| 60 | #define BCM2836_HVS_INTERRUPT 0x41 |
| 61 | #define BCM2836_HDMI0_INTERRUPT 0x48 |
| 62 | #define BCM2836_HDMI1_INTERRUPT 0x49 |
| 63 | #define BCM2836_PV2_INTERRUPT 0x4A |
| 64 | #define BCM2836_PV0_INTERRUPT 0x4D |
| 65 | #define BCM2836_PV1_INTERRUPT 0x4E |
| 66 | #define BCM2836_MBOX_INTERRUPT 0x41 |
| 67 | #define BCM2836_VCHIQ_INTERRUPT 0x42 |
| 68 | #define BCM2386_GPIO_INTERRUPT0 0x91 |
| 69 | #define BCM2386_GPIO_INTERRUPT1 0x92 |
| 70 | #define BCM2386_GPIO_INTERRUPT2 0x93 |
| 71 | #define BCM2386_GPIO_INTERRUPT3 0x94 |
| 72 | #define BCM2836_I2C1_INTERRUPT 0x95 |
| 73 | #define BCM2836_I2C2_INTERRUPT 0x95 |
| 74 | #define BCM2836_SPI0_INTERRUPT 0x96 |
| 75 | #define BCM2836_USB_INTERRUPT 0x69 |
| 76 | #define BCM2836_SDHOST_INTERRUPT 0x98 |
| 77 | #define BCM2836_MMCHS1_INTERRUPT 0x9E |
| 78 | #define BCM2836_MINI_UART_INTERRUPT 0x7D |
| 79 | #define BCM2836_PL011_UART_INTERRUPT 0x99 |
| 80 | #define GENET_INTERRUPT0 0xBD |
| 81 | #define GENET_INTERRUPT1 0xBE |
| 82 | #define GENET_BASE_ADDRESS 0xFD580000 |
| 83 | #define GENET_LENGTH 0x10000 |
| 84 | #define THERM_SENSOR_BASE_ADDRESS 0xFD5d2200 |
| 85 | #define THERM_SENSOR_LENGTH 0x8 |
| 86 | #else |
| 87 | #error "Unsupported rpi module for ACPI tables" |
| 88 | #endif |
| 89 | |
| 90 | #endif // __ACPITABLES_H__ |