/* SPDX-License-Identifier: GPL-2.0-only */ Device (\_SB.PCI0.PEG0) { Name (_ADR, 0x00010000) Device (PEGP) { Name (_ADR, 0) // Convert a byte to a hex string, trimming extra parts Method (BHEX, 1) { Local0 = ToHexString(Arg0) Return (Mid(Local0, SizeOf(Local0) - 2, 2)) } // UUID to string Method (IDST, 1) { Local0 = "" Fprintf( Local0, "%o%o%o%o-%o%o-%o%o-%o%o-%o%o%o%o%o%o", BHEX(DerefOf(Arg0[3])), BHEX(DerefOf(Arg0[2])), BHEX(DerefOf(Arg0[1])), BHEX(DerefOf(Arg0[0])), BHEX(DerefOf(Arg0[5])), BHEX(DerefOf(Arg0[4])), BHEX(DerefOf(Arg0[7])), BHEX(DerefOf(Arg0[6])), BHEX(DerefOf(Arg0[8])), BHEX(DerefOf(Arg0[9])), BHEX(DerefOf(Arg0[10])), BHEX(DerefOf(Arg0[11])), BHEX(DerefOf(Arg0[12])), BHEX(DerefOf(Arg0[13])), BHEX(DerefOf(Arg0[14])), BHEX(DerefOf(Arg0[15])) ) Return (Local0) } // Safe hex conversion, checks type first Method (SFST, 1) { Local0 = ObjectType(Arg0) If (Local0 == 1 || Local0 == 2 || Local0 == 3) { Return (ToHexString(Arg0)) } Else { Return (Concatenate("Type: ", Arg0)) } } Method (_DSM, 4, Serialized) { Printf("NVIDIA _DSM") Printf(" Arg0: %o", IDST(Arg0)) Printf(" Arg1: %o", SFST(Arg1)) Printf(" Arg2: %o", SFST(Arg2)) Printf(" Arg3: %o", SFST(Arg3)) If (Arg0 == ToUUID ("d4a50b75-65c7-46f7-bfb7-41514cea0244")) { If (Arg1 != 0x0102) { Printf(" Invalid Arg1, return 0x80000002") Return (0x80000002) } If (Arg2 == 0) { Printf(" Arg2 == 0x00, return supported functions") Return (Buffer (4) { 0x01, 0x00, 0x10, 0x00 }) } If (Arg2 == 0x14) { Printf(" Arg2 == 0x14, return backlight package") Return (Package (9) { 0x8000A450, 0x0200, 0, 0, 1, 1, 200, 32, 1000 }) } Printf(" Unknown Arg2, return 0x80000002") Return (0x80000002) } Printf(" Unknown Arg0, return 0x80000001") Return (0x80000001) } // _DOD: Display Output Devices Method (_DOD, 0, NotSerialized) { Return (Package (3) { 0x80008320, 0x80006330, 0x8000A450 }) } Device (HDM0) { Name (_ADR, 0x80008320) } Device (DSP0) { Name (_ADR, 0x80006330) } Device (DSP1) { Name (_ADR, 0x8000A450) } } }