// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc-CC", 0)
{
External(_SB.PCI0.PEG0.PEGP, DeviceObj)
// create identities for the bridge @8 and SSD0 @0
Device(_SB.PCI0.PEG0.PEGP.PBR8)
{
Name(_ADR, 0x00080000) // corresponds to #PCI(0800), MSW byte reversed
Device(PBR0)
{
Name(_ADR, 0) // corresponds to #PCI(0000)
Device(PBR4)
{
Name(_ADR, 0x00040000) // #PCI(0400)
Device(SSD4) { Name(_ADR, 0) } // SSD leaf #PCI(0000)
}
Device(PBR5)
{
Name(_ADR, 0x00050000) // #PCI(0500)
Device(SSD5) { Name(_ADR, 0) } // SSD leaf #PCI(0000)
}
Device(PBR6)
{
Name(_ADR, 0x00060000) // #PCI(0600)
Device(SSD6) { Name(_ADR, 0) } // SSD leaf #PCI(0000)
}
Device(PBR7)
{
Name(_ADR, 0x00070000) // #PCI(0700)
Device(SSD7) { Name(_ADR, 0) } // SSD leaf #PCI(0000)
}
}
}
// now we can inject the _DSM at the newly created ACPI paths
Method(_SB.PCI0.PEG0.PEGP.PBR8.PBR0.PBR4.SSD4._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
Method(_SB.PCI0.PEG0.PEGP.PBR8.PBR0.PBR5.SSD5._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
Method(_SB.PCI0.PEG0.PEGP.PBR8.PBR0.PBR6.SSD6._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
Method(_SB.PCI0.PEG0.PEGP.PBR8.PBR0.PBR7.SSD7._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF