On 5/15/20 10:00 PM, Andrei Warkentin wrote:
I've not tested this, but it looks good. You wouldn't happen to have a capsule handy that I or others could try?


Sure.

https://people.linaro.org/~ard.biesheuvel/SYNQUACERFIRMWAREUPDATECAPSULEFMPPKCS7.Cap

Is there any value behind explicitly testing for the right pin in _EVT? Just to be patently obvious that this is where the demux could happen to trigger other events (just building on top of yesterday's discussion)


Not really. This SoC has 32 individual SPIs for the GPIO interrupt block, and so no demuxing is necessary. I was going to use the _E98 method instead, but it turned out it was not implemented in Linux yet [0], so that is why I am using _EVT.

Regardless - Reviewed-by: Andrey Warkentin <andrey.warken...@gmail.com>

Thanks


[0] https://lore.kernel.org/linux-acpi/20200515093613.18691-1-a...@kernel.org/

------------------------------------------------------------------------
*From:* devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Ard Biesheuvel via groups.io <ard.biesheuvel=arm....@groups.io>
*Sent:* Friday, May 15, 2020 3:32 AM
*To:* devel@edk2.groups.io <devel@edk2.groups.io>
*Cc:* l...@nuviainc.com <l...@nuviainc.com>; andrey.warken...@gmail.com <andrey.warken...@gmail.com>; Ard Biesheuvel <ard.biesheu...@arm.com> *Subject:* [edk2-devel] [PATCH edk2-platforms 1/1] Silicon/Socionext/SynQuacer: use Generic Event Device for power button
Drop the description of the interrupt handling part of the GPIO
controller, and use a ACPI0013 Generic Event device instead to
handle the power button event. This way, an OS can handle these
events without the need for a SoC specific driver.

Signed-off-by: Ard Biesheuvel <ard.biesheu...@arm.com>
---
  Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl | 52 ++++++++++++--------
  1 file changed, 31 insertions(+), 21 deletions(-)

diff --git a/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl b/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
index f6ff3988aa91..3cfd025fbc16 100644
--- a/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
+++ b/Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
@@ -196,18 +196,40 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "SNI", "SYNQUACR",
        })
      }

-    Device (EXIU) {
-      Name (_HID, "SCX0008")
+    Device (GED0) {
+      Name (_HID, "ACPI0013")
        Name (_UID, Zero)
        Name (_CRS, ResourceTemplate () {
-        Memory32Fixed (ReadWrite, SYNQUACER_EXIU_BASE, SYNQUACER_EXIU_SIZE)
-      })
-      Name (_DSD, Package () {
-        ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
-        Package () {
-          Package () { "socionext,spi-base", 112 },
-        }
+       Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake) { 152 }
        })
+      OperationRegion (EXIU, SystemMemory, SYNQUACER_EXIU_BASE, 0x20)
+      Field (EXIU, DWordAcc, NoLock, Preserve)
+      {
+          MASK,   32,
+          SRCS,   32,
+          REQS,   32,
+          RAWR,   32,
+          REQC,   32,
+          LEVL,   32,
+          EDGC,   32,
+          SWIR,   32,
+      }
+
+      Method (_INI) {
+        REQC = 0xffffffff
+        MASK = 0xffffffff
+
+        /* enable the power button on line 8 as edge active low */
+        LEVL &= ~0x100
+        EDGC |= 0x100
+        REQC = 0x100
+        MASK = 0xfffffeff
+      }
+
+      Method (_EVT) {
+        REQC = 0x100
+        Notify (\_SB.PWRB, 0x80)
+      }
      }

      Device (GPIO) {
@@ -215,9 +237,6 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "SNI", "SYNQUACR",
        Name (_UID, Zero)
        Name (_CRS, ResourceTemplate () {
         Memory32Fixed (ReadWrite, SYNQUACER_GPIO_BASE, SYNQUACER_GPIO_SIZE) -        Interrupt (ResourceConsumer, Edge, ActiveLow, ExclusiveAndWake, 0, "\\_SB.EXIU") {
-          8,
-        }
        })
        Name (_DSD, Package () {
          ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
@@ -237,15 +256,6 @@ DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "SNI", "SYNQUACR",
            }
          }
        })
-      Name (_AEI, ResourceTemplate () {
-        GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullDefault, 0, "\\_SB.GPIO")
-        {
-          8
-        }
-      })
-      Method (_E08) {
-        Notify (\_SB.PWRB, 0x80)
-      }
      }

      Device (PWRB) {
--
2.17.1






-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#59705): https://edk2.groups.io/g/devel/message/59705
Mute This Topic: https://groups.io/mt/74223376/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to