Help - Search - Members - Calendar
Full Version: DSDT fixes for Gigabyte boards
InsanelyMac Forum > InsanelyMac Lounge > The X Labs > Intel SpeedStep
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
iSoprano
I started this thread to get some info on making sleep work for my MB which is GA-EP35-DS3L. With the help of people in this forum, I was able to install snow leopard on to my system. I have managed to get most of the things working and was trying to get speedstepping work by following another topic on vanilla speedstepping. I've managed to put together my DSDT which works for me, may work for others too with same or similar boards.

The extensions I have are fakeSMC, LegacyHDA for Audio, OpenHaltRestart and platformUUID.
The CPU is Q6600 and my MB bios is F6.

The only thing that is not working for me right now is sleep. The monitor shuts off but the hard disk and fan keeps spinning. So please if anyone could help me in fixing this. I am a total noab when it comes to DSDT editing, i just follow whatever was given by others in the forum, pray biggrin.gif and reboot

UPDATE- Fellow Gigabyte users, Master Chief, who is well known in our community has kindly agreed to help GB users in patching our DSDT to enable speedstepping, sleep(which is a major pain in most of the boards) and also polish some of the fixes which are already floating around in the forum. Part 1, USB fixes has been given below. Waiting for Part 2 from Master Chief.


UPDATE - 2 - Vanilla speedstepping with low temp, around 38-40C with sleep. The DSDT contains USB fixes by Master Chief, CMOS reset, HPET, SATA built-in,Native AppleLPC trick, DSDT entry for Nvidia 9600GT, Audio for ALC888 (still need LegacyHDA.kext in extra), SLEEP. Click to view attachment

UPDATE - 3 - ICH9 users, we need device Id injection of ICH10 for our USB to enable sleep. Also pls mod your AppleLPC which for GA-EP35-DS3 users will be PX40. This dsdt has SMBus and EC fix by Master Chief. Thanks to user mm67 biggrin.gif
Click to view attachment

UPDATE - 4 - ICH9 users, we need device Id injection for SMBus. My latest DSDT has this and also few more refinements as per Master Chief.
Click to view attachment

UPDATE - 5 - After Latest round of fixes (TIMR, RTC, IPIC) I've put back DSDT entry for Nvidia 9600GT
Click to view attachment
Click to view attachment

UPDATE - 6 - Latest DSDT which uses MC's OSXrestart.kext. Shutdown works (based on mm67's code). I'm no longer using openhaltrestart.kext
Click to view attachment
Click to view attachment

This DSDT works for me for all the above fixes, so please do be careful and make appropriate changes to your DSDT by comparison.
Master Chief
Lets start by fixing USB stuff. The reason for this is that I see something that isn't right. Let's use USB0 as an example:
CODE
Device (USB0)
{
Name (_ADR, 0x001D0000)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)

}

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x34, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Name (_PRW, Package (0x02)
{
0x03,
0x03
})
}

And this is how is should be:
CODE

Device (UHC1) // Renamed from: USB0
{
Name (_ADR, 0x001D0000)

// Newly added: USB_RES—USB Resume Enable Register (ICH9R-3169722.pdf /16.1.24 / page 642).
OperationRegion (BAR0, PCI_Config, 0xC4, One)
Field (BAR0, ByteAcc, NoLock, Preserve)
{
USBW, 2, Offset (0x01)
}

Method (_S3D, 0, NotSerialized) // S3 Device State
{
Return (0x02)
}

Method (_PSW, 1, NotSerialized) // Power State Wake
{
If (Arg0)
{
Store (0x03, USBW) // Monitor port for remote wakeup and connect/disconnect events.
}
Else
{
Store (Zero, USBW) // Monitoring disable.
}
}

Name (_PRW, Package (0x02) // Power Resources for Wake
{
0x03,
0x04 // Lowest supported sleep state.
})

Method (_DSM, 4, NotSerialized) // Device Specific Method
{
Store (Package (0x02)
{
"device-id",
Buffer (0x02)
{
0x34, 0x3a, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Now search and replace "USB0" with "UHC1". Then repeat this step for every single Device (USBn) in your DSDT. You should search for: 0x001D0000, 0x001D0001, 0x001D0002, 0x001A0001, 0x001A0001 and 0x001A0002. Like I said fix these first. And don't forget to change all callers of USBn !!!

Note: Comment out Device (USB3) with help of /* */

Next target, one of two for today, is Device (USBE) which currently looks like this:
CODE
Device (USBE)
{
Name (_ADR, 0x001D0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x01
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to:
CODE
Device (EHCI) // Renamed from: USBE - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001D0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And the last Device change for today is Device (USE2) which looks like this now:
CODE
Device (USE2)
{
Name (_ADR, 0x001A0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x02
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to this:
CODE
Device (UHCI) // Renamed from: USE2 - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001A0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And as you might have notices, this requires some other additions to your DSDT. And this is what you need to change:
CODE
        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USBE, 0x02)
            Notify (\_SB.PCI0.USE2, 0x02)
            Notify (\_SB.PWRB, 0x02)
            Notify (\_SB.PCI0.HDEF, 0x02)
        }

Which I want you to change into this:
CODE
Method (_L0D, 0, NotSerialized)
{
// New Power Management Control
If (\_SB.PCI0.EHCI.PMES)
{
Store (0x01, \_SB.PCI0.EHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.EHCI, 0x02) // Renamed from: USBE
Notify (\_SB.PWRB, 0x02)
}

// New Power Management Control
If (\_SB.PCI0.UHCI.PMES)
{
Store (0x01, \_SB.PCI0.UHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.UHCI, 0x02) // Renamed from: USE2
Notify (\_SB.PWRB, 0x02)
}
Notify (\_SB.PWRB, 0x02) // You might actually don't need this. Just check it!
Notify (\_SB.PCI0.HDEF, 0x02)


It's a lot of work. A crap load even. And I know, but it can be done. I also know that. It just takes time and effort wink.gif

DO NOT COPY/PASTE CODE FROM THIS FORUM INTO YOUR DSDT!!!! It adds hidden characters which makes it impossible to compile!

For now later!
iSoprano
QUOTE (Master Chief @ Oct 16 2009, 11:04 PM) *
Lets start by fixing USB stuff. The reason for this is that I see something that isn't right. Let's use USB0 as an example:
CODE
Device (USB0)
{
Name (_ADR, 0x001D0000)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)

}

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x34, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Name (_PRW, Package (0x02)
{
0x03,
0x03
})
}

And this is how is should be:
CODE

Device (UHC1) // Renamed from: USB0
{
Name (_ADR, 0x001D0000)

// Newly added: USB_RES—USB Resume Enable Register (ICH9R-3169722.pdf /16.1.24 / page 642).
OperationRegion (BAR0, PCI_Config, 0xC4, One)
Field (BAR0, ByteAcc, NoLock, Preserve)
{
USBW, 2, Offset (0x01)
}

Method (_S3D, 0, NotSerialized) // S3 Device State
{
Return (0x02)
}

Method (_PSW, 1, NotSerialized) // Power State Wake
{
If (Arg0)
{
Store (0x03, USBW) // Monitor port for remote wakeup and connect/disconnect events.
}
Else
{
Store (Zero, USBW) // Monitoring disable.
}
}

Name (_PRW, Package (0x02) // Power Resources for Wake
{
0x03,
0x04 // Lowest supported sleep state.
})

Method (_DSM, 4, NotSerialized) // Device Specific Method
{
Store (Package (0x02)
{
"device-id",
Buffer (0x02)
{
0x34, 0x3a, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Now search and replace "USB0" with "UHC1". Then repeat this step for every single Device (USBn) in your DSDT. You should search for: 0x001D0000, 0x001D0001, 0x001D0002, 0x001A0001, 0x001A0001 and 0x001A0002. Like I said fix these first. And don't forget to change all callers of USBn !!!

Note: Comment out Device (USB3) with help of /* */

Next target, one of two for today, is Device (USBE) which currently looks like this:
CODE
Device (USBE)
{
Name (_ADR, 0x001D0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x01
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to:
CODE
Device (EHCI) // Renamed from: USBE - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001D0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And the last Device change for today is Device (USE2) which looks like this now:
CODE
Device (USE2)
{
Name (_ADR, 0x001A0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x02
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to this:
CODE
Device (UHCI) // Renamed from: USE2 - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001A0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And as you might have notices, this requires some other additions to your DSDT. And this is what you need to change:
CODE
        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USBE, 0x02)
            Notify (\_SB.PCI0.USE2, 0x02)
            Notify (\_SB.PWRB, 0x02)
            Notify (\_SB.PCI0.HDEF, 0x02)
        }

Which I want you to change into this:
CODE
Method (_L0D, 0, NotSerialized)
{
// New Power Management Control
If (\_SB.PCI0.EHCI.PMES)
{
Store (0x01, \_SB.PCI0.EHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.EHCI, 0x02) // Renamed from: USBE
Notify (\_SB.PWRB, 0x02)
}

// New Power Management Control
If (\_SB.PCI0.UHCI.PMES)
{
Store (0x01, \_SB.PCI0.UHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.UHCI, 0x02) // Renamed from: USE2
Notify (\_SB.PWRB, 0x02)
}
Notify (\_SB.PWRB, 0x02) // You might actually don't need this. Just check it!
Notify (\_SB.PCI0.HDEF, 0x02)


It's a lot of work. A crap load even. And I know, but it can be done. I also know that. It just takes time and effort wink.gif

DO NOT COPY/PASTE CODE FROM THIS FORUM INTO YOUR DSDT!!!! It adds hidden characters which makes it impossible to compile!

For now later!


Chief, thanks a ton for helping biggrin.gif and I've fixed the USB's as per your guidelines. Pls find the latest DSDT with USB fixes attached.
Master Chief
Great. I just opened my eyes and are having the usual morning coffee so bear with me for a few minutes while I try to wake up/read your modified dsdt.

Ok. Attached is a diff -uw output showing a problem. You have to fix those weird looking indentions because this make it a lot harder to read. Are you perhaps using tabs instead of plain simple spaces?

And please fix your post; please don't quote the whole post, or it will become a pain for me to read – I am suffering from RSI which I tell you can be quite painful at times!

Edit: Have you tried your modified dsdt.aml already?
mm67
QUOTE (Master Chief @ Oct 17 2009, 01:04 AM) *
Lets start by fixing USB stuff. The reason for this is that I see something that isn't right. Let's use USB0 as an example:
CODE
Device (USB0)
{
Name (_ADR, 0x001D0000)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)

}

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x34, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

Name (_PRW, Package (0x02)
{
0x03,
0x03
})
}

And this is how is should be:
CODE

Device (UHC1) // Renamed from: USB0
{
Name (_ADR, 0x001D0000)

// Newly added: USB_RES—USB Resume Enable Register (ICH9R-3169722.pdf /16.1.24 / page 642).
OperationRegion (BAR0, PCI_Config, 0xC4, One)
Field (BAR0, ByteAcc, NoLock, Preserve)
{
USBW, 2, Offset (0x01)
}

Method (_S3D, 0, NotSerialized) // S3 Device State
{
Return (0x02)
}

Method (_PSW, 1, NotSerialized) // Power State Wake
{
If (Arg0)
{
Store (0x03, USBW) // Monitor port for remote wakeup and connect/disconnect events.
}
Else
{
Store (Zero, USBW) // Monitoring disable.
}
}

Name (_PRW, Package (0x02) // Power Resources for Wake
{
0x03,
0x04 // Lowest supported sleep state.
})

Method (_DSM, 4, NotSerialized) // Device Specific Method
{
Store (Package (0x02)
{
"device-id",
Buffer (0x02)
{
0x34, 0x3a, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Now search and replace "USB0" with "UHC1". Then repeat this step for every single Device (USBn) in your DSDT. You should search for: 0x001D0000, 0x001D0001, 0x001D0002, 0x001A0001, 0x001A0001 and 0x001A0002. Like I said fix these first. And don't forget to change all callers of USBn !!!

Note: Comment out Device (USB3) with help of /* */

Next target, one of two for today, is Device (USBE) which currently looks like this:
CODE
Device (USBE)
{
Name (_ADR, 0x001D0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x01
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to:
CODE
Device (EHCI) // Renamed from: USBE - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001D0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And the last Device change for today is Device (USE2) which looks like this now:
CODE
Device (USE2)
{
Name (_ADR, 0x001A0007)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}

Return (0x03)
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"AAPL,clock-id",
Buffer (One)
{
0x02
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

Which I want you to change to this:
CODE
Device (UHCI) // Renamed from: USE2 - Extended with Power Management and Port Wake Capabilities.
{
Name (_ADR, 0x001A0007)

OperationRegion (PMCS, PCI_Config, 0x54, 0x02) // Power Management Control/Status (ICH9R-3169722.pdf / 17.1.19 / page 664).
Field (PMCS, WordAcc, NoLock, Preserve)
{
, 15,
PMES, 1
} // Bit 15, PME Status, single bit.

OperationRegion (PWCR, PCI_Config, 0x62, 0x02) // Port Wake Capabilities Register (ICH9R-316972.pdf / 17.1.25 / page 667).
Field (PWCR, AnyAcc, NoLock, Preserve)
{
URE2, 9
}

Method (_PSW, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, URE2) // Clear all bits.
}

If (LEqual (Arg0, One))
{
Store (0x01FF, URE2) // Set bits 0-8
}
}

Name (_PRW, Package (0x02)
{
0x0D,
0x03
})

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}

And as you might have notices, this requires some other additions to your DSDT. And this is what you need to change:
CODE
        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USBE, 0x02)
            Notify (\_SB.PCI0.USE2, 0x02)
            Notify (\_SB.PWRB, 0x02)
            Notify (\_SB.PCI0.HDEF, 0x02)
        }

Which I want you to change into this:
CODE
Method (_L0D, 0, NotSerialized)
{
// New Power Management Control
If (\_SB.PCI0.EHCI.PMES)
{
Store (0x01, \_SB.PCI0.EHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.EHCI, 0x02) // Renamed from: USBE
Notify (\_SB.PWRB, 0x02)
}

// New Power Management Control
If (\_SB.PCI0.UHCI.PMES)
{
Store (0x01, \_SB.PCI0.UHCI.PMES) // Port Wake Implemented
Notify (\_SB.PCI0.UHCI, 0x02) // Renamed from: USE2
Notify (\_SB.PWRB, 0x02)
}
Notify (\_SB.PWRB, 0x02) // You might actually don't need this. Just check it!
Notify (\_SB.PCI0.HDEF, 0x02)


It's a lot of work. A crap load even. And I know, but it can be done. I also know that. It just takes time and effort wink.gif

DO NOT COPY/PASTE CODE FROM THIS FORUM INTO YOUR DSDT!!!! It adds hidden characters which makes it impossible to compile!

For now later!


With these changes I get back the old usb removal warning after sleep and wake up using usb doesn't work.

Master Chief
QUOTE (mm67 @ Oct 17 2009, 01:58 PM) *
With these changes I get back the old usb removal warning after sleep and wake up using usb doesn't work.

First, please do not quote the whole post. See my previous post for reasoning. Thank you.

You can read the ACPI specification and see that every change is right on target, and works on all ASUS boards. We might however need to adjust something, which I am currently still unaware of, simply because I don't have a Gigabyte motherboard.

But more importantly; I don't see any files attached, so I can't do anything with this post now can I. Please attach a clean/unmodified DSDT and your patched copy, because then and only then can I try to fix it for you.
iSoprano
Chief, I compiled/Decompiled ?? the DSDT again and I didn't get any errors. Yes, I am using the modified DSDT.
mm67
QUOTE (Master Chief @ Oct 17 2009, 03:22 PM) *
First, please do not quote the whole post. See my previous post for reasoning. Thank you.

You can read the ACPI specification and see that every change is right on target, and works on all ASUS boards. We might however need to adjust something, which I am currently still unaware of, simply because I don't have a Gigabyte motherboard.

But more importantly; I don't see any files attached, so I can't do anything with this post now can I. Please attach a clean/unmodified DSDT and your patched copy, because then and only then can I try to fix it for you.


I will check if I still have that some where. Just figured out how to enable vanilla Gigabyte steepstepping, like this:
CODE
Scope (\)
{
Name (SSDT, Package (0x18)
{
"CPU0IST ",
0xDFEEDE00,
0x0000022A,
"CPU1IST ",
0xDFEEE2C0,
0x00000152,
"CPU0CST ",
0xDFEEE6E0,
0x0000018A,
"CPU1CST ",
0xDFEEE870,
0x0000018A,
"CPU2IST ",
0xDFEEE420,
0x00000152,
"CPU3IST ",
0xDFEEE580,
0x00000152,
"CPU2CST ",
0xDFEEEA00,
0x0000018A,
"CPU3CST ",
0xDFEEEB90,
0x0000018A
})
Name (CFGD, 0x040383F2)
Name (\PDC0, 0x80000000)
Name (\PDC1, 0x80000000)
Name (\PDC2, 0x80000000)
Name (\PDC3, 0x80000000)
}

Scope (\_PR.CPU0)
{
Name (HI0, 0x00)
Name (HC0, 0x00)
Name (TLD0, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x08, CAP0)
Store (CAP0, PDC0)
If (LEqual (TLD0, 0x00))
{
If (LEqual (And (PDC0, 0x0A), 0x0A))
{
If (And (CFGD, 0x02))
{
OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, 0x01)), DerefOf (Index (SSDT, 0x02
)))
Load (IST0, HI0)
}

Store (0x01, TLD0)
}
}
}
}

Scope (\_PR.CPU1)
{
Name (HI1, 0x00)
Name (HC1, 0x00)
Name (TLD1, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x08, CAP1)
Store (CAP1, PDC1)
If (LEqual (TLD1, 0x00))
{
If (LEqual (And (PDC1, 0x0A), 0x0A))
{
If (And (CFGD, 0x02))
{
OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
)))
Load (IST1, HI1)
}

If (And (CFGD, 0x10))
{
OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B
)))
Load (CST1, HC1)
}

Store (0x01, TLD1)
}
}
}
}

Scope (\_PR.CPU2)
{
Name (HI2, 0x00)
Name (HC2, 0x00)
Name (TLD2, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x08, CAP2)
Store (CAP2, PDC2)
If (LEqual (TLD2, 0x00))
{
If (LEqual (And (PDC2, 0x0A), 0x0A))
{
If (And (CFGD, 0x02))
{
OperationRegion (IST2, SystemMemory, DerefOf (Index (SSDT, 0x0D)), DerefOf (Index (SSDT, 0x0E
)))
Load (IST2, HI2)
}

If (And (CFGD, 0x10))
{
OperationRegion (CST2, SystemMemory, DerefOf (Index (SSDT, 0x13)), DerefOf (Index (SSDT, 0x14
)))
Load (CST2, HC2)
}

Store (0x01, TLD2)
}
}
}
}

Scope (\_PR.CPU3)
{
Name (HI3, 0x00)
Name (HC3, 0x00)
Name (TLD3, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x08, CAP3)
Store (CAP3, PDC3)
If (LEqual (TLD3, 0x00))
{
If (LEqual (And (PDC3, 0x0A), 0x0A))
{
If (And (CFGD, 0x02))
{
OperationRegion (IST3, SystemMemory, DerefOf (Index (SSDT, 0x10)), DerefOf (Index (SSDT, 0x11
)))
Load (IST3, HI3)
}

If (And (CFGD, 0x10))
{
OperationRegion (CST3, SystemMemory, DerefOf (Index (SSDT, 0x16)), DerefOf (Index (SSDT, 0x17
)))
Load (CST3, HC3)
}

Store (0x01, TLD3)
}
}
}
}


This is pure vanilla from acpidump, all that needs to be changed is value of CFGD, new one is 0x040483F2
and these If (LEqual (And (PDC0, 0x0A), 0x0A)) lines must be like this If (LEqual (And (PDC0, 0x09), 0x09)).
This gives vanilla P-states, on my board there is only two. Changing the value of pdc makes tables load and
changing cfgd loads npss tables, original value loads spss tables
Master Chief
QUOTE (iSoprano @ Oct 17 2009, 02:33 PM) *
Chief, I compiled/Decompiled ?? the DSDT again and I didn't get any errors. Yes, I am using the modified DSDT.

Perfect. And you don't have any of the issues mm67 is having?

p.s. I still have to look at the new file, but have you fixed the weird indentions (remember I just woke up)?
iSoprano
QUOTE (Master Chief @ Oct 17 2009, 01:38 PM) *
Perfect. And you don't have any of the issues mm67 is having?

p.s. I still have to look at the new file, but have you fixed the weird indentions (remember I just woke up)?


For me still I don't have sleep so unable to test mm67's scenario. I had used tabs earlier but it's fixed now. Appreciate your help and believe me been looking forward to your next lesson biggrin.gif
Master Chief
QUOTE (mm67 @ Oct 17 2009, 02:36 PM) *
I will check if I still have that some where.

Would you mind sticking to the topic at hand, and please do not dump unrelated stuff here, which should be part of the DSDT - Vanilla Speedstep thread. Not to mention that I already posted a better solution there. End of discussion.

p.s. Show some respect for an old guy in pain – I can barely find a position in front of my computer without pain – so please, really, fix your post.
mm67
QUOTE (Master Chief @ Oct 17 2009, 03:54 PM) *
Would you mind sticking to the topic at hand, and please do not dump unrelated stuff here, which should be part of the DSDT - Vanilla Speedstep thread. Not to mention that I already posted a better solution there. End of discussion.

p.s. Show some respect for an old guy in pain – I can barely find a position in front of my computer without pain – so please, really, fix your post.


Somehow I was under the impression that this thread was about vanilla speedstepping...
Anyway, here is dsdt.dsl with Your modifications:
Click to view attachment

and for comparison here is one with fully working usb:
Click to view attachment
Master Chief
QUOTE (mm67 @ Oct 17 2009, 04:32 PM) *
Somehow I was under the impression that this thread was about vanilla speedstepping...
Anyway, here is dsdt.dsl with Your modifications:
Click to view attachment

and for comparison here is one with fully working usb:
Click to view attachment

Changing the Device names should not be a problem. Really. And I don't think that the problem is related to the changes to/in UHCn but EHCI and/or UHCI.

You might be able to verify this, but start by looking at Method (_L0D) first. There you'll find two if clauses. I wonder if PMES is high on your board i.e. comment the If (\_SB.PCI0.[E/u]HCI.PMES) { bits out, but leave the rest intact. Don't forget to add // for the closing }. If that makes it work for your board, then that bit is not high.

And if that didn't work, then change the EHCI/UHCI methods bit by bit.

Good luck!
FormerlyKnownAs
QUOTE (mm67 @ Oct 17 2009, 03:32 PM) *
Somehow I was under the impression that this thread was about vanilla speedstepping...
Anyway, here is dsdt.dsl with Your modifications:
Click to view attachment

and for comparison here is one with fully working usb:
Click to view attachment


I don't know if this is technically correct but it works for my USB devices:

http://www.insanelymac.com/forum/index.php...8014&st=260

I'm still using RIP script but I understand this is to overcome my sh1tty TSSTCorps DVDR.

Master Chief - would really appreciate any advice can you offer regarding adding SBUS (currently using your legacy SMC and AGPM kext.)?

I've added NVPM to my 9500 GT device properties but still only have this in IOREG under PCI0:
Click to view attachment

and how do you think this could be cleaned up:
CODE
{
Processor (CPU0, 0x00, 0x00000410, 0x06) {}
Processor (CPU1, 0x01, 0x00000410, 0x06) {}
Processor (CPU2, 0x02, 0x00000410, 0x06) {}
Processor (CPU3, 0x03, 0x00000410, 0x06) {}
Name (CFGD, 0x040383F2)
Name (PDC0, 0x80000000)
}

Scope (_PR.CPU0)
{
Method (_CST, 0, NotSerialized)
{
If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC0, 0x10
))))
{
Return (Package (0x02)
{
One,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x00, // Bit Width
0x00, // Bit Offset
0x0000000000000000, // Address
,)
},
One,
0x9D,
0x03E8
}
})
}
If (And (PDC0, 0x0300))
{
If (And (CFGD, 0x20))
{
Return (Package (0x03)
{
0x02,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
,)
},

One,
One,
0x03E8
},

Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000010, // Address
,)
},

0x02,
One,
0x01F4
}
})
}
}
If (And (CFGD, 0x20))
{
Return (Package (0x03)
{
0x02,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
,)
},

One,
One,
0x03E8
},

Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000000414, // Address
,)
},

0x02,
One,
0x01F4
}
})
}

Return (Package (0x02)
{
One,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
,)
},

One,
One,
0x03E8
}
})
}
Method (_PPC, 0, NotSerialized)
{
Return (Zero)
}

Method (_PCT, 0, NotSerialized)
{
Return (Package (0x02)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x10,
0x00,
0x0000000000000199,
,)
},

ResourceTemplate ()
{
Register (FFixedHW,
0x10,
0x00,
0x0000000000000198,
,)
}
})
}
Method (_PSS, 0, NotSerialized)
{
Return (Package (0x03)
{
Package (0x06)
{
0x0C20,
0x000124F8,
0xA0,
0x0A,
0x0820,
0x0820
},

Package (0x06)
{
0x0A9C,
0xFDE8,
0xA0,
0x0A,
0x071C,
0x071C
},

Package (0x06)
{
0x0918,
0xEA60,
0xA0,
0x0A,
0x061A,
0x061A
}
})
}
}

Scope (_PR.CPU1)
{
Method (_CST, 0, NotSerialized)
{
Return (^^CPU0._CST ())
}

Method (_PPC, 0, NotSerialized)
{
Return (Zero)
}

Method (_PCT, 0, NotSerialized)
{
Return (^^CPU0._PCT ())
}

Method (_PSS, 0, NotSerialized)
{
Return (^^CPU0._PSS ())
}
}

Scope (_PR.CPU2)
{
Method (_CST, 0, NotSerialized)
{
Return (^^CPU0._CST ())
}

Method (_PPC, 0, NotSerialized)
{
Return (Zero)
}

Method (_PCT, 0, NotSerialized)
{
Return (^^CPU0._PCT ())
}

Method (_PSS, 0, NotSerialized)
{
Return (^^CPU0._PSS ())
}
}

Scope (_PR.CPU3)
{
Method (_CST, 0, NotSerialized)
{
Return (^^CPU0._CST ())
}

Method (_PPC, 0, NotSerialized)
{
Return (Zero)
}

Method (_PCT, 0, NotSerialized)
{
Return (^^CPU0._PCT ())
}

Method (_PSS, 0, NotSerialized)
{
Return (^^CPU0._PSS ())
}
}


p.s. i find the green green grass of thailand helps a bundle with RSI - doesn't do much for the old synapsis though smile.gif
mm67
QUOTE (Master Chief @ Oct 17 2009, 05:58 PM) *
Changing the Device names should not be a problem. Really. And I don't think that the problem is related to the changes to/in UHCn but EHCI and/or UHCI.

You might be able to verify this, but start by looking at Method (_L0D) first. There you'll find two if clauses. I wonder if PMES is high on your board i.e. comment the If (\_SB.PCI0.[E/u]HCI.PMES) { bits out, but leave the rest intact. Don't forget to add // for the closing }. If that makes it work for your board, then that bit is not high.

And if that didn't work, then change the EHCI/UHCI methods bit by bit.

Good luck!


With these modifications I have no more problems with sleep.
Click to view attachment

Ehci modifications make ehci ports show up as internal, otherwise they are shown as expansion slots which seems to kill
power to usb during sleep.Uhci device modifications give wake up by usb.

QUOTE (Master Chief @ Oct 17 2009, 03:54 PM) *
Would you mind sticking to the topic at hand, and please do not dump unrelated stuff here, which should be part of the DSDT - Vanilla Speedstep thread. Not to mention that I already posted a better solution there. End of discussion.


Just checked Your code again, what makes You think that it is better to have a fixed PSS table in dsdt for one specific processor. My method uses motherboard's own pss tables so they are dynamical. No matter if You change processor or overclock, speedstepping always works.
FormerlyKnownAs
I don't see the point in running 2 DSDT speedstepping threads.

Post moved: http://www.insanelymac.com/forum/index.php...p;#entry1301888

D.
Master Chief
QUOTE (mm67 @ Oct 17 2009, 08:18 PM) *
With these modifications I have no more problems with sleep.Click to view attachment
Ehci modifications make ehci ports show up as internal, otherwise they are shown as expansion slots which seems to kill
power to usb during sleep.

Great. Nice work.

QUOTE (mm67 @ Oct 17 2009, 08:18 PM) *
With these modifications I have no more problems with sleep. Uhci device modifications give wake up by usb.

That's a good start. I however fail to see any logic in using the wrong device name, and then having to set device_type to "EHCI". Yes, you might need to change the device_id but that's about it.

QUOTE (mm67 @ Oct 17 2009, 08:18 PM) *
Just checked Your code again, what makes You think that it is better to have a fixed PSS table in dsdt for one specific processor. My method uses motherboard's own pss tables so they are dynamical. Now matter if You change processor or overclock, speedstepping always works.

The reason is pretty obvious; the PSS object data in the BIOS is usually way overpowered. Giving it less juice makes it life longer. I'll let people decide what they want to use, but I think to know the answer already.
iSoprano
QUOTE (FormerlyKnownAs @ Oct 17 2009, 08:53 PM) *
Righty Hoe!

I've got as far as changing the P and C state parts as per MC's v2.8.


Do you see cst info in IO register? I've noticed that when we don't have this the processor runs 10C hotter
Master Chief
QUOTE (FormerlyKnownAs @ Oct 17 2009, 09:53 PM) *
I don't see the point in running 2 DSDT speedstepping threads.

Post moved: http://www.insanelymac.com/forum/index.php...p;#entry1301888

D.

Looking pretty good. Just give it a go.
FormerlyKnownAs
QUOTE (Master Chief @ Oct 17 2009, 09:11 PM) *
Looking pretty good. Just give it a go.


is the c-state call on CPU core No:2
CODE
{
Or (TBLD, 0x03, TBLD) // Setting bit 0 & 1 (simulating a CST table load).
Load (STBL, HNDL)
}


processor specific ??

D.
Master Chief
QUOTE (iSoprano @ Oct 17 2009, 10:09 PM) *
Do you see cst info in IO register? I've noticed that when we don't have this the processor runs 10C hotter

You either want CSTInfo (Number:0x1140105) and/or CStateOverride (Boolean:true) I have both BTW.
Wasn't there someone with a different value for CSTInfo in the DSDT - Vanilla SpeedStep thread?

Edit: Blimey. This isn't even the DSDT - Vanilla SpeedStep thread. Let's continue it there!

QUOTE (FormerlyKnownAs @ Oct 17 2009, 10:15 PM) *
is the c-state call on CPU core No:2
CODE
{
Or (TBLD, 0x03, TBLD) // Setting bit 0 & 1 (simulating a CST table load).
Load (STBL, HNDL)
}


processor specific ??

D.

On all but the first Processor definition block yes. And TLBD is only used to keep track of table loading. To prevent it from reloading the tables. Noting more. It has nothing to do with the processor type.

What the hell. Since when did this became: "GA-EP35-DS3L - Vanilla Speedstepping, To get sleep working with Vanilla speedstepping"? The idea was to help people fix their DSDT, yes, but nothing about speedstep because we already have a good going thread for this. This way I keep losing track of everything.

I am out of here, until this get fixed!
FormerlyKnownAs
QUOTE (Master Chief @ Oct 17 2009, 09:28 PM) *
Edit: Blimey. This isn't even the DSDT - Vanilla SpeedStep thread. Let's continue it there!
but let's continue this in your thread.


Shout me down if you will - but I don't see the point of splitting the original thread ASUS/GigaByte
iSoprano
QUOTE (Master Chief @ Oct 17 2009, 09:28 PM) *
You either want CSTInfo (Number:0x1140105) and/or CStateOverride (Boolean:true) I have both BTW.
Wasn't there someone with a different value for CSTInfo in the DSDT - Vanilla SpeedStep thread?

Edit: Blimey. This isn't even the DSDT - Vanilla SpeedStep thread. Let's continue it there!


On all but the first Processor definition block yes. And TLBD is only used to keep track of table loading. To prevent it from reloading the tables. Noting more. It has nothing to do with the processor type.

What the hell. Since when did this became: "GA-EP35-DS3L - Vanilla Speedstepping, To get sleep working with Vanilla speedstepping"? The idea was to help people fix their DSDT, yes, but nothing about speedstep because we already have a good going thread for this. This way I keep losing track of everything.

I am out of here, until this get fixed!


Chief, you are right, will modify the thread name to DSDT fixes for Gigabyte boards
Master Chief
QUOTE (FormerlyKnownAs @ Oct 17 2009, 10:37 PM) *
Shout me down if you will - but I don't see the point of splitting the original thread ASUS/GigaByte

I won't. No need for shouting. It's just that splitting it up this way makes it easier to maintain for me, and easier to understand for newcomers. But what exactly is it that makes you unhappy?

System overload? Meltdown? I mean, please remember that I do everything, for free, next to my day job and that I do happen to have a great family and social life. And thus I need all the help I can get to help you and other people here. Yes I am a little control freak, I'll admit that here, but it is getting insanely busy here. That's why I need to control stuff a little wink.gif
FormerlyKnownAs
QUOTE (Master Chief @ Oct 17 2009, 09:50 PM) *
But what exactly is it that makes you unhappy?


where do I start - i can whinge for england! wink.gif

seriously - nothing here!

"DSDT fixes for Gigabyte boards" does it for me

QUOTE (Master Chief @ Oct 17 2009, 09:50 PM) *
System overload? Meltdown? I mean, please remember that I do everything, for free, next to my day job and that I do happen to have a great family and social life. And thus I need all the help I can get to help you and other people here. Yes I am a little control freak, I'll admit that here, but it is getting insanely busy here. That's why I need to control stuff a little wink.gif


dude - a lot of people have put a lot of FREE work into this forum.
Your work is very much appreciated (as is everybody elses) and is very fresh.

Don't burn yourself out over it! smile.gif
mm67
QUOTE (Master Chief @ Oct 17 2009, 11:00 PM) *
Great. Nice work.


That's a good start. I however fail to see any logic in using the wrong device name, and then having to set device_type to "EHCI". Yes, you might need to change the device_id but that's about it.


According to Intel ICH10 datasheet I have 6+1 Uhci devices and 2 Ehci devices, don't know about ICH9.

QUOTE
The reason is pretty obvious; the PSS object data in the BIOS is usually way overpowered. Giving it less juice makes it life longer. I'll let people decide what they want to use, but I think to know the answer already.


That is right, handmade PSS table works a little bit cooler, but then again that is not universal.
yeehaa
QUOTE (FormerlyKnownAs @ Oct 17 2009, 03:53 PM) *
I don't see the point in running 2 DSDT speedstepping threads.

Post moved: http://www.insanelymac.com/forum/index.php...p;#entry1301888

D.


but the other thread is for Cstates, right? tongue.gif
and this one all things gigabyte.
keeza
Just a quick question,

The USB fix metioned at the outset of this thread adds info to the USB devices and to the EHCI device.

I had read previously that EP45 boards only require EHCI devices to be fixed whereas EP35 boards require the method added to the USB devices.

Presently, sleep works fine (manual) and usb device removal error has been fixed. Only thing that I've noticed is that my mouse doesn't wake my computer from sleep when connected to my cinema display's usb hub. When connected to the motherboard it wakes fine.

Should I fix it if it ain't broke or am I missing something?

Attached is my current dsdt.
Master Chief
QUOTE (FormerlyKnownAs @ Oct 17 2009, 11:07 PM) *
where do I start - i can whinge for england! wink.gif
seriously - nothing here!
"DSDT fixes for Gigabyte boards" does it for me

dude - a lot of people have put a lot of FREE work into this forum.
Your work is very much appreciated (as is everybody elses) and is very fresh.

Don't burn yourself out over it! smile.gif

Trust me I won't. And that is why I want a little control over things wink.gif
mm67
QUOTE (keeza @ Oct 18 2009, 12:18 AM) *
Just a quick question,

The USB fix metioned at the outset of this thread adds info to the USB devices and to the EHCI device.

I had read previously that EP45 boards only require EHCI devices to be fixed whereas EP35 boards require the method added to the USB devices.

Presently, sleep works fine (manual) and usb device removal error has been fixed. Only thing that I've noticed is that my mouse doesn't wake my computer from sleep when connected to my cinema display's usb hub. When connected to the motherboard it wakes fine.

Should I fix it if it ain't broke or am I missing something?

Attached is my current dsdt.


I don't see any new functionality with this usb fix, both work just the same for me.
FormerlyKnownAs
QUOTE (keeza @ Oct 17 2009, 10:18 PM) *
Just a quick question,

The USB fix metioned at the outset of this thread adds info to the USB devices and to the EHCI device.

I had read previously that EP45 boards only require EHCI devices to be fixed whereas EP35 boards require the method added to the USB devices.

Presently, sleep works fine (manual) and usb device removal error has been fixed. Only thing that I've noticed is that my mouse doesn't wake my computer from sleep when connected to my cinema display's usb hub. When connected to the motherboard it wakes fine.

Should I fix it if it ain't broke or am I missing something?

Attached is my current dsdt.


with ICH9 (P35) I've had to give my USB devices the device id for ICH10 (P45)
you should only need to add/ edit the EHCI part so they are shown as internal in system profiler - as apposed to 'expansion slot'

D.
Master Chief
QUOTE (mm67 @ Oct 17 2009, 11:09 PM) *
According to Intel ICH10 datasheet I have 6+1 Uhci devices and 2 Ehci devices, don't know about ICH9.

But of course. The ICH9 has also two EHCI controllers, but in a MacPro3,1 one is named UHCI That's why I use this name, because one of my goals is to get my DSDT as close as possible to a MacPro3,1

QUOTE (mm67 @ Oct 17 2009, 11:09 PM) *
That is right, handmade PSS table works a little bit cooler, but then again that is not universal.

Unfortunately not no, but then again almost nothing is (take a look at P35/P45 boards for example).

QUOTE (mm67 @ Oct 17 2009, 11:30 PM) *
I don't see any new functionality with this usb fix, both work just the same for me.

But then again... nobody here said anything about adding feature/functionality.

QUOTE (keeza @ Oct 17 2009, 11:18 PM) *
Just a quick question,

The USB fix metioned at the outset of this thread adds info to the USB devices and to the EHCI device.

I had read previously that EP45 boards only require EHCI devices to be fixed whereas EP35 boards require the method added to the USB devices.

Presently, sleep works fine (manual) and usb device removal error has been fixed. Only thing that I've noticed is that my mouse doesn't wake my computer from sleep when connected to my cinema display's usb hub. When connected to the motherboard it wakes fine.

Should I fix it if it ain't broke or am I missing something?

Attached is my current dsdt.

Try it and be surprised – I have my mouse receiver connected to the hub and wakeup works with the mouse.
mm67
QUOTE (Master Chief @ Oct 18 2009, 01:29 AM) *
But of course. The ICH9 has also two EHCI controllers, but in a MacPro3,1 one is named UHCI That's why I use this name, because one of my goals is to get my DSDT as close as possible to a MacPro3,1


Unfortunately not no, but then again almost nothing is (take a look at P35/P45 boards for example).


But then again... nobody here said anything about adding feature/functionality.


Try it and be surprised – I have my mouse receiver connected to the hub and wakeup works with the mouse.


Ok, now I understand more about Your goals.
Care to explain how this works, Your cst has C1 like this:

CODE
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
One,
One,
0x03E8


and Gigabyte vanilla cst has it like this:
CODE
ResourceTemplate ()
{
Register (FFixedHW,
0x00, // Bit Width
0x00, // Bit Offset
0x0000000000000000, // Address
,)
},

0x01,
0x01,
0x03E8


That bit width and bit offset are the only thing that prevents me from loading vanilla cst tables. How and where are these checked ? And is there anyway to make this check ignore Gigabytes badly written cst.
Master Chief
QUOTE (mm67 @ Oct 18 2009, 01:48 AM) *
Ok, now I understand more about Your goals. Care to explain how this works, Your cst has C1 like this:...

I've read Your post twice now, and can't stop thinking about the funny way of writing You and Your in the middle of a line. Just weird. Don't You agree?

But seriously now; your SSDT includes four IST and four CST tables. Why don't you use these, instead of trying to add other peoples stuff? Maybe it is just me failing to see the logic here, but then again maybe you can help me understand it by attaching your ACPIdump and all tables.. including the original DSDT. Thanks.

p.s. Sorry, but I cannot answer your question (confidential information from Intel).
mm67
QUOTE (Master Chief @ Oct 18 2009, 04:05 AM) *
I've read Your post twice now, and can't stop thinking about the funny way of writing You and Your in the middle of a line. Just weird. Don't You agree?

But seriously now; your SSDT includes four IST and four CST tables. Why don't you use these, instead of trying to add other peoples stuff? Maybe it is just me failing to see the logic here, but then again maybe you can help me understand it by attaching your ACPIdump and all tables.. including the original DSDT. Thanks.

p.s. Sorry, but I cannot answer your question (confidential information from Intel).


English is not my native language...Let's see how you write finnish smile.gif But anyway here is my original acpidump.
Click to view attachment

I am using original ist tables but Gigabyte cst tables are buggy. What I want to know is if
there is some way to ignore this, like Linux and Windows seem to do.
Master Chief
QUOTE (mm67 @ Oct 18 2009, 03:17 AM) *
English is not my native language...Let's see how you write finnish smile.gif But anyway here is my original acpidump.
Click to view attachment

That would be something eh: Kiitos kohteliaisuus mutta koska en ole englanti

QUOTE (mm67 @ Oct 18 2009, 03:17 AM) *
I am using original ist tables but Gigabyte cst tables are buggy.

How come? What is the problem?

QUOTE (mm67 @ Oct 18 2009, 03:17 AM) *
What I want to know is if there is some way to ignore this, like Linux and Windows seem to do.


Use 0x40383E2 instead of 0x40383F2 for CFGD which invalidates If (And (CFGD, 0x10)) and thus the tables won't load. Or use a customized SSDT object in your DSDT.
mm67
QUOTE (Master Chief @ Oct 18 2009, 06:13 AM) *
That would be something eh: Kiitos kohteliaisuus mutta koska en ole englanti


How come? What is the problem?



Use 0x40383E2 instead of 0x40383F2 for CFGD which invalidates If (And (CFGD, 0x10)) and thus the tables won't load. Or use a customized SSDT object in your DSDT.


That's just what I do now, I mean i have removed the lines to load original cst tables and use customized object instead. What I want to do is use 0x4048352 and load the vanilla cst tables. Now that is impossible because of those two lines in Gigabytes cst.

Yes, that is some finnish words in a very strange order smile.gif
milanca
@iSoprano,

for testing, will you remove your gfx part from your dsdt and boot SL in vesa mode. If USBs are fixed and the system goes to sleep and wakes up, it seems that broken sleep is caused by gfx.
iSoprano
QUOTE (milanca @ Oct 18 2009, 01:31 PM) *
@iSoprano,

for testing, will you remove your gfx part from your dsdt and boot SL in vesa mode. If USBs are fixed and the system goes to sleep and wakes up, it seems that broken sleep is caused by gfx.


Sleep doesn't work for me when I use MacPro3,1 CST tables. The monitor switches off but the cpu fan keeps spinning..... The trade off is CPU runs around 35-40C. If I don't use MP3,1 tables then I get sleep back but cpu runs 10C hotter around 50C.

I hope someone could give me solution for fixing my CPU fan....so that I could keep the MP3,1 tables
xopher
QUOTE (iSoprano @ Oct 18 2009, 04:02 PM) *
Sleep doesn't work for me when I use MacPro3,1 CST tables. The monitor switches off but the cpu fan keeps spinning..... The trade off is CPU runs around 35-40C. If I don't use MP3,1 tables then I get sleep back but cpu runs 10C hotter around 50C.

I hope someone could give me solution for fixing my CPU fan....so that I could keep the MP3,1 tables


The DS4 doesn't give you cst-tables while dumping DSDT? I got the ud3r, and I get cst-tables.. But only if I run ACPI-dump in linux. Haven't tried Everest in Windows yet, but that'll probably have the same outcome. (I don't have a windows livecd around..)
FormerlyKnownAs
QUOTE (xopher @ Oct 18 2009, 05:30 PM) *
The DS4 doesn't give you cst-tables while dumping DSDT? I got the ud3r, and I get cst-tables.. But only if I run ACPI-dump in linux. Haven't tried Everest in Windows yet, but that'll probably have the same outcome. (I don't have a windows livecd around..)


a lot of GiGaByte MB dont have cst tables - mine included !!

##EDIT##
I'm yet to find somebody who does not have native cst tables in thier SSDT make c-states work !!!

watching this space rolleyes.gif
Matthew L.
QUOTE (FormerlyKnownAs @ Oct 18 2009, 06:58 PM) *
a lot of GiGaByte MB dont have cst tables - mine included !!

##EDIT##
I'm yet to find somebody who does not have native cst tables in thier SSDT make c-states work !!!

watching this space rolleyes.gif

Everyone with the same problem, check here, and read the forum:
http://www.insanelymac.com/forum/index.php...t&p=1302320

Thanks to Master Chief, all thanks and respect goes to him!
xopher
I'm having trouble getting my High-speed USB-ports to show as 'Built-in' instead of 'Expansion Slot'.

I've followed the usb-fix on the fron page, nice work by the way, but no.

Here's two DSDT's, the first one:
Click to view attachment
It has the USB-problem fixed for me.

The second one:
Click to view attachment
Built from scratch using the information available in this thread for the USBE, USE2-fix. It reports the high-speed ports as 'Expansion slots'.

I'd appreciate if someone could take a peek, and perhaps tell me what I've screwed up.

Thanks
Matthew L.
QUOTE (xopher @ Oct 18 2009, 09:06 PM) *
I'm having trouble getting my High-speed USB-ports to show as 'Built-in' instead of 'Expansion Slot'.

I've followed the usb-fix on the fron page, nice work by the way, but no.

Here's two DSDT's, the first one:
Click to view attachment
It has the USB-problem fixed for me.

The second one:
Click to view attachment
Built from scratch using the information available in this thread for the USBE, USE2-fix. It reports the high-speed ports as 'Expansion slots'.

I'd appreciate if someone could take a peek, and perhaps tell me what I've screwed up.

Thanks


I've compared your second DSDT to this guide, and I've found that you've used the same fake device-id at all of your USB devices. You should use a different one everywhere corresponding to the device's address by the guide mentioned above.
xopher
QUOTE (Matthew L. @ Oct 18 2009, 10:28 PM) *
I've compared your second DSDT to this guide, and I've found that you've used the same fake device-id at all of your USB devices. You should use a different one everywhere corresponding to the device's address by the guide mentioned above.


Thanks, I must have missed those! Cheers!

Update:

Ok, I added the device-ids, still the same problem. And I'm getting this error at boot because of it:

QUOTE
USBF: 1. 14 AppleUSBOHCI[0xffffff80098a7000]::CheckSleepCapability - controller will be unloaded across sleep
USBF: 1. 15 AppleUSBOHCI[0xffffff8009ac7000]::CheckSleepCapability - controller will be unloaded across sleep


This is my edited DSDT, with comments on top - tried to include everything I've added, I might have forgot something:

Click to view attachment

Matthew L.
QUOTE (xopher @ Oct 18 2009, 09:31 PM) *
Thanks, I must have missed those! Cheers!

Update:

Ok, I added the device-ids, still the same problem. And I'm getting this error at boot because of it:



This is my edited DSDT, with comments on top - tried to include everything I've added, I might have forgot something:

Click to view attachment



Can it be the source of problem that you use a buffer of just 2 (instead of 4)?
xopher
QUOTE (Matthew L. @ Oct 18 2009, 10:56 PM) *
Can it be the source of problem that you use a buffer of just 2 (instead of 4)?


What buffer are you referring to? The reason I'm this perplexed, is that it works fine in the first DSDT, in my previous post - and I can't figure out what makes it tick so to speak. :/

Edit: I changed the buffer to 4, rebooting, and reporting back in a bit.

Update: Ok, booted up, still the same problem. Ideas? I don't think it has to do with the UHC1-6 devices, rather with the EHCI and UHCI devices.
Master Chief
QUOTE (xopher @ Oct 18 2009, 10:38 PM) *
What buffer are you referring to? The reason I'm this perplexed, is that it works fine in the first DSDT, in my previous post - and I can't figure out what makes it tick so to speak. :/

Edit: I changed the buffer to 4, rebooting, and reporting back in a bit.

Update: Ok, booted up, still the same problem. Ideas? I don't think it has to do with the UHC1-6 devices, rather with the EHCI and UHCI devices.

Go back to the one that worked. Rename the USBn devices to UHCn and recompile the DSDT to check everything. Then fix the UHCn devices, without changing the EHCI/UHCI devices! Recompile and check everything first, before you continue.

Only add the new lines to EHCI/UHCI when everything is fine. Then recompile/check everything, and see what you can change in Method _DSM. What exactly makes it fail (report as Expansion Slot).

p.s. the 2 versus the 4 in the DSDT might be related to the CMOS reset bug.

QUOTE (mm67 @ Oct 18 2009, 08:37 AM) *
That's just what I do now, I mean i have removed the lines to load original cst tables and use customized object instead. What I want to do is use 0x4048352 and load the vanilla cst tables. Now that is impossible because of those two lines in Gigabytes cst.

But again, what exactly in the original CST is buggy? What makes you think that it is buggy?
xopher
QUOTE (Master Chief @ Oct 19 2009, 01:31 AM) *
Go back to the one that worked. Rename the USBn devices to UHCn and recompile the DSDT to check everything. Then fix the UHCn devices, without changing the EHCI/UHCI devices! Recompile and check everything first, before you continue.


Ok, the EHCI/UHCI is built-in again, I replaced this:
CODE
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"AAPL,current-available",
0x05DC,

"AAPL,current-extra",
0x04B0,

"AAPL,current-in-sleep",
0x09C4

}, Local0)


with this:
CODE
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0x3A, 0x3A, 0x00, 0x00
},

"AAPL,clock-id",
Buffer (One)
{
0x01
},

"device_type",
Buffer (0x05)
{
"EHCI"
}
}, Local0)


Under Device (EHCI), and Device (UHCI), to the latter with a slight modification, device-id 0x3C instead of 0x3A, and Buffer (One), 0x02, instead of 0x01.

Is doing this contradicting something you've accomplished with the ACPI-code on the first page?

While I'm waiting for an answer to this, I'll start cleaning up my cst, pss code. Then what? smile.gif
Master Chief
QUOTE (xopher @ Oct 19 2009, 01:48 AM) *
Ok, the EHCI/UHCI is built-in again, I replaced this:

<snip />

Under Device (EHCI), and Device (UHCI), to the latter with a slight modification, device-id 0x3C instead of 0x3A, and Buffer (One), 0x02, instead of 0x01.

Is doing this contradicting something you've accomplished with the ACPI-code on the first page?

I first need to know a few things:

1) Does it work without the device_type bits in _DSM?
2) What if you only add the device_id bits and add my code?

Note: Don't forget to adjust Package(0x06) accordantly!

QUOTE (xopher @ Oct 19 2009, 01:48 AM) *
While I'm waiting for an answer to this, I'll start cleaning up my cst, pss code. Then what? smile.gif

Let's see: Does (auto) sleep work for you? What about restart/shutdown without OpenHaltRestart.kext?

p.s. No attached file so I'll have to ask this: You did not add device_id's to the UHCn devices, right?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.