Jump to content

Need help with patching SSDT for Firewire


frankiee
 Share

5 posts in this topic

Recommended Posts

Hello you ACPI experts, I need some advise ;)

 

So I have this Firewire card (EXSYS EX-16450) and while it works fine for the most part, I want to do the following things:

  • Make it show up in the PCI section in SysProfiler (and give it a name)
  • Get rid of the follwowing message:
FireWire runtime power conservation disabled. (3)

I know there is a patch for both, but my main problem is that I seem to be unable to correctly address that card.

 

This is how it shows up in RegistryExplorer:

 

NymQ25P.png

In theory the ACPI path to this slot should be _SB.PCI0.PEX0.PXS4

 

So I tried the following to make it show up as an PCI card:

    Device (_SB.PCI0.PEX0.PXS4)
    {
        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                    0x03
                })
            }

            Return (Package (0x06)
            {
                "AAPL,slot-name", 
                Buffer (0x0B)
                {
                    "PCI Slot 4"
                }, 

                "model", 
                Buffer (0x0F)
                {
                    "EXSYS EX-16450"
                }, 

                "fwhub", 
                Buffer (0x04)
                {
                    0x00, 0x00, 0x00, 0x00
                }
            })
        }
    }

But this only works somehow. First I see this in Sys Profiler:

 

ogG9kBa.png

So while there is an entry now, the card name is still missing. As I see it it looks like there is another device in between (a pci bridge? on the card?)

 

I also tried the other fix, but it seems to be ignored.

 

So the question is how to obtain the right path, and to target the card / the chipsert itself.

 

Any help greatly appreciated!

Link to comment
Share on other sites

Thanks to Shilohh helping me out, the correct code to get rid of the message and the device showing up correctly in SystemProfiler is this:

External (\_SB_.PWRB)
External (_SB_.PCI0.PEX0, DeviceObj)

.......

Scope (_SB.PCI0.PEX0)
{
    Name (_SUN, 0x04)
}

Scope (_GPE)
{
    Method (_L1A, 0, NotSerialized)
    {
        Notify (\_SB.PCI0.PEX0.FWBR.FRWR, Zero)
        Notify (\_SB.PWRB, 0x02)
    }
}

Device (_SB.PCI0.PEX0.FWBR)
{
    Name (_ADR, Zero)
    Device (FRWR)
    {
        Name (_ADR, Zero)
        Name (_GPE, 0x1A)
        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                    0x03
                })
            }

            Return (Package (0x08)
            {
                "AAPL,slot-name",
                Buffer (0x0B)
                {
                    "PCI Slot 4"
                },

                "name",
                Buffer (0x24)
                {
                    "FireWire IEEE-1394b OHCI Controller"
                },

                "model",
                Buffer (0x0F)
                {
                    "EXSYS EX-16450"
                },

                "fwhub",
                Buffer (0x04)
                {
                    0x00, 0x00, 0x00, 0x00
                }
            })
        }
    }
}

So basically, I had to add the (_SB.PCI0.PEX0.FWBR) Device in between.

 

Update: seems the patch wasn't complete yet, did work when being freshly booted but not after waking up. So I did add some things found here: http://www.insanelymac.com/forum/topic/188920-master-chiefs-p5k-pro-acpi-warfare/?p=1322666and updated the code above. Now it seems to work even after wake as well, but I still have the minor issue that my machine refuses to sleep if I have a mounted FW drive, or to be more precise a MacBook Pro mounted in FW target mode.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...