]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/sound/pci/hda/hdac.h
MFV r353141 (by phillip):
[FreeBSD/FreeBSD.git] / sys / dev / sound / pci / hda / hdac.h
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3  *
4  * Copyright (c) 2006 Stephane E. Potvin <sepotvin@videotron.ca>
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  *
28  * $FreeBSD$
29  */
30
31 #ifndef _HDAC_H_
32 #define _HDAC_H_
33
34 #include "hdac_if.h"
35
36 /****************************************************************************
37  * Miscellanious defines
38  ****************************************************************************/
39
40 /* Controller models */
41 #define HDA_MODEL_CONSTRUCT(vendor, model)      \
42                 (((uint32_t)(model) << 16) | ((vendor##_VENDORID) & 0xffff))
43
44 /* Intel */
45 #define INTEL_VENDORID          0x8086
46 #define HDA_INTEL_OAK           HDA_MODEL_CONSTRUCT(INTEL, 0x080a)
47 #define HDA_INTEL_BAY           HDA_MODEL_CONSTRUCT(INTEL, 0x0f04)
48 #define HDA_INTEL_HSW1          HDA_MODEL_CONSTRUCT(INTEL, 0x0a0c)
49 #define HDA_INTEL_HSW2          HDA_MODEL_CONSTRUCT(INTEL, 0x0c0c)
50 #define HDA_INTEL_HSW3          HDA_MODEL_CONSTRUCT(INTEL, 0x0d0c)
51 #define HDA_INTEL_BDW1          HDA_MODEL_CONSTRUCT(INTEL, 0x160c)
52 #define HDA_INTEL_CPT           HDA_MODEL_CONSTRUCT(INTEL, 0x1c20)
53 #define HDA_INTEL_PATSBURG      HDA_MODEL_CONSTRUCT(INTEL, 0x1d20)
54 #define HDA_INTEL_PPT1          HDA_MODEL_CONSTRUCT(INTEL, 0x1e20)
55 #define HDA_INTEL_82801F        HDA_MODEL_CONSTRUCT(INTEL, 0x2668)
56 #define HDA_INTEL_63XXESB       HDA_MODEL_CONSTRUCT(INTEL, 0x269a)
57 #define HDA_INTEL_82801G        HDA_MODEL_CONSTRUCT(INTEL, 0x27d8)
58 #define HDA_INTEL_82801H        HDA_MODEL_CONSTRUCT(INTEL, 0x284b)
59 #define HDA_INTEL_82801I        HDA_MODEL_CONSTRUCT(INTEL, 0x293e)
60 #define HDA_INTEL_82801JI       HDA_MODEL_CONSTRUCT(INTEL, 0x3a3e)
61 #define HDA_INTEL_82801JD       HDA_MODEL_CONSTRUCT(INTEL, 0x3a6e)
62 #define HDA_INTEL_PCH           HDA_MODEL_CONSTRUCT(INTEL, 0x3b56)
63 #define HDA_INTEL_PCH2          HDA_MODEL_CONSTRUCT(INTEL, 0x3b57)
64 #define HDA_INTEL_MACBOOKPRO92  HDA_MODEL_CONSTRUCT(INTEL, 0x7270)
65 #define HDA_INTEL_SCH           HDA_MODEL_CONSTRUCT(INTEL, 0x811b)
66 #define HDA_INTEL_LPT1          HDA_MODEL_CONSTRUCT(INTEL, 0x8c20)
67 #define HDA_INTEL_LPT2          HDA_MODEL_CONSTRUCT(INTEL, 0x8c21)
68 #define HDA_INTEL_WCPT          HDA_MODEL_CONSTRUCT(INTEL, 0x8ca0)
69 #define HDA_INTEL_WELLS1        HDA_MODEL_CONSTRUCT(INTEL, 0x8d20)
70 #define HDA_INTEL_WELLS2        HDA_MODEL_CONSTRUCT(INTEL, 0x8d21)
71 #define HDA_INTEL_LPTLP1        HDA_MODEL_CONSTRUCT(INTEL, 0x9c20)
72 #define HDA_INTEL_LPTLP2        HDA_MODEL_CONSTRUCT(INTEL, 0x9c21)
73 #define HDA_INTEL_BDW2          HDA_MODEL_CONSTRUCT(INTEL, 0x9ca0)
74 #define HDA_INTEL_SRPTLP        HDA_MODEL_CONSTRUCT(INTEL, 0x9d70)
75 #define HDA_INTEL_KBLKLP        HDA_MODEL_CONSTRUCT(INTEL, 0x9d71)
76 #define HDA_INTEL_SRPT          HDA_MODEL_CONSTRUCT(INTEL, 0xa170)
77 #define HDA_INTEL_KBLK          HDA_MODEL_CONSTRUCT(INTEL, 0xa171)
78 #define HDA_INTEL_KBLKH         HDA_MODEL_CONSTRUCT(INTEL, 0xa2f0)
79 #define HDA_INTEL_CFLK          HDA_MODEL_CONSTRUCT(INTEL, 0xa348)
80 #define HDA_INTEL_CNLK          HDA_MODEL_CONSTRUCT(INTEL, 0x9dc8)
81 #define HDA_INTEL_ICLK          HDA_MODEL_CONSTRUCT(INTEL, 0x34c8)
82 #define HDA_INTEL_CMLKLP        HDA_MODEL_CONSTRUCT(INTEL, 0x02c8)
83 #define HDA_INTEL_CMLKH         HDA_MODEL_CONSTRUCT(INTEL, 0x06c8)
84 #define HDA_INTEL_TGLK          HDA_MODEL_CONSTRUCT(INTEL, 0xa0c8)
85 #define HDA_INTEL_GMLK          HDA_MODEL_CONSTRUCT(INTEL, 0x3198)
86 #define HDA_INTEL_ALL           HDA_MODEL_CONSTRUCT(INTEL, 0xffff)
87
88 /* Nvidia */
89 #define NVIDIA_VENDORID         0x10de
90 #define HDA_NVIDIA_MCP51        HDA_MODEL_CONSTRUCT(NVIDIA, 0x026c)
91 #define HDA_NVIDIA_MCP55        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0371)
92 #define HDA_NVIDIA_MCP61_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x03e4)
93 #define HDA_NVIDIA_MCP61_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x03f0)
94 #define HDA_NVIDIA_MCP65_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x044a)
95 #define HDA_NVIDIA_MCP65_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x044b)
96 #define HDA_NVIDIA_MCP67_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x055c)
97 #define HDA_NVIDIA_MCP67_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x055d)
98 #define HDA_NVIDIA_MCP78_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0774)
99 #define HDA_NVIDIA_MCP78_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0775)
100 #define HDA_NVIDIA_MCP78_3      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0776)
101 #define HDA_NVIDIA_MCP78_4      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0777)
102 #define HDA_NVIDIA_MCP73_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x07fc)
103 #define HDA_NVIDIA_MCP73_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x07fd)
104 #define HDA_NVIDIA_MCP79_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac0)
105 #define HDA_NVIDIA_MCP79_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac1)
106 #define HDA_NVIDIA_MCP79_3      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac2)
107 #define HDA_NVIDIA_MCP79_4      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac3)
108 #define HDA_NVIDIA_0BE2         HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be2)
109 #define HDA_NVIDIA_0BE3         HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be3)
110 #define HDA_NVIDIA_0BE4         HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be4)
111 #define HDA_NVIDIA_GT100        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be5)
112 #define HDA_NVIDIA_GT106        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be9)
113 #define HDA_NVIDIA_GT108        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0bea)
114 #define HDA_NVIDIA_GT104        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0beb)
115 #define HDA_NVIDIA_GT116        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0bee)
116 #define HDA_NVIDIA_MCP89_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d94)
117 #define HDA_NVIDIA_MCP89_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d95)
118 #define HDA_NVIDIA_MCP89_3      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d96)
119 #define HDA_NVIDIA_MCP89_4      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d97)
120 #define HDA_NVIDIA_GF119        HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e08)
121 #define HDA_NVIDIA_GF110_1      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e09)
122 #define HDA_NVIDIA_GF110_2      HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e0c)
123 #define HDA_NVIDIA_ALL          HDA_MODEL_CONSTRUCT(NVIDIA, 0xffff)
124
125 /* ATI */
126 #define ATI_VENDORID            0x1002
127 #define HDA_ATI_SB450           HDA_MODEL_CONSTRUCT(ATI, 0x437b)
128 #define HDA_ATI_SB600           HDA_MODEL_CONSTRUCT(ATI, 0x4383)
129 #define HDA_ATI_RS600           HDA_MODEL_CONSTRUCT(ATI, 0x793b)
130 #define HDA_ATI_RS690           HDA_MODEL_CONSTRUCT(ATI, 0x7919)
131 #define HDA_ATI_RS780           HDA_MODEL_CONSTRUCT(ATI, 0x960f)
132 #define HDA_ATI_R600            HDA_MODEL_CONSTRUCT(ATI, 0xaa00)
133 #define HDA_ATI_RV630           HDA_MODEL_CONSTRUCT(ATI, 0xaa08)
134 #define HDA_ATI_RV610           HDA_MODEL_CONSTRUCT(ATI, 0xaa10)
135 #define HDA_ATI_RV670           HDA_MODEL_CONSTRUCT(ATI, 0xaa18)
136 #define HDA_ATI_RV635           HDA_MODEL_CONSTRUCT(ATI, 0xaa20)
137 #define HDA_ATI_RV620           HDA_MODEL_CONSTRUCT(ATI, 0xaa28)
138 #define HDA_ATI_RV770           HDA_MODEL_CONSTRUCT(ATI, 0xaa30)
139 #define HDA_ATI_RV730           HDA_MODEL_CONSTRUCT(ATI, 0xaa38)
140 #define HDA_ATI_RV710           HDA_MODEL_CONSTRUCT(ATI, 0xaa40)
141 #define HDA_ATI_RV740           HDA_MODEL_CONSTRUCT(ATI, 0xaa48)
142 #define HDA_ATI_RV870           HDA_MODEL_CONSTRUCT(ATI, 0xaa50)
143 #define HDA_ATI_RV840           HDA_MODEL_CONSTRUCT(ATI, 0xaa58)
144 #define HDA_ATI_RV830           HDA_MODEL_CONSTRUCT(ATI, 0xaa60)
145 #define HDA_ATI_RV810           HDA_MODEL_CONSTRUCT(ATI, 0xaa68)
146 #define HDA_ATI_RV970           HDA_MODEL_CONSTRUCT(ATI, 0xaa80)
147 #define HDA_ATI_RV940           HDA_MODEL_CONSTRUCT(ATI, 0xaa88)
148 #define HDA_ATI_RV930           HDA_MODEL_CONSTRUCT(ATI, 0xaa90)
149 #define HDA_ATI_RV910           HDA_MODEL_CONSTRUCT(ATI, 0xaa98)
150 #define HDA_ATI_R1000           HDA_MODEL_CONSTRUCT(ATI, 0xaaa0)
151 #define HDA_ATI_ALL             HDA_MODEL_CONSTRUCT(ATI, 0xffff)
152
153 #define AMD_VENDORID            0x1022
154 #define HDA_AMD_HUDSON2         HDA_MODEL_CONSTRUCT(AMD, 0x780d)
155 #define HDA_AMD_ALL             HDA_MODEL_CONSTRUCT(AMD, 0xffff)
156
157 /* RDC */
158 #define RDC_VENDORID            0x17f3
159 #define HDA_RDC_M3010           HDA_MODEL_CONSTRUCT(RDC, 0x3010)
160
161 /* Creative */
162 #define CREATIVE_VENDORID       0x1102
163 #define HDA_CREATIVE_ALL        HDA_MODEL_CONSTRUCT(CREATIVE, 0xffff)
164
165 /* VIA */
166 #define VIA_VENDORID            0x1106
167 #define HDA_VIA_VT82XX          HDA_MODEL_CONSTRUCT(VIA, 0x3288)
168 #define HDA_VIA_ALL             HDA_MODEL_CONSTRUCT(VIA, 0xffff)
169
170 /* SiS */
171 #define SIS_VENDORID            0x1039
172 #define HDA_SIS_966             HDA_MODEL_CONSTRUCT(SIS, 0x7502)
173 #define HDA_SIS_ALL             HDA_MODEL_CONSTRUCT(SIS, 0xffff)
174
175 /* ULI */
176 #define ULI_VENDORID            0x10b9
177 #define HDA_ULI_M5461           HDA_MODEL_CONSTRUCT(ULI, 0x5461)
178 #define HDA_ULI_ALL             HDA_MODEL_CONSTRUCT(ULI, 0xffff)
179
180 /* OEM/subvendors */
181
182 /* Intel */
183 #define INTEL_DH87RL_SUBVENDOR  HDA_MODEL_CONSTRUCT(INTEL, 0x204a)
184 #define INTEL_D101GGC_SUBVENDOR HDA_MODEL_CONSTRUCT(INTEL, 0xd600)
185
186 /* HP/Compaq */
187 #define HP_VENDORID             0x103c
188 #define HP_V3000_SUBVENDOR      HDA_MODEL_CONSTRUCT(HP, 0x30b5)
189 #define HP_NX7400_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x30a2)
190 #define HP_NX6310_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x30aa)
191 #define HP_NX6325_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x30b0)
192 #define HP_XW4300_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x3013)
193 #define HP_3010_SUBVENDOR       HDA_MODEL_CONSTRUCT(HP, 0x3010)
194 #define HP_DV5000_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x30a5)
195 #define HP_DC7700S_SUBVENDOR    HDA_MODEL_CONSTRUCT(HP, 0x2801)
196 #define HP_DC7700_SUBVENDOR     HDA_MODEL_CONSTRUCT(HP, 0x2802)
197 #define HP_AF006UR_SUBVENDOR    HDA_MODEL_CONSTRUCT(HP, 0x83a2)
198 #define HP_ALL_SUBVENDOR        HDA_MODEL_CONSTRUCT(HP, 0xffff)
199 /* What is wrong with XN 2563 anyway? (Got the picture ?) */
200 #define HP_NX6325_SUBVENDORX    0x103c30b0
201
202 /* Dell */
203 #define DELL_VENDORID           0x1028
204 #define DELL_D630_SUBVENDOR     HDA_MODEL_CONSTRUCT(DELL, 0x01f9)
205 #define DELL_D820_SUBVENDOR     HDA_MODEL_CONSTRUCT(DELL, 0x01cc)
206 #define DELL_V1400_SUBVENDOR    HDA_MODEL_CONSTRUCT(DELL, 0x0227)
207 #define DELL_V1500_SUBVENDOR    HDA_MODEL_CONSTRUCT(DELL, 0x0228)
208 #define DELL_I1300_SUBVENDOR    HDA_MODEL_CONSTRUCT(DELL, 0x01c9)
209 #define DELL_L7480_SUBVENDOR    HDA_MODEL_CONSTRUCT(DELL, 0x07a0)
210 #define DELL_XPSM1210_SUBVENDOR HDA_MODEL_CONSTRUCT(DELL, 0x01d7)
211 #define DELL_OPLX745_SUBVENDOR  HDA_MODEL_CONSTRUCT(DELL, 0x01da)
212 #define DELL_XPS9560_SUBVENDOR  HDA_MODEL_CONSTRUCT(DELL, 0x07be)
213 #define DELL_I7577_SUBVENDOR    HDA_MODEL_CONSTRUCT(DELL, 0x0802)
214 #define DELL_ALL_SUBVENDOR      HDA_MODEL_CONSTRUCT(DELL, 0xffff)
215
216 /* Clevo */
217 #define CLEVO_VENDORID          0x1558
218 #define CLEVO_D900T_SUBVENDOR   HDA_MODEL_CONSTRUCT(CLEVO, 0x0900)
219 #define CLEVO_ALL_SUBVENDOR     HDA_MODEL_CONSTRUCT(CLEVO, 0xffff)
220
221 /* Acer */
222 #define ACER_VENDORID           0x1025
223 #define ACER_A5050_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x010f)
224 #define ACER_A4520_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x0127)
225 #define ACER_A4710_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x012f)
226 #define ACER_A4715_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x0133)
227 #define ACER_3681WXM_SUBVENDOR  HDA_MODEL_CONSTRUCT(ACER, 0x0110)
228 #define ACER_T6292_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x011b)
229 #define ACER_T5320_SUBVENDOR    HDA_MODEL_CONSTRUCT(ACER, 0x011f)
230 #define ACER_ALL_SUBVENDOR      HDA_MODEL_CONSTRUCT(ACER, 0xffff)
231
232 /* Asus */
233 #define ASUS_VENDORID           0x1043
234 #define ASUS_A8X_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1153)
235 #define ASUS_U5F_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1263)
236 #define ASUS_W6F_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1263)
237 #define ASUS_A7M_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1323)
238 #define ASUS_F3JC_SUBVENDOR     HDA_MODEL_CONSTRUCT(ASUS, 0x1338)
239 #define ASUS_G2K_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1339)
240 #define ASUS_A7T_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x13c2)
241 #define ASUS_UX31A_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x1517)
242 #define ASUS_W2J_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x1971)
243 #define ASUS_M5200_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x1993)
244 #define ASUS_P5PL2_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x817f)
245 #define ASUS_P1AH2_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
246 #define ASUS_M2NPVMX_SUBVENDOR  HDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
247 #define ASUS_M2V_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x81e7)
248 #define ASUS_P5BWD_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x81ec)
249 #define ASUS_M2N_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0x8234)
250 #define ASUS_A8NVMCSM_SUBVENDOR HDA_MODEL_CONSTRUCT(NVIDIA, 0xcb84)
251 #define ASUS_ALL_SUBVENDOR      HDA_MODEL_CONSTRUCT(ASUS, 0xffff)
252
253 /* IBM / Lenovo */
254 #define IBM_VENDORID            0x1014
255 #define IBM_M52_SUBVENDOR       HDA_MODEL_CONSTRUCT(IBM, 0x02f6)
256 #define IBM_ALL_SUBVENDOR       HDA_MODEL_CONSTRUCT(IBM, 0xffff)
257
258 /* Lenovo */
259 #define LENOVO_VENDORID         0x17aa
260 #define LENOVO_3KN100_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x2066)
261 #define LENOVO_3KN200_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x384e)
262 #define LENOVO_B450_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x3a0d)
263 #define LENOVO_TCA55_SUBVENDOR  HDA_MODEL_CONSTRUCT(LENOVO, 0x1015)
264 #define LENOVO_X1_SUBVENDOR     HDA_MODEL_CONSTRUCT(LENOVO, 0x21e8)
265 #define LENOVO_X1CRBN_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x21f9)
266 #define LENOVO_X120BS_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x2227)
267 #define LENOVO_X120KH_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x225c)
268 #define LENOVO_X120QD_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x2292)
269 #define LENOVO_X220_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x21da)
270 #define LENOVO_X300_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
271 #define LENOVO_T400_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x20f2)
272 #define LENOVO_T420_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x21ce)
273 #define LENOVO_T430_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x21f3)
274 #define LENOVO_T430S_SUBVENDOR  HDA_MODEL_CONSTRUCT(LENOVO, 0x21fb)
275 #define LENOVO_T520_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x21cf)
276 #define LENOVO_T530_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x21f6)
277 #define LENOVO_G580_SUBVENDOR   HDA_MODEL_CONSTRUCT(LENOVO, 0x3977)
278 #define LENOVO_ALL_SUBVENDOR    HDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
279
280 /* Samsung */
281 #define SAMSUNG_VENDORID        0x144d
282 #define SAMSUNG_Q1_SUBVENDOR    HDA_MODEL_CONSTRUCT(SAMSUNG, 0xc027)
283 #define SAMSUNG_ALL_SUBVENDOR   HDA_MODEL_CONSTRUCT(SAMSUNG, 0xffff)
284
285 /* Medion ? */
286 #define MEDION_VENDORID                 0x161f
287 #define MEDION_MD95257_SUBVENDOR        HDA_MODEL_CONSTRUCT(MEDION, 0x203d)
288 #define MEDION_ALL_SUBVENDOR            HDA_MODEL_CONSTRUCT(MEDION, 0xffff)
289
290 /* Apple Computer Inc. */
291 #define APPLE_VENDORID          0x106b
292 #define APPLE_MB3_SUBVENDOR     HDA_MODEL_CONSTRUCT(APPLE, 0x00a1)
293
294 /* Sony */
295 #define SONY_VENDORID           0x104d
296 #define SONY_S5_SUBVENDOR       HDA_MODEL_CONSTRUCT(SONY, 0x81cc)
297 #define SONY_ALL_SUBVENDOR      HDA_MODEL_CONSTRUCT(SONY, 0xffff)
298
299 /*
300  * Apple Intel MacXXXX seems using Sigmatel codec/vendor id
301  * instead of their own, which is beyond my comprehension
302  * (see HDA_CODEC_STAC9221 below).
303  */
304 #define APPLE_INTEL_MAC         0x76808384
305 #define APPLE_MACBOOKAIR31      0x0d9410de
306 #define APPLE_MACBOOKPRO55      0xcb7910de
307 #define APPLE_MACBOOKPRO71      0xcb8910de
308
309 /* LG Electronics */
310 #define LG_VENDORID             0x1854
311 #define LG_LW20_SUBVENDOR       HDA_MODEL_CONSTRUCT(LG, 0x0018)
312 #define LG_ALL_SUBVENDOR        HDA_MODEL_CONSTRUCT(LG, 0xffff)
313
314 /* Fujitsu Siemens */
315 #define FS_VENDORID             0x1734
316 #define FS_PA1510_SUBVENDOR     HDA_MODEL_CONSTRUCT(FS, 0x10b8)
317 #define FS_SI1848_SUBVENDOR     HDA_MODEL_CONSTRUCT(FS, 0x10cd)
318 #define FS_ALL_SUBVENDOR        HDA_MODEL_CONSTRUCT(FS, 0xffff)
319
320 /* Fujitsu Limited */
321 #define FL_VENDORID             0x10cf
322 #define FL_S7020D_SUBVENDOR     HDA_MODEL_CONSTRUCT(FL, 0x1326)
323 #define FL_U1010_SUBVENDOR      HDA_MODEL_CONSTRUCT(FL, 0x142d)
324 #define FL_ALL_SUBVENDOR        HDA_MODEL_CONSTRUCT(FL, 0xffff)
325
326 /* Toshiba */
327 #define TOSHIBA_VENDORID        0x1179
328 #define TOSHIBA_U200_SUBVENDOR  HDA_MODEL_CONSTRUCT(TOSHIBA, 0x0001)
329 #define TOSHIBA_A135_SUBVENDOR  HDA_MODEL_CONSTRUCT(TOSHIBA, 0xff01)
330 #define TOSHIBA_ALL_SUBVENDOR   HDA_MODEL_CONSTRUCT(TOSHIBA, 0xffff)
331
332 /* Micro-Star International (MSI) */
333 #define MSI_VENDORID            0x1462
334 #define MSI_MS1034_SUBVENDOR    HDA_MODEL_CONSTRUCT(MSI, 0x0349)
335 #define MSI_MS034A_SUBVENDOR    HDA_MODEL_CONSTRUCT(MSI, 0x034a)
336 #define MSI_ALL_SUBVENDOR       HDA_MODEL_CONSTRUCT(MSI, 0xffff)
337
338 /* Giga-Byte Technology */
339 #define GB_VENDORID             0x1458
340 #define GB_G33S2H_SUBVENDOR     HDA_MODEL_CONSTRUCT(GB, 0xa022)
341 #define GP_ALL_SUBVENDOR        HDA_MODEL_CONSTRUCT(GB, 0xffff)
342
343 /* Uniwill ? */
344 #define UNIWILL_VENDORID        0x1584
345 #define UNIWILL_9075_SUBVENDOR  HDA_MODEL_CONSTRUCT(UNIWILL, 0x9075)
346 #define UNIWILL_9080_SUBVENDOR  HDA_MODEL_CONSTRUCT(UNIWILL, 0x9080)
347
348 /* All codecs you can eat... */
349 #define HDA_CODEC_CONSTRUCT(vendor, id) \
350                 (((uint32_t)(vendor##_VENDORID) << 16) | ((id) & 0xffff))
351
352 /* Cirrus Logic */
353 #define CIRRUSLOGIC_VENDORID    0x1013
354 #define HDA_CODEC_CS4206        HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4206)
355 #define HDA_CODEC_CS4207        HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4207)
356 #define HDA_CODEC_CS4210        HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4210)
357 #define HDA_CODEC_CSXXXX        HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0xffff)
358
359 /* Realtek */
360 #define REALTEK_VENDORID        0x10ec
361 #define HDA_CODEC_ALC221        HDA_CODEC_CONSTRUCT(REALTEK, 0x0221)
362 #define HDA_CODEC_ALC225        HDA_CODEC_CONSTRUCT(REALTEK, 0x0225)
363 #define HDA_CODEC_ALC231        HDA_CODEC_CONSTRUCT(REALTEK, 0x0231)
364 #define HDA_CODEC_ALC233        HDA_CODEC_CONSTRUCT(REALTEK, 0x0233)
365 #define HDA_CODEC_ALC234        HDA_CODEC_CONSTRUCT(REALTEK, 0x0234)
366 #define HDA_CODEC_ALC235        HDA_CODEC_CONSTRUCT(REALTEK, 0x0235)
367 #define HDA_CODEC_ALC255        HDA_CODEC_CONSTRUCT(REALTEK, 0x0255)
368 #define HDA_CODEC_ALC256        HDA_CODEC_CONSTRUCT(REALTEK, 0x0256)
369 #define HDA_CODEC_ALC260        HDA_CODEC_CONSTRUCT(REALTEK, 0x0260)
370 #define HDA_CODEC_ALC262        HDA_CODEC_CONSTRUCT(REALTEK, 0x0262)
371 #define HDA_CODEC_ALC267        HDA_CODEC_CONSTRUCT(REALTEK, 0x0267)
372 #define HDA_CODEC_ALC268        HDA_CODEC_CONSTRUCT(REALTEK, 0x0268)
373 #define HDA_CODEC_ALC269        HDA_CODEC_CONSTRUCT(REALTEK, 0x0269)
374 #define HDA_CODEC_ALC270        HDA_CODEC_CONSTRUCT(REALTEK, 0x0270)
375 #define HDA_CODEC_ALC272        HDA_CODEC_CONSTRUCT(REALTEK, 0x0272)
376 #define HDA_CODEC_ALC273        HDA_CODEC_CONSTRUCT(REALTEK, 0x0273)
377 #define HDA_CODEC_ALC274        HDA_CODEC_CONSTRUCT(REALTEK, 0x0274)
378 #define HDA_CODEC_ALC275        HDA_CODEC_CONSTRUCT(REALTEK, 0x0275)
379 #define HDA_CODEC_ALC276        HDA_CODEC_CONSTRUCT(REALTEK, 0x0276)
380 #define HDA_CODEC_ALC280        HDA_CODEC_CONSTRUCT(REALTEK, 0x0280)
381 #define HDA_CODEC_ALC282        HDA_CODEC_CONSTRUCT(REALTEK, 0x0282)
382 #define HDA_CODEC_ALC283        HDA_CODEC_CONSTRUCT(REALTEK, 0x0283)
383 #define HDA_CODEC_ALC284        HDA_CODEC_CONSTRUCT(REALTEK, 0x0284)
384 #define HDA_CODEC_ALC285        HDA_CODEC_CONSTRUCT(REALTEK, 0x0285)
385 #define HDA_CODEC_ALC286        HDA_CODEC_CONSTRUCT(REALTEK, 0x0286)
386 #define HDA_CODEC_ALC288        HDA_CODEC_CONSTRUCT(REALTEK, 0x0288)
387 #define HDA_CODEC_ALC290        HDA_CODEC_CONSTRUCT(REALTEK, 0x0290)
388 #define HDA_CODEC_ALC292        HDA_CODEC_CONSTRUCT(REALTEK, 0x0292)
389 #define HDA_CODEC_ALC293        HDA_CODEC_CONSTRUCT(REALTEK, 0x0293)
390 #define HDA_CODEC_ALC294        HDA_CODEC_CONSTRUCT(REALTEK, 0x0294)
391 #define HDA_CODEC_ALC295        HDA_CODEC_CONSTRUCT(REALTEK, 0x0295)
392 #define HDA_CODEC_ALC298        HDA_CODEC_CONSTRUCT(REALTEK, 0x0298)
393 #define HDA_CODEC_ALC299        HDA_CODEC_CONSTRUCT(REALTEK, 0x0299)
394 #define HDA_CODEC_ALC292        HDA_CODEC_CONSTRUCT(REALTEK, 0x0292)
395 #define HDA_CODEC_ALC295        HDA_CODEC_CONSTRUCT(REALTEK, 0x0295)
396 #define HDA_CODEC_ALC660        HDA_CODEC_CONSTRUCT(REALTEK, 0x0660)
397 #define HDA_CODEC_ALC662        HDA_CODEC_CONSTRUCT(REALTEK, 0x0662)
398 #define HDA_CODEC_ALC663        HDA_CODEC_CONSTRUCT(REALTEK, 0x0663)
399 #define HDA_CODEC_ALC665        HDA_CODEC_CONSTRUCT(REALTEK, 0x0665)
400 #define HDA_CODEC_ALC670        HDA_CODEC_CONSTRUCT(REALTEK, 0x0670)
401 #define HDA_CODEC_ALC671        HDA_CODEC_CONSTRUCT(REALTEK, 0x0671)
402 #define HDA_CODEC_ALC680        HDA_CODEC_CONSTRUCT(REALTEK, 0x0680)
403 #define HDA_CODEC_ALC700        HDA_CODEC_CONSTRUCT(REALTEK, 0x0700)
404 #define HDA_CODEC_ALC701        HDA_CODEC_CONSTRUCT(REALTEK, 0x0701)
405 #define HDA_CODEC_ALC703        HDA_CODEC_CONSTRUCT(REALTEK, 0x0703)
406 #define HDA_CODEC_ALC861        HDA_CODEC_CONSTRUCT(REALTEK, 0x0861)
407 #define HDA_CODEC_ALC861VD      HDA_CODEC_CONSTRUCT(REALTEK, 0x0862)
408 #define HDA_CODEC_ALC880        HDA_CODEC_CONSTRUCT(REALTEK, 0x0880)
409 #define HDA_CODEC_ALC882        HDA_CODEC_CONSTRUCT(REALTEK, 0x0882)
410 #define HDA_CODEC_ALC883        HDA_CODEC_CONSTRUCT(REALTEK, 0x0883)
411 #define HDA_CODEC_ALC885        HDA_CODEC_CONSTRUCT(REALTEK, 0x0885)
412 #define HDA_CODEC_ALC887        HDA_CODEC_CONSTRUCT(REALTEK, 0x0887)
413 #define HDA_CODEC_ALC888        HDA_CODEC_CONSTRUCT(REALTEK, 0x0888)
414 #define HDA_CODEC_ALC889        HDA_CODEC_CONSTRUCT(REALTEK, 0x0889)
415 #define HDA_CODEC_ALC892        HDA_CODEC_CONSTRUCT(REALTEK, 0x0892)
416 #define HDA_CODEC_ALC899        HDA_CODEC_CONSTRUCT(REALTEK, 0x0899)
417 #define HDA_CODEC_ALC1150       HDA_CODEC_CONSTRUCT(REALTEK, 0x0900)
418 #define HDA_CODEC_ALC1220       HDA_CODEC_CONSTRUCT(REALTEK, 0x1220)
419 #define HDA_CODEC_ALCXXXX       HDA_CODEC_CONSTRUCT(REALTEK, 0xffff)
420
421 /* Motorola */
422 #define MOTO_VENDORID           0x1057
423 #define HDA_CODEC_MOTOXXXX      HDA_CODEC_CONSTRUCT(MOTO, 0xffff)
424
425 /* Creative */
426 #define CREATIVE_VENDORID       0x1102
427 #define HDA_CODEC_CA0110        HDA_CODEC_CONSTRUCT(CREATIVE, 0x000a)
428 #define HDA_CODEC_CA0110_2      HDA_CODEC_CONSTRUCT(CREATIVE, 0x000b)
429 #define HDA_CODEC_SB0880        HDA_CODEC_CONSTRUCT(CREATIVE, 0x000d)
430 #define HDA_CODEC_CA0132        HDA_CODEC_CONSTRUCT(CREATIVE, 0x0011)
431 #define HDA_CODEC_CAXXXX        HDA_CODEC_CONSTRUCT(CREATIVE, 0xffff)
432
433 /* Analog Devices */
434 #define ANALOGDEVICES_VENDORID  0x11d4
435 #define HDA_CODEC_AD1884A       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x184a)
436 #define HDA_CODEC_AD1882        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1882)
437 #define HDA_CODEC_AD1883        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1883)
438 #define HDA_CODEC_AD1884        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1884)
439 #define HDA_CODEC_AD1984A       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194a)
440 #define HDA_CODEC_AD1984B       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194b)
441 #define HDA_CODEC_AD1981HD      HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1981)
442 #define HDA_CODEC_AD1983        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1983)
443 #define HDA_CODEC_AD1984        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1984)
444 #define HDA_CODEC_AD1986A       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1986)
445 #define HDA_CODEC_AD1987        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1987)
446 #define HDA_CODEC_AD1988        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1988)
447 #define HDA_CODEC_AD1988B       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x198b)
448 #define HDA_CODEC_AD1882A       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x882a)
449 #define HDA_CODEC_AD1989A       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989a)
450 #define HDA_CODEC_AD1989B       HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989b)
451 #define HDA_CODEC_ADXXXX        HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0xffff)
452
453 /* CMedia */
454 #define CMEDIA_VENDORID         0x13f6
455 #define HDA_CODEC_CMI9880       HDA_CODEC_CONSTRUCT(CMEDIA, 0x9880)
456 #define HDA_CODEC_CMIXXXX       HDA_CODEC_CONSTRUCT(CMEDIA, 0xffff)
457
458 #define CMEDIA2_VENDORID        0x434d
459 #define HDA_CODEC_CMI98802      HDA_CODEC_CONSTRUCT(CMEDIA2, 0x4980)
460 #define HDA_CODEC_CMIXXXX2      HDA_CODEC_CONSTRUCT(CMEDIA2, 0xffff)
461
462 /* Sigmatel */
463 #define SIGMATEL_VENDORID       0x8384
464 #define HDA_CODEC_STAC9230X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7612)
465 #define HDA_CODEC_STAC9230D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7613)
466 #define HDA_CODEC_STAC9229X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7614)
467 #define HDA_CODEC_STAC9229D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7615)
468 #define HDA_CODEC_STAC9228X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7616)
469 #define HDA_CODEC_STAC9228D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7617)
470 #define HDA_CODEC_STAC9227X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7618)
471 #define HDA_CODEC_STAC9227D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7619)
472 #define HDA_CODEC_STAC9274      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7620)
473 #define HDA_CODEC_STAC9274D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7621)
474 #define HDA_CODEC_STAC9273X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7622)
475 #define HDA_CODEC_STAC9273D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7623)
476 #define HDA_CODEC_STAC9272X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7624)
477 #define HDA_CODEC_STAC9272D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7625)
478 #define HDA_CODEC_STAC9271X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7626)
479 #define HDA_CODEC_STAC9271D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7627)
480 #define HDA_CODEC_STAC9274X5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7628)
481 #define HDA_CODEC_STAC9274D5NH  HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7629)
482 #define HDA_CODEC_STAC9250      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7634)
483 #define HDA_CODEC_STAC9251      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7636)
484 #define HDA_CODEC_IDT92HD700X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7638)
485 #define HDA_CODEC_IDT92HD700D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7639)
486 #define HDA_CODEC_IDT92HD206X   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7645)
487 #define HDA_CODEC_IDT92HD206D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7646)
488 #define HDA_CODEC_CXD9872RDK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7661)
489 #define HDA_CODEC_STAC9872AK    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7662)
490 #define HDA_CODEC_CXD9872AKD    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7664)
491 #define HDA_CODEC_STAC9221      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7680)
492 #define HDA_CODEC_STAC922XD     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7681)
493 #define HDA_CODEC_STAC9221_A2   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7682)
494 #define HDA_CODEC_STAC9221D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7683)
495 #define HDA_CODEC_STAC9220      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7690)
496 #define HDA_CODEC_STAC9200D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7691)
497 #define HDA_CODEC_IDT92HD005    HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7698)
498 #define HDA_CODEC_IDT92HD005D   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7699)
499 #define HDA_CODEC_STAC9205X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a0)
500 #define HDA_CODEC_STAC9205D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a1)
501 #define HDA_CODEC_STAC9204X     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a2)
502 #define HDA_CODEC_STAC9204D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a3)
503 #define HDA_CODEC_STAC9255      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a4)
504 #define HDA_CODEC_STAC9255D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a5)
505 #define HDA_CODEC_STAC9254      HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a6)
506 #define HDA_CODEC_STAC9254D     HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a7)
507 #define HDA_CODEC_STAC9220_A2   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7880)
508 #define HDA_CODEC_STAC9220_A1   HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7882)
509 #define HDA_CODEC_STACXXXX      HDA_CODEC_CONSTRUCT(SIGMATEL, 0xffff)
510
511 /* IDT */
512 #define IDT_VENDORID            0x111d
513 #define HDA_CODEC_IDT92HD75BX   HDA_CODEC_CONSTRUCT(IDT, 0x7603)
514 #define HDA_CODEC_IDT92HD83C1X  HDA_CODEC_CONSTRUCT(IDT, 0x7604)
515 #define HDA_CODEC_IDT92HD81B1X  HDA_CODEC_CONSTRUCT(IDT, 0x7605)
516 #define HDA_CODEC_IDT92HD75B3   HDA_CODEC_CONSTRUCT(IDT, 0x7608)
517 #define HDA_CODEC_IDT92HD73D1   HDA_CODEC_CONSTRUCT(IDT, 0x7674)
518 #define HDA_CODEC_IDT92HD73C1   HDA_CODEC_CONSTRUCT(IDT, 0x7675)
519 #define HDA_CODEC_IDT92HD73E1   HDA_CODEC_CONSTRUCT(IDT, 0x7676)
520 #define HDA_CODEC_IDT92HD71B8   HDA_CODEC_CONSTRUCT(IDT, 0x76b0)
521 #define HDA_CODEC_IDT92HD71B8_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b1)
522 #define HDA_CODEC_IDT92HD71B7   HDA_CODEC_CONSTRUCT(IDT, 0x76b2)
523 #define HDA_CODEC_IDT92HD71B7_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b3)
524 #define HDA_CODEC_IDT92HD71B6   HDA_CODEC_CONSTRUCT(IDT, 0x76b4)
525 #define HDA_CODEC_IDT92HD71B6_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b5)
526 #define HDA_CODEC_IDT92HD71B5   HDA_CODEC_CONSTRUCT(IDT, 0x76b6)
527 #define HDA_CODEC_IDT92HD71B5_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b7)
528 #define HDA_CODEC_IDT92HD89C3   HDA_CODEC_CONSTRUCT(IDT, 0x76c0)
529 #define HDA_CODEC_IDT92HD89C2   HDA_CODEC_CONSTRUCT(IDT, 0x76c1)
530 #define HDA_CODEC_IDT92HD89C1   HDA_CODEC_CONSTRUCT(IDT, 0x76c2)
531 #define HDA_CODEC_IDT92HD89B3   HDA_CODEC_CONSTRUCT(IDT, 0x76c3)
532 #define HDA_CODEC_IDT92HD89B2   HDA_CODEC_CONSTRUCT(IDT, 0x76c4)
533 #define HDA_CODEC_IDT92HD89B1   HDA_CODEC_CONSTRUCT(IDT, 0x76c5)
534 #define HDA_CODEC_IDT92HD89E3   HDA_CODEC_CONSTRUCT(IDT, 0x76c6)
535 #define HDA_CODEC_IDT92HD89E2   HDA_CODEC_CONSTRUCT(IDT, 0x76c7)
536 #define HDA_CODEC_IDT92HD89E1   HDA_CODEC_CONSTRUCT(IDT, 0x76c8)
537 #define HDA_CODEC_IDT92HD89D3   HDA_CODEC_CONSTRUCT(IDT, 0x76c9)
538 #define HDA_CODEC_IDT92HD89D2   HDA_CODEC_CONSTRUCT(IDT, 0x76ca)
539 #define HDA_CODEC_IDT92HD89D1   HDA_CODEC_CONSTRUCT(IDT, 0x76cb)
540 #define HDA_CODEC_IDT92HD89F3   HDA_CODEC_CONSTRUCT(IDT, 0x76cc)
541 #define HDA_CODEC_IDT92HD89F2   HDA_CODEC_CONSTRUCT(IDT, 0x76cd)
542 #define HDA_CODEC_IDT92HD89F1   HDA_CODEC_CONSTRUCT(IDT, 0x76ce)
543 #define HDA_CODEC_IDT92HD87B1_3 HDA_CODEC_CONSTRUCT(IDT, 0x76d1)
544 #define HDA_CODEC_IDT92HD83C1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d4)
545 #define HDA_CODEC_IDT92HD81B1C  HDA_CODEC_CONSTRUCT(IDT, 0x76d5)
546 #define HDA_CODEC_IDT92HD87B2_4 HDA_CODEC_CONSTRUCT(IDT, 0x76d9)
547 #define HDA_CODEC_IDT92HD93BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76df)
548 #define HDA_CODEC_IDT92HD91BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e0)
549 #define HDA_CODEC_IDT92HD98BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e3)
550 #define HDA_CODEC_IDT92HD99BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e5)
551 #define HDA_CODEC_IDT92HD90BXX  HDA_CODEC_CONSTRUCT(IDT, 0x76e7)
552 #define HDA_CODEC_IDT92HD66B1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e8)
553 #define HDA_CODEC_IDT92HD66B2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e9)
554 #define HDA_CODEC_IDT92HD66B3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ea)
555 #define HDA_CODEC_IDT92HD66C1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76eb)
556 #define HDA_CODEC_IDT92HD66C2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ec)
557 #define HDA_CODEC_IDT92HD66C3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ed)
558 #define HDA_CODEC_IDT92HD66B1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ee)
559 #define HDA_CODEC_IDT92HD66B2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ef)
560 #define HDA_CODEC_IDT92HD66B3X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f0)
561 #define HDA_CODEC_IDT92HD66C1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f1)
562 #define HDA_CODEC_IDT92HD66C2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f2)
563 #define HDA_CODEC_IDT92HD66C3_65        HDA_CODEC_CONSTRUCT(IDT, 0x76f3)
564 #define HDA_CODEC_IDTXXXX       HDA_CODEC_CONSTRUCT(IDT, 0xffff)
565
566 /* Silicon Image */
567 #define SII_VENDORID    0x1095
568 #define HDA_CODEC_SII1390       HDA_CODEC_CONSTRUCT(SII, 0x1390)
569 #define HDA_CODEC_SII1392       HDA_CODEC_CONSTRUCT(SII, 0x1392)
570 #define HDA_CODEC_SIIXXXX       HDA_CODEC_CONSTRUCT(SII, 0xffff)
571
572 /* Lucent/Agere */
573 #define AGERE_VENDORID  0x11c1
574 #define HDA_CODEC_AGEREXXXX     HDA_CODEC_CONSTRUCT(AGERE, 0xffff)
575
576 /* Conexant */
577 #define CONEXANT_VENDORID       0x14f1
578 #define HDA_CODEC_CX20549       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5045)
579 #define HDA_CODEC_CX20551       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5047)
580 #define HDA_CODEC_CX20561       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5051)
581 #define HDA_CODEC_CX20582       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5066)
582 #define HDA_CODEC_CX20583       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5067)
583 #define HDA_CODEC_CX20584       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5068)
584 #define HDA_CODEC_CX20585       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5069)
585 #define HDA_CODEC_CX20588       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506c)
586 #define HDA_CODEC_CX20590       HDA_CODEC_CONSTRUCT(CONEXANT, 0x506e)
587 #define HDA_CODEC_CX20631       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5097)
588 #define HDA_CODEC_CX20632       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5098)
589 #define HDA_CODEC_CX20641       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a1)
590 #define HDA_CODEC_CX20642       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a2)
591 #define HDA_CODEC_CX20651       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ab)
592 #define HDA_CODEC_CX20652       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ac)
593 #define HDA_CODEC_CX20664       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b8)
594 #define HDA_CODEC_CX20665       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b9)
595 #define HDA_CODEC_CX21722       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50f1)
596 #define HDA_CODEC_CX20722       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50f2)
597 #define HDA_CODEC_CX21724       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50f3)
598 #define HDA_CODEC_CX20724       HDA_CODEC_CONSTRUCT(CONEXANT, 0x50f4)
599 #define HDA_CODEC_CX20751       HDA_CODEC_CONSTRUCT(CONEXANT, 0x510f)
600 #define HDA_CODEC_CX20751_2     HDA_CODEC_CONSTRUCT(CONEXANT, 0x5110)
601 #define HDA_CODEC_CX20753       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5111)
602 #define HDA_CODEC_CX20755       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5113)
603 #define HDA_CODEC_CX20756       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5114)
604 #define HDA_CODEC_CX20757       HDA_CODEC_CONSTRUCT(CONEXANT, 0x5115)
605 #define HDA_CODEC_CX20952       HDA_CODEC_CONSTRUCT(CONEXANT, 0x51d7)
606 #define HDA_CODEC_CXXXXX        HDA_CODEC_CONSTRUCT(CONEXANT, 0xffff)
607
608 /* VIA */
609 #define HDA_CODEC_VT1708_8      HDA_CODEC_CONSTRUCT(VIA, 0x1708)
610 #define HDA_CODEC_VT1708_9      HDA_CODEC_CONSTRUCT(VIA, 0x1709)
611 #define HDA_CODEC_VT1708_A      HDA_CODEC_CONSTRUCT(VIA, 0x170a)
612 #define HDA_CODEC_VT1708_B      HDA_CODEC_CONSTRUCT(VIA, 0x170b)
613 #define HDA_CODEC_VT1709_0      HDA_CODEC_CONSTRUCT(VIA, 0xe710)
614 #define HDA_CODEC_VT1709_1      HDA_CODEC_CONSTRUCT(VIA, 0xe711)
615 #define HDA_CODEC_VT1709_2      HDA_CODEC_CONSTRUCT(VIA, 0xe712)
616 #define HDA_CODEC_VT1709_3      HDA_CODEC_CONSTRUCT(VIA, 0xe713)
617 #define HDA_CODEC_VT1709_4      HDA_CODEC_CONSTRUCT(VIA, 0xe714)
618 #define HDA_CODEC_VT1709_5      HDA_CODEC_CONSTRUCT(VIA, 0xe715)
619 #define HDA_CODEC_VT1709_6      HDA_CODEC_CONSTRUCT(VIA, 0xe716)
620 #define HDA_CODEC_VT1709_7      HDA_CODEC_CONSTRUCT(VIA, 0xe717)
621 #define HDA_CODEC_VT1708B_0     HDA_CODEC_CONSTRUCT(VIA, 0xe720)
622 #define HDA_CODEC_VT1708B_1     HDA_CODEC_CONSTRUCT(VIA, 0xe721)
623 #define HDA_CODEC_VT1708B_2     HDA_CODEC_CONSTRUCT(VIA, 0xe722)
624 #define HDA_CODEC_VT1708B_3     HDA_CODEC_CONSTRUCT(VIA, 0xe723)
625 #define HDA_CODEC_VT1708B_4     HDA_CODEC_CONSTRUCT(VIA, 0xe724)
626 #define HDA_CODEC_VT1708B_5     HDA_CODEC_CONSTRUCT(VIA, 0xe725)
627 #define HDA_CODEC_VT1708B_6     HDA_CODEC_CONSTRUCT(VIA, 0xe726)
628 #define HDA_CODEC_VT1708B_7     HDA_CODEC_CONSTRUCT(VIA, 0xe727)
629 #define HDA_CODEC_VT1708S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0397)
630 #define HDA_CODEC_VT1708S_1     HDA_CODEC_CONSTRUCT(VIA, 0x1397)
631 #define HDA_CODEC_VT1708S_2     HDA_CODEC_CONSTRUCT(VIA, 0x2397)
632 #define HDA_CODEC_VT1708S_3     HDA_CODEC_CONSTRUCT(VIA, 0x3397)
633 #define HDA_CODEC_VT1708S_4     HDA_CODEC_CONSTRUCT(VIA, 0x4397)
634 #define HDA_CODEC_VT1708S_5     HDA_CODEC_CONSTRUCT(VIA, 0x5397)
635 #define HDA_CODEC_VT1708S_6     HDA_CODEC_CONSTRUCT(VIA, 0x6397)
636 #define HDA_CODEC_VT1708S_7     HDA_CODEC_CONSTRUCT(VIA, 0x7397)
637 #define HDA_CODEC_VT1702_0      HDA_CODEC_CONSTRUCT(VIA, 0x0398)
638 #define HDA_CODEC_VT1702_1      HDA_CODEC_CONSTRUCT(VIA, 0x1398)
639 #define HDA_CODEC_VT1702_2      HDA_CODEC_CONSTRUCT(VIA, 0x2398)
640 #define HDA_CODEC_VT1702_3      HDA_CODEC_CONSTRUCT(VIA, 0x3398)
641 #define HDA_CODEC_VT1702_4      HDA_CODEC_CONSTRUCT(VIA, 0x4398)
642 #define HDA_CODEC_VT1702_5      HDA_CODEC_CONSTRUCT(VIA, 0x5398)
643 #define HDA_CODEC_VT1702_6      HDA_CODEC_CONSTRUCT(VIA, 0x6398)
644 #define HDA_CODEC_VT1702_7      HDA_CODEC_CONSTRUCT(VIA, 0x7398)
645 #define HDA_CODEC_VT1716S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0433)
646 #define HDA_CODEC_VT1716S_1     HDA_CODEC_CONSTRUCT(VIA, 0xa721)
647 #define HDA_CODEC_VT1718S_0     HDA_CODEC_CONSTRUCT(VIA, 0x0428)
648 #define HDA_CODEC_VT1718S_1     HDA_CODEC_CONSTRUCT(VIA, 0x4428)
649 #define HDA_CODEC_VT1802_0      HDA_CODEC_CONSTRUCT(VIA, 0x0446)
650 #define HDA_CODEC_VT1802_1      HDA_CODEC_CONSTRUCT(VIA, 0x8446)
651 #define HDA_CODEC_VT1812        HDA_CODEC_CONSTRUCT(VIA, 0x0448)
652 #define HDA_CODEC_VT1818S       HDA_CODEC_CONSTRUCT(VIA, 0x0440)
653 #define HDA_CODEC_VT1828S       HDA_CODEC_CONSTRUCT(VIA, 0x4441)
654 #define HDA_CODEC_VT2002P_0     HDA_CODEC_CONSTRUCT(VIA, 0x0438)
655 #define HDA_CODEC_VT2002P_1     HDA_CODEC_CONSTRUCT(VIA, 0x4438)
656 #define HDA_CODEC_VT2020        HDA_CODEC_CONSTRUCT(VIA, 0x0441)
657 #define HDA_CODEC_VTXXXX        HDA_CODEC_CONSTRUCT(VIA, 0xffff)
658
659 /* ATI */
660 #define HDA_CODEC_ATIRS600_1    HDA_CODEC_CONSTRUCT(ATI, 0x793c)
661 #define HDA_CODEC_ATIRS600_2    HDA_CODEC_CONSTRUCT(ATI, 0x7919)
662 #define HDA_CODEC_ATIRS690      HDA_CODEC_CONSTRUCT(ATI, 0x791a)
663 #define HDA_CODEC_ATIR6XX       HDA_CODEC_CONSTRUCT(ATI, 0xaa01)
664 #define HDA_CODEC_ATIXXXX       HDA_CODEC_CONSTRUCT(ATI, 0xffff)
665
666 /* NVIDIA */
667 #define HDA_CODEC_NVIDIAMCP78   HDA_CODEC_CONSTRUCT(NVIDIA, 0x0002)
668 #define HDA_CODEC_NVIDIAMCP78_2 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0003)
669 #define HDA_CODEC_NVIDIAMCP78_3 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0005)
670 #define HDA_CODEC_NVIDIAMCP78_4 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0006)
671 #define HDA_CODEC_NVIDIAMCP7A   HDA_CODEC_CONSTRUCT(NVIDIA, 0x0007)
672 #define HDA_CODEC_NVIDIAGT220   HDA_CODEC_CONSTRUCT(NVIDIA, 0x000a)
673 #define HDA_CODEC_NVIDIAGT21X   HDA_CODEC_CONSTRUCT(NVIDIA, 0x000b)
674 #define HDA_CODEC_NVIDIAMCP89   HDA_CODEC_CONSTRUCT(NVIDIA, 0x000c)
675 #define HDA_CODEC_NVIDIAGT240   HDA_CODEC_CONSTRUCT(NVIDIA, 0x000d)
676 #define HDA_CODEC_NVIDIAGTS450  HDA_CODEC_CONSTRUCT(NVIDIA, 0x0011)
677 #define HDA_CODEC_NVIDIAGT440   HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014)
678 #define HDA_CODEC_NVIDIAGTX550  HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015)
679 #define HDA_CODEC_NVIDIAGTX570  HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018)
680 #define HDA_CODEC_NVIDIATEGRA30 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0020)
681 #define HDA_CODEC_NVIDIATEGRA114 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0022)
682 #define HDA_CODEC_NVIDIATEGRA124 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0028)
683 #define HDA_CODEC_NVIDIATEGRA210 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0029)
684 #define HDA_CODEC_NVIDIAMCP67   HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067)
685 #define HDA_CODEC_NVIDIAMCP73   HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001)
686 #define HDA_CODEC_NVIDIAXXXX    HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff)
687
688 /* Chrontel */
689 #define CHRONTEL_VENDORID       0x17e8
690 #define HDA_CODEC_CHXXXX        HDA_CODEC_CONSTRUCT(CHRONTEL, 0xffff)
691
692 /* INTEL */
693 #define HDA_CODEC_INTELIP       HDA_CODEC_CONSTRUCT(INTEL, 0x0054)
694 #define HDA_CODEC_INTELGMLK     HDA_CODEC_CONSTRUCT(INTEL, 0x2800)
695 #define HDA_CODEC_INTELBL       HDA_CODEC_CONSTRUCT(INTEL, 0x2801)
696 #define HDA_CODEC_INTELCA       HDA_CODEC_CONSTRUCT(INTEL, 0x2802)
697 #define HDA_CODEC_INTELEL       HDA_CODEC_CONSTRUCT(INTEL, 0x2803)
698 #define HDA_CODEC_INTELIP2      HDA_CODEC_CONSTRUCT(INTEL, 0x2804)
699 #define HDA_CODEC_INTELCPT      HDA_CODEC_CONSTRUCT(INTEL, 0x2805)
700 #define HDA_CODEC_INTELPPT      HDA_CODEC_CONSTRUCT(INTEL, 0x2806)
701 #define HDA_CODEC_INTELHSW      HDA_CODEC_CONSTRUCT(INTEL, 0x2807)
702 #define HDA_CODEC_INTELBDW      HDA_CODEC_CONSTRUCT(INTEL, 0x2808)
703 #define HDA_CODEC_INTELSKLK     HDA_CODEC_CONSTRUCT(INTEL, 0x2809)
704 #define HDA_CODEC_INTELBXTN     HDA_CODEC_CONSTRUCT(INTEL, 0x280a)
705 #define HDA_CODEC_INTELKBLK     HDA_CODEC_CONSTRUCT(INTEL, 0x280b)
706 #define HDA_CODEC_INTELCNLK     HDA_CODEC_CONSTRUCT(INTEL, 0x280c)
707 #define HDA_CODEC_INTELGMLK1    HDA_CODEC_CONSTRUCT(INTEL, 0x280d)
708 #define HDA_CODEC_INTELICLK     HDA_CODEC_CONSTRUCT(INTEL, 0x280f)
709 #define HDA_CODEC_INTELTGLK     HDA_CODEC_CONSTRUCT(INTEL, 0x2812)
710 #define HDA_CODEC_INTELCL       HDA_CODEC_CONSTRUCT(INTEL, 0x29fb)
711 #define HDA_CODEC_INTELXXXX     HDA_CODEC_CONSTRUCT(INTEL, 0xffff)
712
713 /****************************************************************************
714  * Helper Macros
715  ****************************************************************************/
716
717 #define HDA_DMA_ALIGNMENT       128
718
719 #define HDA_BDL_MIN             2
720 #define HDA_BDL_MAX             256
721 #define HDA_BDL_DEFAULT         HDA_BDL_MIN
722
723 #define HDA_BLK_MIN             HDA_DMA_ALIGNMENT
724 #define HDA_BLK_ALIGN           (~(HDA_BLK_MIN - 1))
725
726 #define HDA_BUFSZ_MIN           (HDA_BDL_MIN * HDA_BLK_MIN)
727 #define HDA_BUFSZ_MAX           262144
728 #define HDA_BUFSZ_DEFAULT       65536
729
730 #define HDA_GPIO_MAX            8
731
732 #define HDA_DEV_MATCH(fl, v)    ((fl) == (v) || \
733                                 (fl) == 0xffffffff || \
734                                 (((fl) & 0xffff0000) == 0xffff0000 && \
735                                 ((fl) & 0x0000ffff) == ((v) & 0x0000ffff)) || \
736                                 (((fl) & 0x0000ffff) == 0x0000ffff && \
737                                 ((fl) & 0xffff0000) == ((v) & 0xffff0000)))
738 #define HDA_MATCH_ALL           0xffffffff
739 #define HDA_INVALID             0xffffffff
740
741 #define HDA_BOOTVERBOSE(stmt)   do {                    \
742         if (bootverbose != 0 || snd_verbose > 3) {      \
743                 stmt                                    \
744         }                                               \
745 } while (0)
746
747 #define HDA_BOOTHVERBOSE(stmt)  do {                    \
748         if (snd_verbose > 3) {                          \
749                 stmt                                    \
750         }                                               \
751 } while (0)
752
753 #define hda_command(dev, verb)                                  \
754     HDAC_CODEC_COMMAND(device_get_parent(dev), (dev), (verb))
755
756 typedef int nid_t;
757
758 /****************************************************************************
759  * Simplified Accessors for HDA devices
760  ****************************************************************************/
761
762 enum hdac_device_ivars {
763     HDA_IVAR_CODEC_ID,
764     HDA_IVAR_NODE_ID,
765     HDA_IVAR_VENDOR_ID,
766     HDA_IVAR_DEVICE_ID,
767     HDA_IVAR_REVISION_ID,
768     HDA_IVAR_STEPPING_ID,
769     HDA_IVAR_SUBVENDOR_ID,
770     HDA_IVAR_SUBDEVICE_ID,
771     HDA_IVAR_SUBSYSTEM_ID,
772     HDA_IVAR_NODE_TYPE,
773     HDA_IVAR_DMA_NOCACHE,
774     HDA_IVAR_STRIPES_MASK,
775 };
776
777 #define HDA_ACCESSOR(var, ivar, type)                                   \
778     __BUS_ACCESSOR(hda, var, HDA, ivar, type)
779
780 HDA_ACCESSOR(codec_id,          CODEC_ID,       uint8_t);
781 HDA_ACCESSOR(node_id,           NODE_ID,        uint8_t);
782 HDA_ACCESSOR(vendor_id,         VENDOR_ID,      uint16_t);
783 HDA_ACCESSOR(device_id,         DEVICE_ID,      uint16_t);
784 HDA_ACCESSOR(revision_id,       REVISION_ID,    uint8_t);
785 HDA_ACCESSOR(stepping_id,       STEPPING_ID,    uint8_t);
786 HDA_ACCESSOR(subvendor_id,      SUBVENDOR_ID,   uint16_t);
787 HDA_ACCESSOR(subdevice_id,      SUBDEVICE_ID,   uint16_t);
788 HDA_ACCESSOR(subsystem_id,      SUBSYSTEM_ID,   uint32_t);
789 HDA_ACCESSOR(node_type,         NODE_TYPE,      uint8_t);
790 HDA_ACCESSOR(dma_nocache,       DMA_NOCACHE,    uint8_t);
791 HDA_ACCESSOR(stripes_mask,      STRIPES_MASK,   uint8_t);
792
793 #define PCIS_MULTIMEDIA_HDA    0x03
794
795 #endif