public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.01.org
Cc: leif.lindholm@linaro.org, graeme.gregory@linaro.org,
	masahisa.kojima@linaro.org,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH edk2-platforms v2 7/7] Silicon/SynQuacer/AcpiTables: take presence detect of PCI0 into account
Date: Wed, 28 Feb 2018 19:24:21 +0000	[thread overview]
Message-ID: <20180228192421.17684-8-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20180228192421.17684-1-ard.biesheuvel@linaro.org>

On the SynQuacer Evalution Board, PCIe RC #0 is not clocked if no card
is inserted into the PCIe slot, and so any attempt to access the device
registers will lock up the system.

So let's check the presence detect pin directly in the _STA implementation
of PCI0. This needs to be done before the config space check, because that
access itself will lock the system if no card is inserted.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl | 15 +++++++++++++++
 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf      |  1 +
 2 files changed, 16 insertions(+)

diff --git a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
index 5ffed663e17d..db529aa95220 100644
--- a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
+++ b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
@@ -14,6 +14,7 @@
 
 **/
 
+#include <Platform/MemoryMap.h>
 #include <Platform/Pcie.h>
 
 #include "AcpiTables.h"
@@ -37,7 +38,21 @@ DefinitionBlock ("SsdtPci.aml", "SSDT", 1, "SNI", "SYNQUACR",
             VPID, 16,
         }
 
+        OperationRegion (GPIO, SystemMemory, SYNQUACER_GPIO_BASE, 8)
+        Field (GPIO, DWordAcc, NoLock, Preserve) {
+          , 39,
+          PRDT, 1,
+          , 24,
+        }
+
         Method (_STA, 0x0, Serialized) {
+            If (!LEqual (FixedPcdGet8 (PcdPcie0PresenceDetectGpioPin), 0xff)) {
+                Store (PRDT, local0)
+                If (!LEqual (local0, 0x0)) {
+                    Return (0x0)
+                }
+            }
+
             //
             // Check whether the VID/PID of device #1 on bus #0 equals 0xffff.
             // If this is not the case, we are dealing with a ghost device,
diff --git a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
index b1b6bbaa481d..bca8354d1184 100644
--- a/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
+++ b/Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
@@ -62,3 +62,4 @@ [FixedPcd]
 
   gSynQuacerTokenSpaceGuid.PcdNetsecEepromBase
   gSynQuacerTokenSpaceGuid.PcdNetsecPhyAddress
+  gSynQuacerTokenSpaceGuid.PcdPcie0PresenceDetectGpioPin
-- 
2.11.0



  parent reply	other threads:[~2018-02-28 19:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-28 19:24 [PATCH edk2-platforms v2 0/7] SynQuacer ACPI support Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 1/7] Platform/Socionext/DeveloperBox: fix PCIe slot to B/D/F mapping Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 2/7] Silicon/SynQuacer: tweak PCI I/O windows for ACPI/Linux support Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 3/7] Silicon/SynQuacer: add ACPI drivers and tables Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 4/7] Silicon/SynQuacer/PlatformDxe: add option to enable ACPI mode Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 5/7] Silicon/SynQuacer/PlatformDxe: add ACPI description of eMMC Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 6/7] Silicon/SynQuacer/AcpiTables: disable PCI RCs if ECAM ghosts are detected Ard Biesheuvel
2018-02-28 19:24 ` Ard Biesheuvel [this message]
2018-02-28 20:21 ` [PATCH edk2-platforms v2 0/7] SynQuacer ACPI support Leif Lindholm
2018-03-01 11:23 ` Graeme Gregory (Linaro)
2018-03-01 11:24   ` Ard Biesheuvel
2018-03-15 16:06     ` 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=20180228192421.17684-8-ard.biesheuvel@linaro.org \
    --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