blob: dd031bff2c78334dcdf69f7242b1de8cf68702a5 [file] [log] [blame]
Tan, Lean Sheng70a2ddc2020-08-26 01:33:04 -07001/* SPDX-License-Identifier: GPL-2.0-only */
2
3/* Audio Controller - Device 31, Function 3 */
4
5Device (HDAS)
6{
7 Name (_ADR, 0x001f0003)
8 Name (_DDN, "Audio Controller")
9 Name (UUID, ToUUID ("A69F886E-6CEB-4594-A41F-7B5DCE24C553"))
10
11 /* Device is D3 wake capable */
12 Name (_S0W, 3)
13
14 /* NHLT Table Address populated from GNVS values */
15 Name (NBUF, ResourceTemplate () {
16 QWordMemory (ResourceConsumer, PosDecode, MinFixed,
17 MaxFixed, NonCacheable, ReadOnly,
18 0, 0, 0, 0, 1,,, NHLT, AddressRangeACPI)
19 })
20
21 /*
22 * Device Specific Method
23 * Arg0 - UUID
24 * Arg1 - Revision
25 * Arg2 - Function Index
26 */
27 Method (_DSM, 4)
28 {
29 If (Arg0 == ^UUID) {
30 /*
31 * Function 0: Function Support Query
32 * Returns a bitmask of functions supported.
33 */
34 If (Arg2 == Zero) {
35 /*
36 * NHLT Query only supported for revision 1 and
37 * if NHLT address and length are set in NVS.
38 */
Felix Singer7b8ac002022-12-26 08:45:56 +010039 If ((Arg1 == 1) && ((NHLA != Zero) && (NHLL != Zero))) {
40 Return (Buffer (1) { 0x03 })
Tan, Lean Sheng70a2ddc2020-08-26 01:33:04 -070041 } Else {
Felix Singer7b8ac002022-12-26 08:45:56 +010042 Return (Buffer (1) { 0x01 })
Tan, Lean Sheng70a2ddc2020-08-26 01:33:04 -070043 }
44 }
45
46 /*
47 * Function 1: Query NHLT memory address used by
48 * Intel Offload Engine Driver to discover any non-HDA
49 * devices that are supported by the DSP.
50 *
51 * Returns a pointer to NHLT table in memory.
52 */
Felix Singer7b8ac002022-12-26 08:45:56 +010053 If (Arg2 == 1) {
Tan, Lean Sheng70a2ddc2020-08-26 01:33:04 -070054 CreateQWordField (NBUF, ^NHLT._MIN, NBAS)
55 CreateQWordField (NBUF, ^NHLT._MAX, NMAS)
56 CreateQWordField (NBUF, ^NHLT._LEN, NLEN)
57
58 NBAS = NHLA
59 NMAS = NHLA
60 NLEN = NHLL
61
62 Return (NBUF)
63 }
64 }
65
Felix Singer7b8ac002022-12-26 08:45:56 +010066 Return (Buffer (1) { 0x00 })
Tan, Lean Sheng70a2ddc2020-08-26 01:33:04 -070067 }
68}