barren Posted September 28, 2014 Share Posted September 28, 2014 I recently got my XP941 to UEFI boot on my Gigabyte GA-Z87X-UD5 TH however the device was showing up in System Information as Generic AHCI device. As the XP941 is nearly identical to the flash SSD used in the new Apple iMacs and MacPros I decided to spoof it in DSDT I inserted this code into PCI0 in my DSDT (Bear in mind I have my XP941 on a Lycom adapter in PCI slot 1) might be useful for others with this device.. Device (PCI1) // Rename to appropriate slot number { Name (_ADR, 0x00010000) // _ADR: Address change this depending on appropriate pci bridge address in IORegistryexplorer Device (SSD0) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x02) { "device-id", //spoofs Apple SSD Controller Buffer (0x04) { 0x00, 0x16, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } } Now it looks like this: If this code could be improved please feel free to let me know. I'm also curious to know if something similar could be achieved using Fake id in Clover.. Link to comment Share on other sites More sharing options...
barren Posted October 1, 2014 Author Share Posted October 1, 2014 Now Using: Device (PEGP) { Name (_ADR, 0x00010000) // _ADR: Address Device (SSD0) { Name (_ADR, Zero) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x02) { "device-id", Buffer (0x04) { 0x00, 0x16, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Device (PRT0) { Name (_ADR, 0xFFFF) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x02) { "io-device-location", Buffer (0x04) { "SSD" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Method (_SDD, 1, NotSerialized) // _SDD: Set Device Data { Name (GBU0, Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00 }) CreateByteField (GBU0, Zero, GB00) CreateByteField (GBU0, One, GB01) CreateByteField (GBU0, 0x02, GB02) CreateByteField (GBU0, 0x03, GB03) CreateByteField (GBU0, 0x04, GB04) CreateByteField (GBU0, 0x05, GB05) CreateByteField (GBU0, 0x06, GB06) If (LEqual (SizeOf (Arg0), 0x0200)) { CreateWordField (Arg0, 0x9C, W780) If (And (W780, 0x08)) { Store (0x10, GB00) Store (0x03, GB01) Store (0xEF, GB06) } Else { Store (0x90, GB00) Store (0x03, GB01) Store (0xEF, GB06) } } Store (GBU0, GTF0) } Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Return (GTF0) } } } 1 Link to comment Share on other sites More sharing options...
Recommended Posts