Jump to content
2 posts in this topic

Recommended Posts

Hi everone.

 

I have my HPz820 workstation working fine with mavericks (see my sign). I bought HP Thunderbolt PCI card with the hope of it works on mavericks. I installed it, updated bios. PC recognize the card. Thunderbolt is shown in bios. On Windows, I installed drivers and I tested. It seems works fine.

 

Now, on mavericks, when I plug my thunderbolt external HD , it's not recognized. But It seem system detect somehow the card. Ok, I guess I have to patch again my dsdt. But I need help here. I´m a little noob. I don't have enough knowledge.

 

This is what system profiler shows

systemprf.jpg

 

 

This is what IO Reg shows

 

ioreg.jpg

 

I injected PCVENDOR and DEVICE IDs as the method I found for others PCI cards: Injecting DSM method. After look for PCI0 / PEX4 , my dsdt looks like this:

Device (PEX4)
            {
                Name (_ADR, 0x001C0005)
                Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x04)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                0x6A, 0x15, 0x00, 0x00
                            }, 

                            "name", 
                            "pci8086,156a"
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }

                Device (SLT5)
                {
                    Name (_ADR, Zero)
                    Name (_SUN, 0x05)
                    OperationRegion (PXEP, PCI_Config, Zero, 0x04)
                    Field (PXEP, AnyAcc, NoLock, Preserve)
                    {
                        VID,    32
                    }
                }
.
.
.
.etc

But with no result. I appreciate help to fix this.

 

Thanks!!

After a few attemps, I've realized something is happened: After inject _DSM to inject id, a new PCI AHCI controller has been recognized:

 

systm2.jpg

 

 

New device is the "pci1b21,612" AHCI controller. When I tested the card on windows , I could see it works in the same way. When thunderbolt controller detect a new HD connected, a new AHCI controller show up in device manager.

Mi guess is the thunderbolt controller has this "virtual" or embedded AHCI device to work as a disk conector. And searching by "pci1b21,612" I can see thunderbolt controller of real macs works in the same way, too, because its a common device associated to thunderbolt controller in real macs. It seems it is supported by Mac OS natively.  (info founded in vendor's website, asmedia)

 

I think this is reduced to a dsdt drill . I guess I have to inject this device again, and I don't know how inject multiple id's. I', sure it have to easy, but I don't know how do it:

 

this is my ioreg

 

ioreg2.jpg

 

It is in PCI0@0 /AppleACPIPCI/ PXE4   (the slot when it is plugged , I think)

 

pci-bridge@0 (red branch) is the real thunderbolt card (pci8086,156a)

 

pci-bridge@3 (green branch) is the "virtual" controller.

 

This is my id injected so far: (only device pci8086,156a)

Device (PEX4)
            {
                Name (_ADR, 0x001C0005)
                Device (SLT5)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x08)
                            {
                                "device-id", 
                                Buffer (0x04)
                                {
                                    0x6A, 0x15, 0x00, 0x00
                                }, 

                                "compatible", 
                                Buffer (0x0D)
                                {
                                    "pci8086,156a"
                                }, 

                                "IOName", 
                                Buffer (0x0D)
                                {
                                    "pci8086,156a"
                                }, 

                                "name", 
                                Buffer (0x0D)
                                {
                                    "pci8086,156a"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Name (_SUN, 0x05)
                    OperationRegion (PXEP, PCI_Config, Zero, 0x04)
                    Field (PXEP, AnyAcc, NoLock, Preserve)
                    {
                        VID,    32
                    }
                }

                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x50), 
                        ,   4, 
                    LDIS,   1, 
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                    Store (^SLT5.VID, Local0)
                    If (LEqual (Local0, 0x000510AC))
                    {
                        Store (One, LDIS)
                    }
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x08, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR21)
                    }

                    Return (PR21)
                }
            }

So, Is my gess correct? How can inject a new device's id?

 

Thanks !!

×
×
  • Create New...