1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2006 Stephane E. Potvin <sepotvin@videotron.ca>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $FreeBSD$
29 */
30
31#ifndef _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/****************************************************************************
761 * HDA Device Parameters
762 ****************************************************************************/
763
764/* Vendor ID */
765#define HDA_PARAM_VENDOR_ID				0x00
766
767#define HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK		0xffff0000
768#define HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT		16
769#define HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK		0x0000ffff
770#define HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT		0
771
772#define HDA_PARAM_VENDOR_ID_VENDOR_ID(param)				\
773    (((param) & HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK) >>			\
774    HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT)
775#define HDA_PARAM_VENDOR_ID_DEVICE_ID(param)				\
776    (((param) & HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK) >>			\
777    HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT)
778
779/* Revision ID */
780#define HDA_PARAM_REVISION_ID				0x02
781
782#define HDA_PARAM_REVISION_ID_MAJREV_MASK		0x00f00000
783#define HDA_PARAM_REVISION_ID_MAJREV_SHIFT		20
784#define HDA_PARAM_REVISION_ID_MINREV_MASK		0x000f0000
785#define HDA_PARAM_REVISION_ID_MINREV_SHIFT		16
786#define HDA_PARAM_REVISION_ID_REVISION_ID_MASK		0x0000ff00
787#define HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT		8
788#define HDA_PARAM_REVISION_ID_STEPPING_ID_MASK		0x000000ff
789#define HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT		0
790
791#define HDA_PARAM_REVISION_ID_MAJREV(param)				\
792    (((param) & HDA_PARAM_REVISION_ID_MAJREV_MASK) >>			\
793    HDA_PARAM_REVISION_ID_MAJREV_SHIFT)
794#define HDA_PARAM_REVISION_ID_MINREV(param)				\
795    (((param) & HDA_PARAM_REVISION_ID_MINREV_MASK) >>			\
796    HDA_PARAM_REVISION_ID_MINREV_SHIFT)
797#define HDA_PARAM_REVISION_ID_REVISION_ID(param)			\
798    (((param) & HDA_PARAM_REVISION_ID_REVISION_ID_MASK) >>		\
799    HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT)
800#define HDA_PARAM_REVISION_ID_STEPPING_ID(param)			\
801    (((param) & HDA_PARAM_REVISION_ID_STEPPING_ID_MASK) >>		\
802    HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT)
803
804/* Subordinate Node Cound */
805#define HDA_PARAM_SUB_NODE_COUNT			0x04
806
807#define HDA_PARAM_SUB_NODE_COUNT_START_MASK		0x00ff0000
808#define HDA_PARAM_SUB_NODE_COUNT_START_SHIFT		16
809#define HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK		0x000000ff
810#define HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT		0
811
812#define HDA_PARAM_SUB_NODE_COUNT_START(param)				\
813    (((param) & HDA_PARAM_SUB_NODE_COUNT_START_MASK) >>			\
814    HDA_PARAM_SUB_NODE_COUNT_START_SHIFT)
815#define HDA_PARAM_SUB_NODE_COUNT_TOTAL(param)				\
816    (((param) & HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK) >>			\
817    HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT)
818
819/* Function Group Type */
820#define HDA_PARAM_FCT_GRP_TYPE				0x05
821
822#define HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK		0x00000100
823#define HDA_PARAM_FCT_GRP_TYPE_UNSOL_SHIFT		8
824#define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK		0x000000ff
825#define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT	0
826
827#define HDA_PARAM_FCT_GRP_TYPE_UNSOL(param)				\
828    (((param) & HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK) >>			\
829    HDA_PARAM_FCT_GROUP_TYPE_UNSOL_SHIFT)
830#define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE(param)				\
831    (((param) & HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK) >>		\
832    HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT)
833
834#define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_AUDIO		0x01
835#define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MODEM		0x02
836
837/* Audio Function Group Capabilities */
838#define HDA_PARAM_AUDIO_FCT_GRP_CAP			0x08
839
840#define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK	0x00010000
841#define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT	16
842#define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK	0x00000f00
843#define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT	8
844#define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK	0x0000000f
845#define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT	0
846
847#define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN(param)			\
848    (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK) >>		\
849    HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT)
850#define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY(param)			\
851    (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK) >>	\
852    HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT)
853#define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY(param)			\
854    (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK) >>	\
855    HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT)
856
857/* Audio Widget Capabilities */
858#define HDA_PARAM_AUDIO_WIDGET_CAP			0x09
859
860#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK		0x00f00000
861#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT		20
862#define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK		0x000f0000
863#define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT		16
864#define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK		0x0000e000
865#define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT		13
866#define HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK		0x00001000
867#define HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT		12
868#define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK		0x00000800
869#define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT	11
870#define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK	0x00000400
871#define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT	10
872#define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK		0x00000200
873#define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT	9
874#define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK	0x00000100
875#define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT	8
876#define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK	0x00000080
877#define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT	7
878#define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK	0x00000040
879#define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT	6
880#define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK		0x00000020
881#define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT		5
882#define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK	0x00000010
883#define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT	4
884#define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK		0x00000008
885#define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT	3
886#define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK		0x00000004
887#define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT	2
888#define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK		0x00000002
889#define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT		1
890#define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK		0x00000001
891#define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT		0
892
893#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE(param)				\
894    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK) >>		\
895    HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT)
896#define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY(param)				\
897    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK) >>		\
898    HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT)
899#define HDA_PARAM_AUDIO_WIDGET_CAP_CC(param)				\
900    ((((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK) >>		\
901    (HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT - 1)) |			\
902    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >>		\
903    HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT))
904#define HDA_PARAM_AUDIO_WIDGET_CAP_CP(param)				\
905    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK) >>			\
906    HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT)
907#define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP(param)			\
908    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK) >>		\
909    HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT)
910#define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL(param)			\
911    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK) >>		\
912    HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT)
913#define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL(param)			\
914    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK) >>		\
915    HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT)
916#define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST(param)			\
917    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK) >>		\
918    HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT)
919#define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP(param)			\
920    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK) >>		\
921    HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT)
922#define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET(param)			\
923    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK) >>		\
924    HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT)
925#define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE(param)			\
926    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK) >>		\
927    HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT)
928#define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR(param)			\
929    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK) >>		\
930    HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT)
931#define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR(param)			\
932    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK) >>		\
933    HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT)
934#define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP(param)			\
935    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK) >>		\
936    HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT)
937#define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP(param)			\
938    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK) >>		\
939    HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT)
940#define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO(param)			\
941    (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >>		\
942    HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT)
943
944#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_OUTPUT	0x0
945#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_INPUT	0x1
946#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_MIXER	0x2
947#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_SELECTOR	0x3
948#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX	0x4
949#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_POWER_WIDGET	0x5
950#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VOLUME_WIDGET	0x6
951#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET	0x7
952#define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VENDOR_WIDGET	0xf
953
954/* Supported PCM Size, Rates */
955
956#define HDA_PARAM_SUPP_PCM_SIZE_RATE			0x0a
957
958#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK		0x00100000
959#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT	20
960#define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK		0x00080000
961#define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT	19
962#define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK		0x00040000
963#define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT	18
964#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK		0x00020000
965#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT	17
966#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK		0x00010000
967#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT		16
968#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK		0x00000001
969#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT		0
970#define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK		0x00000002
971#define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT	1
972#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK		0x00000004
973#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT	2
974#define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK		0x00000008
975#define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT	3
976#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK		0x00000010
977#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT	4
978#define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK		0x00000020
979#define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT	5
980#define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK		0x00000040
981#define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT	6
982#define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK		0x00000080
983#define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT	7
984#define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK		0x00000100
985#define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT	8
986#define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK	0x00000200
987#define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT	9
988#define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK	0x00000400
989#define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT	10
990#define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK	0x00000800
991#define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT	11
992
993#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT(param)			\
994    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK) >>		\
995    HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT)
996#define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT(param)			\
997    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK) >>		\
998    HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT)
999#define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT(param)			\
1000    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK) >>		\
1001    HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT)
1002#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT(param)			\
1003    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK) >>		\
1004    HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT)
1005#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT(param)			\
1006    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK) >>		\
1007    HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT)
1008#define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ(param)			\
1009    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK) >>		\
1010    HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT)
1011#define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ(param)			\
1012    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK) >>		\
1013    HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT)
1014#define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ(param)			\
1015    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK) >>		\
1016    HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT)
1017#define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ(param)			\
1018    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK) >>		\
1019    HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT)
1020#define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ(param)			\
1021    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK) >>		\
1022    HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT)
1023#define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ(param)			\
1024    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK) >>		\
1025    HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT)
1026#define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ(param)			\
1027    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK) >>		\
1028    HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT)
1029#define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ(param)			\
1030    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK) >>		\
1031    HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT)
1032#define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ(param)			\
1033    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK) >>		\
1034    HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT)
1035#define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ(param)			\
1036    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK) >>		\
1037    HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT)
1038#define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ(param)			\
1039    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK) >>		\
1040    HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT)
1041#define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ(param)			\
1042    (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK) >>		\
1043    HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT)
1044
1045/* Supported Stream Formats */
1046#define HDA_PARAM_SUPP_STREAM_FORMATS			0x0b
1047
1048#define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK		0x00000004
1049#define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT		2
1050#define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK	0x00000002
1051#define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT	1
1052#define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK		0x00000001
1053#define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT		0
1054
1055#define HDA_PARAM_SUPP_STREAM_FORMATS_AC3(param)			\
1056    (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK) >>		\
1057    HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT)
1058#define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32(param)			\
1059    (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK) >>		\
1060    HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT)
1061#define HDA_PARAM_SUPP_STREAM_FORMATS_PCM(param)			\
1062    (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK) >>		\
1063    HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT)
1064
1065/* Pin Capabilities */
1066#define HDA_PARAM_PIN_CAP				0x0c
1067
1068#define HDA_PARAM_PIN_CAP_HBR_MASK			0x08000000
1069#define HDA_PARAM_PIN_CAP_HBR_SHIFT			27
1070#define HDA_PARAM_PIN_CAP_DP_MASK			0x01000000
1071#define HDA_PARAM_PIN_CAP_DP_SHIFT			24
1072#define HDA_PARAM_PIN_CAP_EAPD_CAP_MASK			0x00010000
1073#define HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT		16
1074#define HDA_PARAM_PIN_CAP_VREF_CTRL_MASK		0x0000ff00
1075#define HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT		8
1076#define HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK		0x00002000
1077#define HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT		13
1078#define HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK		0x00001000
1079#define HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT		12
1080#define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK		0x00000400
1081#define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT	10
1082#define HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK		0x00000200
1083#define HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT		9
1084#define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK		0x00000100
1085#define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT		8
1086#define HDA_PARAM_PIN_CAP_HDMI_MASK			0x00000080
1087#define HDA_PARAM_PIN_CAP_HDMI_SHIFT			7
1088#define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK		0x00000040
1089#define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT	6
1090#define HDA_PARAM_PIN_CAP_INPUT_CAP_MASK		0x00000020
1091#define HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT		5
1092#define HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK		0x00000010
1093#define HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT		4
1094#define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK		0x00000008
1095#define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT		3
1096#define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK	0x00000004
1097#define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT	2
1098#define HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK		0x00000002
1099#define HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT		1
1100#define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK		0x00000001
1101#define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT		0
1102
1103#define HDA_PARAM_PIN_CAP_HBR(param)					\
1104    (((param) & HDA_PARAM_PIN_CAP_HBR_MASK) >>				\
1105    HDA_PARAM_PIN_CAP_HBR_SHIFT)
1106#define HDA_PARAM_PIN_CAP_DP(param)					\
1107    (((param) & HDA_PARAM_PIN_CAP_DP_MASK) >>				\
1108    HDA_PARAM_PIN_CAP_DP_SHIFT)
1109#define HDA_PARAM_PIN_CAP_EAPD_CAP(param)				\
1110    (((param) & HDA_PARAM_PIN_CAP_EAPD_CAP_MASK) >>			\
1111    HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT)
1112#define HDA_PARAM_PIN_CAP_VREF_CTRL(param)				\
1113    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_MASK) >>			\
1114    HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT)
1115#define HDA_PARAM_PIN_CAP_VREF_CTRL_100(param)				\
1116    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK) >>		\
1117    HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT)
1118#define HDA_PARAM_PIN_CAP_VREF_CTRL_80(param)				\
1119    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK) >>			\
1120    HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT)
1121#define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND(param)			\
1122    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK) >>		\
1123    HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT)
1124#define HDA_PARAM_PIN_CAP_VREF_CTRL_50(param)				\
1125    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK) >>			\
1126    HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT)
1127#define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ(param)				\
1128    (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK) >>		\
1129    HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT)
1130#define HDA_PARAM_PIN_CAP_HDMI(param)					\
1131    (((param) & HDA_PARAM_PIN_CAP_HDMI_MASK) >>				\
1132    HDA_PARAM_PIN_CAP_HDMI_SHIFT)
1133#define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS(param)			\
1134    (((param) & HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK) >>		\
1135    HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT)
1136#define HDA_PARAM_PIN_CAP_INPUT_CAP(param)				\
1137    (((param) & HDA_PARAM_PIN_CAP_INPUT_CAP_MASK) >>			\
1138    HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT)
1139#define HDA_PARAM_PIN_CAP_OUTPUT_CAP(param)				\
1140    (((param) & HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK) >>			\
1141    HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT)
1142#define HDA_PARAM_PIN_CAP_HEADPHONE_CAP(param)				\
1143    (((param) & HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK) >>		\
1144    HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT)
1145#define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP(param)			\
1146    (((param) & HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK) >>		\
1147    HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT)
1148#define HDA_PARAM_PIN_CAP_TRIGGER_REQD(param)				\
1149    (((param) & HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK) >>			\
1150    HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT)
1151#define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP(param)				\
1152    (((param) & HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK) >>		\
1153    HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT)
1154
1155/* Input Amplifier Capabilities */
1156#define HDA_PARAM_INPUT_AMP_CAP				0x0d
1157
1158#define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK		0x80000000
1159#define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT		31
1160#define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK		0x007f0000
1161#define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT		16
1162#define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK		0x00007f00
1163#define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT		8
1164#define HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK		0x0000007f
1165#define HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT		0
1166
1167#define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP(param)				\
1168    (((param) & HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK) >>		\
1169    HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT)
1170#define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE(param)				\
1171    (((param) & HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK) >>		\
1172    HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT)
1173#define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS(param)				\
1174    (((param) & HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK) >>		\
1175    HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT)
1176#define HDA_PARAM_INPUT_AMP_CAP_OFFSET(param)				\
1177    (((param) & HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK) >>			\
1178    HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT)
1179
1180/* Output Amplifier Capabilities */
1181#define HDA_PARAM_OUTPUT_AMP_CAP			0x12
1182
1183#define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK		0x80000000
1184#define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT		31
1185#define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK		0x007f0000
1186#define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT		16
1187#define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK		0x00007f00
1188#define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT		8
1189#define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK		0x0000007f
1190#define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT		0
1191
1192#define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP(param)			\
1193    (((param) & HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK) >>		\
1194    HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT)
1195#define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE(param)			\
1196    (((param) & HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK) >>		\
1197    HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT)
1198#define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS(param)			\
1199    (((param) & HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK) >>		\
1200    HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT)
1201#define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET(param)				\
1202    (((param) & HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK) >>		\
1203    HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT)
1204
1205/* Connection List Length */
1206#define HDA_PARAM_CONN_LIST_LENGTH			0x0e
1207
1208#define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK	0x00000080
1209#define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT	7
1210#define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK	0x0000007f
1211#define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT	0
1212
1213#define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM(param)			\
1214    (((param) & HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK) >>		\
1215    HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT)
1216#define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH(param)			\
1217    (((param) & HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK) >>		\
1218    HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT)
1219
1220/* Supported Power States */
1221#define HDA_PARAM_SUPP_POWER_STATES			0x0f
1222
1223#define HDA_PARAM_SUPP_POWER_STATES_D3_MASK		0x00000008
1224#define HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT		3
1225#define HDA_PARAM_SUPP_POWER_STATES_D2_MASK		0x00000004
1226#define HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT		2
1227#define HDA_PARAM_SUPP_POWER_STATES_D1_MASK		0x00000002
1228#define HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT		1
1229#define HDA_PARAM_SUPP_POWER_STATES_D0_MASK		0x00000001
1230#define HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT		0
1231
1232#define HDA_PARAM_SUPP_POWER_STATES_D3(param)				\
1233    (((param) & HDA_PARAM_SUPP_POWER_STATES_D3_MASK) >>			\
1234    HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT)
1235#define HDA_PARAM_SUPP_POWER_STATES_D2(param)				\
1236    (((param) & HDA_PARAM_SUPP_POWER_STATES_D2_MASK) >>			\
1237    HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT)
1238#define HDA_PARAM_SUPP_POWER_STATES_D1(param)				\
1239    (((param) & HDA_PARAM_SUPP_POWER_STATES_D1_MASK) >>			\
1240    HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT)
1241#define HDA_PARAM_SUPP_POWER_STATES_D0(param)				\
1242    (((param) & HDA_PARAM_SUPP_POWER_STATES_D0_MASK) >>			\
1243    HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT)
1244
1245/* Processing Capabilities */
1246#define HDA_PARAM_PROCESSING_CAP			0x10
1247
1248#define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK		0x0000ff00
1249#define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT		8
1250#define HDA_PARAM_PROCESSING_CAP_BENIGN_MASK		0x00000001
1251#define HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT		0
1252
1253#define HDA_PARAM_PROCESSING_CAP_NUMCOEFF(param)			\
1254    (((param) & HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK) >>		\
1255    HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT)
1256#define HDA_PARAM_PROCESSING_CAP_BENIGN(param)				\
1257    (((param) & HDA_PARAM_PROCESSING_CAP_BENIGN_MASK) >>		\
1258    HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT)
1259
1260/* GPIO Count */
1261#define HDA_PARAM_GPIO_COUNT				0x11
1262
1263#define HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK		0x80000000
1264#define HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT		31
1265#define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK		0x40000000
1266#define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT		30
1267#define HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK		0x00ff0000
1268#define HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT		16
1269#define HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK		0x0000ff00
1270#define HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT		8
1271#define HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK		0x000000ff
1272#define HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT		0
1273
1274#define HDA_PARAM_GPIO_COUNT_GPI_WAKE(param)				\
1275    (((param) & HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK) >>			\
1276    HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT)
1277#define HDA_PARAM_GPIO_COUNT_GPI_UNSOL(param)				\
1278    (((param) & HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK) >>			\
1279    HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT)
1280#define HDA_PARAM_GPIO_COUNT_NUM_GPI(param)				\
1281    (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK) >>			\
1282    HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT)
1283#define HDA_PARAM_GPIO_COUNT_NUM_GPO(param)				\
1284    (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK) >>			\
1285    HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT)
1286#define HDA_PARAM_GPIO_COUNT_NUM_GPIO(param)				\
1287    (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK) >>			\
1288    HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT)
1289
1290/* Volume Knob Capabilities */
1291#define HDA_PARAM_VOLUME_KNOB_CAP			0x13
1292
1293#define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK		0x00000080
1294#define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT		7
1295#define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK	0x0000007f
1296#define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT	0
1297
1298#define HDA_PARAM_VOLUME_KNOB_CAP_DELTA(param)				\
1299    (((param) & HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK) >>		\
1300    HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT)
1301#define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS(param)			\
1302    (((param) & HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK) >>		\
1303    HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT)
1304
1305
1306#define HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK		0x0000000f
1307#define HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT		0
1308#define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK		0x000000f0
1309#define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT	4
1310#define HDA_CONFIG_DEFAULTCONF_MISC_MASK		0x00000f00
1311#define HDA_CONFIG_DEFAULTCONF_MISC_SHIFT		8
1312#define HDA_CONFIG_DEFAULTCONF_COLOR_MASK		0x0000f000
1313#define HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT		12
1314#define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK	0x000f0000
1315#define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT	16
1316#define HDA_CONFIG_DEFAULTCONF_DEVICE_MASK		0x00f00000
1317#define HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT		20
1318#define HDA_CONFIG_DEFAULTCONF_LOCATION_MASK		0x3f000000
1319#define HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT		24
1320#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK	0xc0000000
1321#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT	30
1322
1323#define HDA_CONFIG_DEFAULTCONF_SEQUENCE(conf)				\
1324    (((conf) & HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK) >>			\
1325    HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT)
1326#define HDA_CONFIG_DEFAULTCONF_ASSOCIATION(conf)			\
1327    (((conf) & HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK) >>		\
1328    HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT)
1329#define HDA_CONFIG_DEFAULTCONF_MISC(conf)				\
1330    (((conf) & HDA_CONFIG_DEFAULTCONF_MISC_MASK) >>			\
1331    HDA_CONFIG_DEFAULTCONF_MISC_SHIFT)
1332#define HDA_CONFIG_DEFAULTCONF_COLOR(conf)				\
1333    (((conf) & HDA_CONFIG_DEFAULTCONF_COLOR_MASK) >>			\
1334    HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT)
1335#define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE(conf)			\
1336    (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK) >>		\
1337    HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT)
1338#define HDA_CONFIG_DEFAULTCONF_DEVICE(conf)				\
1339    (((conf) & HDA_CONFIG_DEFAULTCONF_DEVICE_MASK) >>			\
1340    HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT)
1341#define HDA_CONFIG_DEFAULTCONF_LOCATION(conf)				\
1342    (((conf) & HDA_CONFIG_DEFAULTCONF_LOCATION_MASK) >>			\
1343    HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT)
1344#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY(conf)			\
1345    (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK) >>		\
1346    HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT)
1347
1348#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_JACK		(0<<30)
1349#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_NONE		(1<<30)
1350#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED		(2<<30)
1351#define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_BOTH		(3<<30)
1352
1353#define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_OUT			(0<<20)
1354#define HDA_CONFIG_DEFAULTCONF_DEVICE_SPEAKER			(1<<20)
1355#define HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT			(2<<20)
1356#define HDA_CONFIG_DEFAULTCONF_DEVICE_CD			(3<<20)
1357#define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_OUT			(4<<20)
1358#define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_OUT		(5<<20)
1359#define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_LINE		(6<<20)
1360#define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_HANDSET		(7<<20)
1361#define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN			(8<<20)
1362#define HDA_CONFIG_DEFAULTCONF_DEVICE_AUX			(9<<20)
1363#define HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN			(10<<20)
1364#define HDA_CONFIG_DEFAULTCONF_DEVICE_TELEPHONY			(11<<20)
1365#define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_IN			(12<<20)
1366#define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_IN		(13<<20)
1367#define HDA_CONFIG_DEFAULTCONF_DEVICE_OTHER			(15<<20)
1368
1369#endif
1370