5 //AMD k8 util for BUSB and res range
11 Method (OSTP, 0, NotSerialized)
13 If (LEqual (^OSTB, Ones))
21 Method (SEQL, 2, Serialized)
23 Store (SizeOf (Arg0), Local0)
24 Store (SizeOf (Arg1), Local1)
25 If (LNot (LEqual (Local0, Local1))) { Return (Zero) }
27 Name (BUF0, Buffer (Local0) {})
29 Name (BUF1, Buffer (Local0) {})
32 While (LLess (Local2, Local0))
34 Store (DerefOf (Index (BUF0, Local2)), Local3)
35 Store (DerefOf (Index (BUF1, Local2)), Local4)
36 If (LNot (LEqual (Local3, Local4))) { Return (Zero) }
45 Method (DADD, 2, NotSerialized)
49 Add( ShiftLeft(Local1,16), Local0, Local0)
54 Method (GHCE, 1, NotSerialized) // check if the HC enabled
56 Store (DerefOf (Index (\_SB.PCI0.HCLK, Arg0)), Local1)
57 if(LEqual ( And(Local1, 0x01), 0x01)) { Return (0x0F) }
58 Else { Return (0x00) }
61 Method (GHCN, 1, NotSerialized) // get the node num for the HC
64 Store (DerefOf (Index (\_SB.PCI0.HCLK, Arg0)), Local1)
65 Store (ShiftRight( And (Local1, 0xf0), 0x04), Local0)
69 Method (GHCL, 1, NotSerialized) // get the link num on node for the HC
72 Store (DerefOf (Index (\_SB.PCI0.HCLK, Arg0)), Local1)
73 Store (ShiftRight( And (Local1, 0xf00), 0x08), Local0)
77 Method (GHCD, 2, NotSerialized) // get the unit id base for the HT device in HC
80 Store (DerefOf (Index (\_SB.PCI0.HCDN, Arg0)), Local1)
81 Store (Arg1, Local2) // Arg1 could be 3, 2, 1, 0
82 Multiply (Local2, 0x08, Local2) // change to 24, 16, 8, 0
83 Store (And (ShiftRight( Local1, Local2), 0xff), Local0)
87 Method (GBUS, 2, NotSerialized)
90 While (LLess (Local0, 0x04))
92 Store (DerefOf (Index (\_SB.PCI0.BUSN, Local0)), Local1)
93 If (LEqual (And (Local1, 0x03), 0x03))
95 If (LEqual (Arg0, ShiftRight (And (Local1, 0x70), 0x04)))
97 If (LOr (LEqual (Arg1, 0xFF), LEqual (Arg1, ShiftRight (And (Local1, 0x0300), 0x08))))
99 Return (ShiftRight (And (Local1, 0x00FF0000), 0x10))
110 Method (GWBN, 2, NotSerialized)
112 Name (BUF0, ResourceTemplate ()
114 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
115 0x0000, // Address Space Granularity
116 0x0000, // Address Range Minimum
117 0x0000, // Address Range Maximum
118 0x0000, // Address Translation Offset
121 CreateWordField (BUF0, 0x08, BMIN)
122 CreateWordField (BUF0, 0x0A, BMAX)
123 CreateWordField (BUF0, 0x0E, BLEN)
125 While (LLess (Local0, 0x04))
127 Store (DerefOf (Index (\_SB.PCI0.BUSN, Local0)), Local1)
128 If (LEqual (And (Local1, 0x03), 0x03))
130 If (LEqual (Arg0, ShiftRight (And (Local1, 0x70), 0x04)))
132 If (LOr (LEqual (Arg1, 0xFF), LEqual (Arg1, ShiftRight (And (Local1, 0x0300), 0x08))))
134 Store (ShiftRight (And (Local1, 0x00FF0000), 0x10), BMIN)
135 Store (ShiftRight (Local1, 0x18), BMAX)
136 Subtract (BMAX, BMIN, BLEN)
149 Method (GMEM, 2, NotSerialized)
151 Name (BUF0, ResourceTemplate ()
153 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
154 0x00000000, // Address Space Granularity
155 0x00000000, // Address Range Minimum
156 0x00000000, // Address Range Maximum
157 0x00000000, // Address Translation Offset
159 , AddressRangeMemory, TypeStatic)
161 CreateDWordField (BUF0, 0x0A, MMIN)
162 CreateDWordField (BUF0, 0x0E, MMAX)
163 CreateDWordField (BUF0, 0x16, MLEN)
167 While (LLess (Local0, 0x10))
169 Store (DerefOf (Index (\_SB.PCI0.MMIO, Local0)), Local1)
171 Store (DerefOf (Index (\_SB.PCI0.MMIO, Local0)), Local2)
172 If (LEqual (And (Local1, 0x03), 0x03))
174 If (LEqual (Arg0, And (Local2, 0x07)))
176 If (LOr (LEqual (Arg1, 0xFF), LEqual (Arg1, ShiftRight (And (Local2, 0x30), 0x04))))
178 Store (ShiftLeft (And (Local1, 0xFFFFFF00), 0x08), MMIN)
179 Store (ShiftLeft (And (Local2, 0xFFFFFF00), 0x08), MMAX)
180 Or (MMAX, 0xFFFF, MMAX)
181 Subtract (MMAX, MMIN, MLEN)
185 Concatenate (RTAG (BUF0), Local3, Local5)
186 Store (Local5, Local3)
190 If (LOr (LAnd (LEqual (Arg1, 0xFF), LEqual (Arg0, 0x00)), LEqual (Arg1, \_SB.PCI0.SBLK)))
192 Store (\_SB.PCI0.TOM1, MMIN)
193 Subtract (MMAX, MMIN, MLEN)
197 Store (RTAG (BUF0), Local3)
216 Method (GIOR, 2, NotSerialized)
218 Name (BUF0, ResourceTemplate ()
220 DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
221 0x00000000, // Address Space Granularity
222 0x00000000, // Address Range Minimum
223 0x00000000, // Address Range Maximum
224 0x00000000, // Address Translation Offset
228 CreateDWordField (BUF0, 0x0A, PMIN)
229 CreateDWordField (BUF0, 0x0E, PMAX)
230 CreateDWordField (BUF0, 0x16, PLEN)
234 While (LLess (Local0, 0x08))
236 Store (DerefOf (Index (\_SB.PCI0.PCIO, Local0)), Local1)
238 Store (DerefOf (Index (\_SB.PCI0.PCIO, Local0)), Local2)
239 If (LEqual (And (Local1, 0x03), 0x03))
241 If (LEqual (Arg0, And (Local2, 0x07)))
243 If (LOr (LEqual (Arg1, 0xFF), LEqual (Arg1, ShiftRight (And (Local2, 0x30), 0x04))))
245 Store (And (Local1, 0x01FFF000), PMIN)
246 Store (And (Local2, 0x01FFF000), PMAX)
247 Or (PMAX, 0x0FFF, PMAX)
248 Subtract (PMAX, PMIN, PLEN)
253 Concatenate (RTAG (BUF0), Local3, Local5)
254 Store (Local5, Local3)
258 If (LGreater (PMAX, PMIN))
260 If (LOr (LAnd (LEqual (Arg1, 0xFF), LEqual (Arg0, 0x00)), LEqual (Arg1, \_SB.PCI0.SBLK)))
263 Subtract (PMAX, PMIN, PLEN)
267 Store (RTAG (BUF0), Local3)
271 If (And (Local1, 0x10))
278 Concatenate (RTAG (BUF0), Local3, Local5)
279 Store (Local5, Local3)
283 Store (RTAG (BUF0), Local3)
298 Store (RTAG (BUF0), Local3)
304 Method (RTAG, 1, NotSerialized)
307 Store (SizeOf (Local0), Local1)
308 Subtract (Local1, 0x02, Local1)
309 Multiply (Local1, 0x08, Local1)
310 CreateField (Local0, 0x00, Local1, RETB)