davidm71 Posted November 20, 2011 Share Posted November 20, 2011 Hi, I use to have my ps2 keyboard working fine through the voodoops2 controller driver included in [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] for lion 10.7.2, but found a dsdt to enable jmicron esata ports http://www.tonymacx86.com/viewtopic.php?f=...47a4abcbb10db0c And now my keyboard doesnt work while the dsdt is installed. Usb keyboards work fine and i could probably do without it but its my favorite keyboard! Anyone know if i need a dsdt edit to get working again? Thanks! Link to comment Share on other sites More sharing options...
Gringo Vermelho Posted November 20, 2011 Share Posted November 20, 2011 Use diffmerge (it's free, and available for both Windows and OS X) to compare your unmodified DSDT (extract on Windows using Everest for example) to the patched DSDT. The PS2 devices were probably removed from the patched DSDT because the person who edited it didn't need them. Yet another reason why you should never use someone elses DSDT. Link to comment Share on other sites More sharing options...
juanerson Posted November 20, 2011 Share Posted November 20, 2011 All you need (see IRQs are the most important thing) to load the keyboard "AND OPTIONALLY" if wants the mouse too: Device (PS2K) //Keyboard { Name (_HID, EisaId ("PNP0303")) Name (_STA, 0x0F) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQ (Edge, ActiveHigh, Exclusive, ) {1} }) } Device (PS2M) //Mouse { Name (_HID, EisaId ("PNP0F13")) Name (_STA, 0x0F) Name (_CRS, ResourceTemplate () { IRQ (Edge, ActiveHigh, Exclusive, ) {12} }) } NOTE: Copy the above code in ANY PLACE inside the Big "Device (PCI0)". Good Luck. Link to comment Share on other sites More sharing options...
davidm71 Posted November 20, 2011 Author Share Posted November 20, 2011 You know I used DsteSe App to extract my dsdt file and I compared the PS2K section to the other dsdt and those sections were identical! So guess I need to make my own you say? Thanks. Link to comment Share on other sites More sharing options...
juanerson Posted November 21, 2011 Share Posted November 21, 2011 "Maybe" by adding the PS2M device? I think the voodooPS2 driver need the two devices present in the DSDT to load-match with the itself functionality. Then reinstall the driver (use from This Topic), repair permissions and rebuilt caché. Link to comment Share on other sites More sharing options...
davidm71 Posted November 22, 2011 Author Share Posted November 22, 2011 "Maybe" by adding the PS2M device? I think the voodooPS2 driver need the two devices present in the DSDT to load-match with the itself functionality. Then reinstall the driver (use from This Topic), repair permissions and rebuilt caché. Putting that code into the dsdt produces 255 errors. Are you sure that the code is correct? Here is my PS2K code: Device (PS2K) { Name (_HID, EisaId ("PNP0303")) Name (_CID, EisaId ("PNP030B")) Method (_STA, 0, NotSerialized) { If (And (IOST, 0x0400)) { Return (0x0F) } Else { Return (Zero) } } Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x00, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x00, // Alignment 0x01, // Length ) IRQNoFlags () {1} }) Name (_PRS, ResourceTemplate () { StartDependentFn (0x00, 0x00) { FixedIO ( 0x0060, // Address 0x01, // Length ) FixedIO ( 0x0064, // Address 0x01, // Length ) IRQNoFlags () {1} } EndDependentFn () }) Method (_PSW, 1, NotSerialized) { Store (Arg0, KBFG) } } Scope (\) { Name (KBFG, One) } Method (PS2K._PRW, 0, NotSerialized) { Return (GPRW (0x1D, 0x04)) } Device (PS2M) { Name (_HID, EisaId ("PNP0F03")) Name (_CID, EisaId ("PNP0F13")) Method (_STA, 0, NotSerialized) { If (And (IOST, 0x4000)) { Return (0x0F) } Else { Return (Zero) } } Name (CRS1, ResourceTemplate () { IRQNoFlags () {12} }) Name (CRS2, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x00, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x00, // Alignment 0x01, // Length ) IRQNoFlags () {12} }) Method (_CRS, 0, NotSerialized) { If (And (IOST, 0x0400)) { Return (CRS1) } Else { Return (CRS2) } } Name (_PRS, ResourceTemplate () { StartDependentFn (0x00, 0x00) { IRQNoFlags () {12} } EndDependentFn () }) Method (_PSW, 1, NotSerialized) { Store (Arg0, MSFG) } } Scope (\) { Name (MSFG, One) } Method (PS2M._PRW, 0, NotSerialized) { Return (GPRW (0x1D, 0x04)) } Link to comment Share on other sites More sharing options...
juanerson Posted November 22, 2011 Share Posted November 22, 2011 Putting that code into the dsdt produces 255 errors. Are you sure that the code is correct? Yes, I am sure that code is correct... So, maybe your Disassembler/compiler (see IASL) is Old. BUT after all, seems it is NOT needed for your dsdt, because the IRQs (1 & 12, respectively) are present in both PS2 devices. Link to comment Share on other sites More sharing options...
davidm71 Posted November 22, 2011 Author Share Posted November 22, 2011 I was using Dsdt-SE and not sure what version, though will use iasl if I have to. Thanks Link to comment Share on other sites More sharing options...
Gringo Vermelho Posted November 22, 2011 Share Posted November 22, 2011 DSDTSE uses IASL to compile and decompile your DSDT. You can see which version it is using at the top of the DSDT. It's easy to replace if you want, it's inside the app package - right click DSDTSE.app -> show package contents and look for it (resources folder?) Not sure (not at my hack right now) but I think it also keeps a copy of IASL somewhere in the vicinity of the default DSDT save folder, replace that as well. There's a topic by Mitch_DE around here somewhere with the latest IASL binary. Link to comment Share on other sites More sharing options...
juanerson Posted November 22, 2011 Share Posted November 22, 2011 See the correct route (or path) to the binary: "/Users/yourUserAccount/Library/Application Support/EvOSoftware/DSDT" AND, the link to mitch_de topic (IASL updates) is in post 7. Good Luck. Link to comment Share on other sites More sharing options...
davidm71 Posted November 22, 2011 Author Share Posted November 22, 2011 Well it looks like an old version: ASL Optimizing Compiler version 20091214 [Dec 16 2009]Copyright © 2000 - 2009 Intel Corporation Supports ACPI Specification Revision 4.0 2009! Thats really out of date! Anyhow I'll try your code again though if you say my IRQs are correct what good will it do?! Thanks. Edit: Found iasl though not in the path you provided but somewhere inside the DSDT-SE App itself. Found a new version of iasl from that thread and dropped it into the dsdtse package contents resource folder replacing the old one but didn't do anything. It still compiles with version 2009. Tested the file and its a 2011 version. Couldn't find that path you metioned. What to do?! Link to comment Share on other sites More sharing options...
davidm71 Posted November 22, 2011 Author Share Posted November 22, 2011 Ok, Turns out the folder was hidden. Found it but now my original DSDT file that use to compile fine with just warnings is giving errors! One step forward two steps back... Link to comment Share on other sites More sharing options...
Gringo Vermelho Posted November 22, 2011 Share Posted November 22, 2011 Revisit mitch_de's IASL topic and you will learn what to do about those errors. Link to comment Share on other sites More sharing options...
davidm71 Posted November 22, 2011 Author Share Posted November 22, 2011 I did and I figured out the length error problem but I'm getting another error: Invalid object type for reserved name ^ (found BUFFER, requires Package).. No idea how to fix that one! Link to comment Share on other sites More sharing options...
juanerson Posted November 23, 2011 Share Posted November 23, 2011 Just change the word BUFFER To Package. That's it. For example: dsdt_fixed.asl 7850: Name (_PLD, Buffer (0x10) Error 4080 - Invalid object type for reserved name ^ (found BUFFER, requires Package) Then, go to the line number 7850 to change it. And of course do that in every instance which appear the same error. Link to comment Share on other sites More sharing options...
davidm71 Posted November 25, 2011 Author Share Posted November 25, 2011 Just change the word BUFFER To Package. That's it.For example: dsdt_fixed.asl 7850: Name (_PLD, Buffer (0x10) Error 4080 - Invalid object type for reserved name ^ (found BUFFER, requires Package) Then, go to the line number 7850 to change it. And of course do that in every instance which appear the same error. I kind of renamed '_PLD' to 'PLD' and that fixed it, but after seeing your suggestion I made some changes. Anyhow PS2 Keyboard is now working. Had to make my own DSDT file from scratch pulled from under Ubuntu and worked out every error. Reset the kextcache which might have done the trick as well but the PS2 Keyboard is working now! All thats left is to work out power management p states and build an SSDT if I even need one ... Thanks. Link to comment Share on other sites More sharing options...
Recommended Posts