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