[coreboot-gerrit] Change in coreboot[master]: drivers/intel/gma: fix opregion SCI register for Atom platforms

Matt DeVillier (Code Review) gerrit at coreboot.org
Sun Feb 11 23:04:31 CET 2018


Matt DeVillier has uploaded this change for review. ( https://review.coreboot.org/23696


Change subject: drivers/intel/gma: fix opregion SCI register for Atom platforms
......................................................................

drivers/intel/gma: fix opregion SCI register for Atom platforms

Most Intel platforms use separate registers for software-based
SMI (0xe0) and SCI (0xe8), but Atom-based platforms use a single
combined register (0xe0) for both. Adjust opregion implementation
to use the correct register for Atom-based platforms.

Test: Boot Windows on Atom-based ChromeOS device with Tianocore
payload and non-VBIOS graphics init; observe Intel display
driver loaded correctly and internal display not blank.

Change-Id: I636986226ff951dae637dca5bc3ad0e023d94243
Signed-off-by: Matt DeVillier <matt.devillier at gmail.com>
---
M src/drivers/intel/gma/opregion.c
M src/drivers/intel/gma/opregion.h
2 files changed, 15 insertions(+), 2 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/96/23696/1

diff --git a/src/drivers/intel/gma/opregion.c b/src/drivers/intel/gma/opregion.c
index 74c629c..4565173 100644
--- a/src/drivers/intel/gma/opregion.c
+++ b/src/drivers/intel/gma/opregion.c
@@ -32,6 +32,7 @@
 {
 	device_t igd;
 	u16 reg16;
+	u16 sci;
 
 	igd = dev_find_slot(0, PCI_DEVFN(0x2, 0));
 	if (!igd || !igd->enabled)
@@ -44,14 +45,25 @@
 	pci_write_config32(igd, ASLS, opregion);
 
 	/*
+	 * Atom-based platforms use a combined SMI/SCI register,
+	 * whereas non-Atom platforms use a separate SCI register
+	 */
+	if (IS_ENABLED(CONFIG_SOC_INTEL_BAYTRAIL) ||
+			IS_ENABLED(CONFIG_SOC_INTEL_BRASWELL) ||
+			IS_ENABLED(CONFIG_SOC_INTEL_APOLLOLAKE))
+		sci = SWSMISCI;
+	else
+		sci = SWSCI;
+
+	/*
 	 * Intel's Windows driver relies on this:
 	 * Intel BIOS Specification
 	 * Chapter 5.4 "ASL Software SCI Handler"
 	 */
-	reg16 = pci_read_config16(igd, SWSCI);
+	reg16 = pci_read_config16(igd, sci);
 	reg16 &= ~GSSCIE;
 	reg16 |= SMISCISEL;
-	pci_write_config16(igd, SWSCI, reg16);
+	pci_write_config16(igd, sci, reg16);
 }
 
 /* Restore ASLS register on S3 resume and prepare SWSCI. */
diff --git a/src/drivers/intel/gma/opregion.h b/src/drivers/intel/gma/opregion.h
index 3ae68e5..8ef3dcf 100644
--- a/src/drivers/intel/gma/opregion.h
+++ b/src/drivers/intel/gma/opregion.h
@@ -25,6 +25,7 @@
 /* IGD PCI Configuration register */
 #define ASLS           0xfc            /* OpRegion Base */
 #define SWSCI          0xe8            /* SWSCI Register */
+#define SWSMISCI       0xe0            /* SWSMISCI Register */
 #define GSSCIE         (1 << 0)        /* SCI Event trigger */
 #define SMISCISEL      (1 << 15)       /* Select SMI or SCI event source */
 

-- 
To view, visit https://review.coreboot.org/23696
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I636986226ff951dae637dca5bc3ad0e023d94243
Gerrit-Change-Number: 23696
Gerrit-PatchSet: 1
Gerrit-Owner: Matt DeVillier <matt.devillier at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180211/3cd408e1/attachment.html>


More information about the coreboot-gerrit mailing list