• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3Device (\_SB.PCI0.PEG0)
4{
5	Name (_ADR, 0x00010000)
6
7	Device (PEGP)
8	{
9		Name (_ADR, 0)
10
11		// Convert a byte to a hex string, trimming extra parts
12		Method (BHEX, 1)
13		{
14			Local0 = ToHexString(Arg0)
15			Return (Mid(Local0, SizeOf(Local0) - 2, 2))
16		}
17
18		// UUID to string
19		Method (IDST, 1)
20		{
21			Local0 = ""
22			Fprintf(
23				Local0,
24				"%o%o%o%o-%o%o-%o%o-%o%o-%o%o%o%o%o%o",
25				BHEX(DerefOf(Arg0[3])),
26				BHEX(DerefOf(Arg0[2])),
27				BHEX(DerefOf(Arg0[1])),
28				BHEX(DerefOf(Arg0[0])),
29				BHEX(DerefOf(Arg0[5])),
30				BHEX(DerefOf(Arg0[4])),
31				BHEX(DerefOf(Arg0[7])),
32				BHEX(DerefOf(Arg0[6])),
33				BHEX(DerefOf(Arg0[8])),
34				BHEX(DerefOf(Arg0[9])),
35				BHEX(DerefOf(Arg0[10])),
36				BHEX(DerefOf(Arg0[11])),
37				BHEX(DerefOf(Arg0[12])),
38				BHEX(DerefOf(Arg0[13])),
39				BHEX(DerefOf(Arg0[14])),
40				BHEX(DerefOf(Arg0[15]))
41			)
42			Return (Local0)
43		}
44
45		// Safe hex conversion, checks type first
46		Method (SFST, 1)
47		{
48			Local0 = ObjectType(Arg0)
49			If (Local0 == 1 || Local0 == 2 || Local0 == 3) {
50				Return (ToHexString(Arg0))
51			} Else {
52				Return (Concatenate("Type: ", Arg0))
53			}
54		}
55
56		Method (_DSM, 4, Serialized)
57		{
58			Printf("NVIDIA _DSM")
59			Printf("  Arg0: %o", IDST(Arg0))
60			Printf("  Arg1: %o", SFST(Arg1))
61			Printf("  Arg2: %o", SFST(Arg2))
62			Printf("  Arg3: %o", SFST(Arg3))
63
64			If (Arg0 == ToUUID ("d4a50b75-65c7-46f7-bfb7-41514cea0244")) {
65				If (Arg1 != 0x0102) {
66					Printf("  Invalid Arg1, return 0x80000002")
67					Return (0x80000002)
68				}
69
70				If (Arg2 == 0) {
71					Printf("  Arg2 == 0x00, return supported functions")
72					Return (Buffer (4) { 0x01, 0x00, 0x10, 0x00 })
73				}
74
75				If (Arg2 == 0x14) {
76					Printf("  Arg2 == 0x14, return backlight package")
77					Return (Package (9) {
78						0x8000A450,
79						0x0200,
80						0,
81						0,
82						1,
83						1,
84						200,
85						32,
86						1000
87					})
88				}
89
90				Printf("  Unknown Arg2, return 0x80000002")
91				Return (0x80000002)
92			}
93
94			Printf("  Unknown Arg0, return 0x80000001")
95			Return (0x80000001)
96		}
97
98		// _DOD: Display Output Devices
99		Method (_DOD, 0, NotSerialized)
100		{
101			Return (Package (3) {
102				0x80008320,
103				0x80006330,
104				0x8000A450
105			})
106		}
107
108		Device (HDM0)
109		{
110			Name (_ADR, 0x80008320)
111		}
112
113		Device (DSP0)
114		{
115			Name (_ADR, 0x80006330)
116		}
117
118		Device (DSP1)
119		{
120			Name (_ADR, 0x8000A450)
121		}
122	}
123}
124