Chameleon

Chameleon Svn Source Tree

Root/trunk/i386/libsaio/hda.h

1/*
2 *HDA injector / Audio Enabler
3 *
4 *Copyright (C) 2012Chameleon Team
5 *Edit by Fabio (ErmaC)
6 *
7 *HDA injector is free software: you can redistribute it and/or modify
8 *it under the terms of the GNU General Public License as published by
9 *the Free Software Foundation, either version 3 of the License, or
10 *(at your option) any later version.
11 *
12 *HDA injector is distributed in the hope that it will be useful,
13 *but WITHOUT ANY WARRANTY; without even the implied warranty of
14 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 *GNU General Public License for more details.
16 *
17 *Alternatively you can choose to comply with APSL
18 *
19 *Permission is hereby granted, free of charge, to any person obtaining a
20 *copy of this software and associated documentation files (the "Software"),
21 *to deal in the Software without restriction, including without limitation
22 *the rights to use, copy, modify, merge, publish, distribute, sublicense,
23 *and/or sell copies of the Software, and to permit persons to whom the
24 *Software is furnished to do so, subject to the following conditions:
25 *
26 *The above copyright notice and this permission notice shall be included in
27 *all copies or substantial portions of the Software.
28 *
29 ******************************************************************************
30 * http://www.leidinger.net/FreeBSD/dox/dev_sound/html/df/d54/hdac_8c_source.html
31 *
32 * Copyright (c) 2006 Stephane E. Potvin <sepotvin@videotron.ca>
33 * Copyright (c) 2006 Ariff Abdullah <ariff@FreeBSD.org>
34 * Copyright (c) 2008-2012 Alexander Motin <mav@FreeBSD.org>
35 * All rights reserved.
36 *
37 * Redistribution and use in source and binary forms, with or without
38 * modification, are permitted provided that the following conditions
39 * are met:
40 * 1. Redistributions of source code must retain the above copyright
41 * notice, this list of conditions and the following disclaimer.
42 * 2. Redistributions in binary form must reproduce the above copyright
43 * notice, this list of conditions and the following disclaimer in the
44 * documentation and/or other materials provided with the distribution.
45 *
46 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
47 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
48 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
49 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
50 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
51 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
52 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
53 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
54 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
55 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
56 * SUCH DAMAGE.
57 *
58 * Intel High Definition Audio (Controller) driver for FreeBSD.
59 *
60 ******************************************************************************/
61
62#ifndef __LIBSAIO_HDA_H
63#define __LIBSAIO_HDA_H
64
65static char *get_hda_controller_name( uint16_t controller_device_id, uint16_t controller_vendor_id );
66static char *get_hda_codec_name( uint16_t codec_vendor_id, uint16_t codec_device_id, uint8_t codec_revision_id, uint8_t codec_stepping_id );
67bool setup_hda_devprop( pci_dt_t *hda_dev );
68static int immediate_command(uint32_t command, uint32_t* response);
69static uint32_t get_parameter(uint8_t codec_id, uint8_t node_id, uint8_t parameter_id);
70static int getHDABar(uint32_t pci_addr, uint32_t* bar_phys_addr);
71void probe_hda_bus(uint32_t pci_addr);
72
73struct hda_controller_devices;
74typedef struct
75{
76uint32_tmodel;
77char*desc;
78// charquirks_on;
79// charquirks_off;
80} hda_controller_devices;
81
82struct hdacc_codecs;
83typedef struct
84{
85uint32_t id;
86uint32_t rev;
87const char *name;
88} hdacc_codecs;
89
90/****************************************************************************
91 * Miscellanious defines
92 ****************************************************************************/
93
94/* Controller models */
95#define HDA_MODEL_CONSTRUCT(vendor, model) (((uint32_t)(model) << 16) | ((vendor##_VENDORID) & 0xffff))
96
97/* Intel */
98#define INTEL_VENDORIDPCI_VENDOR_ID_INTEL
99#define HDA_INTEL_OAKHDA_MODEL_CONSTRUCT(INTEL, 0x080a)
100#define HDA_INTEL_BAYHDA_MODEL_CONSTRUCT(INTEL, 0x0f04)
101#define HDA_INTEL_HSW1HDA_MODEL_CONSTRUCT(INTEL, 0x0a0c)
102#define HDA_INTEL_HSW2HDA_MODEL_CONSTRUCT(INTEL, 0x0c0c)
103#define HDA_INTEL_HSW3HDA_MODEL_CONSTRUCT(INTEL, 0x0d0c)
104#define HDA_INTEL_BDWHDA_MODEL_CONSTRUCT(INTEL, 0x160c)
105#define HDA_INTEL_CPTHDA_MODEL_CONSTRUCT(INTEL, 0x1c20)
106#define HDA_INTEL_PATSBURGHDA_MODEL_CONSTRUCT(INTEL, 0x1d20)
107#define HDA_INTEL_PPT1HDA_MODEL_CONSTRUCT(INTEL, 0x1e20) // Macmini6,2
108#define HDA_INTEL_BRASWELL HDA_MODEL_CONSTRUCT(INTEL, 0x2284)
109#define HDA_INTEL_82801FHDA_MODEL_CONSTRUCT(INTEL, 0x2668)
110#define HDA_INTEL_63XXESBHDA_MODEL_CONSTRUCT(INTEL, 0x269a)
111#define HDA_INTEL_82801GHDA_MODEL_CONSTRUCT(INTEL, 0x27d8)
112#define HDA_INTEL_82801HHDA_MODEL_CONSTRUCT(INTEL, 0x284b)
113#define HDA_INTEL_82801IHDA_MODEL_CONSTRUCT(INTEL, 0x293e)
114#define HDA_INTEL_ICH9HDA_MODEL_CONSTRUCT(INTEL, 0x293f)
115#define HDA_INTEL_82801JIHDA_MODEL_CONSTRUCT(INTEL, 0x3a3e)
116#define HDA_INTEL_82801JDHDA_MODEL_CONSTRUCT(INTEL, 0x3a6e)
117#define HDA_INTEL_PCHHDA_MODEL_CONSTRUCT(INTEL, 0x3b56)
118#define HDA_INTEL_PCH2HDA_MODEL_CONSTRUCT(INTEL, 0x3b57)
119#define HDA_INTEL_MACBOOKPRO92HDA_MODEL_CONSTRUCT(INTEL, 0x7270)
120#define HDA_INTEL_SCHHDA_MODEL_CONSTRUCT(INTEL, 0x811b)
121#define HDA_INTEL_LPT1HDA_MODEL_CONSTRUCT(INTEL, 0x8c20)
122#define HDA_INTEL_LPT2HDA_MODEL_CONSTRUCT(INTEL, 0x8c21)
123#define HDA_INTEL_WCPTHDA_MODEL_CONSTRUCT(INTEL, 0x8ca0)
124#define HDA_INTEL_WELLS1HDA_MODEL_CONSTRUCT(INTEL, 0x8d20)
125#define HDA_INTEL_WELLS2HDA_MODEL_CONSTRUCT(INTEL, 0x8d21)
126#define HDA_INTEL_WCPTLP HDA_MODEL_CONSTRUCT(INTEL, 0x9ca0)
127#define HDA_INTEL_LPTLP1HDA_MODEL_CONSTRUCT(INTEL, 0x9c20)
128#define HDA_INTEL_LPTLP2HDA_MODEL_CONSTRUCT(INTEL, 0x9c21)
129#define HDA_INTEL_SRSPLP HDA_MODEL_CONSTRUCT(INTEL, 0x9d70)
130#define HDA_INTEL_SRSPHDA_MODEL_CONSTRUCT(INTEL, 0xa170)
131#define HDA_INTEL_ALLHDA_MODEL_CONSTRUCT(INTEL, 0xffff)
132
133/* Nvidia */
134#define NVIDIA_VENDORIDPCI_VENDOR_ID_NVIDIA
135// AppleHDA binary contain 0a00de10 (10de000a)
136// AppleHDAController binary contain de10ea0b (10de0bea)
137#define HDA_NVIDIA_MCP51HDA_MODEL_CONSTRUCT(NVIDIA, 0x026c)
138#define HDA_NVIDIA_MCP55HDA_MODEL_CONSTRUCT(NVIDIA, 0x0371)
139#define HDA_NVIDIA_MCP61_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x03e4)
140#define HDA_NVIDIA_MCP61_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x03f0)
141#define HDA_NVIDIA_MCP65_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x044a)
142#define HDA_NVIDIA_MCP65_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x044b)
143#define HDA_NVIDIA_MCP67_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x055c)
144#define HDA_NVIDIA_MCP67_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x055d)
145#define HDA_NVIDIA_MCP78_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x0774)
146#define HDA_NVIDIA_MCP78_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x0775)
147#define HDA_NVIDIA_MCP78_3HDA_MODEL_CONSTRUCT(NVIDIA, 0x0776)
148#define HDA_NVIDIA_MCP78_4HDA_MODEL_CONSTRUCT(NVIDIA, 0x0777)
149#define HDA_NVIDIA_MCP73_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x07fc)
150#define HDA_NVIDIA_MCP73_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x07fd)
151#define HDA_NVIDIA_MCP79_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac0)
152#define HDA_NVIDIA_MCP79_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac1)
153#define HDA_NVIDIA_MCP79_3HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac2)
154#define HDA_NVIDIA_MCP79_4HDA_MODEL_CONSTRUCT(NVIDIA, 0x0ac3)
155#define HDA_NVIDIA_0BE2HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be2)
156#define HDA_NVIDIA_0BE3HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be3) // [GeForce 210] HDAcodec
157#define HDA_NVIDIA_0BE4HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be4) // [GeForge GT 240] HDACodec 10de000d (0d00de10)
158#define HDA_NVIDIA_GT100HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be5) // [GeForge GTX 470] HDACodec 10de0010 (1000de10)
159#define HDA_NVIDIA_GT106HDA_MODEL_CONSTRUCT(NVIDIA, 0x0be9)
160#define HDA_NVIDIA_GT108HDA_MODEL_CONSTRUCT(NVIDIA, 0x0bea) // HDACodec
161#define HDA_NVIDIA_GT104HDA_MODEL_CONSTRUCT(NVIDIA, 0x0beb)
162#define HDA_NVIDIA_GT116HDA_MODEL_CONSTRUCT(NVIDIA, 0x0bee)
163#define HDA_NVIDIA_MCP89_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d94)
164#define HDA_NVIDIA_MCP89_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d95)
165#define HDA_NVIDIA_MCP89_3HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d96)
166#define HDA_NVIDIA_MCP89_4HDA_MODEL_CONSTRUCT(NVIDIA, 0x0d97)
167#define HDA_NVIDIA_GF119HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e08)
168#define HDA_NVIDIA_GF110_1HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e09)
169#define HDA_NVIDIA_GF110_2HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e0c) // HDACodec de101600 (10de0016), Controller Binary de100c0e x2
170#define HDA_NVIDIA_GK104HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e0a)
171#define HDA_NVIDIA_GK106HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e0b)
172#define HDA_NVIDIA_GK110HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e1a)
173#define HDA_NVIDIA_GK107HDA_MODEL_CONSTRUCT(NVIDIA, 0x0e1b) // HDACodec de104200 (10de0042)
174#define HDA_NVIDIA_ALLHDA_MODEL_CONSTRUCT(NVIDIA, 0xffff)
175
176/* ATI */
177#define ATI_VENDORIDPCI_VENDOR_ID_ATI
178#define HDA_ATI_SB450HDA_MODEL_CONSTRUCT(ATI, 0x437b)
179#define HDA_ATI_SB600HDA_MODEL_CONSTRUCT(ATI, 0x4383)
180#define HDA_ATI_HUDSONHDA_MODEL_CONSTRUCT(ATI, 0x780d)
181#define HDA_ATI_RS600HDA_MODEL_CONSTRUCT(ATI, 0x793b)
182#define HDA_ATI_RS690HDA_MODEL_CONSTRUCT(ATI, 0x7919)
183#define HDA_ATI_RS780HDA_MODEL_CONSTRUCT(ATI, 0x960f)
184#define HDA_ATI_RS880HDA_MODEL_CONSTRUCT(ATI, 0x970f)
185#define HDA_ATI_TRINITYHDA_MODEL_CONSTRUCT(ATI, 0x9902)
186#define HDA_ATI_R600HDA_MODEL_CONSTRUCT(ATI, 0xaa00)
187#define HDA_ATI_RV630HDA_MODEL_CONSTRUCT(ATI, 0xaa08)
188#define HDA_ATI_RV610HDA_MODEL_CONSTRUCT(ATI, 0xaa10)
189#define HDA_ATI_RV670HDA_MODEL_CONSTRUCT(ATI, 0xaa18)
190#define HDA_ATI_RV635HDA_MODEL_CONSTRUCT(ATI, 0xaa20)
191#define HDA_ATI_RV620HDA_MODEL_CONSTRUCT(ATI, 0xaa28)
192#define HDA_ATI_RV770HDA_MODEL_CONSTRUCT(ATI, 0xaa30)
193#define HDA_ATI_RV730HDA_MODEL_CONSTRUCT(ATI, 0xaa38)
194#define HDA_ATI_RV710HDA_MODEL_CONSTRUCT(ATI, 0xaa40)
195#define HDA_ATI_RV740HDA_MODEL_CONSTRUCT(ATI, 0xaa48)
196#define HDA_ATI_RV870HDA_MODEL_CONSTRUCT(ATI, 0xaa50)
197#define HDA_ATI_RV840HDA_MODEL_CONSTRUCT(ATI, 0xaa58) // Codec 021001aa (1002aa01)
198#define HDA_ATI_RV830HDA_MODEL_CONSTRUCT(ATI, 0xaa60)
199#define HDA_ATI_RV810HDA_MODEL_CONSTRUCT(ATI, 0xaa68)
200#define HDA_ATI_RV970HDA_MODEL_CONSTRUCT(ATI, 0xaa80)
201#define HDA_ATI_RV940HDA_MODEL_CONSTRUCT(ATI, 0xaa88)
202#define HDA_ATI_RV930HDA_MODEL_CONSTRUCT(ATI, 0xaa90)
203#define HDA_ATI_RV910HDA_MODEL_CONSTRUCT(ATI, 0xaa98)
204#define HDA_ATI_R1000HDA_MODEL_CONSTRUCT(ATI, 0xaaa0)
205#define HDA_ATI_SIHDA_MODEL_CONSTRUCT(ATI, 0xaaa8)
206#define HDA_ATI_VERDEHDA_MODEL_CONSTRUCT(ATI, 0xaab0)
207#define HDA_ATI_ALLHDA_MODEL_CONSTRUCT(ATI, 0xffff)
208
209/* RDC */
210#define RDC_VENDORID0x17f3
211#define HDA_RDC_M3010HDA_MODEL_CONSTRUCT(RDC, 0x3010)
212
213/* VIA */
214#define VIA_VENDORID0x1106
215#define HDA_VIA_VT82XXHDA_MODEL_CONSTRUCT(VIA, 0x3288)
216#define HDA_VIA_ALLHDA_MODEL_CONSTRUCT(VIA, 0xffff)
217
218/* SiS */
219#define SIS_VENDORID0x1039
220#define HDA_SIS_966HDA_MODEL_CONSTRUCT(SIS, 0x7502)
221#define HDA_SIS_ALLHDA_MODEL_CONSTRUCT(SIS, 0xffff)
222
223/* ULI */
224#define ULI_VENDORID0x10b9
225#define HDA_ULI_M5461HDA_MODEL_CONSTRUCT(ULI, 0x5461)
226#define HDA_ULI_ALLHDA_MODEL_CONSTRUCT(ULI, 0xffff)
227
228/* OEM/subvendors */
229
230/* Intel */
231#define INTEL_D101GGC_SUBVENDORHDA_MODEL_CONSTRUCT(INTEL, 0xd600)
232
233/* HP/Compaq */
234#define HP_VENDORID0x103c
235#define HP_V3000_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x30b5)
236#define HP_NX7400_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x30a2)
237#define HP_NX6310_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x30aa)
238#define HP_NX6325_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x30b0)
239#define HP_XW4300_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x3013)
240#define HP_3010_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x3010)
241#define HP_DV5000_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x30a5)
242#define HP_DC7700S_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x2801)
243#define HP_DC7700_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0x2802)
244#define HP_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(HP, 0xffff)
245/* What is wrong with XN 2563 anyway? (Got the picture ?) */
246#define HP_NX6325_SUBVENDORX0x103c30b0
247
248/* Dell */
249#define DELL_VENDORID0x1028
250#define DELL_D630_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01f9)
251#define DELL_D820_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01cc)
252#define DELL_V1400_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x0227)
253#define DELL_V1500_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x0228)
254#define DELL_I1300_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01c9)
255#define DELL_XPSM1210_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01d7)
256#define DELL_OPLX745_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0x01da)
257#define DELL_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(DELL, 0xffff)
258
259/* Clevo */
260#define CLEVO_VENDORID0x1558
261#define CLEVO_D900T_SUBVENDORHDA_MODEL_CONSTRUCT(CLEVO, 0x0900)
262#define CLEVO_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(CLEVO, 0xffff)
263
264/* Acer */
265#define ACER_VENDORID0x1025
266#define ACER_A5050_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x010f)
267#define ACER_A4520_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x0127)
268#define ACER_A4710_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x012f)
269#define ACER_A4715_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x0133)
270#define ACER_3681WXM_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x0110)
271#define ACER_T6292_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x011b)
272#define ACER_T5320_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0x011f)
273#define ACER_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(ACER, 0xffff)
274
275/* Asus */
276#define ASUS_VENDORID0x1043
277#define ASUS_A8X_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1153)
278#define ASUS_U5F_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1263)
279#define ASUS_W6F_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1263)
280#define ASUS_A7M_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1323)
281#define ASUS_F3JC_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1338)
282#define ASUS_G2K_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1339)
283#define ASUS_A7T_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x13c2)
284#define ASUS_W2J_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1971)
285#define ASUS_M5200_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x1993)
286#define ASUS_P5PL2_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x817f)
287#define ASUS_P1AH2_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
288#define ASUS_M2NPVMX_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x81cb)
289#define ASUS_M2V_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x81e7)
290#define ASUS_P5BWD_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x81ec)
291#define ASUS_M2N_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0x8234)
292#define ASUS_A8NVMCSM_SUBVENDORHDA_MODEL_CONSTRUCT(NVIDIA, 0xcb84)
293#define ASUS_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(ASUS, 0xffff)
294
295/* IBM / Lenovo */
296#define IBM_VENDORID0x1014
297#define IBM_M52_SUBVENDORHDA_MODEL_CONSTRUCT(IBM, 0x02f6)
298#define IBM_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(IBM, 0xffff)
299
300/* Lenovo */
301#define LENOVO_VENDORID0x17aa
302#define LENOVO_3KN100_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x2066)
303#define LENOVO_3KN200_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x384e)
304#define LENOVO_B450_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x3a0d)
305#define LENOVO_TCA55_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x1015)
306#define LENOVO_X300_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
307#define LENOVO_X1_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21e8)
308#define LENOVO_X1CRBN_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21f9)
309#define LENOVO_X220_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21da)
310#define LENOVO_T420_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21ce)
311#define LENOVO_T430_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21f3)
312#define LENOVO_T430S_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21fb)
313#define LENOVO_T520_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21cf)
314#define LENOVO_T530_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0x21f6)
315#define LENOVO_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
316
317/* Samsung */
318#define SAMSUNG_VENDORID0x144d
319#define SAMSUNG_Q1_SUBVENDORHDA_MODEL_CONSTRUCT(SAMSUNG, 0xc027)
320#define SAMSUNG_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(SAMSUNG, 0xffff)
321
322/* Medion ? */
323#define MEDION_VENDORID0x161f
324#define MEDION_MD95257_SUBVENDORHDA_MODEL_CONSTRUCT(MEDION, 0x203d)
325#define MEDION_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(MEDION, 0xffff)
326
327/* Apple Computer Inc. */
328#define APPLE_VENDORIDPCI_VENDOR_ID_APPLE
329#define APPLE_MB3_SUBVENDORHDA_MODEL_CONSTRUCT(APPLE, 0x00a1)
330
331/* Sony */
332#define SONY_VENDORID0x104d
333#define SONY_S5_SUBVENDORHDA_MODEL_CONSTRUCT(SONY, 0x81cc)
334#define SONY_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(SONY, 0xffff)
335
336/*
337 * Apple Intel MacXXXX seems using Sigmatel codec/vendor id
338 * instead of their own, which is beyond my comprehension
339 * (see HDA_CODEC_STAC9221 below).
340 */
341#define APPLE_INTEL_MAC 0x76808384
342#define APPLE_MACBOOKAIR31 0x0d9410de
343#define APPLE_MACBOOKPRO55 0xcb7910de
344#define APPLE_MACBOOKPRO71 0xcb8910de
345
346/* LG Electronics */
347#define LG_VENDORID0x1854
348#define LG_LW20_SUBVENDORHDA_MODEL_CONSTRUCT(LG, 0x0018)
349#define LG_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(LG, 0xffff)
350
351/* Fujitsu Siemens */
352#define FS_VENDORID0x1734
353#define FS_PA1510_SUBVENDORHDA_MODEL_CONSTRUCT(FS, 0x10b8)
354#define FS_SI1848_SUBVENDORHDA_MODEL_CONSTRUCT(FS, 0x10cd)
355#define FS_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(FS, 0xffff)
356
357/* Fujitsu Limited */
358#define FL_VENDORID0x10cf
359#define FL_S7020D_SUBVENDORHDA_MODEL_CONSTRUCT(FL, 0x1326)
360#define FL_U1010_SUBVENDORHDA_MODEL_CONSTRUCT(FL, 0x142d)
361#define FL_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(FL, 0xffff)
362
363/* Toshiba */
364#define TOSHIBA_VENDORID0x1179
365#define TOSHIBA_U200_SUBVENDORHDA_MODEL_CONSTRUCT(TOSHIBA, 0x0001)
366#define TOSHIBA_A135_SUBVENDORHDA_MODEL_CONSTRUCT(TOSHIBA, 0xff01)
367#define TOSHIBA_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(TOSHIBA, 0xffff)
368
369/* Micro-Star International (MSI) */
370#define MSI_VENDORID0x1462
371#define MSI_MS1034_SUBVENDORHDA_MODEL_CONSTRUCT(MSI, 0x0349)
372#define MSI_MS034A_SUBVENDORHDA_MODEL_CONSTRUCT(MSI, 0x034a)
373#define MSI_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(MSI, 0xffff)
374
375/* Giga-Byte Technology */
376#define GB_VENDORID0x1458
377#define GB_G33S2H_SUBVENDORHDA_MODEL_CONSTRUCT(GB, 0xa022)
378#define GP_ALL_SUBVENDORHDA_MODEL_CONSTRUCT(GB, 0xffff)
379
380/* Uniwill ? */
381#define UNIWILL_VENDORID0x1584
382#define UNIWILL_9075_SUBVENDORHDA_MODEL_CONSTRUCT(UNIWILL, 0x9075)
383#define UNIWILL_9080_SUBVENDORHDA_MODEL_CONSTRUCT(UNIWILL, 0x9080)
384
385//#define HDEF_PATH "PciRoot(0x0)/Pci(0x1b,0x0)"
386//#define PINCONF_LEN ( sizeof(default_PinConfiguration) / sizeof(uint8_t) )
387#define HDA0_LEN ( sizeof(default_HDEF_layout_id) / sizeof(uint8_t) )
388#define HDA1_LEN ( sizeof(default_HDAU_layout_id) / sizeof(uint8_t) )
389
390/* =================== C O D E C I N F O R M A T I O N ===================== */
391
392#define HDA_CODEC_CONSTRUCT(vendor, id) (((uint32_t)(vendor##_VENDORID) << 16) | ((id) & 0xffff))
393
394/* Cirrus Logic */
395#define CIRRUSLOGIC_VENDORID 0x1013
396#define HDA_CODEC_CS4206 HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4206)
397#define HDA_CODEC_CS4207 HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4207)
398#define HDA_CODEC_CS4208 HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4208)
399#define HDA_CODEC_CS4210 HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4210)
400#define HDA_CODEC_CS4213 HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0x4213)
401#define HDA_CODEC_CSXXXX HDA_CODEC_CONSTRUCT(CIRRUSLOGIC, 0xffff)
402
403/* Realtek */
404#define REALTEK_VENDORID PCI_VENDOR_ID_REALTEK
405#define HDA_CODEC_ALC221 HDA_CODEC_CONSTRUCT(REALTEK, 0x0221)
406#define HDA_CODEC_ALC231 HDA_CODEC_CONSTRUCT(REALTEK, 0x0231)
407#define HDA_CODEC_ALC233 HDA_CODEC_CONSTRUCT(REALTEK, 0x0233)
408#define HDA_CODEC_ALC235 HDA_CODEC_CONSTRUCT(REALTEK, 0x0235)
409#define HDA_CODEC_ALC255 HDA_CODEC_CONSTRUCT(REALTEK, 0x0255)
410#define HDA_CODEC_ALC256 HDA_CODEC_CONSTRUCT(REALTEK, 0x0256)
411#define HDA_CODEC_ALC260 HDA_CODEC_CONSTRUCT(REALTEK, 0x0260)
412#define HDA_CODEC_ALC262 HDA_CODEC_CONSTRUCT(REALTEK, 0x0262)
413#define HDA_CODEC_ALC267 HDA_CODEC_CONSTRUCT(REALTEK, 0x0267)
414#define HDA_CODEC_ALC268 HDA_CODEC_CONSTRUCT(REALTEK, 0x0268)
415#define HDA_CODEC_ALC269 HDA_CODEC_CONSTRUCT(REALTEK, 0x0269)
416#define HDA_CODEC_ALC270 HDA_CODEC_CONSTRUCT(REALTEK, 0x0270)
417#define HDA_CODEC_ALC272 HDA_CODEC_CONSTRUCT(REALTEK, 0x0272)
418#define HDA_CODEC_ALC273 HDA_CODEC_CONSTRUCT(REALTEK, 0x0273)
419#define HDA_CODEC_ALC275 HDA_CODEC_CONSTRUCT(REALTEK, 0x0275)
420#define HDA_CODEC_ALC276 HDA_CODEC_CONSTRUCT(REALTEK, 0x0276)
421#define HDA_CODEC_ALC280HDA_CODEC_CONSTRUCT(REALTEK, 0x0280)
422#define HDA_CODEC_ALC282HDA_CODEC_CONSTRUCT(REALTEK, 0x0282)
423#define HDA_CODEC_ALC283HDA_CODEC_CONSTRUCT(REALTEK, 0x0283)
424#define HDA_CODEC_ALC284HDA_CODEC_CONSTRUCT(REALTEK, 0x0284)
425#define HDA_CODEC_ALC285HDA_CODEC_CONSTRUCT(REALTEK, 0x0285)
426#define HDA_CODEC_ALC286HDA_CODEC_CONSTRUCT(REALTEK, 0x0286)
427#define HDA_CODEC_ALC288HDA_CODEC_CONSTRUCT(REALTEK, 0x0288)
428#define HDA_CODEC_ALC290HDA_CODEC_CONSTRUCT(REALTEK, 0x0290)
429#define HDA_CODEC_ALC292HDA_CODEC_CONSTRUCT(REALTEK, 0x0292)
430#define HDA_CODEC_ALC293HDA_CODEC_CONSTRUCT(REALTEK, 0x0293)
431#define HDA_CODEC_ALC298HDA_CODEC_CONSTRUCT(REALTEK, 0x0298)
432#define HDA_CODEC_ALC660 HDA_CODEC_CONSTRUCT(REALTEK, 0x0660)
433#define HDA_CODEC_ALC662 HDA_CODEC_CONSTRUCT(REALTEK, 0x0662)
434#define HDA_CODEC_ALC663 HDA_CODEC_CONSTRUCT(REALTEK, 0x0663)
435#define HDA_CODEC_ALC665 HDA_CODEC_CONSTRUCT(REALTEK, 0x0665)
436#define HDA_CODEC_ALC667 HDA_CODEC_CONSTRUCT(REALTEK, 0x0667)
437#define HDA_CODEC_ALC668 HDA_CODEC_CONSTRUCT(REALTEK, 0x0668)
438#define HDA_CODEC_ALC670 HDA_CODEC_CONSTRUCT(REALTEK, 0x0670)
439#define HDA_CODEC_ALC671 HDA_CODEC_CONSTRUCT(REALTEK, 0x0671)
440#define HDA_CODEC_ALC680 HDA_CODEC_CONSTRUCT(REALTEK, 0x0680)
441#define HDA_CODEC_ALC861 HDA_CODEC_CONSTRUCT(REALTEK, 0x0861)
442#define HDA_CODEC_ALC861VD HDA_CODEC_CONSTRUCT(REALTEK, 0x0862)
443#define HDA_CODEC_ALC867 HDA_CODEC_CONSTRUCT(REALTEK, 0x0867)
444#define HDA_CODEC_ALC880 HDA_CODEC_CONSTRUCT(REALTEK, 0x0880)
445#define HDA_CODEC_ALC882 HDA_CODEC_CONSTRUCT(REALTEK, 0x0882)
446#define HDA_CODEC_ALC883 HDA_CODEC_CONSTRUCT(REALTEK, 0x0883)
447#define HDA_CODEC_ALC885 HDA_CODEC_CONSTRUCT(REALTEK, 0x0885)
448#define HDA_CODEC_ALC886 HDA_CODEC_CONSTRUCT(REALTEK, 0x0886)
449#define HDA_CODEC_ALC887 HDA_CODEC_CONSTRUCT(REALTEK, 0x0887)
450#define HDA_CODEC_ALC888 HDA_CODEC_CONSTRUCT(REALTEK, 0x0888)
451#define HDA_CODEC_ALC889 HDA_CODEC_CONSTRUCT(REALTEK, 0x0889)
452#define HDA_CODEC_ALC892 HDA_CODEC_CONSTRUCT(REALTEK, 0x0892)
453#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT(REALTEK, 0x0898)
454#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT(REALTEK, 0x0899)
455#define HDA_CODEC_ALC900 HDA_CODEC_CONSTRUCT(REALTEK, 0x0900)
456#define HDA_CODEC_ALCXXXX HDA_CODEC_CONSTRUCT(REALTEK, 0xffff)
457
458/* Motorola */
459#define MOTO_VENDORID PCI_VENDOR_ID_MOTOROLA
460#define HDA_CODEC_MOTOXXXX HDA_CODEC_CONSTRUCT(MOTO, 0xffff)
461
462/* Creative */
463#define CREATIVE_VENDORID 0x1102
464#define HDA_CODEC_XFIEA HDA_CODEC_CONSTRUCT(CREATIVE, 0x000a)
465#define HDA_CODEC_XFIED HDA_CODEC_CONSTRUCT(CREATIVE, 0x000b)
466#define HDA_CODEC_SB0880 HDA_CODEC_CONSTRUCT(CREATIVE, 0x000d)
467#define HDA_CODEC_CA0132 HDA_CODEC_CONSTRUCT(CREATIVE, 0x0011)
468#define HDA_CODEC_CAXXXX HDA_CODEC_CONSTRUCT(CREATIVE, 0xffff)
469
470/* Analog Devices */
471#define ANALOGDEVICES_VENDORID 0x11d4
472#define HDA_CODEC_AD1884A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x184a)
473#define HDA_CODEC_AD1882 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1882)
474#define HDA_CODEC_AD1883 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1883)
475#define HDA_CODEC_AD1884 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1884)
476#define HDA_CODEC_AD1984A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194a)
477#define HDA_CODEC_AD1984B HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x194b)
478#define HDA_CODEC_AD1981HD HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1981)
479#define HDA_CODEC_AD1983 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1983)
480#define HDA_CODEC_AD1984 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1984)
481#define HDA_CODEC_AD1986A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1986)
482#define HDA_CODEC_AD1987 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1987)
483#define HDA_CODEC_AD1988 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1988)
484#define HDA_CODEC_AD1988B HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x198b)
485#define HDA_CODEC_AD1882A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x882a)
486#define HDA_CODEC_AD1989A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989a)
487#define HDA_CODEC_AD1989B HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x989b)
488#define HDA_CODEC_ADXXXX HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0xffff)
489
490/* CMedia */
491#define CMEDIA_VENDORID 0x13f6
492#define HDA_CODEC_CMI8880 HDA_CODEC_CONSTRUCT(CMEDIA, 0x8880)
493#define HDA_CODEC_CMI9880 HDA_CODEC_CONSTRUCT(CMEDIA, 0x9880)
494#define HDA_CODEC_CMIXXXX HDA_CODEC_CONSTRUCT(CMEDIA, 0xffff)
495
496#define CMEDIA2_VENDORID 0x434d
497#define HDA_CODEC_CMI98802 HDA_CODEC_CONSTRUCT(CMEDIA2, 0x4980)
498#define HDA_CODEC_CMIXXXX2 HDA_CODEC_CONSTRUCT(CMEDIA2, 0xffff)
499
500/* Sigmatel */
501#define SIGMATEL_VENDORID 0x8384
502#define HDA_CODEC_STAC9230X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7612)
503#define HDA_CODEC_STAC9230D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7613)
504#define HDA_CODEC_STAC9229X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7614)
505#define HDA_CODEC_STAC9229D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7615)
506#define HDA_CODEC_STAC9228X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7616)
507#define HDA_CODEC_STAC9228D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7617)
508#define HDA_CODEC_STAC9227X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7618)
509#define HDA_CODEC_STAC9227D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7619)
510#define HDA_CODEC_STAC9274 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7620)
511#define HDA_CODEC_STAC9274D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7621)
512#define HDA_CODEC_STAC9273X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7622)
513#define HDA_CODEC_STAC9273D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7623)
514#define HDA_CODEC_STAC9272X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7624)
515#define HDA_CODEC_STAC9272D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7625)
516#define HDA_CODEC_STAC9271X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7626)
517#define HDA_CODEC_STAC9271D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7627)
518#define HDA_CODEC_STAC9274X5NH HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7628)
519#define HDA_CODEC_STAC9274D5NH HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7629)
520#define HDA_CODEC_STAC9202 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7632)
521#define HDA_CODEC_STAC9202D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7633)
522#define HDA_CODEC_STAC9250 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7634)
523#define HDA_CODEC_STAC9250D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7635)
524#define HDA_CODEC_STAC9251 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7636)
525#define HDA_CODEC_STAC9250D_1 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7637)
526#define HDA_CODEC_IDT92HD700X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7638)
527#define HDA_CODEC_IDT92HD700D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7639)
528#define HDA_CODEC_IDT92HD206X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7645)
529#define HDA_CODEC_IDT92HD206D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7646)
530#define HDA_CODEC_CXD9872RDK HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7661)
531#define HDA_CODEC_STAC9872AK HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7662)
532#define HDA_CODEC_CXD9872AKD HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7664)
533#define HDA_CODEC_STAC9221 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7680)
534#define HDA_CODEC_STAC922XD HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7681)
535#define HDA_CODEC_STAC9221_A2 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7682)
536#define HDA_CODEC_STAC9221D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7683)
537#define HDA_CODEC_STAC9220 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7690)
538#define HDA_CODEC_STAC9200D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7691)
539#define HDA_CODEC_IDT92HD005 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7698)
540#define HDA_CODEC_IDT92HD005D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7699)
541#define HDA_CODEC_STAC9205X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a0)
542#define HDA_CODEC_STAC9205D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a1)
543#define HDA_CODEC_STAC9204X HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a2)
544#define HDA_CODEC_STAC9204D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a3)
545#define HDA_CODEC_STAC9255 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a4)
546#define HDA_CODEC_STAC9255D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a5)
547#define HDA_CODEC_STAC9254 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a6)
548#define HDA_CODEC_STAC9254D HDA_CODEC_CONSTRUCT(SIGMATEL, 0x76a7)
549#define HDA_CODEC_STAC9220_A2 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7880)
550#define HDA_CODEC_STAC9220_A1 HDA_CODEC_CONSTRUCT(SIGMATEL, 0x7882)
551#define HDA_CODEC_STACXXXX HDA_CODEC_CONSTRUCT(SIGMATEL, 0xffff)
552
553/* IDT */
554#define IDT_VENDORID 0x111d
555#define HDA_CODEC_IDT92HD75BX HDA_CODEC_CONSTRUCT(IDT, 0x7603)
556#define HDA_CODEC_IDT92HD83C1X HDA_CODEC_CONSTRUCT(IDT, 0x7604)
557#define HDA_CODEC_IDT92HD81B1X HDA_CODEC_CONSTRUCT(IDT, 0x7605)
558#define HDA_CODEC_IDT92HD75B3 HDA_CODEC_CONSTRUCT(IDT, 0x7608)
559#define HDA_CODEC_IDT92HD88B3 HDA_CODEC_CONSTRUCT(IDT, 0x7666)
560#define HDA_CODEC_IDT92HD88B1 HDA_CODEC_CONSTRUCT(IDT, 0x7667)
561#define HDA_CODEC_IDT92HD88B2 HDA_CODEC_CONSTRUCT(IDT, 0x7668)
562#define HDA_CODEC_IDT92HD88B4 HDA_CODEC_CONSTRUCT(IDT, 0x7669)
563#define HDA_CODEC_IDT92HD73D1 HDA_CODEC_CONSTRUCT(IDT, 0x7674)
564#define HDA_CODEC_IDT92HD73C1 HDA_CODEC_CONSTRUCT(IDT, 0x7675)
565#define HDA_CODEC_IDT92HD73E1 HDA_CODEC_CONSTRUCT(IDT, 0x7676)
566#define HDA_CODEC_IDT92HD95 HDA_CODEC_CONSTRUCT(IDT, 0x7695)
567#define HDA_CODEC_IDT92HD71B8 HDA_CODEC_CONSTRUCT(IDT, 0x76b0)
568#define HDA_CODEC_IDT92HD71B8_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b1)
569#define HDA_CODEC_IDT92HD71B7 HDA_CODEC_CONSTRUCT(IDT, 0x76b2)
570#define HDA_CODEC_IDT92HD71B7_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b3)
571#define HDA_CODEC_IDT92HD71B6 HDA_CODEC_CONSTRUCT(IDT, 0x76b4)
572#define HDA_CODEC_IDT92HD71B6_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b5)
573#define HDA_CODEC_IDT92HD71B5 HDA_CODEC_CONSTRUCT(IDT, 0x76b6)
574#define HDA_CODEC_IDT92HD71B5_2 HDA_CODEC_CONSTRUCT(IDT, 0x76b7)
575#define HDA_CODEC_IDT92HD89C3 HDA_CODEC_CONSTRUCT(IDT, 0x76c0)
576#define HDA_CODEC_IDT92HD89C2 HDA_CODEC_CONSTRUCT(IDT, 0x76c1)
577#define HDA_CODEC_IDT92HD89C1 HDA_CODEC_CONSTRUCT(IDT, 0x76c2)
578#define HDA_CODEC_IDT92HD89B3 HDA_CODEC_CONSTRUCT(IDT, 0x76c3)
579#define HDA_CODEC_IDT92HD89B2 HDA_CODEC_CONSTRUCT(IDT, 0x76c4)
580#define HDA_CODEC_IDT92HD89B1 HDA_CODEC_CONSTRUCT(IDT, 0x76c5)
581#define HDA_CODEC_IDT92HD89E3 HDA_CODEC_CONSTRUCT(IDT, 0x76c6)
582#define HDA_CODEC_IDT92HD89E2 HDA_CODEC_CONSTRUCT(IDT, 0x76c7)
583#define HDA_CODEC_IDT92HD89E1 HDA_CODEC_CONSTRUCT(IDT, 0x76c8)
584#define HDA_CODEC_IDT92HD89D3 HDA_CODEC_CONSTRUCT(IDT, 0x76c9)
585#define HDA_CODEC_IDT92HD89D2 HDA_CODEC_CONSTRUCT(IDT, 0x76ca)
586#define HDA_CODEC_IDT92HD89D1 HDA_CODEC_CONSTRUCT(IDT, 0x76cb)
587#define HDA_CODEC_IDT92HD89F3 HDA_CODEC_CONSTRUCT(IDT, 0x76cc)
588#define HDA_CODEC_IDT92HD89F2 HDA_CODEC_CONSTRUCT(IDT, 0x76cd)
589#define HDA_CODEC_IDT92HD89F1 HDA_CODEC_CONSTRUCT(IDT, 0x76ce)
590#define HDA_CODEC_IDT92HD87B1_3 HDA_CODEC_CONSTRUCT(IDT, 0x76d1)
591#define HDA_CODEC_IDT92HD83C1C HDA_CODEC_CONSTRUCT(IDT, 0x76d4)
592#define HDA_CODEC_IDT92HD81B1C HDA_CODEC_CONSTRUCT(IDT, 0x76d5)
593#define HDA_CODEC_IDT92HD87B2_4 HDA_CODEC_CONSTRUCT(IDT, 0x76d9)
594#define HDA_CODEC_IDT92HD93BXX HDA_CODEC_CONSTRUCT(IDT, 0x76df)
595#define HDA_CODEC_IDT92HD91BXX HDA_CODEC_CONSTRUCT(IDT, 0x76e0)
596#define HDA_CODEC_IDT92HD98BXX HDA_CODEC_CONSTRUCT(IDT, 0x76e3)
597#define HDA_CODEC_IDT92HD99BXX HDA_CODEC_CONSTRUCT(IDT, 0x76e5)
598#define HDA_CODEC_IDT92HD90BXX HDA_CODEC_CONSTRUCT(IDT, 0x76e7)
599#define HDA_CODEC_IDT92HD66B1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e8)
600#define HDA_CODEC_IDT92HD66B2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76e9)
601#define HDA_CODEC_IDT92HD66B3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ea)
602#define HDA_CODEC_IDT92HD66C1X5 HDA_CODEC_CONSTRUCT(IDT, 0x76eb)
603#define HDA_CODEC_IDT92HD66C2X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ec)
604#define HDA_CODEC_IDT92HD66C3X5 HDA_CODEC_CONSTRUCT(IDT, 0x76ed)
605#define HDA_CODEC_IDT92HD66B1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ee)
606#define HDA_CODEC_IDT92HD66B2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76ef)
607#define HDA_CODEC_IDT92HD66B3X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f0)
608#define HDA_CODEC_IDT92HD66C1X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f1)
609#define HDA_CODEC_IDT92HD66C2X3 HDA_CODEC_CONSTRUCT(IDT, 0x76f2)
610#define HDA_CODEC_IDT92HD66C3_65 HDA_CODEC_CONSTRUCT(IDT, 0x76f3)
611#define HDA_CODEC_IDTXXXX HDA_CODEC_CONSTRUCT(IDT, 0xffff)
612
613/* Silicon Image */
614#define SII_VENDORID 0x1095
615#define HDA_CODEC_SII1390 HDA_CODEC_CONSTRUCT(SII, 0x1390)
616#define HDA_CODEC_SII1392 HDA_CODEC_CONSTRUCT(SII, 0x1392)
617#define HDA_CODEC_SIIXXXX HDA_CODEC_CONSTRUCT(SII, 0xffff)
618
619/* Lucent/Agere */
620#define AGERE_VENDORID 0x11c1
621#define HDA_CODEC_AGEREXXXX HDA_CODEC_CONSTRUCT(AGERE, 0xffff)
622
623/* Conexant */
624#define CONEXANT_VENDORID 0x14f1
625#define HDA_CODEC_CX20549 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5045)
626#define HDA_CODEC_CX20551 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5047)
627#define HDA_CODEC_CX20561 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5051)
628#define HDA_CODEC_CX20582 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5066)
629#define HDA_CODEC_CX20583 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5067)
630#define HDA_CODEC_CX20584 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5068)
631#define HDA_CODEC_CX20585 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5069)
632#define HDA_CODEC_CX20588 HDA_CODEC_CONSTRUCT(CONEXANT, 0x506c)
633#define HDA_CODEC_CX20590 HDA_CODEC_CONSTRUCT(CONEXANT, 0x506e)
634#define HDA_CODEC_CX20631 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5097)
635#define HDA_CODEC_CX20632 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5098)
636#define HDA_CODEC_CX20641 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a1)
637#define HDA_CODEC_CX20642 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a2)
638#define HDA_CODEC_CX20651 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ab)
639#define HDA_CODEC_CX20652 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ac)
640#define HDA_CODEC_CX20664 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b8)
641#define HDA_CODEC_CX20665 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b9)
642#define HDA_CODEC_CX20751 HDA_CODEC_CONSTRUCT(CONEXANT, 0x510f)
643#define HDA_CODEC_CX20751_2HDA_CODEC_CONSTRUCT(CONEXANT, 0x5110)
644#define HDA_CODEC_CX20751_4HDA_CODEC_CONSTRUCT(CONEXANT, 0x5111)
645#define HDA_CODEC_CX20755 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5113)
646#define HDA_CODEC_CX20756 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5114)
647#define HDA_CODEC_CX20757 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5115)
648#define HDA_CODEC_CX20952 HDA_CODEC_CONSTRUCT(CONEXANT, 0x51d7)
649#define HDA_CODEC_CXXXXX HDA_CODEC_CONSTRUCT(CONEXANT, 0xffff)
650
651/* VIA */
652#define HDA_CODEC_VT1708_8 HDA_CODEC_CONSTRUCT(VIA, 0x1708)
653#define HDA_CODEC_VT1708_9 HDA_CODEC_CONSTRUCT(VIA, 0x1709)
654#define HDA_CODEC_VT1708_A HDA_CODEC_CONSTRUCT(VIA, 0x170a)
655#define HDA_CODEC_VT1708_B HDA_CODEC_CONSTRUCT(VIA, 0x170b)
656#define HDA_CODEC_VT1709_0 HDA_CODEC_CONSTRUCT(VIA, 0xe710)
657#define HDA_CODEC_VT1709_1 HDA_CODEC_CONSTRUCT(VIA, 0xe711)
658#define HDA_CODEC_VT1709_2 HDA_CODEC_CONSTRUCT(VIA, 0xe712)
659#define HDA_CODEC_VT1709_3 HDA_CODEC_CONSTRUCT(VIA, 0xe713)
660#define HDA_CODEC_VT1709_4 HDA_CODEC_CONSTRUCT(VIA, 0xe714)
661#define HDA_CODEC_VT1709_5 HDA_CODEC_CONSTRUCT(VIA, 0xe715)
662#define HDA_CODEC_VT1709_6 HDA_CODEC_CONSTRUCT(VIA, 0xe716)
663#define HDA_CODEC_VT1709_7 HDA_CODEC_CONSTRUCT(VIA, 0xe717)
664#define HDA_CODEC_VT1708B_0 HDA_CODEC_CONSTRUCT(VIA, 0xe720)
665#define HDA_CODEC_VT1708B_1 HDA_CODEC_CONSTRUCT(VIA, 0xe721)
666#define HDA_CODEC_VT1708B_2 HDA_CODEC_CONSTRUCT(VIA, 0xe722)
667#define HDA_CODEC_VT1708B_3 HDA_CODEC_CONSTRUCT(VIA, 0xe723)
668#define HDA_CODEC_VT1708B_4 HDA_CODEC_CONSTRUCT(VIA, 0xe724)
669#define HDA_CODEC_VT1708B_5 HDA_CODEC_CONSTRUCT(VIA, 0xe725)
670#define HDA_CODEC_VT1708B_6 HDA_CODEC_CONSTRUCT(VIA, 0xe726)
671#define HDA_CODEC_VT1708B_7 HDA_CODEC_CONSTRUCT(VIA, 0xe727)
672#define HDA_CODEC_VT1708S_0 HDA_CODEC_CONSTRUCT(VIA, 0x0397)
673#define HDA_CODEC_VT1708S_1 HDA_CODEC_CONSTRUCT(VIA, 0x1397)
674#define HDA_CODEC_VT1708S_2 HDA_CODEC_CONSTRUCT(VIA, 0x2397)
675#define HDA_CODEC_VT1708S_3 HDA_CODEC_CONSTRUCT(VIA, 0x3397)
676#define HDA_CODEC_VT1708S_4 HDA_CODEC_CONSTRUCT(VIA, 0x4397)
677#define HDA_CODEC_VT1708S_5 HDA_CODEC_CONSTRUCT(VIA, 0x5397)
678#define HDA_CODEC_VT1708S_6 HDA_CODEC_CONSTRUCT(VIA, 0x6397)
679#define HDA_CODEC_VT1708S_7 HDA_CODEC_CONSTRUCT(VIA, 0x7397)
680#define HDA_CODEC_VT1702_0 HDA_CODEC_CONSTRUCT(VIA, 0x0398)
681#define HDA_CODEC_VT1702_1 HDA_CODEC_CONSTRUCT(VIA, 0x1398)
682#define HDA_CODEC_VT1702_2 HDA_CODEC_CONSTRUCT(VIA, 0x2398)
683#define HDA_CODEC_VT1702_3 HDA_CODEC_CONSTRUCT(VIA, 0x3398)
684#define HDA_CODEC_VT1702_4 HDA_CODEC_CONSTRUCT(VIA, 0x4398)
685#define HDA_CODEC_VT1702_5 HDA_CODEC_CONSTRUCT(VIA, 0x5398)
686#define HDA_CODEC_VT1702_6 HDA_CODEC_CONSTRUCT(VIA, 0x6398)
687#define HDA_CODEC_VT1702_7 HDA_CODEC_CONSTRUCT(VIA, 0x7398)
688#define HDA_CODEC_VT1716S_0 HDA_CODEC_CONSTRUCT(VIA, 0x0433)
689#define HDA_CODEC_VT1716S_1 HDA_CODEC_CONSTRUCT(VIA, 0xa721)
690#define HDA_CODEC_VT1718S_0 HDA_CODEC_CONSTRUCT(VIA, 0x0428)
691#define HDA_CODEC_VT1718S_1 HDA_CODEC_CONSTRUCT(VIA, 0x4428)
692#define HDA_CODEC_VT1802_0 HDA_CODEC_CONSTRUCT(VIA, 0x0446)
693#define HDA_CODEC_VT1802_1 HDA_CODEC_CONSTRUCT(VIA, 0x8446)
694#define HDA_CODEC_VT1812 HDA_CODEC_CONSTRUCT(VIA, 0x0448)
695#define HDA_CODEC_VT1818S HDA_CODEC_CONSTRUCT(VIA, 0x0440)
696#define HDA_CODEC_VT1828S HDA_CODEC_CONSTRUCT(VIA, 0x4441)
697#define HDA_CODEC_VT2002P_0 HDA_CODEC_CONSTRUCT(VIA, 0x0438)
698#define HDA_CODEC_VT2002P_1 HDA_CODEC_CONSTRUCT(VIA, 0x4438)
699#define HDA_CODEC_VT2020 HDA_CODEC_CONSTRUCT(VIA, 0x0441)
700#define HDA_CODEC_VTXXXX HDA_CODEC_CONSTRUCT(VIA, 0xffff)
701
702/* ATI */
703#define HDA_CODEC_ATIRS600_1 HDA_CODEC_CONSTRUCT(ATI, 0x793c)
704#define HDA_CODEC_ATIRS600_2 HDA_CODEC_CONSTRUCT(ATI, 0x7919)
705#define HDA_CODEC_ATIRS690 HDA_CODEC_CONSTRUCT(ATI, 0x791a)
706#define HDA_CODEC_ATIR6XX HDA_CODEC_CONSTRUCT(ATI, 0xaa01)
707#define HDA_CODEC_ATIXXXX HDA_CODEC_CONSTRUCT(ATI, 0xffff)
708
709/* NVIDIA */
710#define HDA_CODEC_NVIDIAMCP78 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0002)
711#define HDA_CODEC_NVIDIAMCP78_2 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0003)
712#define HDA_CODEC_NVIDIAMCP78_3 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0005)
713#define HDA_CODEC_NVIDIAMCP78_4 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0006)
714#define HDA_CODEC_NVIDIAMCP7A HDA_CODEC_CONSTRUCT(NVIDIA, 0x0007)
715#define HDA_CODEC_NVIDIAGT220 HDA_CODEC_CONSTRUCT(NVIDIA, 0x000a)
716#define HDA_CODEC_NVIDIAGT21X HDA_CODEC_CONSTRUCT(NVIDIA, 0x000b)
717#define HDA_CODEC_NVIDIAMCP89 HDA_CODEC_CONSTRUCT(NVIDIA, 0x000c)
718#define HDA_CODEC_NVIDIAGT240 HDA_CODEC_CONSTRUCT(NVIDIA, 0x000d)
719#define HDA_CODEC_NVIDIAGTX470 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0010)
720#define HDA_CODEC_NVIDIAGTS450 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0011)
721#define HDA_CODEC_NVIDIAGT440 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0014)
722#define HDA_CODEC_NVIDIAGTX550 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0015)
723#define HDA_CODEC_NVIDIAGTX570 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0018)
724#define HDA_CODEC_NVIDIAGT610HDA_CODEC_CONSTRUCT(NVIDIA, 0x001c)
725#define HDA_CODEC_NVIDIAMCP67 HDA_CODEC_CONSTRUCT(NVIDIA, 0x0067)
726#define HDA_CODEC_NVIDIAMCP73 HDA_CODEC_CONSTRUCT(NVIDIA, 0x8001)
727#define HDA_CODEC_NVIDIAXXXX HDA_CODEC_CONSTRUCT(NVIDIA, 0xffff)
728
729/* Chrontel */
730#define CHRONTEL_VENDORID 0x17e8
731#define HDA_CODEC_CHXXXX HDA_CODEC_CONSTRUCT(CHRONTEL, 0xffff)
732
733/* INTEL */
734#define HDA_CODEC_INTELIPHDA_CODEC_CONSTRUCT(INTEL, 0x0054)
735#define HDA_CODEC_INTELBLHDA_CODEC_CONSTRUCT(INTEL, 0x2801)
736#define HDA_CODEC_INTELCAHDA_CODEC_CONSTRUCT(INTEL, 0x2802)
737#define HDA_CODEC_INTELELHDA_CODEC_CONSTRUCT(INTEL, 0x2803)
738#define HDA_CODEC_INTELIP2HDA_CODEC_CONSTRUCT(INTEL, 0x2804)
739#define HDA_CODEC_INTELCPTHDA_CODEC_CONSTRUCT(INTEL, 0x2805)
740#define HDA_CODEC_INTELPPTHDA_CODEC_CONSTRUCT(INTEL, 0x2806) // Panther Point HDMI
741#define HDA_CODEC_INTELLLPHDA_CODEC_CONSTRUCT(INTEL, 0x2807) // Haswell HDMI
742#define HDA_CODEC_INTELBRWHDA_CODEC_CONSTRUCT(INTEL, 0x2808) // Broadwell HDMI
743#define HDA_CODEC_INTELSKLHDA_CODEC_CONSTRUCT(INTEL, 0x2809) // Skylake HDMI
744#define HDA_CODEC_INTELCDTHDA_CODEC_CONSTRUCT(INTEL, 0x2880) // CedarTrail HDMI
745#define HDA_CODEC_INTELVLVHDA_CODEC_CONSTRUCT(INTEL, 0x2882) // Valleyview2 HDMI
746#define HDA_CODEC_INTELBSWHDA_CODEC_CONSTRUCT(INTEL, 0x2883) // Braswell HDMI
747#define HDA_CODEC_INTELCLHDA_CODEC_CONSTRUCT(INTEL, 0x29fb) // Crestline HDMI
748#define HDA_CODEC_INTELXXXXHDA_CODEC_CONSTRUCT(INTEL, 0xffff)
749
750/****************************************************************************
751 * HDA Controller Register Set
752 ****************************************************************************/
753#define HDAC_GCAP0x00/* 2 - Global Capabilities*/
754#define HDAC_VMIN0x02/* 1 - Minor Version */
755#define HDAC_VMAJ0x03/* 1 - Major Version */
756#defineHDAC_OUTPAY0x04/* 2 - Output Payload Capability */
757#define HDAC_INPAY0x06/* 2 - Input Payload Capability */
758#define HDAC_GCTL0x08/* 4 - Global Control */
759#define HDAC_WAKEEN0x0c/* 2 - Wake Enable */
760#define HDAC_STATESTS0x0e/* 2 - State Change Status */
761#define HDAC_GSTS0x10/* 2 - Global Status */
762#define HDAC_OUTSTRMPAY0x18/* 2 - Output Stream Payload Capability */
763#define HDAC_INSTRMPAY0x1a/* 2 - Input Stream Payload Capability */
764#define HDAC_INTCTL0x20/* 4 - Interrupt Control */
765#define HDAC_INTSTS0x24/* 4 - Interrupt Status */
766#define HDAC_WALCLK0x30/* 4 - Wall Clock Counter */
767#define HDAC_SSYNC0x38/* 4 - Stream Synchronization */
768#define HDAC_CORBLBASE0x40/* 4 - CORB Lower Base Address */
769#define HDAC_CORBUBASE0x44/* 4 - CORB Upper Base Address */
770#define HDAC_CORBWP0x48/* 2 - CORB Write Pointer */
771#define HDAC_CORBRP0x4a/* 2 - CORB Read Pointer */
772#define HDAC_CORBCTL0x4c/* 1 - CORB Control */
773#define HDAC_CORBSTS0x4d/* 1 - CORB Status */
774#define HDAC_CORBSIZE0x4e/* 1 - CORB Size */
775#define HDAC_RIRBLBASE0x50/* 4 - RIRB Lower Base Address */
776#define HDAC_RIRBUBASE0x54/* 4 - RIRB Upper Base Address */
777#define HDAC_RIRBWP0x58/* 2 - RIRB Write Pointer */
778#define HDAC_RINTCNT0x5a/* 2 - Response Interrupt Count */
779#define HDAC_RIRBCTL0x5c/* 1 - RIRB Control */
780#define HDAC_RIRBSTS0x5d/* 1 - RIRB Status */
781#define HDAC_RIRBSIZE0x5e/* 1 - RIRB Size */
782#define HDAC_ICOI0x60/* 4 - Immediate Command Output Interface */
783#define HDAC_ICII0x64/* 4 - Immediate Command Input Interface */
784#define HDAC_ICIS0x68/* 2 - Immediate Command Status */
785#define HDAC_DPIBLBASE0x70/* 4 - DMA Position Buffer Lower Base */
786#define HDAC_DPIBUBASE0x74/* 4 - DMA Position Buffer Upper Base */
787#define HDAC_SDCTL00x80/* 3 - Stream Descriptor Control */
788#define HDAC_SDCTL10x81/* 3 - Stream Descriptor Control */
789#define HDAC_SDCTL20x82/* 3 - Stream Descriptor Control */
790#define HDAC_SDSTS0x83/* 1 - Stream Descriptor Status */
791#define HDAC_SDLPIB0x84/* 4 - Link Position in Buffer */
792#define HDAC_SDCBL0x88/* 4 - Cyclic Buffer Length */
793#define HDAC_SDLVI0x8C/* 2 - Last Valid Index */
794#define HDAC_SDFIFOS0x90/* 2 - FIFOS */
795#define HDAC_SDFMT0x92/* 2 - fmt */
796#define HDAC_SDBDPL0x98/* 4 - Buffer Descriptor Pointer Lower Base */
797#define HDAC_SDBDPU0x9C/* 4 - Buffer Descriptor Pointer Upper Base */
798
799#define _HDAC_ISDOFFSET(n, iss, oss)(0x80 + ((n) * 0x20))
800#define _HDAC_ISDCTL(n, iss, oss)(0x00 + _HDAC_ISDOFFSET(n, iss, oss))
801#define _HDAC_ISDSTS(n, iss, oss)(0x03 + _HDAC_ISDOFFSET(n, iss, oss))
802#define _HDAC_ISDPICB(n, iss, oss)(0x04 + _HDAC_ISDOFFSET(n, iss, oss))
803#define _HDAC_ISDCBL(n, iss, oss)(0x08 + _HDAC_ISDOFFSET(n, iss, oss))
804#define _HDAC_ISDLVI(n, iss, oss)(0x0c + _HDAC_ISDOFFSET(n, iss, oss))
805#define _HDAC_ISDFIFOD(n, iss, oss)(0x10 + _HDAC_ISDOFFSET(n, iss, oss))
806#define _HDAC_ISDFMT(n, iss, oss)(0x12 + _HDAC_ISDOFFSET(n, iss, oss))
807#define _HDAC_ISDBDPL(n, iss, oss)(0x18 + _HDAC_ISDOFFSET(n, iss, oss))
808#define _HDAC_ISDBDPU(n, iss, oss)(0x1c + _HDAC_ISDOFFSET(n, iss, oss))
809
810#define _HDAC_OSDOFFSET(n, iss, oss)(0x80 + ((iss) * 0x20) + ((n) * 0x20))
811#define _HDAC_OSDCTL(n, iss, oss)(0x00 + _HDAC_OSDOFFSET(n, iss, oss))
812#define _HDAC_OSDSTS(n, iss, oss)(0x03 + _HDAC_OSDOFFSET(n, iss, oss))
813#define _HDAC_OSDPICB(n, iss, oss)(0x04 + _HDAC_OSDOFFSET(n, iss, oss))
814#define _HDAC_OSDCBL(n, iss, oss)(0x08 + _HDAC_OSDOFFSET(n, iss, oss))
815#define _HDAC_OSDLVI(n, iss, oss)(0x0c + _HDAC_OSDOFFSET(n, iss, oss))
816#define _HDAC_OSDFIFOD(n, iss, oss)(0x10 + _HDAC_OSDOFFSET(n, iss, oss))
817#define _HDAC_OSDFMT(n, iss, oss)(0x12 + _HDAC_OSDOFFSET(n, iss, oss))
818#define _HDAC_OSDBDPL(n, iss, oss)(0x18 + _HDAC_OSDOFFSET(n, iss, oss))
819#define _HDAC_OSDBDPU(n, iss, oss)(0x1c + _HDAC_OSDOFFSET(n, iss, oss))
820
821#define _HDAC_BSDOFFSET(n, iss, oss)(0x80 + ((iss) * 0x20) + ((oss) * 0x20) + ((n) * 0x20))
822#define _HDAC_BSDCTL(n, iss, oss)(0x00 + _HDAC_BSDOFFSET(n, iss, oss))
823#define _HDAC_BSDSTS(n, iss, oss)(0x03 + _HDAC_BSDOFFSET(n, iss, oss))
824#define _HDAC_BSDPICB(n, iss, oss)(0x04 + _HDAC_BSDOFFSET(n, iss, oss))
825#define _HDAC_BSDCBL(n, iss, oss)(0x08 + _HDAC_BSDOFFSET(n, iss, oss))
826#define _HDAC_BSDLVI(n, iss, oss)(0x0c + _HDAC_BSDOFFSET(n, iss, oss))
827#define _HDAC_BSDFIFOD(n, iss, oss)(0x10 + _HDAC_BSDOFFSET(n, iss, oss))
828#define _HDAC_BSDFMT(n, iss, oss)(0x12 + _HDAC_BSDOFFSET(n, iss, oss))
829#define _HDAC_BSDBDPL(n, iss, oss)(0x18 + _HDAC_BSDOFFSET(n, iss, oss))
830#define _HDAC_BSDBDBU(n, iss, oss)(0x1c + _HDAC_BSDOFFSET(n, iss, oss))
831
832/****************************************************************************
833 * HDA Controller Register Fields
834 ****************************************************************************/
835
836/* GCAP - Global Capabilities */
837#define HDAC_GCAP_64OK0x0001
838#define HDAC_GCAP_NSDO_MASK0x0006
839#define HDAC_GCAP_NSDO_SHIFT1
840#define HDAC_GCAP_BSS_MASK0x00f8
841#define HDAC_GCAP_BSS_SHIFT3
842#define HDAC_GCAP_ISS_MASK0x0f00
843#define HDAC_GCAP_ISS_SHIFT8
844#define HDAC_GCAP_OSS_MASK0xf000
845#define HDAC_GCAP_OSS_SHIFT12
846
847#define HDAC_GCAP_NSDO_1SDO0x00
848#define HDAC_GCAP_NSDO_2SDO0x02
849#define HDAC_GCAP_NSDO_4SDO0x04
850
851#define HDAC_GCAP_BSS(gcap)\
852(((gcap) & HDAC_GCAP_BSS_MASK) >> HDAC_GCAP_BSS_SHIFT)
853#define HDAC_GCAP_ISS(gcap)\
854(((gcap) & HDAC_GCAP_ISS_MASK) >> HDAC_GCAP_ISS_SHIFT)
855#define HDAC_GCAP_OSS(gcap)\
856(((gcap) & HDAC_GCAP_OSS_MASK) >> HDAC_GCAP_OSS_SHIFT)
857#define HDAC_GCAP_NSDO(gcap)\
858(((gcap) & HDAC_GCAP_NSDO_MASK) >> HDAC_GCAP_NSDO_SHIFT)
859
860/* GCTL - Global Control */
861#define HDAC_GCTL_CRST0x00000001
862#define HDAC_GCTL_FCNTRL0x00000002
863#define HDAC_GCTL_UNSOL0x00000100
864
865/* WAKEEN - Wake Enable */
866#define HDAC_WAKEEN_SDIWEN_MASK0x7fff
867#define HDAC_WAKEEN_SDIWEN_SHIFT0
868
869/* STATESTS - State Change Status */
870#define HDAC_STATESTS_SDIWAKE_MASK0x7fff
871#define HDAC_STATESTS_SDIWAKE_SHIFT0
872
873#define HDAC_STATESTS_SDIWAKE(statests, n)\
874(((((statests) & HDAC_STATESTS_SDIWAKE_MASK) >>\
875HDAC_STATESTS_SDIWAKE_SHIFT) >> (n)) & 0x0001)
876
877/* GSTS - Global Status */
878#define HDAC_GSTS_FSTS0x0002
879
880/* INTCTL - Interrut Control */
881#define HDAC_INTCTL_SIE_MASK0x3fffffff
882#define HDAC_INTCTL_SIE_SHIFT0
883#define HDAC_INTCTL_CIE0x40000000
884#define HDAC_INTCTL_GIE0x80000000
885
886/* INTSTS - Interrupt Status */
887#define HDAC_INTSTS_SIS_MASK0x3fffffff
888#define HDAC_INTSTS_SIS_SHIFT0
889#define HDAC_INTSTS_CIS0x40000000
890#define HDAC_INTSTS_GIS0x80000000
891
892/* SSYNC - Stream Synchronization */
893#define HDAC_SSYNC_SSYNC_MASK0x3fffffff
894#define HDAC_SSYNC_SSYNC_SHIFT0
895
896/* CORBWP - CORB Write Pointer */
897#define HDAC_CORBWP_CORBWP_MASK0x00ff
898#define HDAC_CORBWP_CORBWP_SHIFT0
899
900/* CORBRP - CORB Read Pointer */
901#define HDAC_CORBRP_CORBRP_MASK0x00ff
902#define HDAC_CORBRP_CORBRP_SHIFT0
903#define HDAC_CORBRP_CORBRPRST0x8000
904
905/* CORBCTL - CORB Control */
906#define HDAC_CORBCTL_CMEIE0x01
907#define HDAC_CORBCTL_CORBRUN0x02
908
909/* CORBSTS - CORB Status */
910#define HDAC_CORBSTS_CMEI0x01
911
912/* CORBSIZE - CORB Size */
913#define HDAC_CORBSIZE_CORBSIZE_MASK0x03
914#define HDAC_CORBSIZE_CORBSIZE_SHIFT0
915#define HDAC_CORBSIZE_CORBSZCAP_MASK0xf0
916#define HDAC_CORBSIZE_CORBSZCAP_SHIFT4
917
918#define HDAC_CORBSIZE_CORBSIZE_20x00
919#define HDAC_CORBSIZE_CORBSIZE_160x01
920#define HDAC_CORBSIZE_CORBSIZE_2560x02
921
922#define HDAC_CORBSIZE_CORBSZCAP_20x10
923#define HDAC_CORBSIZE_CORBSZCAP_160x20
924#define HDAC_CORBSIZE_CORBSZCAP_2560x40
925
926#define HDAC_CORBSIZE_CORBSIZE(corbsize)\
927(((corbsize) & HDAC_CORBSIZE_CORBSIZE_MASK) >> HDAC_CORBSIZE_CORBSIZE_SHIFT)
928
929/* RIRBWP - RIRB Write Pointer */
930#define HDAC_RIRBWP_RIRBWP_MASK0x00ff
931#define HDAC_RIRBWP_RIRBWP_SHIFT0
932#define HDAC_RIRBWP_RIRBWPRST0x8000
933
934/* RINTCTN - Response Interrupt Count */
935#define HDAC_RINTCNT_MASK0x00ff
936#define HDAC_RINTCNT_SHIFT0
937
938/* RIRBCTL - RIRB Control */
939#define HDAC_RIRBCTL_RINTCTL0x01
940#define HDAC_RIRBCTL_RIRBDMAEN0x02
941#define HDAC_RIRBCTL_RIRBOIC0x04
942
943/* RIRBSTS - RIRB Status */
944#define HDAC_RIRBSTS_RINTFL0x01
945#define HDAC_RIRBSTS_RIRBOIS0x04
946
947/* RIRBSIZE - RIRB Size */
948#define HDAC_RIRBSIZE_RIRBSIZE_MASK0x03
949#define HDAC_RIRBSIZE_RIRBSIZE_SHIFT0
950#define HDAC_RIRBSIZE_RIRBSZCAP_MASK0xf0
951#define HDAC_RIRBSIZE_RIRBSZCAP_SHIFT4
952
953#define HDAC_RIRBSIZE_RIRBSIZE_20x00
954#define HDAC_RIRBSIZE_RIRBSIZE_160x01
955#define HDAC_RIRBSIZE_RIRBSIZE_2560x02
956
957#define HDAC_RIRBSIZE_RIRBSZCAP_20x10
958#define HDAC_RIRBSIZE_RIRBSZCAP_160x20
959#define HDAC_RIRBSIZE_RIRBSZCAP_2560x40
960
961#define HDAC_RIRBSIZE_RIRBSIZE(rirbsize)\
962(((rirbsize) & HDAC_RIRBSIZE_RIRBSIZE_MASK) >> HDAC_RIRBSIZE_RIRBSIZE_SHIFT)
963
964/* DPLBASE - DMA Position Lower Base Address */
965#define HDAC_DPLBASE_DPLBASE_MASK0xffffff80
966#define HDAC_DPLBASE_DPLBASE_SHIFT7
967#define HDAC_DPLBASE_DPLBASE_DMAPBE0x00000001
968
969/* SDCTL - Stream Descriptor Control */
970#define HDAC_SDCTL_SRST0x000001
971#define HDAC_SDCTL_RUN0x000002
972#define HDAC_SDCTL_IOCE0x000004
973#define HDAC_SDCTL_FEIE0x000008
974#define HDAC_SDCTL_DEIE0x000010
975#define HDAC_SDCTL2_STRIPE_MASK0x03
976#define HDAC_SDCTL2_STRIPE_SHIFT0
977#define HDAC_SDCTL2_TP0x04
978#define HDAC_SDCTL2_DIR0x08
979#define HDAC_SDCTL2_STRM_MASK0xf0
980#define HDAC_SDCTL2_STRM_SHIFT4
981
982#define HDAC_SDSTS_DESE(1 << 4)
983#define HDAC_SDSTS_FIFOE(1 << 3)
984#define HDAC_SDSTS_BCIS(1 << 2)
985
986/****************************************************************************
987 * Helper Macros
988 ****************************************************************************/
989
990#define HDA_DMA_ALIGNMENT 128
991
992#define HDA_BDL_MIN 2
993#define HDA_BDL_MAX 256
994#define HDA_BDL_DEFAULT HDA_BDL_MIN
995
996#define HDA_BLK_MIN HDA_DMA_ALIGNMENT
997#define HDA_BLK_ALIGN (~(HDA_BLK_MIN - 1))
998
999#define HDA_BUFSZ_MIN (HDA_BDL_MIN * HDA_BLK_MIN)
1000#define HDA_BUFSZ_MAX 262144
1001#define HDA_BUFSZ_DEFAULT 65536
1002
1003#define HDA_GPIO_MAX 8
1004
1005#define HDA_DEV_MATCH(fl, v) ((fl) == (v) || \
1006(fl) == 0xffffffff || \
1007(((fl) & 0xffff0000) == 0xffff0000 && \
1008((fl) & 0x0000ffff) == ((v) & 0x0000ffff)) || \
1009(((fl) & 0x0000ffff) == 0x0000ffff && \
1010((fl) & 0xffff0000) == ((v) & 0xffff0000)))
1011
1012#define HDA_MATCH_ALL 0xffffffff
1013#define HDA_INVALID 0xffffffff
1014
1015#define HDA_BOOTVERBOSE(stmt) do { \
1016 if (bootverbose != 0 || snd_verbose > 3) { \
1017 stmt \
1018 } \
1019} while (0)
1020
1021#define HDA_BOOTHVERBOSE(stmt) do { \
1022 if (snd_verbose > 3) { \
1023 stmt \
1024 } \
1025} while (0)
1026
1027#define hda_command(dev, verb) \
1028HDAC_CODEC_COMMAND(device_get_parent(dev), (dev), (verb))
1029
1030extern void probe_hda_bus(uint32_t pci_addr);
1031
1032#endif /* !__LIBSAIO_HDA_H */
1033

Archive Download this file

Revision: 2780