blob: 3ba8f19808cdcb01e5e989b233aae63ccfae5c3b [file] [log] [blame]
Simon Glass18d4a112024-10-23 15:20:12 +02001/** @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__