blob: a7c3b24e0d5de58de66eb4556be76eb1ce62ff2a [file] [log] [blame]
Subrata Banik08089922020-10-03 13:02:06 +05301/* 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 == 0) {
35 /*
36 * NHLT Query only supported for revision 1 and
37 * if NHLT address and length are set in NVS.
38 */
39 If ((Arg1 == 1) && (NHLA != 0) && (NHLL != 0)) {
Felix Singer7b8ac002022-12-26 08:45:56 +010040 Return (Buffer (1) { 0x03 })
Subrata Banik08089922020-10-03 13:02:06 +053041 } Else {
Felix Singer7b8ac002022-12-26 08:45:56 +010042 Return (Buffer (1) { 0x01 })
Subrata Banik08089922020-10-03 13:02:06 +053043 }
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 */
53 If (Arg2 == 1) {
54 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 })
Subrata Banik08089922020-10-03 13:02:06 +053067 }
68}