[coreboot] New patch to review for coreboot: e4e6c14 AMD Fam14 DSDT: Add OSC method

Mike Loptien (mike.loptien@se-eng.com) gerrit at coreboot.org
Fri Mar 15 20:20:53 CET 2013


Mike Loptien (mike.loptien at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2738

-gerrit

commit e4e6c145e36e37ae2e0e83f1edbd532e79635acb
Author: Mike Loptien <mike.loptien at se-eng.com>
Date:   Fri Mar 15 13:17:52 2013 -0600

    AMD Fam14 DSDT: Add OSC method
    
    The _OSC method is used to tell the OS what capabilities
    it can take control over from the firmware.  This method
    is described in chapter 6.2.9 of the ACPI spec v3.0.
    The method takes 4 inputs (UUID, Rev ID, Input Count,
    and Capabilities Buffer) and returns a Capabilites
    Buffer the same size as the input Buffer.  This Buffer
    is generally 3 Dwords long consisting of an Errors
    Dword, a Supported Capabilities Dword, and a Control
    Dword.  The OS will request control of certain
    capabilities and the firmware must grant or deny control
    of those features.  We do not want to have control over
    anything so let the OS control as much as it can.
    
    The _OSC method is required for PCIe devices and dmesg
    checks for its existence and issues an error if it is
    not found.
    
    This is the same change made to Persimmon with Change-ID
    I149428:
    http://review.coreboot.org/#/c/2684/
    
    Change-Id: If6dd1a558d9c319d9a41ce63588550c8e81e595f
    Signed-off-by: Mike Loptien <mike.loptien at se-eng.com>
---
 src/mainboard/amd/inagua/dsdt.asl        | 14 +++++++++++++-
 src/mainboard/amd/south_station/dsdt.asl | 14 +++++++++++++-
 src/mainboard/amd/union_station/dsdt.asl | 14 +++++++++++++-
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/src/mainboard/amd/inagua/dsdt.asl b/src/mainboard/amd/inagua/dsdt.asl
index 148d7b0..dff5917 100644
--- a/src/mainboard/amd/inagua/dsdt.asl
+++ b/src/mainboard/amd/inagua/dsdt.asl
@@ -1157,8 +1157,20 @@ DefinitionBlock (
 		Device(PCI0) {
 			External (TOM1)
 			External (TOM2)
-			Name(_HID, EISAID("PNP0A03"))
+			Name(_HID, EISAID("PNP0A08"))	/* PCI Express Root Bridge */
+			Name(_CID, EISAID("PNP0A03"))	/* PCI Root Bridge */
 			Name(_ADR, 0x00180000)	/* Dev# = BSP Dev#, Func# = 0 */
+
+			/* Operating System Capabilities Method */
+			Method(_OSC,4)
+			{	/* Check for proper PCI/PCIe UUID */
+				If(LEqual(Arg0,ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766")))
+				{
+					/* Let OS control everything */
+					Return (Arg3)
+				}
+			}
+
 			Method(_BBN, 0) { /* Bus number = 0 */
 				Return(0)
 			}
diff --git a/src/mainboard/amd/south_station/dsdt.asl b/src/mainboard/amd/south_station/dsdt.asl
index 148d7b0..dff5917 100644
--- a/src/mainboard/amd/south_station/dsdt.asl
+++ b/src/mainboard/amd/south_station/dsdt.asl
@@ -1157,8 +1157,20 @@ DefinitionBlock (
 		Device(PCI0) {
 			External (TOM1)
 			External (TOM2)
-			Name(_HID, EISAID("PNP0A03"))
+			Name(_HID, EISAID("PNP0A08"))	/* PCI Express Root Bridge */
+			Name(_CID, EISAID("PNP0A03"))	/* PCI Root Bridge */
 			Name(_ADR, 0x00180000)	/* Dev# = BSP Dev#, Func# = 0 */
+
+			/* Operating System Capabilities Method */
+			Method(_OSC,4)
+			{	/* Check for proper PCI/PCIe UUID */
+				If(LEqual(Arg0,ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766")))
+				{
+					/* Let OS control everything */
+					Return (Arg3)
+				}
+			}
+
 			Method(_BBN, 0) { /* Bus number = 0 */
 				Return(0)
 			}
diff --git a/src/mainboard/amd/union_station/dsdt.asl b/src/mainboard/amd/union_station/dsdt.asl
index 1d2435c..b59ea7b 100644
--- a/src/mainboard/amd/union_station/dsdt.asl
+++ b/src/mainboard/amd/union_station/dsdt.asl
@@ -1157,8 +1157,20 @@ DefinitionBlock (
 		Device(PCI0) {
 			External (TOM1)
 			External (TOM2)
-			Name(_HID, EISAID("PNP0A03"))
+			Name(_HID, EISAID("PNP0A08"))	/* PCI Express Root Bridge */
+			Name(_CID, EISAID("PNP0A03"))	/* PCI Root Bridge */
 			Name(_ADR, 0x00180000)	/* Dev# = BSP Dev#, Func# = 0 */
+
+			/* Operating System Capabilities Method */
+			Method(_OSC,4)
+			{	/* Check for proper PCI/PCIe UUID */
+				If(LEqual(Arg0,ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766")))
+				{
+					/* Let OS control everything */
+					Return (Arg3)
+				}
+			}
+
 			Method(_BBN, 0) { /* Bus number = 0 */
 				Return(0)
 			}



More information about the coreboot mailing list