xref: /freebsd/sys/dev/sound/pci/hda/hda_reg.h (revision 535af610)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
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 _HDA_REG_H_
32 #define _HDA_REG_H_
33 
34 /****************************************************************************
35  * HDA Device Verbs
36  ****************************************************************************/
37 
38 /* HDA Command */
39 #define HDA_CMD_VERB_MASK				0x000fffff
40 #define HDA_CMD_VERB_SHIFT				0
41 #define HDA_CMD_NID_MASK				0x0ff00000
42 #define HDA_CMD_NID_SHIFT				20
43 #define HDA_CMD_CAD_MASK				0xf0000000
44 #define HDA_CMD_CAD_SHIFT				28
45 
46 #define HDA_CMD_VERB_4BIT_SHIFT				16
47 #define HDA_CMD_VERB_12BIT_SHIFT			8
48 
49 #define HDA_CMD_VERB_4BIT(verb, payload)				\
50     (((verb) << HDA_CMD_VERB_4BIT_SHIFT) | (payload))
51 #define HDA_CMD_4BIT(cad, nid, verb, payload)				\
52     (((cad) << HDA_CMD_CAD_SHIFT) |					\
53     ((nid) << HDA_CMD_NID_SHIFT) |					\
54     (HDA_CMD_VERB_4BIT((verb), (payload))))
55 
56 #define HDA_CMD_VERB_12BIT(verb, payload)				\
57     (((verb) << HDA_CMD_VERB_12BIT_SHIFT) | (payload))
58 #define HDA_CMD_12BIT(cad, nid, verb, payload)				\
59     (((cad) << HDA_CMD_CAD_SHIFT) |					\
60     ((nid) << HDA_CMD_NID_SHIFT) |					\
61     (HDA_CMD_VERB_12BIT((verb), (payload))))
62 
63 /* Get Parameter */
64 #define HDA_CMD_VERB_GET_PARAMETER			0xf00
65 
66 #define HDA_CMD_GET_PARAMETER(cad, nid, payload)			\
67     (HDA_CMD_12BIT((cad), (nid),					\
68     HDA_CMD_VERB_GET_PARAMETER, (payload)))
69 
70 /* Connection Select Control */
71 #define HDA_CMD_VERB_GET_CONN_SELECT_CONTROL		0xf01
72 #define HDA_CMD_VERB_SET_CONN_SELECT_CONTROL		0x701
73 
74 #define HDA_CMD_GET_CONN_SELECT_CONTROL(cad, nid)			\
75     (HDA_CMD_12BIT((cad), (nid),					\
76     HDA_CMD_VERB_GET_CONN_SELECT_CONTROL, 0x0))
77 #define HDA_CMD_SET_CONNECTION_SELECT_CONTROL(cad, nid, payload)	\
78     (HDA_CMD_12BIT((cad), (nid),					\
79     HDA_CMD_VERB_SET_CONN_SELECT_CONTROL, (payload)))
80 
81 /* Connection List Entry */
82 #define HDA_CMD_VERB_GET_CONN_LIST_ENTRY		0xf02
83 
84 #define HDA_CMD_GET_CONN_LIST_ENTRY(cad, nid, payload)			\
85     (HDA_CMD_12BIT((cad), (nid),					\
86     HDA_CMD_VERB_GET_CONN_LIST_ENTRY, (payload)))
87 
88 #define HDA_CMD_GET_CONN_LIST_ENTRY_SIZE_SHORT		1
89 #define HDA_CMD_GET_CONN_LIST_ENTRY_SIZE_LONG		2
90 
91 /* Processing State */
92 #define HDA_CMD_VERB_GET_PROCESSING_STATE		0xf03
93 #define HDA_CMD_VERB_SET_PROCESSING_STATE		0x703
94 
95 #define HDA_CMD_GET_PROCESSING_STATE(cad, nid)				\
96     (HDA_CMD_12BIT((cad), (nid),					\
97     HDA_CMD_VERB_GET_PROCESSING_STATE, 0x0))
98 #define HDA_CMD_SET_PROCESSING_STATE(cad, nid, payload)			\
99     (HDA_CMD_12BIT((cad), (nid),					\
100     HDA_CMD_VERB_SET_PROCESSING_STATE, (payload)))
101 
102 #define HDA_CMD_GET_PROCESSING_STATE_STATE_OFF		0x00
103 #define HDA_CMD_GET_PROCESSING_STATE_STATE_ON		0x01
104 #define HDA_CMD_GET_PROCESSING_STATE_STATE_BENIGN	0x02
105 
106 /* Coefficient Index */
107 #define HDA_CMD_VERB_GET_COEFF_INDEX			0xd
108 #define HDA_CMD_VERB_SET_COEFF_INDEX			0x5
109 
110 #define HDA_CMD_GET_COEFF_INDEX(cad, nid)				\
111     (HDA_CMD_4BIT((cad), (nid),						\
112     HDA_CMD_VERB_GET_COEFF_INDEX, 0x0))
113 #define HDA_CMD_SET_COEFF_INDEX(cad, nid, payload)			\
114     (HDA_CMD_4BIT((cad), (nid),						\
115     HDA_CMD_VERB_SET_COEFF_INDEX, (payload)))
116 
117 /* Processing Coefficient */
118 #define HDA_CMD_VERB_GET_PROCESSING_COEFF		0xc
119 #define HDA_CMD_VERB_SET_PROCESSING_COEFF		0x4
120 
121 #define HDA_CMD_GET_PROCESSING_COEFF(cad, nid)				\
122     (HDA_CMD_4BIT((cad), (nid),						\
123     HDA_CMD_VERB_GET_PROCESSING_COEFF, 0x0))
124 #define HDA_CMD_SET_PROCESSING_COEFF(cad, nid, payload)			\
125     (HDA_CMD_4BIT((cad), (nid),						\
126     HDA_CMD_VERB_SET_PROCESSING_COEFF, (payload)))
127 
128 /* Amplifier Gain/Mute */
129 #define HDA_CMD_VERB_GET_AMP_GAIN_MUTE			0xb
130 #define HDA_CMD_VERB_SET_AMP_GAIN_MUTE			0x3
131 
132 #define HDA_CMD_GET_AMP_GAIN_MUTE(cad, nid, payload)			\
133     (HDA_CMD_4BIT((cad), (nid),						\
134     HDA_CMD_VERB_GET_AMP_GAIN_MUTE, (payload)))
135 #define HDA_CMD_SET_AMP_GAIN_MUTE(cad, nid, payload)			\
136     (HDA_CMD_4BIT((cad), (nid),						\
137     HDA_CMD_VERB_SET_AMP_GAIN_MUTE, (payload)))
138 
139 #define HDA_CMD_GET_AMP_GAIN_MUTE_INPUT		0x0000
140 #define HDA_CMD_GET_AMP_GAIN_MUTE_OUTPUT	0x8000
141 #define HDA_CMD_GET_AMP_GAIN_MUTE_RIGHT		0x0000
142 #define HDA_CMD_GET_AMP_GAIN_MUTE_LEFT		0x2000
143 
144 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_MASK	0x00000008
145 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_SHIFT	7
146 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_MASK	0x00000007
147 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_SHIFT	0
148 
149 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE(rsp)				\
150     (((rsp) & HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_MASK) >>			\
151     HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_SHIFT)
152 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN(rsp)				\
153     (((rsp) & HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_MASK) >>			\
154     HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_SHIFT)
155 
156 #define HDA_CMD_SET_AMP_GAIN_MUTE_OUTPUT	0x8000
157 #define HDA_CMD_SET_AMP_GAIN_MUTE_INPUT		0x4000
158 #define HDA_CMD_SET_AMP_GAIN_MUTE_LEFT		0x2000
159 #define HDA_CMD_SET_AMP_GAIN_MUTE_RIGHT		0x1000
160 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_MASK	0x0f00
161 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_SHIFT	8
162 #define HDA_CMD_SET_AMP_GAIN_MUTE_MUTE		0x0080
163 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_MASK	0x0007
164 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_SHIFT	0
165 
166 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX(index)				\
167     (((index) << HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_SHIFT) &		\
168     HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_MASK)
169 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN(index)				\
170     (((index) << HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_SHIFT) &		\
171     HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_MASK)
172 
173 /* Converter format */
174 #define HDA_CMD_VERB_GET_CONV_FMT			0xa
175 #define HDA_CMD_VERB_SET_CONV_FMT			0x2
176 
177 #define HDA_CMD_GET_CONV_FMT(cad, nid)					\
178     (HDA_CMD_4BIT((cad), (nid),						\
179     HDA_CMD_VERB_GET_CONV_FMT, 0x0))
180 #define HDA_CMD_SET_CONV_FMT(cad, nid, payload)				\
181     (HDA_CMD_4BIT((cad), (nid),						\
182     HDA_CMD_VERB_SET_CONV_FMT, (payload)))
183 
184 /* Digital Converter Control */
185 #define HDA_CMD_VERB_GET_DIGITAL_CONV_FMT1		0xf0d
186 #define HDA_CMD_VERB_GET_DIGITAL_CONV_FMT2		0xf0e
187 #define HDA_CMD_VERB_SET_DIGITAL_CONV_FMT1		0x70d
188 #define HDA_CMD_VERB_SET_DIGITAL_CONV_FMT2		0x70e
189 
190 #define HDA_CMD_GET_DIGITAL_CONV_FMT(cad, nid)				\
191     (HDA_CMD_12BIT((cad), (nid),					\
192     HDA_CMD_VERB_GET_DIGITAL_CONV_FMT1, 0x0))
193 #define HDA_CMD_SET_DIGITAL_CONV_FMT1(cad, nid, payload)		\
194     (HDA_CMD_12BIT((cad), (nid),					\
195     HDA_CMD_VERB_SET_DIGITAL_CONV_FMT1, (payload)))
196 #define HDA_CMD_SET_DIGITAL_CONV_FMT2(cad, nid, payload)		\
197     (HDA_CMD_12BIT((cad), (nid),					\
198     HDA_CMD_VERB_SET_DIGITAL_CONV_FMT2, (payload)))
199 
200 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC_MASK		0x7f00
201 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC_SHIFT		8
202 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L_MASK		0x0080
203 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L_SHIFT		7
204 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_MASK		0x0040
205 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_SHIFT		6
206 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_MASK	0x0020
207 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_SHIFT	5
208 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_MASK		0x0010
209 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_SHIFT		4
210 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_MASK		0x0008
211 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_SHIFT		3
212 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_MASK		0x0004
213 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_SHIFT		2
214 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V_MASK		0x0002
215 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V_SHIFT		1
216 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_MASK		0x0001
217 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_SHIFT	0
218 
219 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC(rsp)				\
220     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_CC_MASK) >>			\
221     HDA_CMD_GET_DIGITAL_CONV_FMT_CC_SHIFT)
222 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L(rsp)				\
223     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_L_MASK) >>			\
224     HDA_CMD_GET_DIGITAL_CONV_FMT_L_SHIFT)
225 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO(rsp)				\
226     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_MASK) >>			\
227     HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_SHIFT)
228 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO(rsp)			\
229     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_MASK) >>		\
230     HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_SHIFT)
231 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY(rsp)				\
232     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_MASK) >>		\
233     HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_SHIFT)
234 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE(rsp)				\
235     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_MASK) >>			\
236     HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_SHIFT)
237 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG(rsp)				\
238     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_MASK) >>		\
239     HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_SHIFT)
240 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V(rsp)				\
241     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_V_MASK) >>			\
242     HDA_CMD_GET_DIGITAL_CONV_FMT_V_SHIFT)
243 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN(rsp)				\
244     (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_MASK) >>		\
245     HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_SHIFT)
246 
247 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_L			0x80
248 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_PRO		0x40
249 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_NAUDIO		0x20
250 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_COPY		0x10
251 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_PRE		0x08
252 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_VCFG		0x04
253 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_V			0x02
254 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_DIGEN		0x01
255 
256 /* Power State */
257 #define HDA_CMD_VERB_GET_POWER_STATE			0xf05
258 #define HDA_CMD_VERB_SET_POWER_STATE			0x705
259 
260 #define HDA_CMD_GET_POWER_STATE(cad, nid)				\
261     (HDA_CMD_12BIT((cad), (nid),					\
262     HDA_CMD_VERB_GET_POWER_STATE, 0x0))
263 #define HDA_CMD_SET_POWER_STATE(cad, nid, payload)			\
264     (HDA_CMD_12BIT((cad), (nid),					\
265     HDA_CMD_VERB_SET_POWER_STATE, (payload)))
266 
267 #define HDA_CMD_POWER_STATE_D0				0x00
268 #define HDA_CMD_POWER_STATE_D1				0x01
269 #define HDA_CMD_POWER_STATE_D2				0x02
270 #define HDA_CMD_POWER_STATE_D3				0x03
271 
272 #define HDA_CMD_POWER_STATE_ACT_MASK			0x000000f0
273 #define HDA_CMD_POWER_STATE_ACT_SHIFT			4
274 #define HDA_CMD_POWER_STATE_SET_MASK			0x0000000f
275 #define HDA_CMD_POWER_STATE_SET_SHIFT			0
276 
277 #define HDA_CMD_GET_POWER_STATE_ACT(rsp)				\
278     (((rsp) & HDA_CMD_POWER_STATE_ACT_MASK) >>				\
279     HDA_CMD_POWER_STATE_ACT_SHIFT)
280 #define HDA_CMD_GET_POWER_STATE_SET(rsp)				\
281     (((rsp) & HDA_CMD_POWER_STATE_SET_MASK) >>				\
282     HDA_CMD_POWER_STATE_SET_SHIFT)
283 
284 #define HDA_CMD_SET_POWER_STATE_ACT(ps)					\
285     (((ps) << HDA_CMD_POWER_STATE_ACT_SHIFT) &				\
286     HDA_CMD_POWER_STATE_ACT_MASK)
287 #define HDA_CMD_SET_POWER_STATE_SET(ps)					\
288     (((ps) << HDA_CMD_POWER_STATE_SET_SHIFT) &				\
289     HDA_CMD_POWER_STATE_ACT_MASK)
290 
291 /* Converter Stream, Channel */
292 #define HDA_CMD_VERB_GET_CONV_STREAM_CHAN		0xf06
293 #define HDA_CMD_VERB_SET_CONV_STREAM_CHAN		0x706
294 
295 #define HDA_CMD_GET_CONV_STREAM_CHAN(cad, nid)				\
296     (HDA_CMD_12BIT((cad), (nid),					\
297     HDA_CMD_VERB_GET_CONV_STREAM_CHAN, 0x0))
298 #define HDA_CMD_SET_CONV_STREAM_CHAN(cad, nid, payload)			\
299     (HDA_CMD_12BIT((cad), (nid),					\
300     HDA_CMD_VERB_SET_CONV_STREAM_CHAN, (payload)))
301 
302 #define HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK		0x000000f0
303 #define HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT		4
304 #define HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK		0x0000000f
305 #define HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT		0
306 
307 #define HDA_CMD_GET_CONV_STREAM_CHAN_STREAM(rsp)			\
308     (((rsp) & HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK) >>			\
309     HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT)
310 #define HDA_CMD_GET_CONV_STREAM_CHAN_CHAN(rsp)				\
311     (((rsp) & HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK) >>			\
312     HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT)
313 
314 #define HDA_CMD_SET_CONV_STREAM_CHAN_STREAM(param)			\
315     (((param) << HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT) &		\
316     HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK)
317 #define HDA_CMD_SET_CONV_STREAM_CHAN_CHAN(param)			\
318     (((param) << HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT) &			\
319     HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK)
320 
321 /* Input Converter SDI Select */
322 #define HDA_CMD_VERB_GET_INPUT_CONVERTER_SDI_SELECT	0xf04
323 #define HDA_CMD_VERB_SET_INPUT_CONVERTER_SDI_SELECT	0x704
324 
325 #define HDA_CMD_GET_INPUT_CONVERTER_SDI_SELECT(cad, nid)		\
326     (HDA_CMD_12BIT((cad), (nid),					\
327     HDA_CMD_VERB_GET_INPUT_CONVERTER_SDI_SELECT, 0x0))
328 #define HDA_CMD_SET_INPUT_CONVERTER_SDI_SELECT(cad, nid, payload)	\
329     (HDA_CMD_12BIT((cad), (nid),					\
330     HDA_CMD_VERB_SET_INPUT_CONVERTER_SDI_SELECT, (payload)))
331 
332 /* Pin Widget Control */
333 #define HDA_CMD_VERB_GET_PIN_WIDGET_CTRL		0xf07
334 #define HDA_CMD_VERB_SET_PIN_WIDGET_CTRL		0x707
335 
336 #define HDA_CMD_GET_PIN_WIDGET_CTRL(cad, nid)				\
337     (HDA_CMD_12BIT((cad), (nid),					\
338     HDA_CMD_VERB_GET_PIN_WIDGET_CTRL, 0x0))
339 #define HDA_CMD_SET_PIN_WIDGET_CTRL(cad, nid, payload)			\
340     (HDA_CMD_12BIT((cad), (nid),					\
341     HDA_CMD_VERB_SET_PIN_WIDGET_CTRL, (payload)))
342 
343 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_MASK	0x00000080
344 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_SHIFT	7
345 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_MASK	0x00000040
346 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_SHIFT	6
347 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_MASK	0x00000020
348 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_SHIFT	5
349 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK	0x00000007
350 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT	0
351 
352 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE(rsp)			\
353     (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_MASK) >>		\
354     HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_SHIFT)
355 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE(rsp)			\
356     (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_MASK) >>		\
357     HDA_GET_CMD_PIN_WIDGET_CTRL_OUT_ENABLE_SHIFT)
358 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE(rsp)			\
359     (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_MASK) >>		\
360     HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_SHIFT)
361 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE(rsp)			\
362     (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK) >>		\
363     HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT)
364 
365 #define HDA_CMD_SET_PIN_WIDGET_CTRL_HPHN_ENABLE		0x80
366 #define HDA_CMD_SET_PIN_WIDGET_CTRL_OUT_ENABLE		0x40
367 #define HDA_CMD_SET_PIN_WIDGET_CTRL_IN_ENABLE		0x20
368 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK	0x07
369 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT	0
370 
371 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE(param)			\
372     (((param) << HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT) &	\
373     HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK)
374 
375 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_HIZ		0
376 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_50		1
377 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_GROUND	2
378 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_80		4
379 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_100		5
380 
381 /* Unsolicited Response */
382 #define HDA_CMD_VERB_GET_UNSOLICITED_RESPONSE		0xf08
383 #define HDA_CMD_VERB_SET_UNSOLICITED_RESPONSE		0x708
384 
385 #define HDA_CMD_GET_UNSOLICITED_RESPONSE(cad, nid)			\
386     (HDA_CMD_12BIT((cad), (nid),					\
387     HDA_CMD_VERB_GET_UNSOLICITED_RESPONSE, 0x0))
388 #define HDA_CMD_SET_UNSOLICITED_RESPONSE(cad, nid, payload)		\
389     (HDA_CMD_12BIT((cad), (nid),					\
390     HDA_CMD_VERB_SET_UNSOLICITED_RESPONSE, (payload)))
391 
392 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_MASK	0x00000080
393 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_SHIFT	7
394 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_MASK	0x0000001f
395 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_SHIFT	0
396 
397 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE(rsp)			\
398     (((rsp) & HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_MASK) >>		\
399     HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_SHIFT)
400 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG(rsp)			\
401     (((rsp) & HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_MASK) >>		\
402     HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_SHIFT)
403 
404 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_ENABLE		0x80
405 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_MASK	0x3f
406 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_SHIFT	0
407 
408 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG(param)			\
409     (((param) << HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_SHIFT) &		\
410     HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_MASK)
411 
412 /* Pin Sense */
413 #define HDA_CMD_VERB_GET_PIN_SENSE			0xf09
414 #define HDA_CMD_VERB_SET_PIN_SENSE			0x709
415 
416 #define HDA_CMD_GET_PIN_SENSE(cad, nid)					\
417     (HDA_CMD_12BIT((cad), (nid),					\
418     HDA_CMD_VERB_GET_PIN_SENSE, 0x0))
419 #define HDA_CMD_SET_PIN_SENSE(cad, nid, payload)			\
420     (HDA_CMD_12BIT((cad), (nid),					\
421     HDA_CMD_VERB_SET_PIN_SENSE, (payload)))
422 
423 #define HDA_CMD_GET_PIN_SENSE_PRESENCE_DETECT		0x80000000
424 #define HDA_CMD_GET_PIN_SENSE_ELD_VALID			0x40000000
425 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_MASK		0x7fffffff
426 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_SHIFT		0
427 
428 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE(rsp)				\
429     (((rsp) & HDA_CMD_GET_PIN_SENSE_IMP_SENSE_MASK) >>			\
430     HDA_CMD_GET_PIN_SENSE_IMP_SENSE_SHIFT)
431 
432 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_INVALID		0x7fffffff
433 
434 #define HDA_CMD_SET_PIN_SENSE_LEFT_CHANNEL		0x00
435 #define HDA_CMD_SET_PIN_SENSE_RIGHT_CHANNEL		0x01
436 
437 /* EAPD/BTL Enable */
438 #define HDA_CMD_VERB_GET_EAPD_BTL_ENABLE		0xf0c
439 #define HDA_CMD_VERB_SET_EAPD_BTL_ENABLE		0x70c
440 
441 #define HDA_CMD_GET_EAPD_BTL_ENABLE(cad, nid)				\
442     (HDA_CMD_12BIT((cad), (nid),					\
443     HDA_CMD_VERB_GET_EAPD_BTL_ENABLE, 0x0))
444 #define HDA_CMD_SET_EAPD_BTL_ENABLE(cad, nid, payload)			\
445     (HDA_CMD_12BIT((cad), (nid),					\
446     HDA_CMD_VERB_SET_EAPD_BTL_ENABLE, (payload)))
447 
448 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_MASK	0x00000004
449 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_SHIFT	2
450 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_MASK		0x00000002
451 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_SHIFT		1
452 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_MASK		0x00000001
453 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_SHIFT		0
454 
455 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP(rsp)			\
456     (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_MASK) >>		\
457     HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_SHIFT)
458 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD(rsp)				\
459     (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_MASK) >>			\
460     HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_SHIFT)
461 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL(rsp)				\
462     (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_MASK) >>			\
463     HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_SHIFT)
464 
465 #define HDA_CMD_SET_EAPD_BTL_ENABLE_LR_SWAP		0x04
466 #define HDA_CMD_SET_EAPD_BTL_ENABLE_EAPD		0x02
467 #define HDA_CMD_SET_EAPD_BTL_ENABLE_BTL			0x01
468 
469 /* GPI Data */
470 #define HDA_CMD_VERB_GET_GPI_DATA			0xf10
471 #define HDA_CMD_VERB_SET_GPI_DATA			0x710
472 
473 #define HDA_CMD_GET_GPI_DATA(cad, nid)					\
474     (HDA_CMD_12BIT((cad), (nid),					\
475     HDA_CMD_VERB_GET_GPI_DATA, 0x0))
476 #define HDA_CMD_SET_GPI_DATA(cad, nid)					\
477     (HDA_CMD_12BIT((cad), (nid),					\
478     HDA_CMD_VERB_SET_GPI_DATA, (payload)))
479 
480 /* GPI Wake Enable Mask */
481 #define HDA_CMD_VERB_GET_GPI_WAKE_ENABLE_MASK		0xf11
482 #define HDA_CMD_VERB_SET_GPI_WAKE_ENABLE_MASK		0x711
483 
484 #define HDA_CMD_GET_GPI_WAKE_ENABLE_MASK(cad, nid)			\
485     (HDA_CMD_12BIT((cad), (nid),					\
486     HDA_CMD_VERB_GET_GPI_WAKE_ENABLE_MASK, 0x0))
487 #define HDA_CMD_SET_GPI_WAKE_ENABLE_MASK(cad, nid, payload)		\
488     (HDA_CMD_12BIT((cad), (nid),					\
489     HDA_CMD_VERB_SET_GPI_WAKE_ENABLE_MASK, (payload)))
490 
491 /* GPI Unsolicited Enable Mask */
492 #define HDA_CMD_VERB_GET_GPI_UNSOLICITED_ENABLE_MASK	0xf12
493 #define HDA_CMD_VERB_SET_GPI_UNSOLICITED_ENABLE_MASK	0x712
494 
495 #define HDA_CMD_GET_GPI_UNSOLICITED_ENABLE_MASK(cad, nid)		\
496     (HDA_CMD_12BIT((cad), (nid),					\
497     HDA_CMD_VERB_GET_GPI_UNSOLICITED_ENABLE_MASK, 0x0))
498 #define HDA_CMD_SET_GPI_UNSOLICITED_ENABLE_MASK(cad, nid, payload)	\
499     (HDA_CMD_12BIT((cad), (nid),					\
500     HDA_CMD_VERB_SET_GPI_UNSOLICITED_ENABLE_MASK, (payload)))
501 
502 /* GPI Sticky Mask */
503 #define HDA_CMD_VERB_GET_GPI_STICKY_MASK		0xf13
504 #define HDA_CMD_VERB_SET_GPI_STICKY_MASK		0x713
505 
506 #define HDA_CMD_GET_GPI_STICKY_MASK(cad, nid)				\
507     (HDA_CMD_12BIT((cad), (nid),					\
508     HDA_CMD_VERB_GET_GPI_STICKY_MASK, 0x0))
509 #define HDA_CMD_SET_GPI_STICKY_MASK(cad, nid, payload)			\
510     (HDA_CMD_12BIT((cad), (nid),					\
511     HDA_CMD_VERB_SET_GPI_STICKY_MASK, (payload)))
512 
513 /* GPO Data */
514 #define HDA_CMD_VERB_GET_GPO_DATA			0xf14
515 #define HDA_CMD_VERB_SET_GPO_DATA			0x714
516 
517 #define HDA_CMD_GET_GPO_DATA(cad, nid)					\
518     (HDA_CMD_12BIT((cad), (nid),					\
519     HDA_CMD_VERB_GET_GPO_DATA, 0x0))
520 #define HDA_CMD_SET_GPO_DATA(cad, nid, payload)				\
521     (HDA_CMD_12BIT((cad), (nid),					\
522     HDA_CMD_VERB_SET_GPO_DATA, (payload)))
523 
524 /* GPIO Data */
525 #define HDA_CMD_VERB_GET_GPIO_DATA			0xf15
526 #define HDA_CMD_VERB_SET_GPIO_DATA			0x715
527 
528 #define HDA_CMD_GET_GPIO_DATA(cad, nid)					\
529     (HDA_CMD_12BIT((cad), (nid),					\
530     HDA_CMD_VERB_GET_GPIO_DATA, 0x0))
531 #define HDA_CMD_SET_GPIO_DATA(cad, nid, payload)			\
532     (HDA_CMD_12BIT((cad), (nid),					\
533     HDA_CMD_VERB_SET_GPIO_DATA, (payload)))
534 
535 /* GPIO Enable Mask */
536 #define HDA_CMD_VERB_GET_GPIO_ENABLE_MASK		0xf16
537 #define HDA_CMD_VERB_SET_GPIO_ENABLE_MASK		0x716
538 
539 #define HDA_CMD_GET_GPIO_ENABLE_MASK(cad, nid)				\
540     (HDA_CMD_12BIT((cad), (nid),					\
541     HDA_CMD_VERB_GET_GPIO_ENABLE_MASK, 0x0))
542 #define HDA_CMD_SET_GPIO_ENABLE_MASK(cad, nid, payload)			\
543     (HDA_CMD_12BIT((cad), (nid),					\
544     HDA_CMD_VERB_SET_GPIO_ENABLE_MASK, (payload)))
545 
546 /* GPIO Direction */
547 #define HDA_CMD_VERB_GET_GPIO_DIRECTION			0xf17
548 #define HDA_CMD_VERB_SET_GPIO_DIRECTION			0x717
549 
550 #define HDA_CMD_GET_GPIO_DIRECTION(cad, nid)				\
551     (HDA_CMD_12BIT((cad), (nid),					\
552     HDA_CMD_VERB_GET_GPIO_DIRECTION, 0x0))
553 #define HDA_CMD_SET_GPIO_DIRECTION(cad, nid, payload)			\
554     (HDA_CMD_12BIT((cad), (nid),					\
555     HDA_CMD_VERB_SET_GPIO_DIRECTION, (payload)))
556 
557 /* GPIO Wake Enable Mask */
558 #define HDA_CMD_VERB_GET_GPIO_WAKE_ENABLE_MASK		0xf18
559 #define HDA_CMD_VERB_SET_GPIO_WAKE_ENABLE_MASK		0x718
560 
561 #define HDA_CMD_GET_GPIO_WAKE_ENABLE_MASK(cad, nid)			\
562     (HDA_CMD_12BIT((cad), (nid),					\
563     HDA_CMD_VERB_GET_GPIO_WAKE_ENABLE_MASK, 0x0))
564 #define HDA_CMD_SET_GPIO_WAKE_ENABLE_MASK(cad, nid, payload)		\
565     (HDA_CMD_12BIT((cad), (nid),					\
566     HDA_CMD_VERB_SET_GPIO_WAKE_ENABLE_MASK, (payload)))
567 
568 /* GPIO Unsolicited Enable Mask */
569 #define HDA_CMD_VERB_GET_GPIO_UNSOLICITED_ENABLE_MASK	0xf19
570 #define HDA_CMD_VERB_SET_GPIO_UNSOLICITED_ENABLE_MASK	0x719
571 
572 #define HDA_CMD_GET_GPIO_UNSOLICITED_ENABLE_MASK(cad, nid)		\
573     (HDA_CMD_12BIT((cad), (nid),					\
574     HDA_CMD_VERB_GET_GPIO_UNSOLICITED_ENABLE_MASK, 0x0))
575 #define HDA_CMD_SET_GPIO_UNSOLICITED_ENABLE_MASK(cad, nid, payload)	\
576     (HDA_CMD_12BIT((cad), (nid),					\
577     HDA_CMD_VERB_SET_GPIO_UNSOLICITED_ENABLE_MASK, (payload)))
578 
579 /* GPIO_STICKY_MASK */
580 #define HDA_CMD_VERB_GET_GPIO_STICKY_MASK		0xf1a
581 #define HDA_CMD_VERB_SET_GPIO_STICKY_MASK		0x71a
582 
583 #define HDA_CMD_GET_GPIO_STICKY_MASK(cad, nid)				\
584     (HDA_CMD_12BIT((cad), (nid),					\
585     HDA_CMD_VERB_GET_GPIO_STICKY_MASK, 0x0))
586 #define HDA_CMD_SET_GPIO_STICKY_MASK(cad, nid, payload)			\
587     (HDA_CMD_12BIT((cad), (nid),					\
588     HDA_CMD_VERB_SET_GPIO_STICKY_MASK, (payload)))
589 
590 /* Beep Generation */
591 #define HDA_CMD_VERB_GET_BEEP_GENERATION		0xf0a
592 #define HDA_CMD_VERB_SET_BEEP_GENERATION		0x70a
593 
594 #define HDA_CMD_GET_BEEP_GENERATION(cad, nid)				\
595     (HDA_CMD_12BIT((cad), (nid),					\
596     HDA_CMD_VERB_GET_BEEP_GENERATION, 0x0))
597 #define HDA_CMD_SET_BEEP_GENERATION(cad, nid, payload)			\
598     (HDA_CMD_12BIT((cad), (nid),					\
599     HDA_CMD_VERB_SET_BEEP_GENERATION, (payload)))
600 
601 /* Volume Knob */
602 #define HDA_CMD_VERB_GET_VOLUME_KNOB			0xf0f
603 #define HDA_CMD_VERB_SET_VOLUME_KNOB			0x70f
604 
605 #define HDA_CMD_GET_VOLUME_KNOB(cad, nid)				\
606     (HDA_CMD_12BIT((cad), (nid),					\
607     HDA_CMD_VERB_GET_VOLUME_KNOB, 0x0))
608 #define HDA_CMD_SET_VOLUME_KNOB(cad, nid, payload)			\
609     (HDA_CMD_12BIT((cad), (nid),					\
610     HDA_CMD_VERB_SET_VOLUME_KNOB, (payload)))
611 
612 /* Subsystem ID */
613 #define HDA_CMD_VERB_GET_SUBSYSTEM_ID			0xf20
614 #define HDA_CMD_VERB_SET_SUSBYSTEM_ID1			0x720
615 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID2			0x721
616 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID3			0x722
617 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID4			0x723
618 
619 #define HDA_CMD_GET_SUBSYSTEM_ID(cad, nid)				\
620     (HDA_CMD_12BIT((cad), (nid),					\
621     HDA_CMD_VERB_GET_SUBSYSTEM_ID, 0x0))
622 #define HDA_CMD_SET_SUBSYSTEM_ID1(cad, nid, payload)			\
623     (HDA_CMD_12BIT((cad), (nid),					\
624     HDA_CMD_VERB_SET_SUSBYSTEM_ID1, (payload)))
625 #define HDA_CMD_SET_SUBSYSTEM_ID2(cad, nid, payload)			\
626     (HDA_CMD_12BIT((cad), (nid),					\
627     HDA_CMD_VERB_SET_SUSBYSTEM_ID2, (payload)))
628 #define HDA_CMD_SET_SUBSYSTEM_ID3(cad, nid, payload)			\
629     (HDA_CMD_12BIT((cad), (nid),					\
630     HDA_CMD_VERB_SET_SUSBYSTEM_ID3, (payload)))
631 #define HDA_CMD_SET_SUBSYSTEM_ID4(cad, nid, payload)			\
632     (HDA_CMD_12BIT((cad), (nid),					\
633     HDA_CMD_VERB_SET_SUSBYSTEM_ID4, (payload)))
634 
635 /* Configuration Default */
636 #define HDA_CMD_VERB_GET_CONFIGURATION_DEFAULT		0xf1c
637 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT1		0x71c
638 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT2		0x71d
639 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT3		0x71e
640 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT4		0x71f
641 
642 #define HDA_CMD_GET_CONFIGURATION_DEFAULT(cad, nid)			\
643     (HDA_CMD_12BIT((cad), (nid),					\
644     HDA_CMD_VERB_GET_CONFIGURATION_DEFAULT, 0x0))
645 #define HDA_CMD_SET_CONFIGURATION_DEFAULT1(cad, nid, payload)		\
646     (HDA_CMD_12BIT((cad), (nid),					\
647     HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT1, (payload)))
648 #define HDA_CMD_SET_CONFIGURATION_DEFAULT2(cad, nid, payload)		\
649     (HDA_CMD_12BIT((cad), (nid),					\
650     HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT2, (payload)))
651 #define HDA_CMD_SET_CONFIGURATION_DEFAULT3(cad, nid, payload)		\
652     (HDA_CMD_12BIT((cad), (nid),					\
653     HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT3, (payload)))
654 #define HDA_CMD_SET_CONFIGURATION_DEFAULT4(cad, nid, payload)		\
655     (HDA_CMD_12BIT((cad), (nid),					\
656     HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT4, (payload)))
657 
658 /* Stripe Control */
659 #define HDA_CMD_VERB_GET_STRIPE_CONTROL			0xf24
660 #define HDA_CMD_VERB_SET_STRIPE_CONTROL			0x724
661 
662 #define HDA_CMD_GET_STRIPE_CONTROL(cad, nid)				\
663     (HDA_CMD_12BIT((cad), (nid),					\
664     HDA_CMD_VERB_GET_STRIPE_CONTROL, 0x0))
665 #define HDA_CMD_SET_STRIPE_CONTROL(cad, nid, payload)			\
666     (HDA_CMD_12BIT((cad), (nid),					\
667     HDA_CMD_VERB_SET_STRIPE_CONTROL, (payload)))
668 
669 /* Channel Count Control */
670 #define HDA_CMD_VERB_GET_CONV_CHAN_COUNT			0xf2d
671 #define HDA_CMD_VERB_SET_CONV_CHAN_COUNT			0x72d
672 
673 #define HDA_CMD_GET_CONV_CHAN_COUNT(cad, nid)				\
674     (HDA_CMD_12BIT((cad), (nid),					\
675     HDA_CMD_VERB_GET_CONV_CHAN_COUNT, 0x0))
676 #define HDA_CMD_SET_CONV_CHAN_COUNT(cad, nid, payload)			\
677     (HDA_CMD_12BIT((cad), (nid),					\
678     HDA_CMD_VERB_SET_CONV_CHAN_COUNT, (payload)))
679 
680 #define HDA_CMD_VERB_GET_HDMI_DIP_SIZE			0xf2e
681 
682 #define HDA_CMD_GET_HDMI_DIP_SIZE(cad, nid, arg)			\
683     (HDA_CMD_12BIT((cad), (nid),					\
684     HDA_CMD_VERB_GET_HDMI_DIP_SIZE, (arg)))
685 
686 #define HDA_CMD_VERB_GET_HDMI_ELDD			0xf2f
687 
688 #define HDA_CMD_GET_HDMI_ELDD(cad, nid, off)				\
689     (HDA_CMD_12BIT((cad), (nid),					\
690     HDA_CMD_VERB_GET_HDMI_ELDD, (off)))
691 
692 #define HDA_CMD_VERB_GET_HDMI_DIP_INDEX			0xf30
693 #define HDA_CMD_VERB_SET_HDMI_DIP_INDEX			0x730
694 
695 #define HDA_CMD_GET_HDMI_DIP_INDEX(cad, nid)				\
696     (HDA_CMD_12BIT((cad), (nid),					\
697     HDA_CMD_VERB_GET_HDMI_DIP_INDEX, 0x0))
698 #define HDA_CMD_SET_HDMI_DIP_INDEX(cad, nid, payload)			\
699     (HDA_CMD_12BIT((cad), (nid),					\
700     HDA_CMD_VERB_SET_HDMI_DIP_INDEX, (payload)))
701 
702 #define HDA_CMD_VERB_GET_HDMI_DIP_DATA			0xf31
703 #define HDA_CMD_VERB_SET_HDMI_DIP_DATA			0x731
704 
705 #define HDA_CMD_GET_HDMI_DIP_DATA(cad, nid)				\
706     (HDA_CMD_12BIT((cad), (nid),					\
707     HDA_CMD_VERB_GET_HDMI_DIP_DATA, 0x0))
708 #define HDA_CMD_SET_HDMI_DIP_DATA(cad, nid, payload)			\
709     (HDA_CMD_12BIT((cad), (nid),					\
710     HDA_CMD_VERB_SET_HDMI_DIP_DATA, (payload)))
711 
712 #define HDA_CMD_VERB_GET_HDMI_DIP_XMIT			0xf32
713 #define HDA_CMD_VERB_SET_HDMI_DIP_XMIT			0x732
714 
715 #define HDA_CMD_GET_HDMI_DIP_XMIT(cad, nid)				\
716     (HDA_CMD_12BIT((cad), (nid),					\
717     HDA_CMD_VERB_GET_HDMI_DIP_XMIT, 0x0))
718 #define HDA_CMD_SET_HDMI_DIP_XMIT(cad, nid, payload)			\
719     (HDA_CMD_12BIT((cad), (nid),					\
720     HDA_CMD_VERB_SET_HDMI_DIP_XMIT, (payload)))
721 
722 #define HDA_CMD_VERB_GET_HDMI_CP_CTRL			0xf33
723 #define HDA_CMD_VERB_SET_HDMI_CP_CTRL			0x733
724 
725 #define HDA_CMD_VERB_GET_HDMI_CHAN_SLOT			0xf34
726 #define HDA_CMD_VERB_SET_HDMI_CHAN_SLOT			0x734
727 
728 #define HDA_CMD_GET_HDMI_CHAN_SLOT(cad, nid)				\
729     (HDA_CMD_12BIT((cad), (nid),					\
730     HDA_CMD_VERB_GET_HDMI_CHAN_SLOT, 0x0))
731 #define HDA_CMD_SET_HDMI_CHAN_SLOT(cad, nid, payload)			\
732     (HDA_CMD_12BIT((cad), (nid),					\
733     HDA_CMD_VERB_SET_HDMI_CHAN_SLOT, (payload)))
734 
735 #define	HDA_HDMI_CODING_TYPE_REF_STREAM_HEADER		0
736 #define	HDA_HDMI_CODING_TYPE_LPCM			1
737 #define	HDA_HDMI_CODING_TYPE_AC3			2
738 #define	HDA_HDMI_CODING_TYPE_MPEG1			3
739 #define	HDA_HDMI_CODING_TYPE_MP3			4
740 #define	HDA_HDMI_CODING_TYPE_MPEG2			5
741 #define	HDA_HDMI_CODING_TYPE_AACLC			6
742 #define	HDA_HDMI_CODING_TYPE_DTS			7
743 #define	HDA_HDMI_CODING_TYPE_ATRAC			8
744 #define	HDA_HDMI_CODING_TYPE_SACD			9
745 #define	HDA_HDMI_CODING_TYPE_EAC3			10
746 #define	HDA_HDMI_CODING_TYPE_DTS_HD			11
747 #define	HDA_HDMI_CODING_TYPE_MLP			12
748 #define	HDA_HDMI_CODING_TYPE_DST			13
749 #define	HDA_HDMI_CODING_TYPE_WMAPRO			14
750 #define	HDA_HDMI_CODING_TYPE_REF_CTX			15
751 
752 /* Function Reset */
753 #define HDA_CMD_VERB_FUNCTION_RESET			0x7ff
754 
755 #define HDA_CMD_FUNCTION_RESET(cad, nid)				\
756     (HDA_CMD_12BIT((cad), (nid),					\
757     HDA_CMD_VERB_FUNCTION_RESET, 0x0))
758 
759 /****************************************************************************
760  * HDA Device Parameters
761  ****************************************************************************/
762 
763 /* Vendor ID */
764 #define HDA_PARAM_VENDOR_ID				0x00
765 
766 #define HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK		0xffff0000
767 #define HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT		16
768 #define HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK		0x0000ffff
769 #define HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT		0
770 
771 #define HDA_PARAM_VENDOR_ID_VENDOR_ID(param)				\
772     (((param) & HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK) >>			\
773     HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT)
774 #define HDA_PARAM_VENDOR_ID_DEVICE_ID(param)				\
775     (((param) & HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK) >>			\
776     HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT)
777 
778 /* Revision ID */
779 #define HDA_PARAM_REVISION_ID				0x02
780 
781 #define HDA_PARAM_REVISION_ID_MAJREV_MASK		0x00f00000
782 #define HDA_PARAM_REVISION_ID_MAJREV_SHIFT		20
783 #define HDA_PARAM_REVISION_ID_MINREV_MASK		0x000f0000
784 #define HDA_PARAM_REVISION_ID_MINREV_SHIFT		16
785 #define HDA_PARAM_REVISION_ID_REVISION_ID_MASK		0x0000ff00
786 #define HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT		8
787 #define HDA_PARAM_REVISION_ID_STEPPING_ID_MASK		0x000000ff
788 #define HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT		0
789 
790 #define HDA_PARAM_REVISION_ID_MAJREV(param)				\
791     (((param) & HDA_PARAM_REVISION_ID_MAJREV_MASK) >>			\
792     HDA_PARAM_REVISION_ID_MAJREV_SHIFT)
793 #define HDA_PARAM_REVISION_ID_MINREV(param)				\
794     (((param) & HDA_PARAM_REVISION_ID_MINREV_MASK) >>			\
795     HDA_PARAM_REVISION_ID_MINREV_SHIFT)
796 #define HDA_PARAM_REVISION_ID_REVISION_ID(param)			\
797     (((param) & HDA_PARAM_REVISION_ID_REVISION_ID_MASK) >>		\
798     HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT)
799 #define HDA_PARAM_REVISION_ID_STEPPING_ID(param)			\
800     (((param) & HDA_PARAM_REVISION_ID_STEPPING_ID_MASK) >>		\
801     HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT)
802 
803 /* Subordinate Node Cound */
804 #define HDA_PARAM_SUB_NODE_COUNT			0x04
805 
806 #define HDA_PARAM_SUB_NODE_COUNT_START_MASK		0x00ff0000
807 #define HDA_PARAM_SUB_NODE_COUNT_START_SHIFT		16
808 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK		0x000000ff
809 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT		0
810 
811 #define HDA_PARAM_SUB_NODE_COUNT_START(param)				\
812     (((param) & HDA_PARAM_SUB_NODE_COUNT_START_MASK) >>			\
813     HDA_PARAM_SUB_NODE_COUNT_START_SHIFT)
814 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL(param)				\
815     (((param) & HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK) >>			\
816     HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT)
817 
818 /* Function Group Type */
819 #define HDA_PARAM_FCT_GRP_TYPE				0x05
820 
821 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK		0x00000100
822 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL_SHIFT		8
823 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK		0x000000ff
824 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT	0
825 
826 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL(param)				\
827     (((param) & HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK) >>			\
828     HDA_PARAM_FCT_GROUP_TYPE_UNSOL_SHIFT)
829 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE(param)				\
830     (((param) & HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK) >>		\
831     HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT)
832 
833 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_AUDIO		0x01
834 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MODEM		0x02
835 
836 /* Audio Function Group Capabilities */
837 #define HDA_PARAM_AUDIO_FCT_GRP_CAP			0x08
838 
839 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK	0x00010000
840 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT	16
841 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK	0x00000f00
842 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT	8
843 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK	0x0000000f
844 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT	0
845 
846 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN(param)			\
847     (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK) >>		\
848     HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT)
849 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY(param)			\
850     (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK) >>	\
851     HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT)
852 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY(param)			\
853     (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK) >>	\
854     HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT)
855 
856 /* Audio Widget Capabilities */
857 #define HDA_PARAM_AUDIO_WIDGET_CAP			0x09
858 
859 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK		0x00f00000
860 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT		20
861 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK		0x000f0000
862 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT		16
863 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK		0x0000e000
864 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT		13
865 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK		0x00001000
866 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT		12
867 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK		0x00000800
868 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT	11
869 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK	0x00000400
870 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT	10
871 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK		0x00000200
872 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT	9
873 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK	0x00000100
874 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT	8
875 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK	0x00000080
876 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT	7
877 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK	0x00000040
878 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT	6
879 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK		0x00000020
880 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT		5
881 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK	0x00000010
882 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT	4
883 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK		0x00000008
884 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT	3
885 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK		0x00000004
886 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT	2
887 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK		0x00000002
888 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT		1
889 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK		0x00000001
890 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT		0
891 
892 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE(param)				\
893     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK) >>		\
894     HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT)
895 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY(param)				\
896     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK) >>		\
897     HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT)
898 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC(param)				\
899     ((((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK) >>		\
900     (HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT - 1)) |			\
901     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >>		\
902     HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT))
903 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP(param)				\
904     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK) >>			\
905     HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT)
906 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP(param)			\
907     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK) >>		\
908     HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT)
909 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL(param)			\
910     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK) >>		\
911     HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT)
912 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL(param)			\
913     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK) >>		\
914     HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT)
915 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST(param)			\
916     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK) >>		\
917     HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT)
918 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP(param)			\
919     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK) >>		\
920     HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT)
921 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET(param)			\
922     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK) >>		\
923     HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT)
924 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE(param)			\
925     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK) >>		\
926     HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT)
927 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR(param)			\
928     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK) >>		\
929     HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT)
930 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR(param)			\
931     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK) >>		\
932     HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT)
933 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP(param)			\
934     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK) >>		\
935     HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT)
936 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP(param)			\
937     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK) >>		\
938     HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT)
939 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO(param)			\
940     (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >>		\
941     HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT)
942 
943 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_OUTPUT	0x0
944 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_INPUT	0x1
945 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_MIXER	0x2
946 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_SELECTOR	0x3
947 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX	0x4
948 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_POWER_WIDGET	0x5
949 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VOLUME_WIDGET	0x6
950 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET	0x7
951 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VENDOR_WIDGET	0xf
952 
953 /* Supported PCM Size, Rates */
954 
955 #define HDA_PARAM_SUPP_PCM_SIZE_RATE			0x0a
956 
957 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK		0x00100000
958 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT	20
959 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK		0x00080000
960 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT	19
961 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK		0x00040000
962 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT	18
963 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK		0x00020000
964 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT	17
965 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK		0x00010000
966 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT		16
967 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK		0x00000001
968 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT		0
969 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK		0x00000002
970 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT	1
971 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK		0x00000004
972 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT	2
973 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK		0x00000008
974 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT	3
975 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK		0x00000010
976 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT	4
977 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK		0x00000020
978 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT	5
979 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK		0x00000040
980 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT	6
981 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK		0x00000080
982 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT	7
983 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK		0x00000100
984 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT	8
985 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK	0x00000200
986 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT	9
987 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK	0x00000400
988 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT	10
989 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK	0x00000800
990 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT	11
991 
992 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT(param)			\
993     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK) >>		\
994     HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT)
995 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT(param)			\
996     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK) >>		\
997     HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT)
998 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT(param)			\
999     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK) >>		\
1000     HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT)
1001 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT(param)			\
1002     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK) >>		\
1003     HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT)
1004 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT(param)			\
1005     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK) >>		\
1006     HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT)
1007 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ(param)			\
1008     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK) >>		\
1009     HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT)
1010 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ(param)			\
1011     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK) >>		\
1012     HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT)
1013 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ(param)			\
1014     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK) >>		\
1015     HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT)
1016 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ(param)			\
1017     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK) >>		\
1018     HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT)
1019 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ(param)			\
1020     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK) >>		\
1021     HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT)
1022 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ(param)			\
1023     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK) >>		\
1024     HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT)
1025 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ(param)			\
1026     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK) >>		\
1027     HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT)
1028 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ(param)			\
1029     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK) >>		\
1030     HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT)
1031 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ(param)			\
1032     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK) >>		\
1033     HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT)
1034 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ(param)			\
1035     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK) >>		\
1036     HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT)
1037 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ(param)			\
1038     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK) >>		\
1039     HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT)
1040 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ(param)			\
1041     (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK) >>		\
1042     HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT)
1043 
1044 /* Supported Stream Formats */
1045 #define HDA_PARAM_SUPP_STREAM_FORMATS			0x0b
1046 
1047 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK		0x00000004
1048 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT		2
1049 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK	0x00000002
1050 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT	1
1051 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK		0x00000001
1052 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT		0
1053 
1054 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3(param)			\
1055     (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK) >>		\
1056     HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT)
1057 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32(param)			\
1058     (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK) >>		\
1059     HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT)
1060 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM(param)			\
1061     (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK) >>		\
1062     HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT)
1063 
1064 /* Pin Capabilities */
1065 #define HDA_PARAM_PIN_CAP				0x0c
1066 
1067 #define HDA_PARAM_PIN_CAP_HBR_MASK			0x08000000
1068 #define HDA_PARAM_PIN_CAP_HBR_SHIFT			27
1069 #define HDA_PARAM_PIN_CAP_DP_MASK			0x01000000
1070 #define HDA_PARAM_PIN_CAP_DP_SHIFT			24
1071 #define HDA_PARAM_PIN_CAP_EAPD_CAP_MASK			0x00010000
1072 #define HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT		16
1073 #define HDA_PARAM_PIN_CAP_VREF_CTRL_MASK		0x0000ff00
1074 #define HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT		8
1075 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK		0x00002000
1076 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT		13
1077 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK		0x00001000
1078 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT		12
1079 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK		0x00000400
1080 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT	10
1081 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK		0x00000200
1082 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT		9
1083 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK		0x00000100
1084 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT		8
1085 #define HDA_PARAM_PIN_CAP_HDMI_MASK			0x00000080
1086 #define HDA_PARAM_PIN_CAP_HDMI_SHIFT			7
1087 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK		0x00000040
1088 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT	6
1089 #define HDA_PARAM_PIN_CAP_INPUT_CAP_MASK		0x00000020
1090 #define HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT		5
1091 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK		0x00000010
1092 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT		4
1093 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK		0x00000008
1094 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT		3
1095 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK	0x00000004
1096 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT	2
1097 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK		0x00000002
1098 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT		1
1099 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK		0x00000001
1100 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT		0
1101 
1102 #define HDA_PARAM_PIN_CAP_HBR(param)					\
1103     (((param) & HDA_PARAM_PIN_CAP_HBR_MASK) >>				\
1104     HDA_PARAM_PIN_CAP_HBR_SHIFT)
1105 #define HDA_PARAM_PIN_CAP_DP(param)					\
1106     (((param) & HDA_PARAM_PIN_CAP_DP_MASK) >>				\
1107     HDA_PARAM_PIN_CAP_DP_SHIFT)
1108 #define HDA_PARAM_PIN_CAP_EAPD_CAP(param)				\
1109     (((param) & HDA_PARAM_PIN_CAP_EAPD_CAP_MASK) >>			\
1110     HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT)
1111 #define HDA_PARAM_PIN_CAP_VREF_CTRL(param)				\
1112     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_MASK) >>			\
1113     HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT)
1114 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100(param)				\
1115     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK) >>		\
1116     HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT)
1117 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80(param)				\
1118     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK) >>			\
1119     HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT)
1120 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND(param)			\
1121     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK) >>		\
1122     HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT)
1123 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50(param)				\
1124     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK) >>			\
1125     HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT)
1126 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ(param)				\
1127     (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK) >>		\
1128     HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT)
1129 #define HDA_PARAM_PIN_CAP_HDMI(param)					\
1130     (((param) & HDA_PARAM_PIN_CAP_HDMI_MASK) >>				\
1131     HDA_PARAM_PIN_CAP_HDMI_SHIFT)
1132 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS(param)			\
1133     (((param) & HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK) >>		\
1134     HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT)
1135 #define HDA_PARAM_PIN_CAP_INPUT_CAP(param)				\
1136     (((param) & HDA_PARAM_PIN_CAP_INPUT_CAP_MASK) >>			\
1137     HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT)
1138 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP(param)				\
1139     (((param) & HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK) >>			\
1140     HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT)
1141 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP(param)				\
1142     (((param) & HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK) >>		\
1143     HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT)
1144 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP(param)			\
1145     (((param) & HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK) >>		\
1146     HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT)
1147 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD(param)				\
1148     (((param) & HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK) >>			\
1149     HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT)
1150 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP(param)				\
1151     (((param) & HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK) >>		\
1152     HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT)
1153 
1154 /* Input Amplifier Capabilities */
1155 #define HDA_PARAM_INPUT_AMP_CAP				0x0d
1156 
1157 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK		0x80000000
1158 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT		31
1159 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK		0x007f0000
1160 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT		16
1161 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK		0x00007f00
1162 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT		8
1163 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK		0x0000007f
1164 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT		0
1165 
1166 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP(param)				\
1167     (((param) & HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK) >>		\
1168     HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT)
1169 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE(param)				\
1170     (((param) & HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK) >>		\
1171     HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT)
1172 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS(param)				\
1173     (((param) & HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK) >>		\
1174     HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT)
1175 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET(param)				\
1176     (((param) & HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK) >>			\
1177     HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT)
1178 
1179 /* Output Amplifier Capabilities */
1180 #define HDA_PARAM_OUTPUT_AMP_CAP			0x12
1181 
1182 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK		0x80000000
1183 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT		31
1184 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK		0x007f0000
1185 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT		16
1186 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK		0x00007f00
1187 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT		8
1188 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK		0x0000007f
1189 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT		0
1190 
1191 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP(param)			\
1192     (((param) & HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK) >>		\
1193     HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT)
1194 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE(param)			\
1195     (((param) & HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK) >>		\
1196     HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT)
1197 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS(param)			\
1198     (((param) & HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK) >>		\
1199     HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT)
1200 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET(param)				\
1201     (((param) & HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK) >>		\
1202     HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT)
1203 
1204 /* Connection List Length */
1205 #define HDA_PARAM_CONN_LIST_LENGTH			0x0e
1206 
1207 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK	0x00000080
1208 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT	7
1209 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK	0x0000007f
1210 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT	0
1211 
1212 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM(param)			\
1213     (((param) & HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK) >>		\
1214     HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT)
1215 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH(param)			\
1216     (((param) & HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK) >>		\
1217     HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT)
1218 
1219 /* Supported Power States */
1220 #define HDA_PARAM_SUPP_POWER_STATES			0x0f
1221 
1222 #define HDA_PARAM_SUPP_POWER_STATES_D3_MASK		0x00000008
1223 #define HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT		3
1224 #define HDA_PARAM_SUPP_POWER_STATES_D2_MASK		0x00000004
1225 #define HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT		2
1226 #define HDA_PARAM_SUPP_POWER_STATES_D1_MASK		0x00000002
1227 #define HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT		1
1228 #define HDA_PARAM_SUPP_POWER_STATES_D0_MASK		0x00000001
1229 #define HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT		0
1230 
1231 #define HDA_PARAM_SUPP_POWER_STATES_D3(param)				\
1232     (((param) & HDA_PARAM_SUPP_POWER_STATES_D3_MASK) >>			\
1233     HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT)
1234 #define HDA_PARAM_SUPP_POWER_STATES_D2(param)				\
1235     (((param) & HDA_PARAM_SUPP_POWER_STATES_D2_MASK) >>			\
1236     HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT)
1237 #define HDA_PARAM_SUPP_POWER_STATES_D1(param)				\
1238     (((param) & HDA_PARAM_SUPP_POWER_STATES_D1_MASK) >>			\
1239     HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT)
1240 #define HDA_PARAM_SUPP_POWER_STATES_D0(param)				\
1241     (((param) & HDA_PARAM_SUPP_POWER_STATES_D0_MASK) >>			\
1242     HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT)
1243 
1244 /* Processing Capabilities */
1245 #define HDA_PARAM_PROCESSING_CAP			0x10
1246 
1247 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK		0x0000ff00
1248 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT		8
1249 #define HDA_PARAM_PROCESSING_CAP_BENIGN_MASK		0x00000001
1250 #define HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT		0
1251 
1252 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF(param)			\
1253     (((param) & HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK) >>		\
1254     HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT)
1255 #define HDA_PARAM_PROCESSING_CAP_BENIGN(param)				\
1256     (((param) & HDA_PARAM_PROCESSING_CAP_BENIGN_MASK) >>		\
1257     HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT)
1258 
1259 /* GPIO Count */
1260 #define HDA_PARAM_GPIO_COUNT				0x11
1261 
1262 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK		0x80000000
1263 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT		31
1264 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK		0x40000000
1265 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT		30
1266 #define HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK		0x00ff0000
1267 #define HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT		16
1268 #define HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK		0x0000ff00
1269 #define HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT		8
1270 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK		0x000000ff
1271 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT		0
1272 
1273 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE(param)				\
1274     (((param) & HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK) >>			\
1275     HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT)
1276 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL(param)				\
1277     (((param) & HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK) >>			\
1278     HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT)
1279 #define HDA_PARAM_GPIO_COUNT_NUM_GPI(param)				\
1280     (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK) >>			\
1281     HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT)
1282 #define HDA_PARAM_GPIO_COUNT_NUM_GPO(param)				\
1283     (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK) >>			\
1284     HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT)
1285 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO(param)				\
1286     (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK) >>			\
1287     HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT)
1288 
1289 /* Volume Knob Capabilities */
1290 #define HDA_PARAM_VOLUME_KNOB_CAP			0x13
1291 
1292 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK		0x00000080
1293 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT		7
1294 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK	0x0000007f
1295 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT	0
1296 
1297 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA(param)				\
1298     (((param) & HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK) >>		\
1299     HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT)
1300 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS(param)			\
1301     (((param) & HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK) >>		\
1302     HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT)
1303 
1304 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK		0x0000000f
1305 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT		0
1306 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK		0x000000f0
1307 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT	4
1308 #define HDA_CONFIG_DEFAULTCONF_MISC_MASK		0x00000f00
1309 #define HDA_CONFIG_DEFAULTCONF_MISC_SHIFT		8
1310 #define HDA_CONFIG_DEFAULTCONF_COLOR_MASK		0x0000f000
1311 #define HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT		12
1312 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK	0x000f0000
1313 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT	16
1314 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MASK		0x00f00000
1315 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT		20
1316 #define HDA_CONFIG_DEFAULTCONF_LOCATION_MASK		0x3f000000
1317 #define HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT		24
1318 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK	0xc0000000
1319 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT	30
1320 
1321 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE(conf)				\
1322     (((conf) & HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK) >>			\
1323     HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT)
1324 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION(conf)			\
1325     (((conf) & HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK) >>		\
1326     HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT)
1327 #define HDA_CONFIG_DEFAULTCONF_MISC(conf)				\
1328     (((conf) & HDA_CONFIG_DEFAULTCONF_MISC_MASK) >>			\
1329     HDA_CONFIG_DEFAULTCONF_MISC_SHIFT)
1330 #define HDA_CONFIG_DEFAULTCONF_COLOR(conf)				\
1331     (((conf) & HDA_CONFIG_DEFAULTCONF_COLOR_MASK) >>			\
1332     HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT)
1333 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE(conf)			\
1334     (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK) >>		\
1335     HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT)
1336 #define HDA_CONFIG_DEFAULTCONF_DEVICE(conf)				\
1337     (((conf) & HDA_CONFIG_DEFAULTCONF_DEVICE_MASK) >>			\
1338     HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT)
1339 #define HDA_CONFIG_DEFAULTCONF_LOCATION(conf)				\
1340     (((conf) & HDA_CONFIG_DEFAULTCONF_LOCATION_MASK) >>			\
1341     HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT)
1342 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY(conf)			\
1343     (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK) >>		\
1344     HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT)
1345 
1346 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_JACK		(0<<30)
1347 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_NONE		(1<<30)
1348 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED		(2<<30)
1349 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_BOTH		(3<<30)
1350 
1351 #define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_OUT			(0<<20)
1352 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPEAKER			(1<<20)
1353 #define HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT			(2<<20)
1354 #define HDA_CONFIG_DEFAULTCONF_DEVICE_CD			(3<<20)
1355 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_OUT			(4<<20)
1356 #define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_OUT		(5<<20)
1357 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_LINE		(6<<20)
1358 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_HANDSET		(7<<20)
1359 #define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN			(8<<20)
1360 #define HDA_CONFIG_DEFAULTCONF_DEVICE_AUX			(9<<20)
1361 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN			(10<<20)
1362 #define HDA_CONFIG_DEFAULTCONF_DEVICE_TELEPHONY			(11<<20)
1363 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_IN			(12<<20)
1364 #define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_IN		(13<<20)
1365 #define HDA_CONFIG_DEFAULTCONF_DEVICE_OTHER			(15<<20)
1366 
1367 #endif
1368