public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Pete Batard" <pete@akeo.ie>
To: devel@edk2.groups.io
Cc: ard.biesheuvel@linaro.org, leif@nuviainc.com, philmd@redhat.com
Subject: [edk2-platforms][PATCH 11/15] Platform/RPi4: Move ACPI interrupts definitions to AcpiTables.h
Date: Fri, 28 Feb 2020 10:38:51 +0000	[thread overview]
Message-ID: <20200228103855.11352-12-pete@akeo.ie> (raw)
In-Reply-To: <20200228103855.11352-1-pete@akeo.ie>

The ACPI interrupts are not the same across different Raspberry Pi
platforms therefore moving them into AcpiTables.h will help with ACPI
code factorization.

We also take this opportunity to move the serial interrupt definitions
away from Silicon, since the ones defined in Bcm2836.h only applied to
the Raspberry Pi 4.

Signed-off-by: Pete Batard <pete@akeo.ie>
---
 Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.h           | 28 +++++++++++++++
 Platform/RaspberryPi/RPi4/AcpiTables/Dsdt.asl               | 36 ++++++++++----------
 Platform/RaspberryPi/RPi4/AcpiTables/Sdhc.asl               |  4 +--
 Platform/RaspberryPi/RPi4/AcpiTables/Uart.asl               |  4 +--
 Silicon/Broadcom/Bcm283x/Include/IndustryStandard/Bcm2836.h |  2 --
 5 files changed, 50 insertions(+), 24 deletions(-)

diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.h b/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.h
index fcfad3b5d93b..3d1737aed41a 100644
--- a/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.h
+++ b/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.h
@@ -97,4 +97,32 @@ typedef struct
   UINT32 UID;                     // 4 bytes
 } EFI_ACPI_5_1_CSRT_RESOURCE_DESCRIPTOR_HEADER;
 
+//------------------------------------------------------------------------
+// Interrupts. These are specific to each platform
+//------------------------------------------------------------------------
+#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                 0x53
+#define BCM2836_I2C1_INTERRUPT                  0x55
+#define BCM2836_I2C2_INTERRUPT                  0x55
+#define BCM2836_SPI0_INTERRUPT                  0x56
+#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
+
 #endif // __ACPITABLES_H__
diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/Dsdt.asl b/Platform/RaspberryPi/RPi4/AcpiTables/Dsdt.asl
index c505413bcba2..e1ddb742376a 100644
--- a/Platform/RaspberryPi/RPi4/AcpiTables/Dsdt.asl
+++ b/Platform/RaspberryPi/RPi4/AcpiTables/Dsdt.asl
@@ -87,7 +87,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_USB_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x69 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_USB_INTERRUPT }
       })
       Method (_CRS, 0x0, Serialized)
       {
@@ -111,32 +111,32 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       {
         // Memory and interrupt for the GPU
         MEMORY32FIXED (ReadWrite, 0, BCM2836_V3D_BUS_LENGTH, RM01)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x2A }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_V3D_BUS_INTERRUPT }
 
         // HVS - Hardware Video Scalar
         MEMORY32FIXED (ReadWrite, 0, BCM2836_HVS_LENGTH, RM02)
         // The HVS interrupt is reserved by the VPU
-        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x41 }
+        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_HVS_INTERRUPT }
 
         // PixelValve0 - DSI0 or DPI
         // MEMORY32FIXED (ReadWrite, BCM2836_PV0_BASE_ADDRESS, BCM2836_PV0_LENGTH, RM03)
-        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x4D }
+        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_PV0_INTERRUPT }
 
         // PixelValve1 - DS1 or SMI
         // MEMORY32FIXED (ReadWrite, BCM2836_PV1_BASE_ADDRESS, BCM2836_PV1_LENGTH, RM04)
-        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x4E }
+        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_PV1_INTERRUPT }
 
         // PixelValve2 - HDMI output - connected to HVS display FIFO 1
         MEMORY32FIXED (ReadWrite, 0, BCM2836_PV2_LENGTH, RM05)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x4A }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_PV2_INTERRUPT }
 
         // HDMI registers
         MEMORY32FIXED (ReadWrite, 0, BCM2836_HDMI0_LENGTH, RM06)
         MEMORY32FIXED (ReadWrite, 0, BCM2836_HDMI1_LENGTH, RM07)
         // hdmi_int[0]
-        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x48 }
+        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_HDMI0_INTERRUPT }
         // hdmi_int[1]
-        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x49 }
+        // Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_HDMI1_INTERRUPT }
 
         // HDMI DDC connection
         I2CSerialBus (0x50,, 100000,, "\\_SB.I2C2",,,,)  // EDID
@@ -214,7 +214,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_MBOX_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x61 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_MBOX_INTERRUPT }
       })
 
       Method (_CRS, 0x0, Serialized)
@@ -239,7 +239,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_VCHIQ_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x62 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_VCHIQ_INTERRUPT }
       })
 
       Method (_CRS, 0x0, Serialized)
@@ -277,7 +277,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, GPIO_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { 0x51, 0x53 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { BCM2386_GPIO_INTERRUPT0, BCM2386_GPIO_INTERRUPT1 }
       })
       Method (_CRS, 0x0, Serialized)
       {
@@ -302,7 +302,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
         {
           // No need for MEMORY32SETBASE on Genet as we have a straight base address constant
           MEMORY32FIXED (ReadWrite, GENET_BASE_ADDRESS, GENET_LENGTH, )
-          Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0xBD, 0xBE }
+          Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { GENET_INTERRUPT0, GENET_INTERRUPT1 }
         })
         Return (RBUF)
       }
@@ -329,7 +329,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_I2C1_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { 0x55 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { BCM2836_I2C1_INTERRUPT }
 
         //
         // MsftFunctionConfig is encoded as the VendorLong.
@@ -368,7 +368,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_I2C2_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { 0x55 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { BCM2836_I2C2_INTERRUPT }
       })
 
       Method (_CRS, 0x0, Serialized)
@@ -392,7 +392,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_SPI0_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { 0x56 }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { BCM2836_SPI0_INTERRUPT }
 
         //
         // MsftFunctionConfig is encoded as the VendorLong.
@@ -459,7 +459,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
       Name (RBUF, ResourceTemplate ()
       {
         MEMORY32FIXED (ReadWrite, 0, BCM2836_SPI1_LENGTH, RMEM)
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared,) { 0x3D }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared,) { BCM2836_SPI1_INTERRUPT }
 
         //
         // MsftFunctionConfig is encoded as the VendorLong.
@@ -515,7 +515,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
     //     Name (RBUF, ResourceTemplate ()
     //     {
     //       MEMORY32FIXED (ReadWrite, BCM2836_SPI2_BASE_ADDRESS, BCM2836_SPI2_LENGTH, RMEM)
-    //       Interrupt (ResourceConsumer, Level, ActiveHigh, Shared,) { 0x3D }
+    //       Interrupt (ResourceConsumer, Level, ActiveHigh, Shared,) { BCM2836_SPI2_INTERRUPT }
     //     })
     //     Return (RBUF)
     //   }
@@ -545,7 +545,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 5, "MSFT", "EDK2", 2)
         // PWM clock control
         MEMORY32FIXED (ReadWrite, 0, BCM2836_PWM_CLK_LENGTH, RM03)
         // Interrupt DMA channel 11
-        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x3B }
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_DMA_INTERRUPT }
         // DMA channel 11, DREQ 5 for PWM
         FixedDMA (5, 11, Width32Bit, )
       })
diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/Sdhc.asl b/Platform/RaspberryPi/RPi4/AcpiTables/Sdhc.asl
index 590c71edd484..0ab1ba27f2cf 100644
--- a/Platform/RaspberryPi/RPi4/AcpiTables/Sdhc.asl
+++ b/Platform/RaspberryPi/RPi4/AcpiTables/Sdhc.asl
@@ -37,7 +37,7 @@ Device (SDC1)
   Name (RBUF, ResourceTemplate ()
   {
     MEMORY32FIXED (ReadWrite, 0, MMCHS1_LENGTH, RMEM)
-    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x9E }
+    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_MMCHS1_INTERRUPT }
   })
   Method (_CRS, 0x0, Serialized)
   {
@@ -81,7 +81,7 @@ Device (SDC2)
   Name (RBUF, ResourceTemplate ()
   {
     MEMORY32FIXED (ReadWrite, 0, SDHOST_LENGTH, RMEM)
-    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x98 }
+    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_SDHOST_INTERRUPT }
   })
   Method (_CRS, 0x0, Serialized)
   {
diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/Uart.asl b/Platform/RaspberryPi/RPi4/AcpiTables/Uart.asl
index 1be285220ad7..c466247bb33b 100644
--- a/Platform/RaspberryPi/RPi4/AcpiTables/Uart.asl
+++ b/Platform/RaspberryPi/RPi4/AcpiTables/Uart.asl
@@ -28,7 +28,7 @@ Device (URT0)
   Name (RBUF, ResourceTemplate ()
   {
     MEMORY32FIXED (ReadWrite, 0, BCM2836_PL011_UART_LENGTH, RMEM)
-    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 0x99 }
+    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { BCM2836_PL011_UART_INTERRUPT }
   })
   Method (_CRS, 0x0, Serialized)
   {
@@ -68,7 +68,7 @@ Device (URTM)
   Name (RBUF, ResourceTemplate ()
   {
     MEMORY32FIXED (ReadWrite, 0, BCM2836_MINI_UART_LENGTH, RMEM)
-    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) { 0x7D }
+    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) { BCM2836_MINI_UART_INTERRUPT }
 
     // NTRAID#MSFT-7141401-2016/04/7-jordanrh - disable UART muxing
     // until a proper solution can be created for the dmap conflict.
diff --git a/Silicon/Broadcom/Bcm283x/Include/IndustryStandard/Bcm2836.h b/Silicon/Broadcom/Bcm283x/Include/IndustryStandard/Bcm2836.h
index 0b402e9ac56e..a930c64af379 100644
--- a/Silicon/Broadcom/Bcm283x/Include/IndustryStandard/Bcm2836.h
+++ b/Silicon/Broadcom/Bcm283x/Include/IndustryStandard/Bcm2836.h
@@ -80,12 +80,10 @@
 #define BCM2836_PL011_UART_OFFSET                           0x00201000
 #define BCM2836_PL011_UART_BASE_ADDRESS                     (BCM2836_SOC_REGISTERS + BCM2836_PL011_UART_OFFSET)
 #define BCM2836_PL011_UART_LENGTH                           0x00001000
-#define BCM2836_PL011_UART_INTERRUPT                        0x99
 
 #define BCM2836_MINI_UART_OFFSET                            0x00215000
 #define BCM2836_MINI_UART_BASE_ADDRESS                      (BCM2836_SOC_REGISTERS + BCM2836_MINI_UART_OFFSET)
 #define BCM2836_MINI_UART_LENGTH                            0x00000070
-#define BCM2836_MINI_UART_INTERRUPT                         0x7D
 
 #define BCM2836_I2C0_OFFSET                                 0x00205000
 #define BCM2836_I2C0_BASE_ADDRESS                           (BCM2836_SOC_REGISTERS + BCM2836_I2C0_OFFSET)
-- 
2.21.0.windows.1


  parent reply	other threads:[~2020-02-28 10:39 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-28 10:38 [edk2-platforms][PATCH 00/15] Platform/RPi: Clean up and factorize ACPI Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 01/15] Platform/RPi: Move DW USB base address to Silicon Pete Batard
2020-03-02 11:21   ` Philippe Mathieu-Daudé
2020-02-28 10:38 ` [edk2-platforms][PATCH 02/15] Silicon/Bcm283x: Add missing peripherals constants Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 03/15] Silicon/Bcm283x: Add GPU/VideoCore and Power Management constants Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 04/15] Silicon/BcmGenet: Add missing I/O mapping length and clean up Pete Batard
2020-02-28 10:45   ` Ard Biesheuvel
2020-02-28 10:51     ` Pete Batard
2020-02-28 10:58       ` Ard Biesheuvel
2020-02-28 11:01         ` Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 05/15] Platform/RPi4: Use Silicon constants in ACPI headers Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 06/15] Platform/RPi3: " Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 07/15] Platform/RPi3: Switch to .aslc for serial related ACPI tables Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 08/15] Platform/RPi3: Update CSRT table to ACPI 5.1 Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 09/15] Platform/RPi3: Use proper aslc for FADT, GTDT and MADT tables generation Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 10/15] Platform/RPi4: Add RPI_MODEL constant and replace PL011_ENABLE Pete Batard
2020-02-28 10:38 ` Pete Batard [this message]
2020-02-28 10:38 ` [edk2-platforms][PATCH 12/15] Platform/RPi3: Move ACPI interrupts definitions to AcpiTables.h Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 13/15] Platform/RPi4: Prepare ACPI code for factorization Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 14/15] Platform/RPi3: Merge ACPI code from RPi4 Pete Batard
2020-02-28 10:38 ` [edk2-platforms][PATCH 15/15] Platform/RPi: Factorize ACPI tables Pete Batard
2020-02-28 12:17 ` [edk2-platforms][PATCH 00/15] Platform/RPi: Clean up and factorize ACPI Ard Biesheuvel
2020-03-02 11:14   ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200228103855.11352-12-pete@akeo.ie \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox