xref: /aosp_15_r20/external/igt-gpu-tools/tools/intel_audio_dump.c (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker /*
2*d83cc019SAndroid Build Coastguard Worker  * Copyright © 2009 Intel Corporation
3*d83cc019SAndroid Build Coastguard Worker  *
4*d83cc019SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*d83cc019SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
6*d83cc019SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
7*d83cc019SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*d83cc019SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
9*d83cc019SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
10*d83cc019SAndroid Build Coastguard Worker  *
11*d83cc019SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
12*d83cc019SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
13*d83cc019SAndroid Build Coastguard Worker  * Software.
14*d83cc019SAndroid Build Coastguard Worker  *
15*d83cc019SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*d83cc019SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*d83cc019SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*d83cc019SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*d83cc019SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*d83cc019SAndroid Build Coastguard Worker  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21*d83cc019SAndroid Build Coastguard Worker  * DEALINGS IN THE SOFTWARE.
22*d83cc019SAndroid Build Coastguard Worker  *
23*d83cc019SAndroid Build Coastguard Worker  * Authors:
24*d83cc019SAndroid Build Coastguard Worker  *    Zhenyu Wang <[email protected]>
25*d83cc019SAndroid Build Coastguard Worker  *    Wu Fengguang <[email protected]>
26*d83cc019SAndroid Build Coastguard Worker  *
27*d83cc019SAndroid Build Coastguard Worker  */
28*d83cc019SAndroid Build Coastguard Worker 
29*d83cc019SAndroid Build Coastguard Worker #include <unistd.h>
30*d83cc019SAndroid Build Coastguard Worker #include <stdlib.h>
31*d83cc019SAndroid Build Coastguard Worker #include <stdio.h>
32*d83cc019SAndroid Build Coastguard Worker #include <string.h>
33*d83cc019SAndroid Build Coastguard Worker #include <err.h>
34*d83cc019SAndroid Build Coastguard Worker #include <arpa/inet.h>
35*d83cc019SAndroid Build Coastguard Worker #include "intel_io.h"
36*d83cc019SAndroid Build Coastguard Worker #include "intel_reg.h"
37*d83cc019SAndroid Build Coastguard Worker #include "intel_chipset.h"
38*d83cc019SAndroid Build Coastguard Worker #include "drmtest.h"
39*d83cc019SAndroid Build Coastguard Worker 
40*d83cc019SAndroid Build Coastguard Worker static uint32_t devid;
41*d83cc019SAndroid Build Coastguard Worker 
42*d83cc019SAndroid Build Coastguard Worker static int aud_reg_base = 0;	/* base address of audio registers */
43*d83cc019SAndroid Build Coastguard Worker static int disp_reg_base = 0;	/* base address of display registers */
44*d83cc019SAndroid Build Coastguard Worker 
45*d83cc019SAndroid Build Coastguard Worker #define IS_HASWELL_PLUS(devid)  (IS_HASWELL(devid) || IS_BROADWELL(devid))
46*d83cc019SAndroid Build Coastguard Worker 
47*d83cc019SAndroid Build Coastguard Worker #define BITSTO(n)		(n >= sizeof(long) * 8 ? ~0 : (1UL << (n)) - 1)
48*d83cc019SAndroid Build Coastguard Worker #define BITMASK(high, low)	(BITSTO(high+1) & ~BITSTO(low))
49*d83cc019SAndroid Build Coastguard Worker #define REG_BITS(reg, high, low)	(((reg) & (BITMASK(high, low))) >> (low))
50*d83cc019SAndroid Build Coastguard Worker #define REG_BIT(reg, n)		REG_BITS(reg, n, n)
51*d83cc019SAndroid Build Coastguard Worker 
52*d83cc019SAndroid Build Coastguard Worker #define min_t(type, x, y) ({                    \
53*d83cc019SAndroid Build Coastguard Worker 		type __min1 = (x);                      \
54*d83cc019SAndroid Build Coastguard Worker 		type __min2 = (y);                      \
55*d83cc019SAndroid Build Coastguard Worker 		__min1 < __min2 ? __min1 : __min2; })
56*d83cc019SAndroid Build Coastguard Worker 
57*d83cc019SAndroid Build Coastguard Worker #define OPNAME(names, index)   \
58*d83cc019SAndroid Build Coastguard Worker 	names[min_t(unsigned int, index, ARRAY_SIZE(names) - 1)]
59*d83cc019SAndroid Build Coastguard Worker 
60*d83cc019SAndroid Build Coastguard Worker #define set_aud_reg_base(base)    (aud_reg_base = (base))
61*d83cc019SAndroid Build Coastguard Worker 
62*d83cc019SAndroid Build Coastguard Worker #define set_reg_base(base, audio_offset)	\
63*d83cc019SAndroid Build Coastguard Worker 	do {					\
64*d83cc019SAndroid Build Coastguard Worker 		disp_reg_base = (base);		\
65*d83cc019SAndroid Build Coastguard Worker 		set_aud_reg_base((base) + (audio_offset));	\
66*d83cc019SAndroid Build Coastguard Worker 	} while (0)
67*d83cc019SAndroid Build Coastguard Worker 
68*d83cc019SAndroid Build Coastguard Worker #define dump_reg(reg, desc)					\
69*d83cc019SAndroid Build Coastguard Worker 	do {							\
70*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(reg);	\
71*d83cc019SAndroid Build Coastguard Worker 		printf("%-21s(%#x) 0x%08x  %s\n", # reg, reg, dword, desc);	\
72*d83cc019SAndroid Build Coastguard Worker 	} while (0)
73*d83cc019SAndroid Build Coastguard Worker 
74*d83cc019SAndroid Build Coastguard Worker #define dump_disp_reg(reg, desc)					\
75*d83cc019SAndroid Build Coastguard Worker 	do {							\
76*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(disp_reg_base + reg);	\
77*d83cc019SAndroid Build Coastguard Worker 		printf("%-21s(%#x) 0x%08x  %s\n", # reg, reg, dword, desc);	\
78*d83cc019SAndroid Build Coastguard Worker 	} while (0)
79*d83cc019SAndroid Build Coastguard Worker 
80*d83cc019SAndroid Build Coastguard Worker #define dump_aud_reg(reg, desc)					\
81*d83cc019SAndroid Build Coastguard Worker 	do {							\
82*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + reg);	\
83*d83cc019SAndroid Build Coastguard Worker 		printf("%-21s(%#x) 0x%08x  %s\n", # reg, reg, dword, desc);	\
84*d83cc019SAndroid Build Coastguard Worker 	} while (0)
85*d83cc019SAndroid Build Coastguard Worker 
86*d83cc019SAndroid Build Coastguard Worker #define read_aud_reg(reg)	INREG(aud_reg_base + (reg))
87*d83cc019SAndroid Build Coastguard Worker 
get_num_pipes(void)88*d83cc019SAndroid Build Coastguard Worker static int get_num_pipes(void)
89*d83cc019SAndroid Build Coastguard Worker {
90*d83cc019SAndroid Build Coastguard Worker 	int num_pipes;
91*d83cc019SAndroid Build Coastguard Worker 
92*d83cc019SAndroid Build Coastguard Worker 	if (IS_VALLEYVIEW(devid))
93*d83cc019SAndroid Build Coastguard Worker 		num_pipes = 2;  /* Valleyview is Gen 7 but only has 2 pipes */
94*d83cc019SAndroid Build Coastguard Worker 	else if (IS_G4X(devid) || IS_GEN5(devid))
95*d83cc019SAndroid Build Coastguard Worker 		num_pipes = 2;
96*d83cc019SAndroid Build Coastguard Worker 	else
97*d83cc019SAndroid Build Coastguard Worker 		num_pipes = 3;
98*d83cc019SAndroid Build Coastguard Worker 
99*d83cc019SAndroid Build Coastguard Worker 	return num_pipes;
100*d83cc019SAndroid Build Coastguard Worker }
101*d83cc019SAndroid Build Coastguard Worker 
102*d83cc019SAndroid Build Coastguard Worker static const char * const cts_m_value_index[] = {
103*d83cc019SAndroid Build Coastguard Worker 	[0] = "CTS",
104*d83cc019SAndroid Build Coastguard Worker 	[1] = "M",
105*d83cc019SAndroid Build Coastguard Worker };
106*d83cc019SAndroid Build Coastguard Worker 
107*d83cc019SAndroid Build Coastguard Worker static const char * const pixel_clock[] = {
108*d83cc019SAndroid Build Coastguard Worker 	[0] = "25.2 / 1.001 MHz",
109*d83cc019SAndroid Build Coastguard Worker 	[1] = "25.2 MHz",
110*d83cc019SAndroid Build Coastguard Worker 	[2] = "27 MHz",
111*d83cc019SAndroid Build Coastguard Worker 	[3] = "27 * 1.001 MHz",
112*d83cc019SAndroid Build Coastguard Worker 	[4] = "54 MHz",
113*d83cc019SAndroid Build Coastguard Worker 	[5] = "54 * 1.001 MHz",
114*d83cc019SAndroid Build Coastguard Worker 	[6] = "74.25 / 1.001 MHz",
115*d83cc019SAndroid Build Coastguard Worker 	[7] = "74.25 MHz",
116*d83cc019SAndroid Build Coastguard Worker 	[8] = "148.5 / 1.001 MHz",
117*d83cc019SAndroid Build Coastguard Worker 	[9] = "148.5 MHz",
118*d83cc019SAndroid Build Coastguard Worker 	[10] = "Reserved",
119*d83cc019SAndroid Build Coastguard Worker };
120*d83cc019SAndroid Build Coastguard Worker 
121*d83cc019SAndroid Build Coastguard Worker static const char * const power_state[] = {
122*d83cc019SAndroid Build Coastguard Worker 	[0] = "D0",
123*d83cc019SAndroid Build Coastguard Worker 	[1] = "D1",
124*d83cc019SAndroid Build Coastguard Worker 	[2] = "D2",
125*d83cc019SAndroid Build Coastguard Worker 	[3] = "D3",
126*d83cc019SAndroid Build Coastguard Worker };
127*d83cc019SAndroid Build Coastguard Worker 
128*d83cc019SAndroid Build Coastguard Worker static const char * const stream_type[] = {
129*d83cc019SAndroid Build Coastguard Worker 	[0] = "default samples",
130*d83cc019SAndroid Build Coastguard Worker 	[1] = "one bit stream",
131*d83cc019SAndroid Build Coastguard Worker 	[2] = "DST stream",
132*d83cc019SAndroid Build Coastguard Worker 	[3] = "MLP stream",
133*d83cc019SAndroid Build Coastguard Worker 	[4] = "Reserved",
134*d83cc019SAndroid Build Coastguard Worker };
135*d83cc019SAndroid Build Coastguard Worker 
136*d83cc019SAndroid Build Coastguard Worker static const char * const dip_port[] = {
137*d83cc019SAndroid Build Coastguard Worker 	[0] = "Reserved",
138*d83cc019SAndroid Build Coastguard Worker 	[1] = "Digital Port B",
139*d83cc019SAndroid Build Coastguard Worker 	[2] = "Digital Port C",
140*d83cc019SAndroid Build Coastguard Worker 	[3] = "Digital Port D",
141*d83cc019SAndroid Build Coastguard Worker };
142*d83cc019SAndroid Build Coastguard Worker 
143*d83cc019SAndroid Build Coastguard Worker static const char * const dip_type[] = {
144*d83cc019SAndroid Build Coastguard Worker 	[0] = "Audio DIP Disabled",
145*d83cc019SAndroid Build Coastguard Worker 	[1] = "Audio DIP Enabled",
146*d83cc019SAndroid Build Coastguard Worker };
147*d83cc019SAndroid Build Coastguard Worker 
148*d83cc019SAndroid Build Coastguard Worker static const char * const dip_gen1_state[] = {
149*d83cc019SAndroid Build Coastguard Worker 	[0] = "Generic 1 (ACP) DIP Disabled",
150*d83cc019SAndroid Build Coastguard Worker 	[1] = "Generic 1 (ACP) DIP Enabled",
151*d83cc019SAndroid Build Coastguard Worker };
152*d83cc019SAndroid Build Coastguard Worker 
153*d83cc019SAndroid Build Coastguard Worker static const char * const dip_gen2_state[] = {
154*d83cc019SAndroid Build Coastguard Worker 	[0] = "Generic 2 DIP Disabled",
155*d83cc019SAndroid Build Coastguard Worker 	[1] = "Generic 2 DIP Enabled",
156*d83cc019SAndroid Build Coastguard Worker };
157*d83cc019SAndroid Build Coastguard Worker 
158*d83cc019SAndroid Build Coastguard Worker static const char * const dip_index[] = {
159*d83cc019SAndroid Build Coastguard Worker 	[0] = "Audio DIP",
160*d83cc019SAndroid Build Coastguard Worker 	[1] = "ACP DIP",
161*d83cc019SAndroid Build Coastguard Worker 	[2] = "ISRC1 DIP",
162*d83cc019SAndroid Build Coastguard Worker 	[3] = "ISRC2 DIP",
163*d83cc019SAndroid Build Coastguard Worker 	[4] = "Reserved",
164*d83cc019SAndroid Build Coastguard Worker };
165*d83cc019SAndroid Build Coastguard Worker 
166*d83cc019SAndroid Build Coastguard Worker static const char * const dip_trans[] = {
167*d83cc019SAndroid Build Coastguard Worker 	[0] = "disabled",
168*d83cc019SAndroid Build Coastguard Worker 	[1] = "reserved",
169*d83cc019SAndroid Build Coastguard Worker 	[2] = "send once",
170*d83cc019SAndroid Build Coastguard Worker 	[3] = "best effort",
171*d83cc019SAndroid Build Coastguard Worker };
172*d83cc019SAndroid Build Coastguard Worker 
173*d83cc019SAndroid Build Coastguard Worker static const char * const video_dip_index[] = {
174*d83cc019SAndroid Build Coastguard Worker 	[0] = "AVI DIP",
175*d83cc019SAndroid Build Coastguard Worker 	[1] = "Vendor-specific DIP",
176*d83cc019SAndroid Build Coastguard Worker 	[2] = "Gamut Metadata DIP",
177*d83cc019SAndroid Build Coastguard Worker 	[3] = "Source Product Description DIP",
178*d83cc019SAndroid Build Coastguard Worker };
179*d83cc019SAndroid Build Coastguard Worker 
180*d83cc019SAndroid Build Coastguard Worker static const char * const video_dip_trans[] = {
181*d83cc019SAndroid Build Coastguard Worker 	[0] = "send once",
182*d83cc019SAndroid Build Coastguard Worker 	[1] = "send every vsync",
183*d83cc019SAndroid Build Coastguard Worker 	[2] = "send at least every other vsync",
184*d83cc019SAndroid Build Coastguard Worker 	[3] = "reserved",
185*d83cc019SAndroid Build Coastguard Worker };
186*d83cc019SAndroid Build Coastguard Worker 
187*d83cc019SAndroid Build Coastguard Worker static const char * const trans_to_port_sel[] = {
188*d83cc019SAndroid Build Coastguard Worker 	[0] = "no port",
189*d83cc019SAndroid Build Coastguard Worker 	[1] = "Digital Port B",
190*d83cc019SAndroid Build Coastguard Worker 	[2] = "Digital Port C",
191*d83cc019SAndroid Build Coastguard Worker 	[3] = "Digital Port D",
192*d83cc019SAndroid Build Coastguard Worker 	[4] = "reserved",
193*d83cc019SAndroid Build Coastguard Worker 	[5] = "reserved",
194*d83cc019SAndroid Build Coastguard Worker 	[6] = "reserved",
195*d83cc019SAndroid Build Coastguard Worker 	[7] = "reserved",
196*d83cc019SAndroid Build Coastguard Worker };
197*d83cc019SAndroid Build Coastguard Worker 
198*d83cc019SAndroid Build Coastguard Worker static const char * const ddi_mode[] = {
199*d83cc019SAndroid Build Coastguard Worker 	[0] = "HDMI mode",
200*d83cc019SAndroid Build Coastguard Worker 	[1] = "DVI mode",
201*d83cc019SAndroid Build Coastguard Worker 	[2] = "DP SST mode",
202*d83cc019SAndroid Build Coastguard Worker 	[3] = "DP MST mode",
203*d83cc019SAndroid Build Coastguard Worker 	[4] = "DP FDI mode",
204*d83cc019SAndroid Build Coastguard Worker 	[5] = "reserved",
205*d83cc019SAndroid Build Coastguard Worker 	[6] = "reserved",
206*d83cc019SAndroid Build Coastguard Worker 	[7] = "reserved",
207*d83cc019SAndroid Build Coastguard Worker };
208*d83cc019SAndroid Build Coastguard Worker 
209*d83cc019SAndroid Build Coastguard Worker static const char * const bits_per_color[] = {
210*d83cc019SAndroid Build Coastguard Worker 	[0] = "8 bpc",
211*d83cc019SAndroid Build Coastguard Worker 	[1] = "10 bpc",
212*d83cc019SAndroid Build Coastguard Worker 	[2] = "6 bpc",
213*d83cc019SAndroid Build Coastguard Worker 	[3] = "12 bpc",
214*d83cc019SAndroid Build Coastguard Worker 	[4] = "reserved",
215*d83cc019SAndroid Build Coastguard Worker 	[5] = "reserved",
216*d83cc019SAndroid Build Coastguard Worker 	[6] = "reserved",
217*d83cc019SAndroid Build Coastguard Worker 	[7] = "reserved",
218*d83cc019SAndroid Build Coastguard Worker };
219*d83cc019SAndroid Build Coastguard Worker 
220*d83cc019SAndroid Build Coastguard Worker static const char * const transcoder_select[] = {
221*d83cc019SAndroid Build Coastguard Worker 	[0] = "Transcoder A",
222*d83cc019SAndroid Build Coastguard Worker 	[1] = "Transcoder B",
223*d83cc019SAndroid Build Coastguard Worker 	[2] = "Transcoder C",
224*d83cc019SAndroid Build Coastguard Worker 	[3] = "reserved",
225*d83cc019SAndroid Build Coastguard Worker };
226*d83cc019SAndroid Build Coastguard Worker 
227*d83cc019SAndroid Build Coastguard Worker static const char * const dp_port_width[] = {
228*d83cc019SAndroid Build Coastguard Worker 	[0] = "x1 mode",
229*d83cc019SAndroid Build Coastguard Worker 	[1] = "x2 mode",
230*d83cc019SAndroid Build Coastguard Worker 	[2] = "reserved",
231*d83cc019SAndroid Build Coastguard Worker 	[3] = "x4 mode",
232*d83cc019SAndroid Build Coastguard Worker 	[4] = "reserved",
233*d83cc019SAndroid Build Coastguard Worker 	[5] = "reserved",
234*d83cc019SAndroid Build Coastguard Worker 	[6] = "reserved",
235*d83cc019SAndroid Build Coastguard Worker 	[7] = "reserved",
236*d83cc019SAndroid Build Coastguard Worker };
237*d83cc019SAndroid Build Coastguard Worker 
238*d83cc019SAndroid Build Coastguard Worker static const char * const sample_base_rate[] = {
239*d83cc019SAndroid Build Coastguard Worker 	[0] = "48 kHz",
240*d83cc019SAndroid Build Coastguard Worker 	[1] = "44.1 kHz",
241*d83cc019SAndroid Build Coastguard Worker };
242*d83cc019SAndroid Build Coastguard Worker 
243*d83cc019SAndroid Build Coastguard Worker static const char * const sample_base_rate_mult[] = {
244*d83cc019SAndroid Build Coastguard Worker 	[0] = "x1 (48 kHz, 44.1 kHz or less)",
245*d83cc019SAndroid Build Coastguard Worker 	[1] = "x2 (96 kHz, 88.2 kHz, 32 kHz)",
246*d83cc019SAndroid Build Coastguard Worker 	[2] = "x3 (144 kHz)",
247*d83cc019SAndroid Build Coastguard Worker 	[3] = "x4 (192 kHz, 176.4 kHz)",
248*d83cc019SAndroid Build Coastguard Worker 	[4] = "Reserved",
249*d83cc019SAndroid Build Coastguard Worker };
250*d83cc019SAndroid Build Coastguard Worker 
251*d83cc019SAndroid Build Coastguard Worker static const char * const sample_base_rate_divisor[] = {
252*d83cc019SAndroid Build Coastguard Worker 	[0] = "Divided by 1 (48 kHz, 44.1 kHz)",
253*d83cc019SAndroid Build Coastguard Worker 	[1] = "Divided by 2 (24 kHz, 22.05 kHz)",
254*d83cc019SAndroid Build Coastguard Worker 	[2] = "Divided by 3 (16 kHz, 32 kHz)",
255*d83cc019SAndroid Build Coastguard Worker 	[3] = "Divided by 4 (11.025 kHz)",
256*d83cc019SAndroid Build Coastguard Worker 	[4] = "Divided by 5 (9.6 kHz)",
257*d83cc019SAndroid Build Coastguard Worker 	[5] = "Divided by 6 (8 kHz)",
258*d83cc019SAndroid Build Coastguard Worker 	[6] = "Divided by 7",
259*d83cc019SAndroid Build Coastguard Worker 	[7] = "Divided by 8 (6 kHz)",
260*d83cc019SAndroid Build Coastguard Worker };
261*d83cc019SAndroid Build Coastguard Worker 
262*d83cc019SAndroid Build Coastguard Worker static const char * const connect_list_form[] = {
263*d83cc019SAndroid Build Coastguard Worker 	[0] = "Short Form",
264*d83cc019SAndroid Build Coastguard Worker 	[1] = "Long Form",
265*d83cc019SAndroid Build Coastguard Worker };
266*d83cc019SAndroid Build Coastguard Worker 
267*d83cc019SAndroid Build Coastguard Worker 
268*d83cc019SAndroid Build Coastguard Worker static const char * const bits_per_sample[] = {
269*d83cc019SAndroid Build Coastguard Worker 	[0] = "reserved",
270*d83cc019SAndroid Build Coastguard Worker 	[1] = "16 bits",
271*d83cc019SAndroid Build Coastguard Worker 	[2] = "24 bits",
272*d83cc019SAndroid Build Coastguard Worker 	[3] = "32 bits",
273*d83cc019SAndroid Build Coastguard Worker 	[4] = "20 bits",
274*d83cc019SAndroid Build Coastguard Worker 	[5] = "reserved",
275*d83cc019SAndroid Build Coastguard Worker };
276*d83cc019SAndroid Build Coastguard Worker 
277*d83cc019SAndroid Build Coastguard Worker static const char * const sdvo_hdmi_encoding[] = {
278*d83cc019SAndroid Build Coastguard Worker 	[0] = "SDVO",
279*d83cc019SAndroid Build Coastguard Worker 	[1] = "reserved",
280*d83cc019SAndroid Build Coastguard Worker 	[2] = "TMDS",
281*d83cc019SAndroid Build Coastguard Worker 	[3] = "reserved",
282*d83cc019SAndroid Build Coastguard Worker };
283*d83cc019SAndroid Build Coastguard Worker 
284*d83cc019SAndroid Build Coastguard Worker static const char * const n_index_value[] = {
285*d83cc019SAndroid Build Coastguard Worker 	[0] = "HDMI",
286*d83cc019SAndroid Build Coastguard Worker 	[1] = "DisplayPort",
287*d83cc019SAndroid Build Coastguard Worker };
288*d83cc019SAndroid Build Coastguard Worker 
289*d83cc019SAndroid Build Coastguard Worker static const char * const immed_result_valid[] = {
290*d83cc019SAndroid Build Coastguard Worker 	[0] = "No immediate response is available",
291*d83cc019SAndroid Build Coastguard Worker 	[1] = "Immediate response is available",
292*d83cc019SAndroid Build Coastguard Worker };
293*d83cc019SAndroid Build Coastguard Worker 
294*d83cc019SAndroid Build Coastguard Worker static const char * const immed_cmd_busy[] = {
295*d83cc019SAndroid Build Coastguard Worker 	[0] = "Can accept an immediate command",
296*d83cc019SAndroid Build Coastguard Worker 	[1] = "Immediate command is available",
297*d83cc019SAndroid Build Coastguard Worker };
298*d83cc019SAndroid Build Coastguard Worker 
299*d83cc019SAndroid Build Coastguard Worker static const char * const vanilla_dp12_en[] = {
300*d83cc019SAndroid Build Coastguard Worker 	[0] = "DP 1.2 features are disabled",
301*d83cc019SAndroid Build Coastguard Worker 	[1] = "DP 1.2 features are enabled",
302*d83cc019SAndroid Build Coastguard Worker };
303*d83cc019SAndroid Build Coastguard Worker 
304*d83cc019SAndroid Build Coastguard Worker static const char * const vanilla_3_widgets_en[] = {
305*d83cc019SAndroid Build Coastguard Worker 	[0] = "2nd & 3rd pin/convertor widgets are disabled",
306*d83cc019SAndroid Build Coastguard Worker 	[1] = "All three pin/convertor widgets are enabled",
307*d83cc019SAndroid Build Coastguard Worker };
308*d83cc019SAndroid Build Coastguard Worker 
309*d83cc019SAndroid Build Coastguard Worker static const char * const block_audio[] = {
310*d83cc019SAndroid Build Coastguard Worker 	[0] = "Allow audio data to reach the port",
311*d83cc019SAndroid Build Coastguard Worker 	[1] = "Block audio data from reaching the port",
312*d83cc019SAndroid Build Coastguard Worker };
313*d83cc019SAndroid Build Coastguard Worker 
314*d83cc019SAndroid Build Coastguard Worker static const char * const dis_eld_valid_pulse_trans[] = {
315*d83cc019SAndroid Build Coastguard Worker 	[0] = "Enable ELD valid pulse transition when unsol is disabled",
316*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable ELD valid pulse transition when unsol is disabled",
317*d83cc019SAndroid Build Coastguard Worker };
318*d83cc019SAndroid Build Coastguard Worker 
319*d83cc019SAndroid Build Coastguard Worker static const char * const dis_pd_pulse_trans[] = {
320*d83cc019SAndroid Build Coastguard Worker 	[0] = "Enable Presense Detect pulse transition when unsol is disabled",
321*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable Presense Detect pulse transition when unsol is disabled",
322*d83cc019SAndroid Build Coastguard Worker };
323*d83cc019SAndroid Build Coastguard Worker 
324*d83cc019SAndroid Build Coastguard Worker static const char * const dis_ts_delta_err[] = {
325*d83cc019SAndroid Build Coastguard Worker 	[0] = "Enable timestamp delta error for 32/44 KHz",
326*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable timestamp delta error for 32/44 KHz",
327*d83cc019SAndroid Build Coastguard Worker };
328*d83cc019SAndroid Build Coastguard Worker 
329*d83cc019SAndroid Build Coastguard Worker static const char * const dis_ts_fix_dp_hbr[] = {
330*d83cc019SAndroid Build Coastguard Worker 	[0] = "Enable timestamp fix for DP HBR",
331*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable timestamp fix for DP HBR",
332*d83cc019SAndroid Build Coastguard Worker };
333*d83cc019SAndroid Build Coastguard Worker 
334*d83cc019SAndroid Build Coastguard Worker static const char * const pattern_gen_8_ch_en[] = {
335*d83cc019SAndroid Build Coastguard Worker 	[0] = "Disable 8-channel pattern generator",
336*d83cc019SAndroid Build Coastguard Worker 	[1] = "Enable 8-channel pattern generator",
337*d83cc019SAndroid Build Coastguard Worker };
338*d83cc019SAndroid Build Coastguard Worker 
339*d83cc019SAndroid Build Coastguard Worker static const char * const pattern_gen_2_ch_en[] = {
340*d83cc019SAndroid Build Coastguard Worker 	[0] = "Disable 2-channel pattern generator",
341*d83cc019SAndroid Build Coastguard Worker 	[1] = "Enable 2-channel pattern generator",
342*d83cc019SAndroid Build Coastguard Worker };
343*d83cc019SAndroid Build Coastguard Worker 
344*d83cc019SAndroid Build Coastguard Worker static const char * const fabric_32_44_dis[] = {
345*d83cc019SAndroid Build Coastguard Worker 	[0] = "Allow sample fabrication for 32/44 KHz",
346*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable sample fabrication for 32/44 KHz",
347*d83cc019SAndroid Build Coastguard Worker };
348*d83cc019SAndroid Build Coastguard Worker 
349*d83cc019SAndroid Build Coastguard Worker static const char * const epss_dis[] = {
350*d83cc019SAndroid Build Coastguard Worker 	[0] = "Allow audio EPSS",
351*d83cc019SAndroid Build Coastguard Worker 	[1] = "Disable audio EPSS",
352*d83cc019SAndroid Build Coastguard Worker };
353*d83cc019SAndroid Build Coastguard Worker 
354*d83cc019SAndroid Build Coastguard Worker static const char * const ts_test_mode[] = {
355*d83cc019SAndroid Build Coastguard Worker 	[0] = "Default time stamp mode",
356*d83cc019SAndroid Build Coastguard Worker 	[1] = "Audio time stamp test mode for audio only feature",
357*d83cc019SAndroid Build Coastguard Worker };
358*d83cc019SAndroid Build Coastguard Worker 
359*d83cc019SAndroid Build Coastguard Worker static const char * const en_mmio_program[] = {
360*d83cc019SAndroid Build Coastguard Worker 	[0] = "Programming by HD-Audio Azalia",
361*d83cc019SAndroid Build Coastguard Worker 	[1] = "Programming by MMIO debug registers",
362*d83cc019SAndroid Build Coastguard Worker };
363*d83cc019SAndroid Build Coastguard Worker 
364*d83cc019SAndroid Build Coastguard Worker static const char * const sdi_operate_mode[] = {
365*d83cc019SAndroid Build Coastguard Worker 	[0] = "2T mode with sdi data held for 2 bit clocks",
366*d83cc019SAndroid Build Coastguard Worker 	[1] = "1T mode with sdi data held for 1 bit clock only",
367*d83cc019SAndroid Build Coastguard Worker };
368*d83cc019SAndroid Build Coastguard Worker 
369*d83cc019SAndroid Build Coastguard Worker static const char * const bclk_96mhz[] = {
370*d83cc019SAndroid Build Coastguard Worker 	[0] = "iDisplay audio link 96MHz bclk off",
371*d83cc019SAndroid Build Coastguard Worker 	[1] = "iDisplay audio link 96MHz bclk on",
372*d83cc019SAndroid Build Coastguard Worker };
373*d83cc019SAndroid Build Coastguard Worker 
374*d83cc019SAndroid Build Coastguard Worker static const char * const bclk_48mhz[] = {
375*d83cc019SAndroid Build Coastguard Worker 	[0] = "iDisplay audio link 48MHz bclk off",
376*d83cc019SAndroid Build Coastguard Worker 	[1] = "iDisplay audio link 48MHz bclk on",
377*d83cc019SAndroid Build Coastguard Worker };
378*d83cc019SAndroid Build Coastguard Worker 
379*d83cc019SAndroid Build Coastguard Worker static const char * const audio_dp_dip_status[] = {
380*d83cc019SAndroid Build Coastguard Worker 	[0] = "audfc dp fifo full",
381*d83cc019SAndroid Build Coastguard Worker 	[1] = "audfc dp fifo empty",
382*d83cc019SAndroid Build Coastguard Worker 	[2] = "audfc dp fifo overrun",
383*d83cc019SAndroid Build Coastguard Worker 	[3] = "audfc dip fifo full",
384*d83cc019SAndroid Build Coastguard Worker 	[4] = "audfc dp fifo empty cd",
385*d83cc019SAndroid Build Coastguard Worker 	[5] = "audfb dp fifo full",
386*d83cc019SAndroid Build Coastguard Worker 	[6] = "audfb dp fifo empty",
387*d83cc019SAndroid Build Coastguard Worker 	[7] = "audfb dp fifo overrun",
388*d83cc019SAndroid Build Coastguard Worker 	[8] = "audfb dip fifo full",
389*d83cc019SAndroid Build Coastguard Worker 	[9] = "audfb dp fifo empty cd",
390*d83cc019SAndroid Build Coastguard Worker 	[10] = "audfa dp fifo full",
391*d83cc019SAndroid Build Coastguard Worker 	[11] = "audfa dp fifo empty",
392*d83cc019SAndroid Build Coastguard Worker 	[12] = "audfa dp fifo overrun",
393*d83cc019SAndroid Build Coastguard Worker 	[13] = "audfa dip fifo full",
394*d83cc019SAndroid Build Coastguard Worker 	[14] = "audfa dp fifo empty cd",
395*d83cc019SAndroid Build Coastguard Worker 	[15] = "Pipe c audio overflow",
396*d83cc019SAndroid Build Coastguard Worker 	[16] = "Pipe b audio overflow",
397*d83cc019SAndroid Build Coastguard Worker 	[17] = "Pipe a audio overflow",
398*d83cc019SAndroid Build Coastguard Worker 	[31] = 0,
399*d83cc019SAndroid Build Coastguard Worker };
400*d83cc019SAndroid Build Coastguard Worker 
401*d83cc019SAndroid Build Coastguard Worker #undef TRANSCODER_A
402*d83cc019SAndroid Build Coastguard Worker #undef TRANSCODER_B
403*d83cc019SAndroid Build Coastguard Worker #undef TRANSCODER_C
404*d83cc019SAndroid Build Coastguard Worker 
405*d83cc019SAndroid Build Coastguard Worker enum {
406*d83cc019SAndroid Build Coastguard Worker 	TRANSCODER_A = 0,
407*d83cc019SAndroid Build Coastguard Worker 	TRANSCODER_B,
408*d83cc019SAndroid Build Coastguard Worker 	TRANSCODER_C,
409*d83cc019SAndroid Build Coastguard Worker };
410*d83cc019SAndroid Build Coastguard Worker 
411*d83cc019SAndroid Build Coastguard Worker enum {
412*d83cc019SAndroid Build Coastguard Worker 	PIPE_A = 0,
413*d83cc019SAndroid Build Coastguard Worker 	PIPE_B,
414*d83cc019SAndroid Build Coastguard Worker 	PIPE_C,
415*d83cc019SAndroid Build Coastguard Worker };
416*d83cc019SAndroid Build Coastguard Worker 
417*d83cc019SAndroid Build Coastguard Worker enum {
418*d83cc019SAndroid Build Coastguard Worker 	PORT_A = 0,
419*d83cc019SAndroid Build Coastguard Worker 	PORT_B,
420*d83cc019SAndroid Build Coastguard Worker 	PORT_C,
421*d83cc019SAndroid Build Coastguard Worker 	PORT_D,
422*d83cc019SAndroid Build Coastguard Worker 	PORT_E,
423*d83cc019SAndroid Build Coastguard Worker };
424*d83cc019SAndroid Build Coastguard Worker 
425*d83cc019SAndroid Build Coastguard Worker enum {
426*d83cc019SAndroid Build Coastguard Worker 	CONVERTER_1 = 0,
427*d83cc019SAndroid Build Coastguard Worker 	CONVERTER_2,
428*d83cc019SAndroid Build Coastguard Worker 	CONVERTER_3,
429*d83cc019SAndroid Build Coastguard Worker };
430*d83cc019SAndroid Build Coastguard Worker 
do_self_tests(void)431*d83cc019SAndroid Build Coastguard Worker static void do_self_tests(void)
432*d83cc019SAndroid Build Coastguard Worker {
433*d83cc019SAndroid Build Coastguard Worker 	if (REG_BIT(1, 0) != 1)
434*d83cc019SAndroid Build Coastguard Worker 		exit(1);
435*d83cc019SAndroid Build Coastguard Worker 	if (REG_BIT(0x80000000, 31) != 1)
436*d83cc019SAndroid Build Coastguard Worker 		exit(2);
437*d83cc019SAndroid Build Coastguard Worker 	if (REG_BITS(0xc0000000, 31, 30) != 3)
438*d83cc019SAndroid Build Coastguard Worker 		exit(3);
439*d83cc019SAndroid Build Coastguard Worker }
440*d83cc019SAndroid Build Coastguard Worker 
441*d83cc019SAndroid Build Coastguard Worker /*
442*d83cc019SAndroid Build Coastguard Worker  * EagleLake registers
443*d83cc019SAndroid Build Coastguard Worker  */
444*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG		0x62000
445*d83cc019SAndroid Build Coastguard Worker #define AUD_DEBUG		0x62010
446*d83cc019SAndroid Build Coastguard Worker #define AUD_VID_DID		0x62020
447*d83cc019SAndroid Build Coastguard Worker #define AUD_RID			0x62024
448*d83cc019SAndroid Build Coastguard Worker #define AUD_SUBN_CNT		0x62028
449*d83cc019SAndroid Build Coastguard Worker #define AUD_FUNC_GRP		0x62040
450*d83cc019SAndroid Build Coastguard Worker #define AUD_SUBN_CNT2		0x62044
451*d83cc019SAndroid Build Coastguard Worker #define AUD_GRP_CAP		0x62048
452*d83cc019SAndroid Build Coastguard Worker #define AUD_PWRST		0x6204c
453*d83cc019SAndroid Build Coastguard Worker #define AUD_SUPPWR		0x62050
454*d83cc019SAndroid Build Coastguard Worker #define AUD_SID			0x62054
455*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_CWCAP		0x62070
456*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_PCMSIZE		0x62074
457*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR		0x62078
458*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT	0x6207c
459*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_CH_STR		0x62080
460*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC	0x62084
461*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CAP		0x620a0
462*d83cc019SAndroid Build Coastguard Worker #define AUD_PIN_CAP		0x620a4
463*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLNG	0x620a8
464*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLST	0x620ac
465*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CNTR		0x620b0
466*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_UNSOLRESP	0x620b8
467*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST		0x620b4
468*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONFIG		0x620bc
469*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_STATUS	0x620d4
470*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID	0x6210c
471*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR	0x62118
472*d83cc019SAndroid Build Coastguard Worker #define AUD_CONV_CHCNT 		0x62120
473*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE		0x62128
474*d83cc019SAndroid Build Coastguard Worker 
475*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL		0x61170
476*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_ENABLE	(1<<31)
477*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_ENABLE_AVI	(1<<21)
478*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_ENABLE_VENDOR	(1<<22)
479*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_ENABLE_SPD	(1<<24)
480*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_BUF_AVI	(0<<19)
481*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_BUF_VENDOR	(1<<19)
482*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_BUF_SPD	(3<<19)
483*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_TRANS_ONCE	(0<<16)
484*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_TRANS_1	(1<<16)
485*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_TRANS_2	(2<<16)
486*d83cc019SAndroid Build Coastguard Worker 
487*d83cc019SAndroid Build Coastguard Worker #define AUDIO_HOTPLUG_EN	(1<<24)
488*d83cc019SAndroid Build Coastguard Worker 
489*d83cc019SAndroid Build Coastguard Worker 
dump_eaglelake(void)490*d83cc019SAndroid Build Coastguard Worker static void dump_eaglelake(void)
491*d83cc019SAndroid Build Coastguard Worker {
492*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
493*d83cc019SAndroid Build Coastguard Worker 	int i;
494*d83cc019SAndroid Build Coastguard Worker 
495*d83cc019SAndroid Build Coastguard Worker 	/* printf("%-18s   %8s  %s\n\n", "register name", "raw value", "description"); */
496*d83cc019SAndroid Build Coastguard Worker 
497*d83cc019SAndroid Build Coastguard Worker 	dump_reg(VIDEO_DIP_CTL,	"Video DIP Control");
498*d83cc019SAndroid Build Coastguard Worker 	dump_reg(SDVOB,		"Digital Display Port B Control Register");
499*d83cc019SAndroid Build Coastguard Worker 	dump_reg(SDVOC,		"Digital Display Port C Control Register");
500*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PORT_HOTPLUG_EN,	"Hot Plug Detect Enable");
501*d83cc019SAndroid Build Coastguard Worker 
502*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CONFIG,	"Audio Configuration");
503*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_DEBUG,		"Audio Debug");
504*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_VID_DID,	"Audio Vendor ID / Device ID");
505*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_RID,		"Audio Revision ID");
506*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_SUBN_CNT,	"Audio Subordinate Node Count");
507*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_FUNC_GRP,	"Audio Function Group Type");
508*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_SUBN_CNT2,	"Audio Subordinate Node Count");
509*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_GRP_CAP,	"Audio Function Group Capabilities");
510*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PWRST,		"Audio Power State");
511*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_SUPPWR,	"Audio Supported Power States");
512*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_SID,		"Audio Root Node Subsystem ID");
513*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_CWCAP,	"Audio Output Converter Widget Capabilities");
514*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_PCMSIZE,	"Audio PCM Size and Rates");
515*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_STR,	"Audio Stream Formats");
516*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_DIG_CNVT,	"Audio Digital Converter");
517*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_CH_STR,	"Audio Channel ID and Stream ID");
518*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_STR_DESC,	"Audio Stream Descriptor Format");
519*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CAP,	"Audio Pin Complex Widget Capabilities");
520*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PIN_CAP,	"Audio Pin Capabilities");
521*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CONNLNG,	"Audio Connection List Length");
522*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CONNLST,	"Audio Connection List Entry");
523*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CNTR,	"Audio Pin Widget Control");
524*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_UNSOLRESP, "Audio Unsolicited Response Enable");
525*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTL_ST,	"Audio Control State Register");
526*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CONFIG,	"Audio Configuration Default");
527*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_STATUS,	"Audio HDMI Status");
528*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_HDMIEDID, "Audio HDMI Data EDID Block");
529*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_INFOFR,	"Audio HDMI Widget Data Island Packet");
530*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CONV_CHCNT,	"Audio Converter Channel Count");
531*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CTS_ENABLE,	"Audio CTS Programming Enable");
532*d83cc019SAndroid Build Coastguard Worker 
533*d83cc019SAndroid Build Coastguard Worker 	printf("\nDetails:\n\n");
534*d83cc019SAndroid Build Coastguard Worker 
535*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_VID_DID);
536*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID vendor id\t\t\t0x%x\n", dword >> 16);
537*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID device id\t\t\t0x%x\n", dword & 0xffff);
538*d83cc019SAndroid Build Coastguard Worker 
539*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_RID);
540*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID major revision\t\t\t0x%lx\n", REG_BITS(dword, 23, 20));
541*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID minor revision\t\t\t0x%lx\n", REG_BITS(dword, 19, 16));
542*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID revision id\t\t\t0x%lx\n",    REG_BITS(dword, 15, 8));
543*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID stepping id\t\t\t0x%lx\n",    REG_BITS(dword, 7, 0));
544*d83cc019SAndroid Build Coastguard Worker 
545*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(SDVOB);
546*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOB enable\t\t\t\t%u\n",      !!(dword & SDVO_ENABLE));
547*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOB HDMI encoding\t\t\t%u\n", !!(dword & SDVO_ENCODING_HDMI));
548*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOB SDVO encoding\t\t\t%u\n", !!(dword & SDVO_ENCODING_SDVO));
549*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOB null packets\t\t\t%u\n",  !!(dword & SDVO_NULL_PACKETS_DURING_VSYNC));
550*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOB audio enabled\t\t\t%u\n", !!(dword & SDVO_AUDIO_ENABLE));
551*d83cc019SAndroid Build Coastguard Worker 
552*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(SDVOC);
553*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOC enable\t\t\t\t%u\n",      !!(dword & SDVO_ENABLE));
554*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOC HDMI encoding\t\t\t%u\n", !!(dword & SDVO_ENCODING_HDMI));
555*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOC SDVO encoding\t\t\t%u\n", !!(dword & SDVO_ENCODING_SDVO));
556*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOC null packets\t\t\t%u\n",  !!(dword & SDVO_NULL_PACKETS_DURING_VSYNC));
557*d83cc019SAndroid Build Coastguard Worker 	printf("SDVOC audio enabled\t\t\t%u\n", !!(dword & SDVO_AUDIO_ENABLE));
558*d83cc019SAndroid Build Coastguard Worker 
559*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(PORT_HOTPLUG_EN);
560*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN DisplayPort/HDMI port B\t%ld\n", REG_BIT(dword, 29)),
561*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN DisplayPort/HDMI port C\t%ld\n", REG_BIT(dword, 28)),
562*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN DisplayPort port D\t%ld\n",      REG_BIT(dword, 27)),
563*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN SDVOB\t\t\t%ld\n", REG_BIT(dword, 26)),
564*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN SDVOC\t\t\t%ld\n", REG_BIT(dword, 25)),
565*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN audio\t\t\t%ld\n", REG_BIT(dword, 24)),
566*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN TV\t\t\t%ld\n",    REG_BIT(dword, 23)),
567*d83cc019SAndroid Build Coastguard Worker 	printf("PORT_HOTPLUG_EN CRT\t\t\t%ld\n",   REG_BIT(dword, 9)),
568*d83cc019SAndroid Build Coastguard Worker 
569*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(VIDEO_DIP_CTL);
570*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL enable graphics DIP\t%ld\n",     REG_BIT(dword, 31)),
571*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL port select\t\t[0x%lx] %s\n",
572*d83cc019SAndroid Build Coastguard Worker 				REG_BITS(dword, 30, 29), dip_port[REG_BITS(dword, 30, 29)]);
573*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL DIP buffer trans active\t%lu\n", REG_BIT(dword, 28));
574*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL AVI DIP enabled\t\t%lu\n",       REG_BIT(dword, 21));
575*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL vendor DIP enabled\t%lu\n",      REG_BIT(dword, 22));
576*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL SPD DIP enabled\t\t%lu\n",       REG_BIT(dword, 24));
577*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL DIP buffer index\t\t[0x%lx] %s\n",
578*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 20, 19), video_dip_index[REG_BITS(dword, 20, 19)]);
579*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL DIP trans freq\t\t[0x%lx] %s\n",
580*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), video_dip_trans[REG_BITS(dword, 17, 16)]);
581*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL DIP buffer size\t\t%lu\n", REG_BITS(dword, 11, 8));
582*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL DIP address\t\t%lu\n", REG_BITS(dword, 3, 0));
583*d83cc019SAndroid Build Coastguard Worker 
584*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CONFIG);
585*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG pixel clock\t\t\t[0x%lx] %s\n", REG_BITS(dword, 19, 16),
586*d83cc019SAndroid Build Coastguard Worker 			OPNAME(pixel_clock, REG_BITS(dword, 19, 16)));
587*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG fabrication enabled\t\t%lu\n", REG_BITS(dword, 2, 2));
588*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG professional use allowed\t%lu\n", REG_BIT(dword, 1));
589*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG fuse enabled\t\t\t%lu\n", REG_BIT(dword, 0));
590*d83cc019SAndroid Build Coastguard Worker 
591*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_DEBUG);
592*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_DEBUG function reset\t\t%lu\n", REG_BIT(dword, 0));
593*d83cc019SAndroid Build Coastguard Worker 
594*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_SUBN_CNT);
595*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUBN_CNT starting node number\t0x%lx\n",  REG_BITS(dword, 23, 16));
596*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUBN_CNT total number of nodes\t0x%lx\n", REG_BITS(dword, 7, 0));
597*d83cc019SAndroid Build Coastguard Worker 
598*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_SUBN_CNT2);
599*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUBN_CNT2 starting node number\t0x%lx\n",  REG_BITS(dword, 24, 16));
600*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUBN_CNT2 total number of nodes\t0x%lx\n", REG_BITS(dword, 7, 0));
601*d83cc019SAndroid Build Coastguard Worker 
602*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_FUNC_GRP);
603*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_FUNC_GRP unsol capable\t\t%lu\n", REG_BIT(dword, 8));
604*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_FUNC_GRP node type\t\t\t0x%lx\n", REG_BITS(dword, 7, 0));
605*d83cc019SAndroid Build Coastguard Worker 
606*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_GRP_CAP);
607*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_GRP_CAP beep 0\t\t\t%lu\n",       REG_BIT(dword, 16));
608*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_GRP_CAP input delay\t\t\t%lu\n",  REG_BITS(dword, 11, 8));
609*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_GRP_CAP output delay\t\t%lu\n",   REG_BITS(dword, 3, 0));
610*d83cc019SAndroid Build Coastguard Worker 
611*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PWRST);
612*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST device power state\t\t%s\n",
613*d83cc019SAndroid Build Coastguard Worker 			power_state[REG_BITS(dword, 5, 4)]);
614*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST device power state setting\t%s\n",
615*d83cc019SAndroid Build Coastguard Worker 			power_state[REG_BITS(dword, 1, 0)]);
616*d83cc019SAndroid Build Coastguard Worker 
617*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_SUPPWR);
618*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUPPWR support D0\t\t\t%lu\n", REG_BIT(dword, 0));
619*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUPPWR support D1\t\t\t%lu\n", REG_BIT(dword, 1));
620*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUPPWR support D2\t\t\t%lu\n", REG_BIT(dword, 2));
621*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_SUPPWR support D3\t\t\t%lu\n", REG_BIT(dword, 3));
622*d83cc019SAndroid Build Coastguard Worker 
623*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_CWCAP);
624*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP widget type\t\t0x%lx\n",  REG_BITS(dword, 23, 20));
625*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP sample delay\t\t0x%lx\n", REG_BITS(dword, 19, 16));
626*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP channel count\t\t%lu\n",
627*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 15, 13) * 2 + REG_BIT(dword, 0) + 1);
628*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP L-R swap\t\t\t%lu\n",       REG_BIT(dword, 11));
629*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP power control\t\t%lu\n",    REG_BIT(dword, 10));
630*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP digital\t\t\t%lu\n",        REG_BIT(dword, 9));
631*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP conn list\t\t\t%lu\n",      REG_BIT(dword, 8));
632*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP unsol\t\t\t%lu\n",          REG_BIT(dword, 7));
633*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP mute\t\t\t%lu\n",           REG_BIT(dword, 5));
634*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP format override\t\t%lu\n",  REG_BIT(dword, 4));
635*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP amp param override\t%lu\n", REG_BIT(dword, 3));
636*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP out amp present\t\t%lu\n",  REG_BIT(dword, 2));
637*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CWCAP in amp present\t\t%lu\n",   REG_BIT(dword, 1));
638*d83cc019SAndroid Build Coastguard Worker 
639*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_DIG_CNVT);
640*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT SPDIF category\t\t0x%lx\n", REG_BITS(dword, 14, 8));
641*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT SPDIF level\t\t%lu\n",      REG_BIT(dword, 7));
642*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT professional\t\t%lu\n",     REG_BIT(dword, 6));
643*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT non PCM\t\t%lu\n",          REG_BIT(dword, 5));
644*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT copyright asserted\t%lu\n", REG_BIT(dword, 4));
645*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT filter preemphasis\t%lu\n", REG_BIT(dword, 3));
646*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT validity config\t%lu\n",    REG_BIT(dword, 2));
647*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT validity flag\t\t%lu\n",    REG_BIT(dword, 1));
648*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT digital enable\t\t%lu\n",   REG_BIT(dword, 0));
649*d83cc019SAndroid Build Coastguard Worker 
650*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_CH_STR);
651*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CH_STR stream id\t\t0x%lx\n",        REG_BITS(dword, 7, 4));
652*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CH_STR lowest channel\t\t%lu\n",     REG_BITS(dword, 3, 0));
653*d83cc019SAndroid Build Coastguard Worker 
654*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_STR_DESC);
655*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC stream channels\t%lu\n",    REG_BITS(dword, 3, 0) + 1);
656*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC Bits per Sample\t[%#lx] %s\n",
657*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 6, 4), OPNAME(bits_per_sample, REG_BITS(dword, 6, 4)));
658*d83cc019SAndroid Build Coastguard Worker 
659*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PINW_CAP);
660*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP widget type\t\t0x%lx\n",        REG_BITS(dword, 23, 20));
661*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP sample delay\t\t0x%lx\n",       REG_BITS(dword, 19, 16));
662*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP channel count\t\t%lu\n",
663*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 15, 13) * 2 + REG_BIT(dword, 0) + 1);
664*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP HDCP\t\t\t%lu\n",               REG_BIT(dword, 12));
665*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP L-R swap\t\t\t%lu\n",           REG_BIT(dword, 11));
666*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP power control\t\t%lu\n",        REG_BIT(dword, 10));
667*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP digital\t\t\t%lu\n",            REG_BIT(dword, 9));
668*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP conn list\t\t\t%lu\n",          REG_BIT(dword, 8));
669*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP unsol\t\t\t%lu\n",              REG_BIT(dword, 7));
670*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP mute\t\t\t%lu\n",               REG_BIT(dword, 5));
671*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP format override\t\t%lu\n",      REG_BIT(dword, 4));
672*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP amp param override\t\t%lu\n",   REG_BIT(dword, 3));
673*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP out amp present\t\t%lu\n",      REG_BIT(dword, 2));
674*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CAP in amp present\t\t%lu\n",       REG_BIT(dword, 1));
675*d83cc019SAndroid Build Coastguard Worker 
676*d83cc019SAndroid Build Coastguard Worker 
677*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PIN_CAP);
678*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_CAP EAPD\t\t\t%lu\n",          REG_BIT(dword, 16));
679*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_CAP HDMI\t\t\t%lu\n",          REG_BIT(dword, 7));
680*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_CAP output\t\t\t%lu\n",        REG_BIT(dword, 4));
681*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_CAP presence detect\t\t%lu\n", REG_BIT(dword, 2));
682*d83cc019SAndroid Build Coastguard Worker 
683*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PINW_CNTR);
684*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CNTR mute status\t\t%lu\n",     REG_BIT(dword, 8));
685*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CNTR out enable\t\t%lu\n",      REG_BIT(dword, 6));
686*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CNTR amp mute status\t\t%lu\n", REG_BIT(dword, 8));
687*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CNTR amp mute status\t\t%lu\n", REG_BIT(dword, 8));
688*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CNTR stream type\t\t[0x%lx] %s\n",
689*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 2, 0),
690*d83cc019SAndroid Build Coastguard Worker 			OPNAME(stream_type, REG_BITS(dword, 2, 0)));
691*d83cc019SAndroid Build Coastguard Worker 
692*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PINW_UNSOLRESP);
693*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_UNSOLRESP enable unsol resp\t%lu\n", REG_BIT(dword, 31));
694*d83cc019SAndroid Build Coastguard Worker 
695*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST);
696*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP audio enabled\t\t%lu\n", REG_BIT(dword, 21));
697*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP ACP enabled\t\t%lu\n",   REG_BIT(dword, 22));
698*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP ISRCx enabled\t\t%lu\n", REG_BIT(dword, 23));
699*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP port select\t\t[0x%lx] %s\n",
700*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), dip_port[REG_BITS(dword, 30, 29)]);
701*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP buffer index\t\t[0x%lx] %s\n",
702*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 20, 18), OPNAME(dip_index, REG_BITS(dword, 20, 18)));
703*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP trans freq\t\t[0x%lx] %s\n",
704*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), dip_trans[REG_BITS(dword, 17, 16)]);
705*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST DIP address\t\t\t%lu\n", REG_BITS(dword, 3, 0));
706*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST CP ready\t\t\t%lu\n",    REG_BIT(dword, 15));
707*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST ELD valid\t\t\t%lu\n",   REG_BIT(dword, 14));
708*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST ELD ack\t\t\t%lu\n",     REG_BIT(dword, 4));
709*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST ELD bufsize\t\t\t%lu\n", REG_BITS(dword, 13, 9));
710*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST ELD address\t\t\t%lu\n", REG_BITS(dword, 8, 5));
711*d83cc019SAndroid Build Coastguard Worker 
712*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_HDMIW_STATUS);
713*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS CDCLK/DOTCLK underrun\t%lu\n", REG_BIT(dword, 31));
714*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS CDCLK/DOTCLK overrun\t%lu\n",  REG_BIT(dword, 30));
715*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS BCLK/CDCLK underrun\t%lu\n",   REG_BIT(dword, 29));
716*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS BCLK/CDCLK overrun\t%lu\n",    REG_BIT(dword, 28));
717*d83cc019SAndroid Build Coastguard Worker 
718*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CONV_CHCNT);
719*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONV_CHCNT HDMI HBR enabled\t\t%lu\n", REG_BITS(dword, 15, 14));
720*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONV_CHCNT HDMI channel count\t%lu\n", REG_BITS(dword, 11, 8) + 1);
721*d83cc019SAndroid Build Coastguard Worker 
722*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONV_CHCNT HDMI channel mapping:\n");
723*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++) {
724*d83cc019SAndroid Build Coastguard Worker 		OUTREG(AUD_CONV_CHCNT, i);
725*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(AUD_CONV_CHCNT);
726*d83cc019SAndroid Build Coastguard Worker 		printf("\t\t\t\t\t[0x%x] %u => %lu\n", dword, i, REG_BITS(dword, 7, 4));
727*d83cc019SAndroid Build Coastguard Worker 	}
728*d83cc019SAndroid Build Coastguard Worker 
729*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_HDMIEDID HDMI ELD:\n\t");
730*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST);
731*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(8, 5);
732*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST, dword);
733*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < REG_BITS(dword, 14, 10) / 4; i++)
734*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_HDMIEDID)));
735*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
736*d83cc019SAndroid Build Coastguard Worker 
737*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_INFOFR HDMI audio Infoframe:\n\t");
738*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST);
739*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(20, 18);
740*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(3, 0);
741*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST, dword);
742*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++)
743*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_INFOFR)));
744*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
745*d83cc019SAndroid Build Coastguard Worker }
746*d83cc019SAndroid Build Coastguard Worker 
747*d83cc019SAndroid Build Coastguard Worker #undef AUD_RID
748*d83cc019SAndroid Build Coastguard Worker #undef AUD_VID_DID
749*d83cc019SAndroid Build Coastguard Worker #undef AUD_PWRST
750*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_CH_STR
751*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_STATUS
752*d83cc019SAndroid Build Coastguard Worker 
753*d83cc019SAndroid Build Coastguard Worker /*
754*d83cc019SAndroid Build Coastguard Worker  * CougarPoint registers
755*d83cc019SAndroid Build Coastguard Worker  */
756*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_B              0xE4100
757*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_C              0xE4200
758*d83cc019SAndroid Build Coastguard Worker #define DP_AUX_CTL_C          0xE4210
759*d83cc019SAndroid Build Coastguard Worker #define DP_AUX_TST_C          0xE4228
760*d83cc019SAndroid Build Coastguard Worker #define SPORT_DDI_CRC_C       0xE4250
761*d83cc019SAndroid Build Coastguard Worker #define SPORT_DDI_CRC_R       0xE4264
762*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_D              0xE4300
763*d83cc019SAndroid Build Coastguard Worker #define DP_AUX_CTL_D          0xE4310
764*d83cc019SAndroid Build Coastguard Worker #define DP_AUX_TST_D          0xE4328
765*d83cc019SAndroid Build Coastguard Worker #define SPORT_DDI_CRC_CTL_D   0xE4350
766*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_A          0xE5000
767*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_A       0xE5010
768*d83cc019SAndroid Build Coastguard Worker #define AUD_VID_DID           0xE5020
769*d83cc019SAndroid Build Coastguard Worker #define AUD_RID               0xE5024
770*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_A      0xE5028
771*d83cc019SAndroid Build Coastguard Worker #define AUD_PWRST             0xE504C
772*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_A  0xE5050
773*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_A    0xE5054
774*d83cc019SAndroid Build Coastguard Worker #define AUD_PORT_EN_HD_CFG    0xE507C
775*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_A    0xE5080
776*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_A    0xE5084
777*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_CH_STR        0xE5088
778*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLNG_LIST 0xE50A8
779*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLNG_SEL  0xE50AC
780*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_A         0xE50B4
781*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTRL_ST2         0xE50C0
782*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTRL_ST3         0xE50C4
783*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_STATUS      0xE50D4
784*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_B          0xE5100
785*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_B       0xE5110
786*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_B      0xE5128
787*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_B  0xE5150
788*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_B    0xE5154
789*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_B    0xE5180
790*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_B    0xE5184
791*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_B         0xE51B4
792*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_C          0xE5200
793*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_C       0xE5210
794*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_C      0xE5228
795*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_C  0xE5250
796*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_C    0xE5254
797*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_C    0xE5280
798*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_C    0xE5284
799*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_C         0xE52B4
800*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_D          0xE5300
801*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_D       0xE5310
802*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_D      0xE5328
803*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_D  0xE5350
804*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_D    0xE5354
805*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_D    0xE5380
806*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_D    0xE5384
807*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_D         0xE53B4
808*d83cc019SAndroid Build Coastguard Worker 
809*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_A		0xE0200
810*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_B		0xE1200
811*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_C		0xE2200
812*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_D		0xE3200
813*d83cc019SAndroid Build Coastguard Worker 
814*d83cc019SAndroid Build Coastguard Worker 
dump_cpt(void)815*d83cc019SAndroid Build Coastguard Worker static void dump_cpt(void)
816*d83cc019SAndroid Build Coastguard Worker {
817*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
818*d83cc019SAndroid Build Coastguard Worker 	int i;
819*d83cc019SAndroid Build Coastguard Worker 
820*d83cc019SAndroid Build Coastguard Worker 	dump_reg(HDMIB,			"sDVO/HDMI Port B Control");
821*d83cc019SAndroid Build Coastguard Worker 	dump_reg(HDMIC,			"HDMI Port C Control");
822*d83cc019SAndroid Build Coastguard Worker 	dump_reg(HDMID,			"HDMI Port D Control");
823*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_CTL_B,			"DisplayPort B Control");
824*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_CTL_C,			"DisplayPort C Control");
825*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_CTL_D,			"DisplayPort D Control");
826*d83cc019SAndroid Build Coastguard Worker 	dump_reg(TRANS_DP_CTL_A,		"Transcoder A DisplayPort Control");
827*d83cc019SAndroid Build Coastguard Worker 	dump_reg(TRANS_DP_CTL_B,		"Transcoder B DisplayPort Control");
828*d83cc019SAndroid Build Coastguard Worker 	dump_reg(TRANS_DP_CTL_C,		"Transcoder C DisplayPort Control");
829*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CONFIG_A,		"Audio Configuration - Transcoder A");
830*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CONFIG_B,		"Audio Configuration - Transcoder B");
831*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CONFIG_C,		"Audio Configuration - Transcoder C");
832*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CTS_ENABLE_A,		"Audio CTS Programming Enable - Transcoder A");
833*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CTS_ENABLE_B,		"Audio CTS Programming Enable - Transcoder B");
834*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CTS_ENABLE_C,		"Audio CTS Programming Enable - Transcoder C");
835*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_MISC_CTRL_A,		"Audio MISC Control for Transcoder A");
836*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_MISC_CTRL_B,		"Audio MISC Control for Transcoder B");
837*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_MISC_CTRL_C,		"Audio MISC Control for Transcoder C");
838*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_VID_DID,		"Audio Vendor ID / Device ID");
839*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_RID,			"Audio Revision ID");
840*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PWRST,			"Audio Power State (Function Group, Convertor, Pin Widget)");
841*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PORT_EN_HD_CFG,	"Audio Port Enable HDAudio Config");
842*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_DIG_CNVT_A,	"Audio Digital Converter - Conv A");
843*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_DIG_CNVT_B,	"Audio Digital Converter - Conv B");
844*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_DIG_CNVT_C,	"Audio Digital Converter - Conv C");
845*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_CH_STR,		"Audio Channel ID and Stream ID");
846*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_STR_DESC_A,	"Audio Stream Descriptor Format - Conv A");
847*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_STR_DESC_B,	"Audio Stream Descriptor Format - Conv B");
848*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_OUT_STR_DESC_C,	"Audio Stream Descriptor Format - Conv C");
849*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CONNLNG_LIST,	"Audio Connection List");
850*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_PINW_CONNLNG_SEL,	"Audio Connection Select");
851*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTL_ST_A,		"Audio Control State Register - Transcoder A");
852*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTL_ST_B,		"Audio Control State Register - Transcoder B");
853*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTL_ST_C,		"Audio Control State Register - Transcoder C");
854*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTRL_ST2,		"Audio Control State 2");
855*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_CNTRL_ST3,		"Audio Control State 3");
856*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_STATUS,		"Audio HDMI Status");
857*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_HDMIEDID_A,	"HDMI Data EDID Block - Transcoder A");
858*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_HDMIEDID_B,	"HDMI Data EDID Block - Transcoder B");
859*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_HDMIEDID_C,	"HDMI Data EDID Block - Transcoder C");
860*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_INFOFR_A,	"Audio Widget Data Island Packet - Transcoder A");
861*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_INFOFR_B,	"Audio Widget Data Island Packet - Transcoder B");
862*d83cc019SAndroid Build Coastguard Worker 	dump_reg(AUD_HDMIW_INFOFR_C,	"Audio Widget Data Island Packet - Transcoder C");
863*d83cc019SAndroid Build Coastguard Worker 
864*d83cc019SAndroid Build Coastguard Worker 	printf("\nDetails:\n\n");
865*d83cc019SAndroid Build Coastguard Worker 
866*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(VIDEO_DIP_CTL_A);
867*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Enable_Graphics_DIP\t\t\t%ld\n",     REG_BIT(dword, 31)),
868*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A GCP_DIP_enable\t\t\t\t%ld\n",     REG_BIT(dword, 25)),
869*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_type_enable AVI\t\t%lu\n",       REG_BIT(dword, 21));
870*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_type_enable Vendor\t\t%lu\n",      REG_BIT(dword, 22));
871*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_type_enable Gamut\t\t%lu\n",       REG_BIT(dword, 23));
872*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_type_enable Source \t\t%lu\n",       REG_BIT(dword, 24));
873*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_buffer_index\t\t\t[0x%lx] %s\n",
874*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 20, 19), video_dip_index[REG_BITS(dword, 20, 19)]);
875*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_frequency\t\t\t[0x%lx] %s\n",
876*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), video_dip_trans[REG_BITS(dword, 17, 16)]);
877*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_buffer_size\t\t\t%lu\n", REG_BITS(dword, 11, 8));
878*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_A Video_DIP_access_address\t\t%lu\n", REG_BITS(dword, 3, 0));
879*d83cc019SAndroid Build Coastguard Worker 
880*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(VIDEO_DIP_CTL_B);
881*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Enable_Graphics_DIP\t\t\t%ld\n",     REG_BIT(dword, 31)),
882*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B GCP_DIP_enable\t\t\t\t%ld\n",     REG_BIT(dword, 25)),
883*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_type_enable AVI\t\t%lu\n",       REG_BIT(dword, 21));
884*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_type_enable Vendor\t\t%lu\n",      REG_BIT(dword, 22));
885*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_type_enable Gamut\t\t%lu\n",       REG_BIT(dword, 23));
886*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_type_enable Source \t\t%lu\n",       REG_BIT(dword, 24));
887*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_buffer_index\t\t\t[0x%lx] %s\n",
888*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 20, 19), video_dip_index[REG_BITS(dword, 20, 19)]);
889*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_frequency\t\t\t[0x%lx] %s\n",
890*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), video_dip_trans[REG_BITS(dword, 17, 16)]);
891*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_buffer_size\t\t\t%lu\n", REG_BITS(dword, 11, 8));
892*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_B Video_DIP_access_address\t\t%lu\n", REG_BITS(dword, 3, 0));
893*d83cc019SAndroid Build Coastguard Worker 
894*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(VIDEO_DIP_CTL_C);
895*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Enable_Graphics_DIP\t\t\t%ld\n",     REG_BIT(dword, 31)),
896*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C GCP_DIP_enable\t\t\t\t%ld\n",     REG_BIT(dword, 25)),
897*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_type_enable AVI\t\t%lu\n",       REG_BIT(dword, 21));
898*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_type_enable Vendor\t\t%lu\n",      REG_BIT(dword, 22));
899*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_type_enable Gamut\t\t%lu\n",       REG_BIT(dword, 23));
900*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_type_enable Source \t\t%lu\n",       REG_BIT(dword, 24));
901*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_buffer_index\t\t\t[0x%lx] %s\n",
902*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 20, 19), video_dip_index[REG_BITS(dword, 20, 19)]);
903*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_frequency\t\t\t[0x%lx] %s\n",
904*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), video_dip_trans[REG_BITS(dword, 17, 16)]);
905*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_buffer_size\t\t\t%lu\n", REG_BITS(dword, 11, 8));
906*d83cc019SAndroid Build Coastguard Worker 	printf("VIDEO_DIP_CTL_C Video_DIP_access_address\t\t%lu\n", REG_BITS(dword, 3, 0));
907*d83cc019SAndroid Build Coastguard Worker 
908*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_VID_DID);
909*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID vendor id\t\t\t\t\t0x%x\n", dword >> 16);
910*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID device id\t\t\t\t\t0x%x\n", dword & 0xffff);
911*d83cc019SAndroid Build Coastguard Worker 
912*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_RID);
913*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Major_Revision\t\t\t\t\t0x%lx\n", REG_BITS(dword, 23, 20));
914*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Minor_Revision\t\t\t\t\t0x%lx\n", REG_BITS(dword, 19, 16));
915*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Revision_Id\t\t\t\t\t0x%lx\n",    REG_BITS(dword, 15, 8));
916*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Stepping_Id\t\t\t\t\t0x%lx\n",    REG_BITS(dword, 7, 0));
917*d83cc019SAndroid Build Coastguard Worker 
918*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(HDMIB);
919*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB Port_Enable\t\t\t\t\t%u\n",      !!(dword & SDVO_ENABLE));
920*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB Transcoder_Select\t\t\t\t\t[0x%lx] %s\n",
921*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), transcoder_select[REG_BITS(dword, 30, 29)]);
922*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB sDVO_Border_Enable\t\t\t\t%lu\n", REG_BIT(dword, 7));
923*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB HDCP_Port_Select\t\t\t\t\t%lu\n", REG_BIT(dword, 5));
924*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB SDVO_HPD_Interrupt_Enable\t\t\t\t%lu\n", REG_BIT(dword, 23));
925*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
926*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB Encoding\t\t\t\t\t\t[0x%lx] %s\n",
927*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 11, 10), sdvo_hdmi_encoding[REG_BITS(dword, 11, 10)]);
928*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB HDMI_or_DVI_Select\t\t\t\t%s\n", REG_BIT(dword, 9) ? "HDMI" : "DVI");
929*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIB Audio_Output_Enable\t\t\t\t%u\n", !!(dword & SDVO_AUDIO_ENABLE));
930*d83cc019SAndroid Build Coastguard Worker 
931*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(HDMIC);
932*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC Port_Enable\t\t\t\t\t%u\n",      !!(dword & SDVO_ENABLE));
933*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC Transcoder_Select\t\t\t\t\t[0x%lx] %s\n",
934*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), transcoder_select[REG_BITS(dword, 30, 29)]);
935*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC sDVO_Border_Enable\t\t\t\t%lu\n", REG_BIT(dword, 7));
936*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC HDCP_Port_Select\t\t\t\t\t%lu\n", REG_BIT(dword, 5));
937*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC SDVO_HPD_Interrupt_Enable\t\t\t\t%lu\n", REG_BIT(dword, 23));
938*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
939*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC Encoding\t\t\t\t\t\t[0x%lx] %s\n",
940*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 11, 10), sdvo_hdmi_encoding[REG_BITS(dword, 11, 10)]);
941*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC HDMI_or_DVI_Select\t\t\t\t%s\n", REG_BIT(dword, 9) ? "HDMI" : "DVI");
942*d83cc019SAndroid Build Coastguard Worker 	printf("HDMIC Audio_Output_Enable\t\t\t\t%u\n", !!(dword & SDVO_AUDIO_ENABLE));
943*d83cc019SAndroid Build Coastguard Worker 
944*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(HDMID);
945*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID Port_Enable\t\t\t\t\t%u\n",      !!(dword & SDVO_ENABLE));
946*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID Transcoder_Select\t\t\t\t\t[0x%lx] %s\n",
947*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), transcoder_select[REG_BITS(dword, 30, 29)]);
948*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID sDVO_Border_Enable\t\t\t\t%lu\n", REG_BIT(dword, 7));
949*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID HDCP_Port_Select\t\t\t\t\t%lu\n", REG_BIT(dword, 5));
950*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID SDVO_HPD_Interrupt_Enable\t\t\t\t%lu\n", REG_BIT(dword, 23));
951*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
952*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID Encoding\t\t\t\t\t\t[0x%lx] %s\n",
953*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 11, 10), sdvo_hdmi_encoding[REG_BITS(dword, 11, 10)]);
954*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID HDMI_or_DVI_Select\t\t\t\t%s\n", REG_BIT(dword, 9) ? "HDMI" : "DVI");
955*d83cc019SAndroid Build Coastguard Worker 	printf("HDMID Audio_Output_Enable\t\t\t\t%u\n", !!(dword & SDVO_AUDIO_ENABLE));
956*d83cc019SAndroid Build Coastguard Worker 
957*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(DP_CTL_B);
958*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_B DisplayPort_Enable\t\t\t\t%lu\n", REG_BIT(dword, 31));
959*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_B Port_Width_Selection\t\t\t\t[0x%lx] %s\n",
960*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 21, 19), dp_port_width[REG_BITS(dword, 21, 19)]);
961*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_B Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
962*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_B HDCP_Port_Select\t\t\t\t%lu\n", REG_BIT(dword, 5));
963*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_B Audio_Output_Enable\t\t\t\t%lu\n", REG_BIT(dword, 6));
964*d83cc019SAndroid Build Coastguard Worker 
965*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(DP_CTL_C);
966*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_C DisplayPort_Enable\t\t\t\t%lu\n", REG_BIT(dword, 31));
967*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_C Port_Width_Selection\t\t\t\t[0x%lx] %s\n",
968*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 21, 19), dp_port_width[REG_BITS(dword, 21, 19)]);
969*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_C Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
970*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_C HDCP_Port_Select\t\t\t\t%lu\n", REG_BIT(dword, 5));
971*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_C Audio_Output_Enable\t\t\t\t%lu\n", REG_BIT(dword, 6));
972*d83cc019SAndroid Build Coastguard Worker 
973*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(DP_CTL_D);
974*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_D DisplayPort_Enable\t\t\t\t%lu\n", REG_BIT(dword, 31));
975*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_D Port_Width_Selection\t\t\t\t[0x%lx] %s\n",
976*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 21, 19), dp_port_width[REG_BITS(dword, 21, 19)]);
977*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_D Port_Detected\t\t\t\t\t%lu\n", REG_BIT(dword, 2));
978*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_D HDCP_Port_Select\t\t\t\t%lu\n", REG_BIT(dword, 5));
979*d83cc019SAndroid Build Coastguard Worker 	printf("DP_CTL_D Audio_Output_Enable\t\t\t\t%lu\n", REG_BIT(dword, 6));
980*d83cc019SAndroid Build Coastguard Worker 
981*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CONFIG_A);
982*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  N_index_value\t\t\t\t[0x%lx] %s\n", REG_BIT(dword, 29),
983*d83cc019SAndroid Build Coastguard Worker 			n_index_value[REG_BIT(dword, 29)]);
984*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  N_programming_enable\t\t\t%lu\n", REG_BIT(dword, 28));
985*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  Upper_N_value\t\t\t\t0x%02lx\n", REG_BITS(dword, 27, 20));
986*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  Lower_N_value\t\t\t\t0x%03lx\n", REG_BITS(dword, 15, 4));
987*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  Pixel_Clock_HDMI\t\t\t\t[0x%lx] %s\n", REG_BITS(dword, 19, 16),
988*d83cc019SAndroid Build Coastguard Worker 			OPNAME(pixel_clock, REG_BITS(dword, 19, 16)));
989*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_A  Disable_NCTS\t\t\t\t%lu\n", REG_BIT(dword, 3));
990*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CONFIG_B);
991*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  N_index_value\t\t\t\t[0x%lx] %s\n", REG_BIT(dword, 29),
992*d83cc019SAndroid Build Coastguard Worker 			n_index_value[REG_BIT(dword, 29)]);
993*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  N_programming_enable\t\t\t%lu\n", REG_BIT(dword, 28));
994*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  Upper_N_value\t\t\t\t0x%02lx\n", REG_BITS(dword, 27, 20));
995*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  Lower_N_value\t\t\t\t0x%03lx\n", REG_BITS(dword, 15, 4));
996*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  Pixel_Clock_HDMI\t\t\t\t[0x%lx] %s\n", REG_BITS(dword, 19, 16),
997*d83cc019SAndroid Build Coastguard Worker 			OPNAME(pixel_clock, REG_BITS(dword, 19, 16)));
998*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_B  Disable_NCTS\t\t\t\t%lu\n", REG_BIT(dword, 3));
999*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CONFIG_C);
1000*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  N_index_value\t\t\t\t[0x%lx] %s\n", REG_BIT(dword, 29),
1001*d83cc019SAndroid Build Coastguard Worker 			n_index_value[REG_BIT(dword, 29)]);
1002*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  N_programming_enable\t\t\t%lu\n", REG_BIT(dword, 28));
1003*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  Upper_N_value\t\t\t\t0x%02lx\n", REG_BITS(dword, 27, 20));
1004*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  Lower_N_value\t\t\t\t0x%03lx\n", REG_BITS(dword, 15, 4));
1005*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  Pixel_Clock_HDMI\t\t\t\t[0x%lx] %s\n", REG_BITS(dword, 19, 16),
1006*d83cc019SAndroid Build Coastguard Worker 			OPNAME(pixel_clock, REG_BITS(dword, 19, 16)));
1007*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CONFIG_C  Disable_NCTS\t\t\t\t%lu\n", REG_BIT(dword, 3));
1008*d83cc019SAndroid Build Coastguard Worker 
1009*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CTS_ENABLE_A);
1010*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_A  Enable_CTS_or_M_programming\t\t%lu\n", REG_BIT(dword, 20));
1011*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_A  CTS_M value Index\t\t\t%s\n", REG_BIT(dword, 21) ? "CTS" : "M");
1012*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_A  CTS_programming\t\t\t%#lx\n", REG_BITS(dword, 19, 0));
1013*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CTS_ENABLE_B);
1014*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_B  Enable_CTS_or_M_programming\t\t%lu\n", REG_BIT(dword, 20));
1015*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_B  CTS_M value Index\t\t\t%s\n", REG_BIT(dword, 21) ? "CTS" : "M");
1016*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_B  CTS_programming\t\t\t%#lx\n", REG_BITS(dword, 19, 0));
1017*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CTS_ENABLE_C);
1018*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_C  Enable_CTS_or_M_programming\t\t%lu\n", REG_BIT(dword, 20));
1019*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_C  CTS_M value Index\t\t\t%s\n", REG_BIT(dword, 21) ? "CTS" : "M");
1020*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CTS_ENABLE_C  CTS_programming\t\t\t%#lx\n", REG_BITS(dword, 19, 0));
1021*d83cc019SAndroid Build Coastguard Worker 
1022*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_MISC_CTRL_A);
1023*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_A  Sample_Fabrication_EN_bit\t\t%lu\n",	REG_BIT(dword, 2));
1024*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_A  Sample_present_Disable\t\t\t%lu\n",	REG_BIT(dword, 8));
1025*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_A  Output_Delay\t\t\t\t%lu\n",		REG_BITS(dword, 7, 4));
1026*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_A  Pro_Allowed\t\t\t\t%lu\n",			REG_BIT(dword, 1));
1027*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_MISC_CTRL_B);
1028*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_B  Sample_Fabrication_EN_bit\t\t%lu\n",	REG_BIT(dword, 2));
1029*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_B  Sample_present_Disable\t\t\t%lu\n",	REG_BIT(dword, 8));
1030*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_B  Output_Delay\t\t\t\t%lu\n",		REG_BITS(dword, 7, 4));
1031*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_B  Pro_Allowed\t\t\t\t%lu\n",			REG_BIT(dword, 1));
1032*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_MISC_CTRL_C);
1033*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_C  Sample_Fabrication_EN_bit\t\t%lu\n",	REG_BIT(dword, 2));
1034*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_C  Sample_present_Disable\t\t\t%lu\n",	REG_BIT(dword, 8));
1035*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_C  Output_Delay\t\t\t\t%lu\n",		REG_BITS(dword, 7, 4));
1036*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_MISC_CTRL_C  Pro_Allowed\t\t\t\t%lu\n",			REG_BIT(dword, 1));
1037*d83cc019SAndroid Build Coastguard Worker 
1038*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PWRST);
1039*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Curr                  \t%s\n", power_state[REG_BITS(dword, 27, 26)]);
1040*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Set                   \t%s\n", power_state[REG_BITS(dword, 25, 24)]);
1041*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvertorA_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 15, 14)]);
1042*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvertorA_Widget_Power_State_Requsted   \t%s\n", power_state[REG_BITS(dword, 13, 12)]);
1043*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvertorB_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 19, 18)]);
1044*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvertorB_Widget_Power_State_Requested  \t%s\n", power_state[REG_BITS(dword, 17, 16)]);
1045*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvC_Widget_PwrSt_Curr                  \t%s\n", power_state[REG_BITS(dword, 23, 22)]);
1046*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  ConvC_Widget_PwrSt_Req                   \t%s\n", power_state[REG_BITS(dword, 21, 20)]);
1047*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinB_Widget_Power_State_Current          \t%s\n", power_state[REG_BITS(dword,  3,  2)]);
1048*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinB_Widget_Power_State_Set              \t%s\n", power_state[REG_BITS(dword,  1,  0)]);
1049*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinC_Widget_Power_State_Current          \t%s\n", power_state[REG_BITS(dword,  7,  6)]);
1050*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinC_Widget_Power_State_Set              \t%s\n", power_state[REG_BITS(dword,  5,  4)]);
1051*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinD_Widget_Power_State_Current          \t%s\n", power_state[REG_BITS(dword, 11, 10)]);
1052*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinD_Widget_Power_State_Set              \t%s\n", power_state[REG_BITS(dword,  9,  8)]);
1053*d83cc019SAndroid Build Coastguard Worker 
1054*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PORT_EN_HD_CFG);
1055*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Convertor_A_Digen\t\t\t%lu\n",	REG_BIT(dword, 0));
1056*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Convertor_B_Digen\t\t\t%lu\n",	REG_BIT(dword, 1));
1057*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Convertor_C_Digen\t\t\t%lu\n",	REG_BIT(dword, 2));
1058*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  ConvertorA_Stream_ID\t\t%lu\n",	REG_BITS(dword,  7, 4));
1059*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  ConvertorB_Stream_ID\t\t%lu\n",	REG_BITS(dword, 11, 8));
1060*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  ConvertorC_Stream_ID\t\t%lu\n",	REG_BITS(dword, 15, 12));
1061*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_B_Out_Enable\t\t\t%lu\n",	REG_BIT(dword, 16));
1062*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_C_Out_Enable\t\t\t%lu\n",	REG_BIT(dword, 17));
1063*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_D_Out_Enable\t\t\t%lu\n",	REG_BIT(dword, 18));
1064*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_B_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 20));
1065*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_C_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 21));
1066*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PORT_EN_HD_CFG  Port_D_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 22));
1067*d83cc019SAndroid Build Coastguard Worker 
1068*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_DIG_CNVT_A);
1069*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  V\t\t\t\t\t%lu\n",		REG_BIT(dword, 1));
1070*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  VCFG\t\t\t\t%lu\n",		REG_BIT(dword, 2));
1071*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  PRE\t\t\t\t\t%lu\n",		REG_BIT(dword, 3));
1072*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  Copy\t\t\t\t%lu\n",		REG_BIT(dword, 4));
1073*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  NonAudio\t\t\t\t%lu\n",		REG_BIT(dword, 5));
1074*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  PRO\t\t\t\t\t%lu\n",		REG_BIT(dword, 6));
1075*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  Level\t\t\t\t%lu\n",		REG_BIT(dword, 7));
1076*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  Category_Code\t\t\t%lu\n",	REG_BITS(dword, 14, 8));
1077*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  Lowest_Channel_Number\t\t%lu\n", REG_BITS(dword, 19, 16));
1078*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_A  Stream_ID\t\t\t\t%lu\n",	REG_BITS(dword, 23, 20));
1079*d83cc019SAndroid Build Coastguard Worker 
1080*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_DIG_CNVT_B);
1081*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  V\t\t\t\t\t%lu\n",		REG_BIT(dword, 1));
1082*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  VCFG\t\t\t\t%lu\n",		REG_BIT(dword, 2));
1083*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  PRE\t\t\t\t\t%lu\n",		REG_BIT(dword, 3));
1084*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  Copy\t\t\t\t%lu\n",		REG_BIT(dword, 4));
1085*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  NonAudio\t\t\t\t%lu\n",		REG_BIT(dword, 5));
1086*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  PRO\t\t\t\t\t%lu\n",		REG_BIT(dword, 6));
1087*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  Level\t\t\t\t%lu\n",		REG_BIT(dword, 7));
1088*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  Category_Code\t\t\t%lu\n",	REG_BITS(dword, 14, 8));
1089*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  Lowest_Channel_Number\t\t%lu\n", REG_BITS(dword, 19, 16));
1090*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_B  Stream_ID\t\t\t\t%lu\n",	REG_BITS(dword, 23, 20));
1091*d83cc019SAndroid Build Coastguard Worker 
1092*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_DIG_CNVT_C);
1093*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  V\t\t\t\t\t%lu\n",		REG_BIT(dword, 1));
1094*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  VCFG\t\t\t\t%lu\n",		REG_BIT(dword, 2));
1095*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  PRE\t\t\t\t\t%lu\n",		REG_BIT(dword, 3));
1096*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  Copy\t\t\t\t%lu\n",		REG_BIT(dword, 4));
1097*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  NonAudio\t\t\t\t%lu\n",		REG_BIT(dword, 5));
1098*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  PRO\t\t\t\t\t%lu\n",		REG_BIT(dword, 6));
1099*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  Level\t\t\t\t%lu\n",		REG_BIT(dword, 7));
1100*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  Category_Code\t\t\t%lu\n",	REG_BITS(dword, 14, 8));
1101*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  Lowest_Channel_Number\t\t%lu\n", REG_BITS(dword, 19, 16));
1102*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_DIG_CNVT_C  Stream_ID\t\t\t\t%lu\n",	REG_BITS(dword, 23, 20));
1103*d83cc019SAndroid Build Coastguard Worker 
1104*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CH_STR  Converter_Channel_MAP	PORTB	PORTC	PORTD\n");
1105*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++) {
1106*d83cc019SAndroid Build Coastguard Worker 		OUTREG(AUD_OUT_CH_STR, i | (i << 8) | (i << 16));
1107*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(AUD_OUT_CH_STR);
1108*d83cc019SAndroid Build Coastguard Worker 		printf("\t\t\t\t%lu\t%lu\t%lu\t%lu\n",
1109*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword,  3,  0),
1110*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword,  7,  4),
1111*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword, 15, 12),
1112*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword, 23, 20));
1113*d83cc019SAndroid Build Coastguard Worker 	}
1114*d83cc019SAndroid Build Coastguard Worker 
1115*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_STR_DESC_A);
1116*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_A  HBR_enable\t\t\t\t%lu\n",	 REG_BITS(dword, 28, 27));
1117*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_A  Convertor_Channel_Count\t\t%lu\n", REG_BITS(dword, 20, 16) + 1);
1118*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_A  Bits_per_Sample\t\t\t[%#lx] %s\n",
1119*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 6, 4), OPNAME(bits_per_sample, REG_BITS(dword, 6, 4)));
1120*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_A  Number_of_Channels_in_a_Stream\t%lu\n", 1 + REG_BITS(dword, 3, 0));
1121*d83cc019SAndroid Build Coastguard Worker 
1122*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_STR_DESC_B);
1123*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_B  HBR_enable\t\t\t\t%lu\n",	 REG_BITS(dword, 28, 27));
1124*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_B  Convertor_Channel_Count\t\t%lu\n", REG_BITS(dword, 20, 16) + 1);
1125*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_B  Bits_per_Sample\t\t\t[%#lx] %s\n",
1126*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 6, 4), OPNAME(bits_per_sample, REG_BITS(dword, 6, 4)));
1127*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_B  Number_of_Channels_in_a_Stream\t%lu\n", 1 + REG_BITS(dword, 3, 0));
1128*d83cc019SAndroid Build Coastguard Worker 
1129*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_OUT_STR_DESC_C);
1130*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_C  HBR_enable\t\t\t\t%lu\n",	 REG_BITS(dword, 28, 27));
1131*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_C  Convertor_Channel_Count\t\t%lu\n", REG_BITS(dword, 20, 16) + 1);
1132*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_C  Bits_per_Sample\t\t\t[%#lx] %s\n",
1133*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 6, 4), OPNAME(bits_per_sample, REG_BITS(dword, 6, 4)));
1134*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_STR_DESC_C  Number_of_Channels_in_a_Stream\t%lu\n", 1 + REG_BITS(dword, 3, 0));
1135*d83cc019SAndroid Build Coastguard Worker 
1136*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_PINW_CONNLNG_SEL);
1137*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CONNLNG_SEL  Connection_select_Control_B\t%#lx\n", REG_BITS(dword,  7,  0));
1138*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CONNLNG_SEL  Connection_select_Control_C\t%#lx\n", REG_BITS(dword, 15,  8));
1139*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PINW_CONNLNG_SEL  Connection_select_Control_D\t%#lx\n", REG_BITS(dword, 23, 16));
1140*d83cc019SAndroid Build Coastguard Worker 
1141*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_A);
1142*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  DIP_Port_Select\t\t\t\t[%#lx] %s\n",
1143*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), dip_port[REG_BITS(dword, 30, 29)]);
1144*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  DIP_type_enable_status Audio DIP\t\t%lu\n", REG_BIT(dword, 21));
1145*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  DIP_type_enable_status ACP DIP\t\t%lu\n", REG_BIT(dword, 22));
1146*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  DIP_type_enable_status Generic 2 DIP\t%lu\n", REG_BIT(dword, 23));
1147*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  DIP_transmission_frequency\t\t[0x%lx] %s\n",
1148*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), dip_trans[REG_BITS(dword, 17, 16)]);
1149*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  ELD_ACK\t\t\t\t\t%lu\n", REG_BIT(dword, 4));
1150*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_A  ELD_buffer_size\t\t\t\t%lu\n", REG_BITS(dword, 14, 10));
1151*d83cc019SAndroid Build Coastguard Worker 
1152*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_B);
1153*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  DIP_Port_Select\t\t\t\t[%#lx] %s\n",
1154*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), dip_port[REG_BITS(dword, 30, 29)]);
1155*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  DIP_type_enable_status Audio DIP\t\t%lu\n", REG_BIT(dword, 21));
1156*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  DIP_type_enable_status ACP DIP\t\t%lu\n", REG_BIT(dword, 22));
1157*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  DIP_type_enable_status Generic 2 DIP\t%lu\n", REG_BIT(dword, 23));
1158*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  DIP_transmission_frequency\t\t[0x%lx] %s\n",
1159*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), dip_trans[REG_BITS(dword, 17, 16)]);
1160*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  ELD_ACK\t\t\t\t\t%lu\n", REG_BIT(dword, 4));
1161*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_B  ELD_buffer_size\t\t\t\t%lu\n", REG_BITS(dword, 14, 10));
1162*d83cc019SAndroid Build Coastguard Worker 
1163*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_C);
1164*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  DIP_Port_Select\t\t\t\t[%#lx] %s\n",
1165*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 30, 29), dip_port[REG_BITS(dword, 30, 29)]);
1166*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  DIP_type_enable_status Audio DIP\t\t%lu\n", REG_BIT(dword, 21));
1167*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  DIP_type_enable_status ACP DIP\t\t%lu\n", REG_BIT(dword, 22));
1168*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  DIP_type_enable_status Generic 2 DIP\t%lu\n", REG_BIT(dword, 23));
1169*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  DIP_transmission_frequency\t\t[0x%lx] %s\n",
1170*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 17, 16), dip_trans[REG_BITS(dword, 17, 16)]);
1171*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  ELD_ACK\t\t\t\t\t%lu\n", REG_BIT(dword, 4));
1172*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST_C  ELD_buffer_size\t\t\t\t%lu\n", REG_BITS(dword, 14, 10));
1173*d83cc019SAndroid Build Coastguard Worker 
1174*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTRL_ST2);
1175*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  CP_ReadyB\t\t\t\t%lu\n",	REG_BIT(dword, 1));
1176*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  ELD_validB\t\t\t\t%lu\n",	REG_BIT(dword, 0));
1177*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  CP_ReadyC\t\t\t\t%lu\n",	REG_BIT(dword, 5));
1178*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  ELD_validC\t\t\t\t%lu\n",	REG_BIT(dword, 4));
1179*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  CP_ReadyD\t\t\t\t%lu\n",	REG_BIT(dword, 9));
1180*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST2  ELD_validD\t\t\t\t%lu\n",	REG_BIT(dword, 8));
1181*d83cc019SAndroid Build Coastguard Worker 
1182*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTRL_ST3);
1183*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransA_DPT_Audio_Output_En\t\t%lu\n",	REG_BIT(dword, 3));
1184*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransA_to_Port_Sel\t\t\t[%#lx] %s\n",
1185*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 2, 0), trans_to_port_sel[REG_BITS(dword, 2, 0)]);
1186*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransB_DPT_Audio_Output_En\t\t%lu\n",	REG_BIT(dword, 7));
1187*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransB_to_Port_Sel\t\t\t[%#lx] %s\n",
1188*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 6, 4), trans_to_port_sel[REG_BITS(dword, 6, 4)]);
1189*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransC_DPT_Audio_Output_En\t\t%lu\n",	REG_BIT(dword, 11));
1190*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTRL_ST3  TransC_to_Port_Sel\t\t\t[%#lx] %s\n",
1191*d83cc019SAndroid Build Coastguard Worker 			REG_BITS(dword, 10, 8), trans_to_port_sel[REG_BITS(dword, 10, 8)]);
1192*d83cc019SAndroid Build Coastguard Worker 
1193*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_HDMIW_STATUS);
1194*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_A_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 27));
1195*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_A_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 26));
1196*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_B_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 29));
1197*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_B_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 28));
1198*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_C_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 31));
1199*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_C_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 30));
1200*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  BCLK/CDCLK_FIFO_Overrun\t\t%lu\n",	 REG_BIT(dword, 25));
1201*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Function_Reset\t\t\t%lu\n",		 REG_BIT(dword, 24));
1202*d83cc019SAndroid Build Coastguard Worker 
1203*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_HDMIEDID_A HDMI ELD:\n\t");
1204*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_A);
1205*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(9, 5);
1206*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_A, dword);
1207*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < REG_BITS(dword, 14, 10) / 4; i++)
1208*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_HDMIEDID_A)));
1209*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1210*d83cc019SAndroid Build Coastguard Worker 
1211*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_HDMIEDID_B HDMI ELD:\n\t");
1212*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_B);
1213*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(9, 5);
1214*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_B, dword);
1215*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < REG_BITS(dword, 14, 10) / 4; i++)
1216*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_HDMIEDID_B)));
1217*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1218*d83cc019SAndroid Build Coastguard Worker 
1219*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_HDMIEDID_C HDMI ELD:\n\t");
1220*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_C);
1221*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(9, 5);
1222*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_C, dword);
1223*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < REG_BITS(dword, 14, 10) / 4; i++)
1224*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_HDMIEDID_C)));
1225*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1226*d83cc019SAndroid Build Coastguard Worker 
1227*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_INFOFR_A HDMI audio Infoframe:\n\t");
1228*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_A);
1229*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(20, 18);
1230*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(3, 0);
1231*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_A, dword);
1232*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++)
1233*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_INFOFR_A)));
1234*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1235*d83cc019SAndroid Build Coastguard Worker 
1236*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_INFOFR_B HDMI audio Infoframe:\n\t");
1237*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_B);
1238*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(20, 18);
1239*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(3, 0);
1240*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_B, dword);
1241*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++)
1242*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_INFOFR_B)));
1243*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1244*d83cc019SAndroid Build Coastguard Worker 
1245*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_INFOFR_C HDMI audio Infoframe:\n\t");
1246*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(AUD_CNTL_ST_C);
1247*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(20, 18);
1248*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(3, 0);
1249*d83cc019SAndroid Build Coastguard Worker 	OUTREG(AUD_CNTL_ST_C, dword);
1250*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++)
1251*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(AUD_HDMIW_INFOFR_C)));
1252*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1253*d83cc019SAndroid Build Coastguard Worker 
1254*d83cc019SAndroid Build Coastguard Worker }
1255*d83cc019SAndroid Build Coastguard Worker 
1256*d83cc019SAndroid Build Coastguard Worker /* Audio config registers of Ironlake */
1257*d83cc019SAndroid Build Coastguard Worker #undef AUD_CONFIG_A
1258*d83cc019SAndroid Build Coastguard Worker #undef AUD_CONFIG_B
1259*d83cc019SAndroid Build Coastguard Worker #undef AUD_MISC_CTRL_A
1260*d83cc019SAndroid Build Coastguard Worker #undef AUD_MISC_CTRL_B
1261*d83cc019SAndroid Build Coastguard Worker #undef AUD_VID_DID
1262*d83cc019SAndroid Build Coastguard Worker #undef AUD_RID
1263*d83cc019SAndroid Build Coastguard Worker #undef AUD_CTS_ENABLE_A
1264*d83cc019SAndroid Build Coastguard Worker #undef AUD_CTS_ENABLE_B
1265*d83cc019SAndroid Build Coastguard Worker #undef AUD_PWRST
1266*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_HDMIEDID_A
1267*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_HDMIEDID_B
1268*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_INFOFR_A
1269*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_INFOFR_B
1270*d83cc019SAndroid Build Coastguard Worker #undef AUD_PORT_EN_HD_CFG
1271*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_DIG_CNVT_A
1272*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_DIG_CNVT_B
1273*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_STR_DESC_A
1274*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_STR_DESC_B
1275*d83cc019SAndroid Build Coastguard Worker #undef AUD_OUT_CH_STR
1276*d83cc019SAndroid Build Coastguard Worker #undef AUD_PINW_CONNLNG_LIST
1277*d83cc019SAndroid Build Coastguard Worker #undef AUD_PINW_CONNLNG_SEL
1278*d83cc019SAndroid Build Coastguard Worker #undef AUD_CNTL_ST_A
1279*d83cc019SAndroid Build Coastguard Worker #undef AUD_CNTL_ST_B
1280*d83cc019SAndroid Build Coastguard Worker #undef AUD_CNTL_ST2
1281*d83cc019SAndroid Build Coastguard Worker #undef AUD_HDMIW_STATUS
1282*d83cc019SAndroid Build Coastguard Worker 
1283*d83cc019SAndroid Build Coastguard Worker #define PIPE_OFS                0x100
1284*d83cc019SAndroid Build Coastguard Worker 
1285*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_A            0x0
1286*d83cc019SAndroid Build Coastguard Worker #define AUD_CONFIG_B            (AUD_CONFIG_A + PIPE_OFS)
1287*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_A         0x010
1288*d83cc019SAndroid Build Coastguard Worker #define AUD_MISC_CTRL_B         (AUD_MISC_CTRL_A + PIPE_OFS)
1289*d83cc019SAndroid Build Coastguard Worker #define AUD_VID_DID             0x020
1290*d83cc019SAndroid Build Coastguard Worker #define AUD_RID                 0x024
1291*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_A        0x028
1292*d83cc019SAndroid Build Coastguard Worker #define AUD_CTS_ENABLE_B        (AUD_CTS_ENABLE_A + PIPE_OFS)
1293*d83cc019SAndroid Build Coastguard Worker #define AUD_PWRST               0x04C
1294*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_A    0x050
1295*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_HDMIEDID_B    (AUD_HDMIW_HDMIEDID_A + PIPE_OFS)
1296*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_A      0x054
1297*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_INFOFR_B      (AUD_HDMIW_INFOFR_A + PIPE_OFS)
1298*d83cc019SAndroid Build Coastguard Worker #define AUD_PORT_EN_HD_CFG      0x07c
1299*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_A      0x080
1300*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_DIG_CNVT_B      (AUD_OUT_DIG_CNVT_A + PIPE_OFS)
1301*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_A      0x084
1302*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_STR_DESC_B      (AUD_OUT_STR_DESC_A + PIPE_OFS)
1303*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_CH_STR          0x088
1304*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLNG_LIST   0x0a8
1305*d83cc019SAndroid Build Coastguard Worker #define AUD_PINW_CONNLNG_SEL    0x0aC
1306*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_A           0x0b4
1307*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST_B           (AUD_CNTL_ST_A + PIPE_OFS)
1308*d83cc019SAndroid Build Coastguard Worker #define AUD_CNTL_ST2            0x0c0
1309*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMIW_STATUS        0x0d4
1310*d83cc019SAndroid Build Coastguard Worker #define AUD_FREQ_CNTRL          0x900
1311*d83cc019SAndroid Build Coastguard Worker 
1312*d83cc019SAndroid Build Coastguard Worker /* Audio config registers of Haswell+ */
1313*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_CONFIG          AUD_CONFIG_A
1314*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_CONFIG          (AUD_TCA_CONFIG + PIPE_OFS)
1315*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_CONFIG          (AUD_TCA_CONFIG + PIPE_OFS * 2)
1316*d83cc019SAndroid Build Coastguard Worker #define AUD_C1_MISC_CTRL        AUD_MISC_CTRL_A
1317*d83cc019SAndroid Build Coastguard Worker #define AUD_C2_MISC_CTRL        (AUD_MISC_CTRL_A + PIPE_OFS)
1318*d83cc019SAndroid Build Coastguard Worker #define AUD_C3_MISC_CTRL        (AUD_MISC_CTRL_A + PIPE_OFS * 2)
1319*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_M_CTS_ENABLE    AUD_CTS_ENABLE_A
1320*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_M_CTS_ENABLE    (AUD_TCA_M_CTS_ENABLE + PIPE_OFS)
1321*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_M_CTS_ENABLE    (AUD_TCA_M_CTS_ENABLE + PIPE_OFS * 2)
1322*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_EDID_DATA       AUD_HDMIW_HDMIEDID_A
1323*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_EDID_DATA       (AUD_TCA_EDID_DATA + PIPE_OFS)
1324*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_EDID_DATA       (AUD_TCA_EDID_DATA + PIPE_OFS * 2)
1325*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_INFOFR          AUD_HDMIW_INFOFR_A
1326*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_INFOFR          (AUD_TCA_INFOFR +  PIPE_OFS)
1327*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_INFOFR          (AUD_TCA_INFOFR +  PIPE_OFS * 2)
1328*d83cc019SAndroid Build Coastguard Worker #define AUD_PIPE_CONV_CFG       AUD_PORT_EN_HD_CFG
1329*d83cc019SAndroid Build Coastguard Worker #define AUD_C1_DIG_CNVT         AUD_OUT_DIG_CNVT_A
1330*d83cc019SAndroid Build Coastguard Worker #define AUD_C2_DIG_CNVT         (AUD_C1_DIG_CNVT + PIPE_OFS)
1331*d83cc019SAndroid Build Coastguard Worker #define AUD_C3_DIG_CNVT         (AUD_C1_DIG_CNVT + PIPE_OFS * 2)
1332*d83cc019SAndroid Build Coastguard Worker #define AUD_C1_STR_DESC         AUD_OUT_STR_DESC_A
1333*d83cc019SAndroid Build Coastguard Worker #define AUD_C2_STR_DESC         (AUD_C1_STR_DESC + PIPE_OFS)
1334*d83cc019SAndroid Build Coastguard Worker #define AUD_C3_STR_DESC         (AUD_C1_STR_DESC + PIPE_OFS * 2)
1335*d83cc019SAndroid Build Coastguard Worker #define AUD_OUT_CHAN_MAP        AUD_OUT_CH_STR
1336*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH       AUD_PINW_CONNLNG_LIST
1337*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_PIN_PIPE_CONN_ENTRY_LNGTH       (AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH + PIPE_OFS)
1338*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_PIN_PIPE_CONN_ENTRY_LNGTH       (AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH + PIPE_OFS * 2)
1339*d83cc019SAndroid Build Coastguard Worker #define AUD_PIPE_CONN_SEL_CTRL  AUD_PINW_CONNLNG_SEL
1340*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_DIP_ELD_CTRL_ST AUD_CNTL_ST_A
1341*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_DIP_ELD_CTRL_ST (AUD_TCA_DIP_ELD_CTRL_ST +  PIPE_OFS)
1342*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_DIP_ELD_CTRL_ST (AUD_TCA_DIP_ELD_CTRL_ST +  PIPE_OFS * 2)
1343*d83cc019SAndroid Build Coastguard Worker #define AUD_PIN_ELD_CP_VLD      AUD_CNTL_ST2
1344*d83cc019SAndroid Build Coastguard Worker #define AUD_HDMI_FIFO_STATUS    AUD_HDMIW_STATUS
1345*d83cc019SAndroid Build Coastguard Worker #define AUD_ICOI                0xf00
1346*d83cc019SAndroid Build Coastguard Worker #define AUD_IRII                0xf04
1347*d83cc019SAndroid Build Coastguard Worker #define AUD_ICS                 0xf08
1348*d83cc019SAndroid Build Coastguard Worker #define AUD_CHICKENBIT_REG      0xf10
1349*d83cc019SAndroid Build Coastguard Worker #define AUD_DP_DIP_STATUS       0xf20
1350*d83cc019SAndroid Build Coastguard Worker #define AUD_TCA_M_CTS           0xf44
1351*d83cc019SAndroid Build Coastguard Worker #define AUD_TCB_M_CTS           0xf54
1352*d83cc019SAndroid Build Coastguard Worker #define AUD_TCC_M_CTS           0xf64
1353*d83cc019SAndroid Build Coastguard Worker #define AUD_HDA_DMA_REG         0xe00
1354*d83cc019SAndroid Build Coastguard Worker #define AUD_HDA_LPIB0_REG       0xe04
1355*d83cc019SAndroid Build Coastguard Worker #define AUD_HDA_LPIB1_REG       0xe08
1356*d83cc019SAndroid Build Coastguard Worker #define AUD_HDA_LPIB2_REG       0xe0c
1357*d83cc019SAndroid Build Coastguard Worker #define AUD_HDA_EXTRA_REG       0xe10
1358*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_CTL_A      0xf14
1359*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_CTL_B      0xf24
1360*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_CTL_C      0xf34
1361*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_RESULT_A   0xf18
1362*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_RESULT_B   0xf28
1363*d83cc019SAndroid Build Coastguard Worker #define AUD_FPGA_CRC_RESULT_C   0xf38
1364*d83cc019SAndroid Build Coastguard Worker #define AUD_DFT_MVAL_REG        0xe20
1365*d83cc019SAndroid Build Coastguard Worker #define AUD_DFT_NVAL_REG        0xe24
1366*d83cc019SAndroid Build Coastguard Worker #define AUD_DFT_LOAD_REG        0xe28
1367*d83cc019SAndroid Build Coastguard Worker 
1368*d83cc019SAndroid Build Coastguard Worker /* Common functions to dump audio registers */
1369*d83cc019SAndroid Build Coastguard Worker #define MAX_PREFIX_SIZE		128
1370*d83cc019SAndroid Build Coastguard Worker 
dump_aud_config(int index)1371*d83cc019SAndroid Build Coastguard Worker static void dump_aud_config(int index)
1372*d83cc019SAndroid Build Coastguard Worker {
1373*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1374*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1375*d83cc019SAndroid Build Coastguard Worker 
1376*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1377*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_CONFIG_A + (index - PIPE_A) * 0x100);
1378*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_CONFIG_%c  ", 'A' + index - PIPE_A);
1379*d83cc019SAndroid Build Coastguard Worker 	} else {
1380*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_TCA_CONFIG + (index - TRANSCODER_A) * 0x100);
1381*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_TC%c_CONFIG", 'A' + index - TRANSCODER_A);
1382*d83cc019SAndroid Build Coastguard Worker 	}
1383*d83cc019SAndroid Build Coastguard Worker 
1384*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Disable_NCTS\t\t\t\t%lu\n",          prefix, REG_BIT(dword, 3));
1385*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Lower_N_value\t\t\t\t0x%03lx\n",     prefix, REG_BITS(dword, 15, 4));
1386*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Pixel_Clock_HDMI\t\t\t[0x%lx] %s\n", prefix, REG_BITS(dword, 19, 16),
1387*d83cc019SAndroid Build Coastguard Worker 		OPNAME(pixel_clock, REG_BITS(dword, 19, 16)));
1388*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Upper_N_value\t\t\t\t0x%02lx\n",     prefix, REG_BITS(dword, 27, 20));
1389*d83cc019SAndroid Build Coastguard Worker 	printf("%s  N_programming_enable\t\t\t%lu\n",    prefix, REG_BIT(dword, 28));
1390*d83cc019SAndroid Build Coastguard Worker 	printf("%s  N_index_value\t\t\t\t[0x%lx] %s\n",  prefix, REG_BIT(dword, 29),
1391*d83cc019SAndroid Build Coastguard Worker 		OPNAME(n_index_value, REG_BIT(dword, 29)));
1392*d83cc019SAndroid Build Coastguard Worker }
1393*d83cc019SAndroid Build Coastguard Worker 
dump_aud_misc_control(int index)1394*d83cc019SAndroid Build Coastguard Worker static void dump_aud_misc_control(int index)
1395*d83cc019SAndroid Build Coastguard Worker {
1396*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1397*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1398*d83cc019SAndroid Build Coastguard Worker 
1399*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1400*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_MISC_CTRL_A + (index - PIPE_A) * 0x100);
1401*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_MISC_CTRL_%c ", 'A' + index - PIPE_A);
1402*d83cc019SAndroid Build Coastguard Worker 	} else {
1403*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_C1_MISC_CTRL + (index - CONVERTER_1) * 0x100);
1404*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_C%c_MISC_CTRL", '1' + index - CONVERTER_1);
1405*d83cc019SAndroid Build Coastguard Worker 	}
1406*d83cc019SAndroid Build Coastguard Worker 
1407*d83cc019SAndroid Build Coastguard Worker 	printf("%s   Pro_Allowed\t\t\t\t%lu\n",           prefix, REG_BIT(dword, 1));
1408*d83cc019SAndroid Build Coastguard Worker 	printf("%s   Sample_Fabrication_EN_bit\t\t%lu\n", prefix, REG_BIT(dword, 2));
1409*d83cc019SAndroid Build Coastguard Worker 	printf("%s   Output_Delay\t\t\t\t%lu\n",          prefix, REG_BITS(dword, 7, 4));
1410*d83cc019SAndroid Build Coastguard Worker 	printf("%s   Sample_present_Disable\t\t%lu\n",    prefix, REG_BIT(dword, 8));
1411*d83cc019SAndroid Build Coastguard Worker }
1412*d83cc019SAndroid Build Coastguard Worker 
dump_aud_vendor_device_id(void)1413*d83cc019SAndroid Build Coastguard Worker static void dump_aud_vendor_device_id(void)
1414*d83cc019SAndroid Build Coastguard Worker {
1415*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1416*d83cc019SAndroid Build Coastguard Worker 
1417*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_VID_DID);
1418*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID device id\t\t\t\t\t0x%lx\n", REG_BITS(dword, 15, 0));
1419*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_VID_DID vendor id\t\t\t\t\t0x%lx\n", REG_BITS(dword, 31, 16));
1420*d83cc019SAndroid Build Coastguard Worker }
1421*d83cc019SAndroid Build Coastguard Worker 
dump_aud_revision_id(void)1422*d83cc019SAndroid Build Coastguard Worker static void dump_aud_revision_id(void)
1423*d83cc019SAndroid Build Coastguard Worker {
1424*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1425*d83cc019SAndroid Build Coastguard Worker 
1426*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_RID);
1427*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Stepping_Id\t\t\t\t\t0x%lx\n",    REG_BITS(dword, 7, 0));
1428*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Revision_Id\t\t\t\t\t0x%lx\n",    REG_BITS(dword, 15, 8));
1429*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Minor_Revision\t\t\t\t\t0x%lx\n", REG_BITS(dword, 19, 16));
1430*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_RID Major_Revision\t\t\t\t\t0x%lx\n", REG_BITS(dword, 23, 20));
1431*d83cc019SAndroid Build Coastguard Worker }
1432*d83cc019SAndroid Build Coastguard Worker 
dump_aud_m_cts_enable(int index)1433*d83cc019SAndroid Build Coastguard Worker static void dump_aud_m_cts_enable(int index)
1434*d83cc019SAndroid Build Coastguard Worker {
1435*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1436*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1437*d83cc019SAndroid Build Coastguard Worker 
1438*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1439*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_CTS_ENABLE_A  + (index - PIPE_A) * 0x100);
1440*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_CTS_ENABLE_%c    ", 'A' + index - PIPE_A);
1441*d83cc019SAndroid Build Coastguard Worker 	} else {
1442*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_TCA_M_CTS_ENABLE  + (index - TRANSCODER_A) * 0x100);
1443*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_TC%c_M_CTS_ENABLE", 'A' + index - TRANSCODER_A);
1444*d83cc019SAndroid Build Coastguard Worker 	}
1445*d83cc019SAndroid Build Coastguard Worker 
1446*d83cc019SAndroid Build Coastguard Worker 	printf("%s  CTS_programming\t\t\t%#lx\n",        prefix, REG_BITS(dword, 19, 0));
1447*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Enable_CTS_or_M_programming\t%lu\n", prefix, REG_BIT(dword, 20));
1448*d83cc019SAndroid Build Coastguard Worker 	printf("%s  CTS_M value Index\t\t\t[0x%lx] %s\n",prefix, REG_BIT(dword, 21),
1449*d83cc019SAndroid Build Coastguard Worker 		OPNAME(cts_m_value_index, REG_BIT(dword, 21)));
1450*d83cc019SAndroid Build Coastguard Worker }
1451*d83cc019SAndroid Build Coastguard Worker 
dump_aud_power_state(void)1452*d83cc019SAndroid Build Coastguard Worker static void dump_aud_power_state(void)
1453*d83cc019SAndroid Build Coastguard Worker {
1454*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1455*d83cc019SAndroid Build Coastguard Worker 	int num_pipes;
1456*d83cc019SAndroid Build Coastguard Worker 
1457*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PWRST);
1458*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinB_Widget_Power_State_Set              \t%s\n",         power_state[REG_BITS(dword,  1,  0)]);
1459*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinB_Widget_Power_State_Current          \t%s\n",         power_state[REG_BITS(dword,  3,  2)]);
1460*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinC_Widget_Power_State_Set              \t%s\n",         power_state[REG_BITS(dword,  5,  4)]);
1461*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinC_Widget_Power_State_Current          \t%s\n",         power_state[REG_BITS(dword,  7,  6)]);
1462*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinD_Widget_Power_State_Set              \t%s\n",         power_state[REG_BITS(dword,  9,  8)]);
1463*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PWRST  PinD_Widget_Power_State_Current          \t%s\n",         power_state[REG_BITS(dword, 11, 10)]);
1464*d83cc019SAndroid Build Coastguard Worker 
1465*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1466*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  ConvertorA_Widget_Power_State_Requsted   \t%s\n", power_state[REG_BITS(dword, 13, 12)]);
1467*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  ConvertorA_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 15, 14)]);
1468*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  ConvertorB_Widget_Power_State_Requested  \t%s\n", power_state[REG_BITS(dword, 17, 16)]);
1469*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  ConvertorB_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 19, 18)]);
1470*d83cc019SAndroid Build Coastguard Worker 	} else {
1471*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Convertor1_Widget_Power_State_Requsted   \t%s\n", power_state[REG_BITS(dword, 13, 12)]);
1472*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Convertor1_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 15, 14)]);
1473*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Convertor2_Widget_Power_State_Requested  \t%s\n", power_state[REG_BITS(dword, 17, 16)]);
1474*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Convertor2_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 19, 18)]);
1475*d83cc019SAndroid Build Coastguard Worker 	}
1476*d83cc019SAndroid Build Coastguard Worker 
1477*d83cc019SAndroid Build Coastguard Worker 	num_pipes = get_num_pipes();
1478*d83cc019SAndroid Build Coastguard Worker 	if (num_pipes == 2) {
1479*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Set                   \t%s\n", power_state[REG_BITS(dword, 21, 20)]);
1480*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Curr                  \t%s\n", power_state[REG_BITS(dword, 23, 22)]);
1481*d83cc019SAndroid Build Coastguard Worker 	} else {	/* 3 pipes */
1482*d83cc019SAndroid Build Coastguard Worker 		if (!IS_HASWELL_PLUS(devid)) {
1483*d83cc019SAndroid Build Coastguard Worker 			printf("AUD_PWRST  ConvertorC_Widget_Power_State_Requested  \t%s\n", power_state[REG_BITS(dword, 21, 20)]);
1484*d83cc019SAndroid Build Coastguard Worker 			printf("AUD_PWRST  ConvertorC_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 23, 22)]);
1485*d83cc019SAndroid Build Coastguard Worker 		} else {
1486*d83cc019SAndroid Build Coastguard Worker 			printf("AUD_PWRST  Convertor3_Widget_Power_State_Requested  \t%s\n", power_state[REG_BITS(dword, 21, 20)]);
1487*d83cc019SAndroid Build Coastguard Worker 			printf("AUD_PWRST  Convertor3_Widget_Power_State_Current    \t%s\n", power_state[REG_BITS(dword, 23, 22)]);
1488*d83cc019SAndroid Build Coastguard Worker 		}
1489*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Set                   \t%s\n", power_state[REG_BITS(dword, 25, 24)]);
1490*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PWRST  Func_Grp_Dev_PwrSt_Curr                  \t%s\n", power_state[REG_BITS(dword, 27, 26)]);
1491*d83cc019SAndroid Build Coastguard Worker 	}
1492*d83cc019SAndroid Build Coastguard Worker }
1493*d83cc019SAndroid Build Coastguard Worker 
dump_aud_edid_data(int index)1494*d83cc019SAndroid Build Coastguard Worker static void dump_aud_edid_data(int index)
1495*d83cc019SAndroid Build Coastguard Worker {
1496*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1497*d83cc019SAndroid Build Coastguard Worker 	int i;
1498*d83cc019SAndroid Build Coastguard Worker 	int offset;
1499*d83cc019SAndroid Build Coastguard Worker 	int aud_ctrl_st, edid_data;
1500*d83cc019SAndroid Build Coastguard Worker 
1501*d83cc019SAndroid Build Coastguard Worker 	if (IS_HASWELL_PLUS(devid)) {
1502*d83cc019SAndroid Build Coastguard Worker 		offset = (index - TRANSCODER_A) * 0x100;
1503*d83cc019SAndroid Build Coastguard Worker 		aud_ctrl_st = aud_reg_base + AUD_TCA_DIP_ELD_CTRL_ST + offset;
1504*d83cc019SAndroid Build Coastguard Worker 		edid_data =  aud_reg_base + AUD_TCA_EDID_DATA + offset;
1505*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_TC%c_EDID_DATA ELD:\n\t",  'A' + index - TRANSCODER_A);
1506*d83cc019SAndroid Build Coastguard Worker 	} else {
1507*d83cc019SAndroid Build Coastguard Worker 		offset = (index - PIPE_A) * 0x100;
1508*d83cc019SAndroid Build Coastguard Worker 		aud_ctrl_st = aud_reg_base + AUD_CNTL_ST_A + offset;
1509*d83cc019SAndroid Build Coastguard Worker 		edid_data =  aud_reg_base + AUD_HDMIW_HDMIEDID_A + offset;
1510*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_HDMIW_HDMIEDID_%c HDMI ELD:\n\t",  'A' + index - PIPE_A);
1511*d83cc019SAndroid Build Coastguard Worker 	}
1512*d83cc019SAndroid Build Coastguard Worker 
1513*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_ctrl_st);
1514*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(9, 5);
1515*d83cc019SAndroid Build Coastguard Worker 	OUTREG(aud_ctrl_st, dword);
1516*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < REG_BITS(dword, 14, 10) / 4; i++)
1517*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(edid_data)));
1518*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1519*d83cc019SAndroid Build Coastguard Worker }
1520*d83cc019SAndroid Build Coastguard Worker 
dump_aud_infoframe(int index)1521*d83cc019SAndroid Build Coastguard Worker static void dump_aud_infoframe(int index)
1522*d83cc019SAndroid Build Coastguard Worker {
1523*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1524*d83cc019SAndroid Build Coastguard Worker 	int i;
1525*d83cc019SAndroid Build Coastguard Worker 	int offset;
1526*d83cc019SAndroid Build Coastguard Worker 	int aud_ctrl_st, info_frm;
1527*d83cc019SAndroid Build Coastguard Worker 
1528*d83cc019SAndroid Build Coastguard Worker 	if (IS_HASWELL_PLUS(devid))  {
1529*d83cc019SAndroid Build Coastguard Worker 		offset = (index - TRANSCODER_A) * 0x100;
1530*d83cc019SAndroid Build Coastguard Worker 		aud_ctrl_st = aud_reg_base + AUD_TCA_DIP_ELD_CTRL_ST + offset;
1531*d83cc019SAndroid Build Coastguard Worker 		info_frm = aud_reg_base + AUD_TCA_INFOFR + offset;
1532*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_TC%c_INFOFR audio Infoframe:\n\t",  'A' + index - TRANSCODER_A);
1533*d83cc019SAndroid Build Coastguard Worker 	} else {
1534*d83cc019SAndroid Build Coastguard Worker 		offset = (index - PIPE_A) * 0x100;
1535*d83cc019SAndroid Build Coastguard Worker 		aud_ctrl_st = aud_reg_base + AUD_CNTL_ST_A + offset;
1536*d83cc019SAndroid Build Coastguard Worker 		info_frm = aud_reg_base + AUD_HDMIW_INFOFR_A + offset;
1537*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_HDMIW_INFOFR_%c HDMI audio Infoframe:\n\t",  'A' + index - PIPE_A);
1538*d83cc019SAndroid Build Coastguard Worker 	}
1539*d83cc019SAndroid Build Coastguard Worker 
1540*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_ctrl_st);
1541*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(20, 18);
1542*d83cc019SAndroid Build Coastguard Worker 	dword &= ~BITMASK(3, 0);
1543*d83cc019SAndroid Build Coastguard Worker 	OUTREG(aud_ctrl_st, dword);
1544*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++)
1545*d83cc019SAndroid Build Coastguard Worker 		printf("%08x ", htonl(INREG(info_frm)));
1546*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1547*d83cc019SAndroid Build Coastguard Worker }
1548*d83cc019SAndroid Build Coastguard Worker 
dump_aud_port_en_hd_cfg(void)1549*d83cc019SAndroid Build Coastguard Worker static void dump_aud_port_en_hd_cfg(void)
1550*d83cc019SAndroid Build Coastguard Worker {
1551*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1552*d83cc019SAndroid Build Coastguard Worker 	int num_pipes = get_num_pipes();
1553*d83cc019SAndroid Build Coastguard Worker 
1554*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PORT_EN_HD_CFG);
1555*d83cc019SAndroid Build Coastguard Worker 	if (num_pipes == 2) {
1556*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_A_Digen\t\t\t%lu\n",    REG_BIT(dword, 0));
1557*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_B_Digen\t\t\t%lu\n",    REG_BIT(dword, 1));
1558*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_A_Stream_ID\t\t%lu\n",  REG_BITS(dword,  7, 4));
1559*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_B_Stream_ID\t\t%lu\n",  REG_BITS(dword, 11, 8));
1560*d83cc019SAndroid Build Coastguard Worker 
1561*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_B_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 12));
1562*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_C_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 13));
1563*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_D_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 14));
1564*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_B_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 16));
1565*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_C_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 17));
1566*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_D_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 18));
1567*d83cc019SAndroid Build Coastguard Worker 	} else { /* three pipes */
1568*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_A_Digen\t\t\t%lu\n",    REG_BIT(dword, 0));
1569*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_B_Digen\t\t\t%lu\n",    REG_BIT(dword, 1));
1570*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_C_Digen\t\t\t%lu\n",    REG_BIT(dword, 2));
1571*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_A_Stream_ID\t\t%lu\n",  REG_BITS(dword,  7, 4));
1572*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_B_Stream_ID\t\t%lu\n",  REG_BITS(dword, 11, 8));
1573*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Convertor_C_Stream_ID\t\t%lu\n",  REG_BITS(dword, 15, 12));
1574*d83cc019SAndroid Build Coastguard Worker 
1575*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_B_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 16));
1576*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_C_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 17));
1577*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_D_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 18));
1578*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_B_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 20));
1579*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_C_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 21));
1580*d83cc019SAndroid Build Coastguard Worker 		printf("AUD_PORT_EN_HD_CFG  Port_D_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 22));
1581*d83cc019SAndroid Build Coastguard Worker 	}
1582*d83cc019SAndroid Build Coastguard Worker }
1583*d83cc019SAndroid Build Coastguard Worker 
dump_aud_pipe_conv_cfg(void)1584*d83cc019SAndroid Build Coastguard Worker static void dump_aud_pipe_conv_cfg(void)
1585*d83cc019SAndroid Build Coastguard Worker {
1586*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1587*d83cc019SAndroid Build Coastguard Worker 
1588*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PIPE_CONV_CFG);
1589*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_1_Digen\t\t\t%lu\n",    REG_BIT(dword, 0));
1590*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_2_Digen\t\t\t%lu\n",    REG_BIT(dword, 1));
1591*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_3_Digen\t\t\t%lu\n",    REG_BIT(dword, 2));
1592*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_1_Stream_ID\t\t%lu\n",  REG_BITS(dword,  7, 4));
1593*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_2_Stream_ID\t\t%lu\n",  REG_BITS(dword, 11, 8));
1594*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Convertor_3_Stream_ID\t\t%lu\n",  REG_BITS(dword, 15, 12));
1595*d83cc019SAndroid Build Coastguard Worker 
1596*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_B_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 16));
1597*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_C_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 17));
1598*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_D_Out_Enable\t\t\t%lu\n",    REG_BIT(dword, 18));
1599*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_B_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 20));
1600*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_C_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 21));
1601*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONV_CFG  Port_D_Amp_Mute_Status\t\t%lu\n", REG_BIT(dword, 22));
1602*d83cc019SAndroid Build Coastguard Worker }
1603*d83cc019SAndroid Build Coastguard Worker 
dump_aud_dig_cnvt(int index)1604*d83cc019SAndroid Build Coastguard Worker static void dump_aud_dig_cnvt(int index)
1605*d83cc019SAndroid Build Coastguard Worker {
1606*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1607*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1608*d83cc019SAndroid Build Coastguard Worker 
1609*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1610*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_OUT_DIG_CNVT_A  + (index - PIPE_A) * 0x100);
1611*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_OUT_DIG_CNVT_%c", 'A' + index - PIPE_A);
1612*d83cc019SAndroid Build Coastguard Worker 	} else {
1613*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_C1_DIG_CNVT + (index - CONVERTER_1) * 0x100);
1614*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_C%c_DIG_CNVT   ", '1' + index - CONVERTER_1);
1615*d83cc019SAndroid Build Coastguard Worker 	}
1616*d83cc019SAndroid Build Coastguard Worker 
1617*d83cc019SAndroid Build Coastguard Worker 	printf("%s  V\t\t\t\t\t%lu\n",               prefix, REG_BIT(dword, 1));
1618*d83cc019SAndroid Build Coastguard Worker 	printf("%s  VCFG\t\t\t\t%lu\n",              prefix, REG_BIT(dword, 2));
1619*d83cc019SAndroid Build Coastguard Worker 	printf("%s  PRE\t\t\t\t\t%lu\n",             prefix, REG_BIT(dword, 3));
1620*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Copy\t\t\t\t%lu\n",              prefix, REG_BIT(dword, 4));
1621*d83cc019SAndroid Build Coastguard Worker 	printf("%s  NonAudio\t\t\t\t%lu\n",          prefix, REG_BIT(dword, 5));
1622*d83cc019SAndroid Build Coastguard Worker 	printf("%s  PRO\t\t\t\t\t%lu\n",             prefix, REG_BIT(dword, 6));
1623*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Level\t\t\t\t%lu\n",             prefix, REG_BIT(dword, 7));
1624*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Category_Code\t\t\t%lu\n",       prefix, REG_BITS(dword, 14, 8));
1625*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Lowest_Channel_Number\t\t%lu\n", prefix, REG_BITS(dword, 19, 16));
1626*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Stream_ID\t\t\t\t%lu\n",         prefix, REG_BITS(dword, 23, 20));
1627*d83cc019SAndroid Build Coastguard Worker }
1628*d83cc019SAndroid Build Coastguard Worker 
dump_aud_str_desc(int index)1629*d83cc019SAndroid Build Coastguard Worker static void dump_aud_str_desc(int index)
1630*d83cc019SAndroid Build Coastguard Worker {
1631*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1632*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1633*d83cc019SAndroid Build Coastguard Worker 	uint32_t rate;
1634*d83cc019SAndroid Build Coastguard Worker 
1635*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid)) {
1636*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_OUT_STR_DESC_A + (index - PIPE_A) * 0x100);
1637*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_OUT_STR_DESC_%c", 'A' + index - PIPE_A);
1638*d83cc019SAndroid Build Coastguard Worker 	} else {
1639*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_C1_STR_DESC + (index - CONVERTER_1) * 0x100);
1640*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_C%c_STR_DESC  ", '1' + index - CONVERTER_1);
1641*d83cc019SAndroid Build Coastguard Worker 	}
1642*d83cc019SAndroid Build Coastguard Worker 
1643*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Number_of_Channels_in_a_Stream\t%lu\n",   prefix, REG_BITS(dword, 3, 0) + 1);
1644*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Bits_per_Sample\t\t\t[%#lx] %s\n",        prefix, REG_BITS(dword, 6, 4),
1645*d83cc019SAndroid Build Coastguard Worker 		OPNAME(bits_per_sample, REG_BITS(dword, 6, 4)));
1646*d83cc019SAndroid Build Coastguard Worker 
1647*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Sample_Base_Rate_Divisor\t\t[%#lx] %s\n", prefix, REG_BITS(dword, 10, 8),
1648*d83cc019SAndroid Build Coastguard Worker 		OPNAME(sample_base_rate_divisor, REG_BITS(dword, 10, 8)));
1649*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Sample_Base_Rate_Mult\t\t[%#lx] %s\n",    prefix, REG_BITS(dword, 13, 11),
1650*d83cc019SAndroid Build Coastguard Worker 		OPNAME(sample_base_rate_mult, REG_BITS(dword, 13, 11)));
1651*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Sample_Base_Rate\t\t\t[%#lx] %s\t",       prefix, REG_BIT(dword, 14),
1652*d83cc019SAndroid Build Coastguard Worker 		OPNAME(sample_base_rate, REG_BIT(dword, 14)));
1653*d83cc019SAndroid Build Coastguard Worker 	rate = (REG_BIT(dword, 14) ? 44100 : 48000) * (REG_BITS(dword, 13, 11) + 1)
1654*d83cc019SAndroid Build Coastguard Worker 		/(REG_BITS(dword, 10, 8) + 1);
1655*d83cc019SAndroid Build Coastguard Worker 	printf("=> Sample Rate %d Hz\n", rate);
1656*d83cc019SAndroid Build Coastguard Worker 
1657*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Convertor_Channel_Count\t\t%lu\n",        prefix, REG_BITS(dword, 20, 16) + 1);
1658*d83cc019SAndroid Build Coastguard Worker 
1659*d83cc019SAndroid Build Coastguard Worker 	if (!IS_HASWELL_PLUS(devid))
1660*d83cc019SAndroid Build Coastguard Worker 		printf("%s  HBR_enable\t\t\t\t%lu\n",         prefix, REG_BITS(dword, 28, 27));
1661*d83cc019SAndroid Build Coastguard Worker }
1662*d83cc019SAndroid Build Coastguard Worker 
1663*d83cc019SAndroid Build Coastguard Worker #define dump_aud_out_ch_str		dump_aud_out_chan_map
dump_aud_out_chan_map(void)1664*d83cc019SAndroid Build Coastguard Worker static void dump_aud_out_chan_map(void)
1665*d83cc019SAndroid Build Coastguard Worker {
1666*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1667*d83cc019SAndroid Build Coastguard Worker 	int i;
1668*d83cc019SAndroid Build Coastguard Worker 
1669*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_OUT_CHAN_MAP  Converter_Channel_MAP	PORTB	PORTC	PORTD\n");
1670*d83cc019SAndroid Build Coastguard Worker 	for (i = 0; i < 8; i++) {
1671*d83cc019SAndroid Build Coastguard Worker 		OUTREG(aud_reg_base + AUD_OUT_CHAN_MAP, i | (i << 8) | (i << 16));
1672*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_OUT_CHAN_MAP);
1673*d83cc019SAndroid Build Coastguard Worker 		printf("\t\t\t\t%lu\t%lu\t%lu\t%lu\n",
1674*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword,  3,  0),
1675*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword,  7,  4),
1676*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword, 15, 12),
1677*d83cc019SAndroid Build Coastguard Worker 				1 + REG_BITS(dword, 23, 20));
1678*d83cc019SAndroid Build Coastguard Worker 	}
1679*d83cc019SAndroid Build Coastguard Worker }
1680*d83cc019SAndroid Build Coastguard Worker 
dump_aud_connect_list(void)1681*d83cc019SAndroid Build Coastguard Worker static void dump_aud_connect_list(void)
1682*d83cc019SAndroid Build Coastguard Worker {
1683*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1684*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1685*d83cc019SAndroid Build Coastguard Worker 
1686*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PINW_CONNLNG_LIST);
1687*d83cc019SAndroid Build Coastguard Worker 	sprintf(prefix, "AUD_PINW_CONNLNG_LIST");
1688*d83cc019SAndroid Build Coastguard Worker 
1689*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connect_List_Length\t\t%lu\n",     prefix, REG_BITS(dword, 6, 0));
1690*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Form \t\t\t\t[%#lx] %s\n",         prefix, REG_BIT(dword, 7),
1691*d83cc019SAndroid Build Coastguard Worker 		OPNAME(connect_list_form, REG_BIT(dword, 7)));
1692*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connect_List_Entry\t\t%lu, %lu\n", prefix, REG_BITS(dword, 15, 8), REG_BITS(dword, 23, 16));
1693*d83cc019SAndroid Build Coastguard Worker }
1694*d83cc019SAndroid Build Coastguard Worker 
dump_aud_connect_select(void)1695*d83cc019SAndroid Build Coastguard Worker static void dump_aud_connect_select(void)
1696*d83cc019SAndroid Build Coastguard Worker {
1697*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1698*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1699*d83cc019SAndroid Build Coastguard Worker 
1700*d83cc019SAndroid Build Coastguard Worker 	if (IS_HASWELL_PLUS(devid)) {
1701*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_PIPE_CONN_SEL_CTRL);
1702*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_PIPE_CONN_SEL_CTRL");
1703*d83cc019SAndroid Build Coastguard Worker 
1704*d83cc019SAndroid Build Coastguard Worker 	} else {
1705*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_PINW_CONNLNG_SEL);
1706*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "AUD_PINW_CONNLNG_SEL  ");
1707*d83cc019SAndroid Build Coastguard Worker 	}
1708*d83cc019SAndroid Build Coastguard Worker 
1709*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connection_select_Port_B\t%#lx\n", prefix, REG_BITS(dword,  7,  0));
1710*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connection_select_Port_C\t%#lx\n", prefix, REG_BITS(dword, 15,  8));
1711*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connection_select_Port_D\t%#lx\n", prefix, REG_BITS(dword, 23, 16));
1712*d83cc019SAndroid Build Coastguard Worker }
1713*d83cc019SAndroid Build Coastguard Worker 
dump_aud_ctrl_state(int index)1714*d83cc019SAndroid Build Coastguard Worker static void dump_aud_ctrl_state(int index)
1715*d83cc019SAndroid Build Coastguard Worker {
1716*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1717*d83cc019SAndroid Build Coastguard Worker 	int offset;
1718*d83cc019SAndroid Build Coastguard Worker 
1719*d83cc019SAndroid Build Coastguard Worker 	if (IS_HASWELL_PLUS(devid)) {
1720*d83cc019SAndroid Build Coastguard Worker 		offset = (index - TRANSCODER_A) * 0x100;
1721*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_TCA_DIP_ELD_CTRL_ST + offset);
1722*d83cc019SAndroid Build Coastguard Worker 		printf("Audio DIP and ELD control state for Transcoder %c\n",  'A' + index - TRANSCODER_A);
1723*d83cc019SAndroid Build Coastguard Worker 	} else {
1724*d83cc019SAndroid Build Coastguard Worker 		offset = (index - PIPE_A) * 0x100;
1725*d83cc019SAndroid Build Coastguard Worker 		dword = INREG(aud_reg_base + AUD_CNTL_ST_A + offset);
1726*d83cc019SAndroid Build Coastguard Worker 		printf("Audio control state - Pipe %c\n",  'A' + index - PIPE_A);
1727*d83cc019SAndroid Build Coastguard Worker 	}
1728*d83cc019SAndroid Build Coastguard Worker 
1729*d83cc019SAndroid Build Coastguard Worker 	printf("\tELD_ACK\t\t\t\t\t\t%lu\n",                                 REG_BIT(dword, 4));
1730*d83cc019SAndroid Build Coastguard Worker 	printf("\tELD_buffer_size\t\t\t\t\t%lu\n",                           REG_BITS(dword, 14, 10));
1731*d83cc019SAndroid Build Coastguard Worker 	printf("\tDIP_transmission_frequency\t\t\t[0x%lx] %s\n",             REG_BITS(dword, 17, 16),
1732*d83cc019SAndroid Build Coastguard Worker 		dip_trans[REG_BITS(dword, 17, 16)]);
1733*d83cc019SAndroid Build Coastguard Worker 	printf("\tDIP Buffer Index \t\t\t\t[0x%lx] %s\n",                    REG_BITS(dword, 20, 18),
1734*d83cc019SAndroid Build Coastguard Worker 		dip_index[REG_BITS(dword, 20, 18)]);
1735*d83cc019SAndroid Build Coastguard Worker 	printf("\tAudio DIP type enable status\t\t\t[0x%04lx] %s, %s, %s\n", REG_BITS(dword, 24, 21),
1736*d83cc019SAndroid Build Coastguard Worker 		dip_type[REG_BIT(dword, 21)], dip_gen1_state[REG_BIT(dword, 22)],  dip_gen2_state[REG_BIT(dword, 23)]);
1737*d83cc019SAndroid Build Coastguard Worker 	printf("\tAudio DIP port select\t\t\t\t[0x%lx] %s\n",                REG_BITS(dword, 30, 29),
1738*d83cc019SAndroid Build Coastguard Worker 		dip_port[REG_BITS(dword, 30, 29)]);
1739*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
1740*d83cc019SAndroid Build Coastguard Worker }
1741*d83cc019SAndroid Build Coastguard Worker 
dump_aud_ctrl_state2(void)1742*d83cc019SAndroid Build Coastguard Worker static void dump_aud_ctrl_state2(void)
1743*d83cc019SAndroid Build Coastguard Worker {
1744*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1745*d83cc019SAndroid Build Coastguard Worker 
1746*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_CNTL_ST2);
1747*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  ELD_validB\t\t\t\t%lu\n",  REG_BIT(dword, 0));
1748*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  CP_ReadyB\t\t\t\t\t%lu\n", REG_BIT(dword, 1));
1749*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  ELD_validC\t\t\t\t%lu\n",  REG_BIT(dword, 4));
1750*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  CP_ReadyC\t\t\t\t\t%lu\n", REG_BIT(dword, 5));
1751*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  ELD_validD\t\t\t\t%lu\n",  REG_BIT(dword, 8));
1752*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CNTL_ST2  CP_ReadyD\t\t\t\t\t%lu\n", REG_BIT(dword, 9));
1753*d83cc019SAndroid Build Coastguard Worker }
1754*d83cc019SAndroid Build Coastguard Worker 
1755*d83cc019SAndroid Build Coastguard Worker /* for hsw+ */
dump_aud_eld_cp_vld(void)1756*d83cc019SAndroid Build Coastguard Worker static void dump_aud_eld_cp_vld(void)
1757*d83cc019SAndroid Build Coastguard Worker {
1758*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1759*d83cc019SAndroid Build Coastguard Worker 
1760*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PIN_ELD_CP_VLD);
1761*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_A ELD_valid\t\t%lu\n",	REG_BIT(dword, 0));
1762*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_A CP_Ready \t\t%lu\n",	REG_BIT(dword, 1));
1763*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_A Out_enable\t\t%lu\n",	REG_BIT(dword, 2));
1764*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_A Inactive\t\t%lu\n",	REG_BIT(dword, 3));
1765*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_B ELD_valid\t\t%lu\n",	REG_BIT(dword, 4));
1766*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_B CP_Ready\t\t%lu\n",	REG_BIT(dword, 5));
1767*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_B OUT_enable\t\t%lu\n",	REG_BIT(dword, 6));
1768*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_B Inactive\t\t%lu\n",    REG_BIT(dword, 7));
1769*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_C ELD_valid\t\t%lu\n",	REG_BIT(dword, 8));
1770*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_C CP_Ready\t\t%lu\n",	REG_BIT(dword, 9));
1771*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_C OUT_enable\t\t%lu\n",	REG_BIT(dword, 10));
1772*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIN_ELD_CP_VLD  Transcoder_C Inactive\t\t%lu\n",    REG_BIT(dword, 11));
1773*d83cc019SAndroid Build Coastguard Worker }
1774*d83cc019SAndroid Build Coastguard Worker 
dump_aud_hdmi_status(void)1775*d83cc019SAndroid Build Coastguard Worker static void dump_aud_hdmi_status(void)
1776*d83cc019SAndroid Build Coastguard Worker {
1777*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1778*d83cc019SAndroid Build Coastguard Worker 
1779*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_HDMIW_STATUS);
1780*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Function_Reset\t\t\t%lu\n",                REG_BIT(dword, 24));
1781*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  BCLK/CDCLK_FIFO_Overrun\t\t%lu\n",	     REG_BIT(dword, 25));
1782*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_A_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 28));
1783*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_A_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 29));
1784*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_B_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 30));
1785*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMIW_STATUS  Conv_B_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 31));
1786*d83cc019SAndroid Build Coastguard Worker }
1787*d83cc019SAndroid Build Coastguard Worker 
1788*d83cc019SAndroid Build Coastguard Worker /*
1789*d83cc019SAndroid Build Coastguard Worker  * Display registers of Ironlake and Valleyview
1790*d83cc019SAndroid Build Coastguard Worker  */
1791*d83cc019SAndroid Build Coastguard Worker #undef DP_CTL_B
1792*d83cc019SAndroid Build Coastguard Worker #undef DP_CTL_C
1793*d83cc019SAndroid Build Coastguard Worker #undef DP_CTL_D
1794*d83cc019SAndroid Build Coastguard Worker 
1795*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_B           0x4100
1796*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_C           0x4200
1797*d83cc019SAndroid Build Coastguard Worker #define DP_CTL_D           0x4300
1798*d83cc019SAndroid Build Coastguard Worker 
1799*d83cc019SAndroid Build Coastguard Worker /* ILK HDMI port ctrl */
1800*d83cc019SAndroid Build Coastguard Worker #define HDMI_CTL_B         0x1140
1801*d83cc019SAndroid Build Coastguard Worker #define HDMI_CTL_C         0x1150
1802*d83cc019SAndroid Build Coastguard Worker #define HDMI_CTL_D         0x1160
1803*d83cc019SAndroid Build Coastguard Worker #define BSW_HDMI_CTL_B		0x1140
1804*d83cc019SAndroid Build Coastguard Worker #define BSW_HDMI_CTL_C		0x1160
1805*d83cc019SAndroid Build Coastguard Worker #define BSW_HDMI_CTL_D		0x116c
1806*d83cc019SAndroid Build Coastguard Worker 
1807*d83cc019SAndroid Build Coastguard Worker /* VLV HDMI port ctrl */
1808*d83cc019SAndroid Build Coastguard Worker #define SDVO_HDMI_CTL_B    0x1140
1809*d83cc019SAndroid Build Coastguard Worker #define SDVO_HDMI_CTL_C    0x1160
1810*d83cc019SAndroid Build Coastguard Worker 
dump_dp_port_ctrl(int port)1811*d83cc019SAndroid Build Coastguard Worker static void dump_dp_port_ctrl(int port)
1812*d83cc019SAndroid Build Coastguard Worker {
1813*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1814*d83cc019SAndroid Build Coastguard Worker 	int port_ctrl;
1815*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1816*d83cc019SAndroid Build Coastguard Worker 
1817*d83cc019SAndroid Build Coastguard Worker 	sprintf(prefix, "DP_%c", 'B' + port - PORT_B);
1818*d83cc019SAndroid Build Coastguard Worker 
1819*d83cc019SAndroid Build Coastguard Worker 	port_ctrl = disp_reg_base + DP_CTL_B + (port - PORT_B) * 0x100;
1820*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(port_ctrl);
1821*d83cc019SAndroid Build Coastguard Worker 	printf("%s DisplayPort_Enable\t\t\t\t\t%lu\n",        prefix, REG_BIT(dword, 31));
1822*d83cc019SAndroid Build Coastguard Worker 	printf("%s Transcoder_Select\t\t\t\t\t%s\n",          prefix, REG_BIT(dword, 30) ? "Transcoder B" : "Transcoder A");
1823*d83cc019SAndroid Build Coastguard Worker 	printf("%s Port_Width_Selection\t\t\t\t[0x%lx] %s\n", prefix, REG_BITS(dword, 21, 19),
1824*d83cc019SAndroid Build Coastguard Worker 		dp_port_width[REG_BITS(dword, 21, 19)]);
1825*d83cc019SAndroid Build Coastguard Worker 	printf("%s Port_Detected\t\t\t\t\t%lu\n",             prefix, REG_BIT(dword, 2));
1826*d83cc019SAndroid Build Coastguard Worker 	printf("%s HDCP_Port_Select\t\t\t\t\t%lu\n",          prefix, REG_BIT(dword, 5));
1827*d83cc019SAndroid Build Coastguard Worker 	printf("%s Audio_Output_Enable\t\t\t\t%lu\n",         prefix, REG_BIT(dword, 6));
1828*d83cc019SAndroid Build Coastguard Worker }
1829*d83cc019SAndroid Build Coastguard Worker 
dump_hdmi_port_ctrl(int port)1830*d83cc019SAndroid Build Coastguard Worker static void dump_hdmi_port_ctrl(int port)
1831*d83cc019SAndroid Build Coastguard Worker {
1832*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1833*d83cc019SAndroid Build Coastguard Worker 	int port_ctrl;
1834*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
1835*d83cc019SAndroid Build Coastguard Worker 
1836*d83cc019SAndroid Build Coastguard Worker 	if (IS_VALLEYVIEW(devid)) {
1837*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "SDVO/HDMI%c", 'B' + port - PORT_B);
1838*d83cc019SAndroid Build Coastguard Worker 		port_ctrl = disp_reg_base + SDVO_HDMI_CTL_B + (port - PORT_B) * 0x20;
1839*d83cc019SAndroid Build Coastguard Worker 	} else {
1840*d83cc019SAndroid Build Coastguard Worker 		sprintf(prefix, "HDMI%c     ", 'B' + port - PORT_B);
1841*d83cc019SAndroid Build Coastguard Worker 		port_ctrl = disp_reg_base + HDMI_CTL_B + (port - PORT_B) * 0x10;
1842*d83cc019SAndroid Build Coastguard Worker 	}
1843*d83cc019SAndroid Build Coastguard Worker 
1844*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(port_ctrl);
1845*d83cc019SAndroid Build Coastguard Worker 	printf("%s HDMI_Enable\t\t\t\t\t%u\n",                 prefix, !!(dword & SDVO_ENABLE));
1846*d83cc019SAndroid Build Coastguard Worker 	printf("%s Transcoder_Select\t\t\t\t%s\n",             prefix, REG_BIT(dword, 30) ? "Transcoder B" : "Transcoder A");
1847*d83cc019SAndroid Build Coastguard Worker 	printf("%s HDCP_Port_Select\t\t\t\t%lu\n",             prefix, REG_BIT(dword, 5));
1848*d83cc019SAndroid Build Coastguard Worker 	if (port == PORT_B) /* TODO: check spec, not found in Ibx b-spec, and only for port B? */
1849*d83cc019SAndroid Build Coastguard Worker 		printf("%s SDVO Hot Plug Interrupt Detect Enable\t%lu\n", prefix, REG_BIT(dword, 23));
1850*d83cc019SAndroid Build Coastguard Worker 	printf("%s Digital_Port_Detected\t\t\t%lu\n",          prefix, REG_BIT(dword, 2));
1851*d83cc019SAndroid Build Coastguard Worker 	printf("%s Encoding\t\t\t\t\t[0x%lx] %s\n",            prefix, REG_BITS(dword, 11, 10),
1852*d83cc019SAndroid Build Coastguard Worker 		sdvo_hdmi_encoding[REG_BITS(dword, 11, 10)]);
1853*d83cc019SAndroid Build Coastguard Worker 	printf("%s Null_packets_enabled_during_Vsync\t\t%u\n", prefix, !!(dword & SDVO_NULL_PACKETS_DURING_VSYNC));
1854*d83cc019SAndroid Build Coastguard Worker 	printf("%s Audio_Output_Enable\t\t\t\t%u\n",           prefix, !!(dword & SDVO_AUDIO_ENABLE));
1855*d83cc019SAndroid Build Coastguard Worker }
1856*d83cc019SAndroid Build Coastguard Worker 
dump_ironlake(void)1857*d83cc019SAndroid Build Coastguard Worker static void dump_ironlake(void)
1858*d83cc019SAndroid Build Coastguard Worker {
1859*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
1860*d83cc019SAndroid Build Coastguard Worker 
1861*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
1862*d83cc019SAndroid Build Coastguard Worker 		set_reg_base(0xe0000, 0x2000);   /* ironlake */
1863*d83cc019SAndroid Build Coastguard Worker 	else
1864*d83cc019SAndroid Build Coastguard Worker 		set_reg_base(0x60000 + VLV_DISPLAY_BASE, 0x2000);
1865*d83cc019SAndroid Build Coastguard Worker 
1866*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid)) {
1867*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(HDMI_CTL_B,       "sDVO/HDMI Port B Control");
1868*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(HDMI_CTL_C,       "HDMI Port C Control");
1869*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(HDMI_CTL_D,       "HDMI Port D Control");
1870*d83cc019SAndroid Build Coastguard Worker 	} else {
1871*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(SDVO_HDMI_CTL_B,  "sDVO/HDMI Port B Control");
1872*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(SDVO_HDMI_CTL_C,  "sDVO/HDMI Port C Control");
1873*d83cc019SAndroid Build Coastguard Worker 	}
1874*d83cc019SAndroid Build Coastguard Worker 
1875*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DP_CTL_B,                 "DisplayPort B Control Register");
1876*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DP_CTL_C,                 "DisplayPort C Control Register");
1877*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
1878*d83cc019SAndroid Build Coastguard Worker 		dump_disp_reg(DP_CTL_D,         "DisplayPort D Control Register");
1879*d83cc019SAndroid Build Coastguard Worker 
1880*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CONFIG_A,              "Audio Configuration - Transcoder A");
1881*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CONFIG_B,              "Audio Configuration - Transcoder B");
1882*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CTS_ENABLE_A,          "Audio CTS Programming Enable - Transcoder A");
1883*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CTS_ENABLE_B,          "Audio CTS Programming Enable - Transcoder B");
1884*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_MISC_CTRL_A,           "Audio MISC Control for Transcoder A");
1885*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_MISC_CTRL_B,           "Audio MISC Control for Transcoder B");
1886*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_VID_DID,               "Audio Vendor ID / Device ID");
1887*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_RID,                   "Audio Revision ID");
1888*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PWRST,                 "Audio Power State (Function Group, Convertor, Pin Widget)");
1889*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PORT_EN_HD_CFG,        "Audio Port Enable HDAudio Config");
1890*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_DIG_CNVT_A,        "Audio Digital Converter - Conv A");
1891*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_DIG_CNVT_B,        "Audio Digital Converter - Conv B");
1892*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_CH_STR,            "Audio Channel ID and Stream ID");
1893*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_STR_DESC_A,        "Audio Stream Descriptor Format - Conv A");
1894*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_STR_DESC_B,        "Audio Stream Descriptor Format - Conv B");
1895*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PINW_CONNLNG_LIST,     "Audio Connection List");
1896*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PINW_CONNLNG_SEL,      "Audio Connection Select");
1897*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CNTL_ST_A,             "Audio Control State Register - Transcoder A");
1898*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CNTL_ST_B,             "Audio Control State Register - Transcoder B");
1899*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CNTL_ST2,              "Audio Control State 2");
1900*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMIW_STATUS,          "Audio HDMI Status");
1901*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMIW_HDMIEDID_A,      "HDMI Data EDID Block - Transcoder A");
1902*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMIW_HDMIEDID_B,      "HDMI Data EDID Block - Transcoder B");
1903*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMIW_INFOFR_A,        "Audio Widget Data Island Packet - Transcoder A");
1904*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMIW_INFOFR_B,        "Audio Widget Data Island Packet - Transcoder B");
1905*d83cc019SAndroid Build Coastguard Worker 
1906*d83cc019SAndroid Build Coastguard Worker 	printf("\nDetails:\n\n");
1907*d83cc019SAndroid Build Coastguard Worker 
1908*d83cc019SAndroid Build Coastguard Worker 	dump_aud_vendor_device_id();
1909*d83cc019SAndroid Build Coastguard Worker 	dump_aud_revision_id();
1910*d83cc019SAndroid Build Coastguard Worker 
1911*d83cc019SAndroid Build Coastguard Worker 	dump_hdmi_port_ctrl(PORT_B);
1912*d83cc019SAndroid Build Coastguard Worker 	dump_hdmi_port_ctrl(PORT_C);
1913*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
1914*d83cc019SAndroid Build Coastguard Worker 		dump_hdmi_port_ctrl(PORT_D);
1915*d83cc019SAndroid Build Coastguard Worker 
1916*d83cc019SAndroid Build Coastguard Worker 	dump_dp_port_ctrl(PORT_B);
1917*d83cc019SAndroid Build Coastguard Worker 	dump_dp_port_ctrl(PORT_C);
1918*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
1919*d83cc019SAndroid Build Coastguard Worker 		dump_dp_port_ctrl(PORT_D);
1920*d83cc019SAndroid Build Coastguard Worker 
1921*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(PIPE_A);
1922*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(PIPE_B);
1923*d83cc019SAndroid Build Coastguard Worker 
1924*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(PIPE_A);
1925*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(PIPE_B);
1926*d83cc019SAndroid Build Coastguard Worker 
1927*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(PIPE_A);
1928*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(PIPE_B);
1929*d83cc019SAndroid Build Coastguard Worker 
1930*d83cc019SAndroid Build Coastguard Worker 	dump_aud_power_state();
1931*d83cc019SAndroid Build Coastguard Worker 	dump_aud_port_en_hd_cfg();
1932*d83cc019SAndroid Build Coastguard Worker 
1933*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(PIPE_A);
1934*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(PIPE_B);
1935*d83cc019SAndroid Build Coastguard Worker 
1936*d83cc019SAndroid Build Coastguard Worker 	dump_aud_out_ch_str();
1937*d83cc019SAndroid Build Coastguard Worker 
1938*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(PIPE_A);
1939*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(PIPE_B);
1940*d83cc019SAndroid Build Coastguard Worker 
1941*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_list();
1942*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_select();
1943*d83cc019SAndroid Build Coastguard Worker 
1944*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state(PIPE_A);
1945*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state(PIPE_B);
1946*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state2();
1947*d83cc019SAndroid Build Coastguard Worker 
1948*d83cc019SAndroid Build Coastguard Worker 	dump_aud_hdmi_status();
1949*d83cc019SAndroid Build Coastguard Worker 
1950*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(PIPE_A);
1951*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(PIPE_B);
1952*d83cc019SAndroid Build Coastguard Worker 
1953*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(PIPE_A);
1954*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(PIPE_B);
1955*d83cc019SAndroid Build Coastguard Worker }
1956*d83cc019SAndroid Build Coastguard Worker 
1957*d83cc019SAndroid Build Coastguard Worker #undef VIDEO_DIP_CTL_A
1958*d83cc019SAndroid Build Coastguard Worker #undef VIDEO_DIP_CTL_B
1959*d83cc019SAndroid Build Coastguard Worker #undef VIDEO_DIP_CTL_C
1960*d83cc019SAndroid Build Coastguard Worker #undef VIDEO_DIP_CTL_D
1961*d83cc019SAndroid Build Coastguard Worker #undef VIDEO_DIP_DATA
1962*d83cc019SAndroid Build Coastguard Worker 
1963*d83cc019SAndroid Build Coastguard Worker /*
1964*d83cc019SAndroid Build Coastguard Worker  * Haswell+ display registers
1965*d83cc019SAndroid Build Coastguard Worker  */
1966*d83cc019SAndroid Build Coastguard Worker 
1967*d83cc019SAndroid Build Coastguard Worker /* DisplayPort Transport Control */
1968*d83cc019SAndroid Build Coastguard Worker #define DP_TP_CTL_A           0x64040
1969*d83cc019SAndroid Build Coastguard Worker #define DP_TP_CTL_B           0x64140
1970*d83cc019SAndroid Build Coastguard Worker #define DP_TP_CTL_C           0x64240
1971*d83cc019SAndroid Build Coastguard Worker #define DP_TP_CTL_D           0x64340
1972*d83cc019SAndroid Build Coastguard Worker #define DP_TP_CTL_E           0x64440
1973*d83cc019SAndroid Build Coastguard Worker 
1974*d83cc019SAndroid Build Coastguard Worker /* DisplayPort Transport Status */
1975*d83cc019SAndroid Build Coastguard Worker #define DP_TP_ST_A            0x64044
1976*d83cc019SAndroid Build Coastguard Worker #define DP_TP_ST_B            0x64144
1977*d83cc019SAndroid Build Coastguard Worker #define DP_TP_ST_C            0x64244
1978*d83cc019SAndroid Build Coastguard Worker #define DP_TP_ST_D            0x64344
1979*d83cc019SAndroid Build Coastguard Worker #define DP_TP_ST_E            0x64444
1980*d83cc019SAndroid Build Coastguard Worker 
1981*d83cc019SAndroid Build Coastguard Worker /* DDI Buffer Control */
1982*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_CTL_A         0x64000
1983*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_CTL_B         0x64100
1984*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_CTL_C         0x64200
1985*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_CTL_D         0x64300
1986*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_CTL_E         0x64400
1987*d83cc019SAndroid Build Coastguard Worker 
1988*d83cc019SAndroid Build Coastguard Worker /* DDI Buffer Translation */
1989*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_TRANS_A       0x64e00
1990*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_TRANS_B       0x64e60
1991*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_TRANS_C       0x64ec0
1992*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_TRANS_D       0x64f20
1993*d83cc019SAndroid Build Coastguard Worker #define DDI_BUF_TRANS_E       0x64f80
1994*d83cc019SAndroid Build Coastguard Worker 
1995*d83cc019SAndroid Build Coastguard Worker /* DDI Aux Channel */
1996*d83cc019SAndroid Build Coastguard Worker #define DDI_AUX_CHANNEL_CTRL  0x64010
1997*d83cc019SAndroid Build Coastguard Worker #define DDI_AUX_DATA          0x64014
1998*d83cc019SAndroid Build Coastguard Worker #define DDI_AUX_TST           0x64028
1999*d83cc019SAndroid Build Coastguard Worker 
2000*d83cc019SAndroid Build Coastguard Worker /* DDI CRC Control */
2001*d83cc019SAndroid Build Coastguard Worker #define DDI_CRC_CTL_A         0x64050
2002*d83cc019SAndroid Build Coastguard Worker #define DDI_CRC_CTL_B         0x64150
2003*d83cc019SAndroid Build Coastguard Worker #define DDI_CRC_CTL_C         0x64250
2004*d83cc019SAndroid Build Coastguard Worker #define DDI_CRC_CTL_D         0x64350
2005*d83cc019SAndroid Build Coastguard Worker #define DDI_CRC_CTL_E         0x64450
2006*d83cc019SAndroid Build Coastguard Worker 
2007*d83cc019SAndroid Build Coastguard Worker /* Pipe DDI Function Control */
2008*d83cc019SAndroid Build Coastguard Worker #define PIPE_DDI_FUNC_CTL_A   0x60400
2009*d83cc019SAndroid Build Coastguard Worker #define PIPE_DDI_FUNC_CTL_B   0x61400
2010*d83cc019SAndroid Build Coastguard Worker #define PIPE_DDI_FUNC_CTL_C   0x62400
2011*d83cc019SAndroid Build Coastguard Worker #define PIPE_DDI_FUNC_CTL_EDP 0x6F400
2012*d83cc019SAndroid Build Coastguard Worker 
2013*d83cc019SAndroid Build Coastguard Worker /* Pipe Configuration */
2014*d83cc019SAndroid Build Coastguard Worker #define PIPE_CONF_A           0x70008
2015*d83cc019SAndroid Build Coastguard Worker #define PIPE_CONF_B           0x71008
2016*d83cc019SAndroid Build Coastguard Worker #define PIPE_CONF_C           0x72008
2017*d83cc019SAndroid Build Coastguard Worker #define PIPE_CONF_EDP         0x7F008
2018*d83cc019SAndroid Build Coastguard Worker 
2019*d83cc019SAndroid Build Coastguard Worker /* Video DIP Control */
2020*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_A       0x60200
2021*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_B       0x61200
2022*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_C       0x62200
2023*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_CTL_D       0x63200
2024*d83cc019SAndroid Build Coastguard Worker 
2025*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_DATA        0x60220
2026*d83cc019SAndroid Build Coastguard Worker #define VIDEO_DIP_ECC         0x60240
2027*d83cc019SAndroid Build Coastguard Worker 
dump_ddi_buf_ctl(int port)2028*d83cc019SAndroid Build Coastguard Worker static void dump_ddi_buf_ctl(int port)
2029*d83cc019SAndroid Build Coastguard Worker {
2030*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2031*d83cc019SAndroid Build Coastguard Worker 
2032*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(DDI_BUF_CTL_A + (port - PORT_A) * 0x100);
2033*d83cc019SAndroid Build Coastguard Worker 	printf("DDI %c Buffer control\n", 'A' + port - PORT_A);
2034*d83cc019SAndroid Build Coastguard Worker 
2035*d83cc019SAndroid Build Coastguard Worker 	printf("\tDP port width\t\t\t\t\t[0x%lx] %s\n", REG_BITS(dword, 3, 1),
2036*d83cc019SAndroid Build Coastguard Worker 		OPNAME(dp_port_width, REG_BITS(dword, 3, 1)));
2037*d83cc019SAndroid Build Coastguard Worker 	printf("\tDDI Buffer Enable\t\t\t\t%ld\n",      REG_BIT(dword, 31));
2038*d83cc019SAndroid Build Coastguard Worker }
2039*d83cc019SAndroid Build Coastguard Worker 
dump_ddi_func_ctl(int pipe)2040*d83cc019SAndroid Build Coastguard Worker static void dump_ddi_func_ctl(int pipe)
2041*d83cc019SAndroid Build Coastguard Worker {
2042*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2043*d83cc019SAndroid Build Coastguard Worker 
2044*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(PIPE_DDI_FUNC_CTL_A + (pipe - PIPE_A) * 0x1000);
2045*d83cc019SAndroid Build Coastguard Worker 	printf("Pipe %c DDI Function Control\n", 'A' + pipe - PIPE_A);
2046*d83cc019SAndroid Build Coastguard Worker 
2047*d83cc019SAndroid Build Coastguard Worker 	printf("\tREG_BITS per color\t\t\t\t\t[0x%lx] %s\n", REG_BITS(dword, 22, 20),
2048*d83cc019SAndroid Build Coastguard Worker 		OPNAME(bits_per_color, REG_BITS(dword, 22, 20)));
2049*d83cc019SAndroid Build Coastguard Worker 	printf("\tPIPE DDI Mode\t\t\t\t\t[0x%lx] %s\n",     REG_BITS(dword, 26, 24),
2050*d83cc019SAndroid Build Coastguard Worker 		OPNAME(ddi_mode, REG_BITS(dword, 26, 24)));
2051*d83cc019SAndroid Build Coastguard Worker 	printf("\tPIPE DDI selection\t\t\t\t[0x%lx] %s\n",  REG_BITS(dword, 30, 28),
2052*d83cc019SAndroid Build Coastguard Worker 		OPNAME(trans_to_port_sel, REG_BITS(dword, 30, 28)));
2053*d83cc019SAndroid Build Coastguard Worker 	printf("\tPIPE DDI Function Enable\t\t\t[0x%lx]\n", REG_BIT(dword, 31));
2054*d83cc019SAndroid Build Coastguard Worker }
2055*d83cc019SAndroid Build Coastguard Worker 
dump_aud_connect_list_entry_length(int transcoder)2056*d83cc019SAndroid Build Coastguard Worker static void dump_aud_connect_list_entry_length(int transcoder)
2057*d83cc019SAndroid Build Coastguard Worker {
2058*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2059*d83cc019SAndroid Build Coastguard Worker 	char prefix[MAX_PREFIX_SIZE];
2060*d83cc019SAndroid Build Coastguard Worker 
2061*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH + (transcoder - TRANSCODER_A) * 0x100);
2062*d83cc019SAndroid Build Coastguard Worker 	sprintf(prefix, "AUD_TC%c_PIN_PIPE_CONN_ENTRY_LNGTH", 'A' + transcoder - TRANSCODER_A);
2063*d83cc019SAndroid Build Coastguard Worker 
2064*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connect_List_Length\t%lu\n", prefix, REG_BITS(dword, 6, 0));
2065*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Form \t\t[%#lx] %s\n",       prefix, REG_BIT(dword, 7),
2066*d83cc019SAndroid Build Coastguard Worker 		OPNAME(connect_list_form, REG_BIT(dword, 7)));
2067*d83cc019SAndroid Build Coastguard Worker 	printf("%s  Connect_List_Entry\t%lu\n",  prefix, REG_BITS(dword, 15, 8));
2068*d83cc019SAndroid Build Coastguard Worker }
2069*d83cc019SAndroid Build Coastguard Worker 
dump_aud_connect_select_ctrl(void)2070*d83cc019SAndroid Build Coastguard Worker static void dump_aud_connect_select_ctrl(void)
2071*d83cc019SAndroid Build Coastguard Worker {
2072*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2073*d83cc019SAndroid Build Coastguard Worker 
2074*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_PIPE_CONN_SEL_CTRL);
2075*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONN_SEL_CTRL  Connection_select_Port_B\t%#lx\n", REG_BITS(dword,  7,  0));
2076*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONN_SEL_CTRL  Connection_select_Port_C\t%#lx\n", REG_BITS(dword, 15,  8));
2077*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_PIPE_CONN_SEL_CTRL  Connection_select_Port_D\t%#lx\n", REG_BITS(dword, 23, 16));
2078*d83cc019SAndroid Build Coastguard Worker }
2079*d83cc019SAndroid Build Coastguard Worker 
dump_aud_dip_eld_ctrl_st(int transcoder)2080*d83cc019SAndroid Build Coastguard Worker static void dump_aud_dip_eld_ctrl_st(int transcoder)
2081*d83cc019SAndroid Build Coastguard Worker {
2082*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2083*d83cc019SAndroid Build Coastguard Worker 	int offset = (transcoder - TRANSCODER_A) * 0x100;
2084*d83cc019SAndroid Build Coastguard Worker 
2085*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_TCA_DIP_ELD_CTRL_ST + offset);
2086*d83cc019SAndroid Build Coastguard Worker 	printf("Audio DIP and ELD control state for Transcoder %c\n",  'A' + transcoder - TRANSCODER_A);
2087*d83cc019SAndroid Build Coastguard Worker 
2088*d83cc019SAndroid Build Coastguard Worker 	printf("\tELD_ACK\t\t\t\t\t\t%lu\n",                                 REG_BIT(dword, 4));
2089*d83cc019SAndroid Build Coastguard Worker 	printf("\tELD_buffer_size\t\t\t\t\t%lu\n",                           REG_BITS(dword, 14, 10));
2090*d83cc019SAndroid Build Coastguard Worker 	printf("\tDIP_transmission_frequency\t\t\t[0x%lx] %s\n",             REG_BITS(dword, 17, 16),
2091*d83cc019SAndroid Build Coastguard Worker 		dip_trans[REG_BITS(dword, 17, 16)]);
2092*d83cc019SAndroid Build Coastguard Worker 	printf("\tDIP Buffer Index \t\t\t\t[0x%lx] %s\n",                    REG_BITS(dword, 20, 18),
2093*d83cc019SAndroid Build Coastguard Worker 		dip_index[REG_BITS(dword, 20, 18)]);
2094*d83cc019SAndroid Build Coastguard Worker 	printf("\tAudio DIP type enable status\t\t\t[0x%04lx] %s, %s, %s\n", REG_BITS(dword, 24, 21),
2095*d83cc019SAndroid Build Coastguard Worker 		dip_type[REG_BIT(dword, 21)], dip_gen1_state[REG_BIT(dword, 22)],  dip_gen2_state[REG_BIT(dword, 23)]);
2096*d83cc019SAndroid Build Coastguard Worker 	printf("\tAudio DIP port select\t\t\t\t[0x%lx] %s\n",                REG_BITS(dword, 30, 29),
2097*d83cc019SAndroid Build Coastguard Worker 		dip_port[REG_BITS(dword, 30, 29)]);
2098*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
2099*d83cc019SAndroid Build Coastguard Worker }
2100*d83cc019SAndroid Build Coastguard Worker 
dump_aud_hdmi_fifo_status(void)2101*d83cc019SAndroid Build Coastguard Worker static void dump_aud_hdmi_fifo_status(void)
2102*d83cc019SAndroid Build Coastguard Worker {
2103*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2104*d83cc019SAndroid Build Coastguard Worker 
2105*d83cc019SAndroid Build Coastguard Worker 	dword = INREG(aud_reg_base + AUD_HDMI_FIFO_STATUS);
2106*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Function_Reset\t\t\t%lu\n",                REG_BIT(dword, 24));
2107*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_1_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 26));
2108*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_1_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 27));
2109*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_2_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 28));
2110*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_2_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 29));
2111*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_3_CDCLK/DOTCLK_FIFO_Overrun\t%lu\n",  REG_BIT(dword, 30));
2112*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_HDMI_FIFO_STATUS  Conv_3_CDCLK/DOTCLK_FIFO_Underrun\t%lu\n", REG_BIT(dword, 31));
2113*d83cc019SAndroid Build Coastguard Worker }
2114*d83cc019SAndroid Build Coastguard Worker 
parse_bdw_audio_chicken_bit_reg(uint32_t dword)2115*d83cc019SAndroid Build Coastguard Worker static void parse_bdw_audio_chicken_bit_reg(uint32_t dword)
2116*d83cc019SAndroid Build Coastguard Worker {
2117*d83cc019SAndroid Build Coastguard Worker 	printf("\t");
2118*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(vanilla_dp12_en,           REG_BIT(dword, 31)));
2119*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(vanilla_3_widgets_en,      REG_BIT(dword, 30)));
2120*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(block_audio,               REG_BIT(dword, 10)));
2121*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(dis_eld_valid_pulse_trans, REG_BIT(dword, 9)));
2122*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(dis_pd_pulse_trans,        REG_BIT(dword, 8)));
2123*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(dis_ts_delta_err,          REG_BIT(dword, 7)));
2124*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(dis_ts_fix_dp_hbr,         REG_BIT(dword, 6)));
2125*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(pattern_gen_8_ch_en,       REG_BIT(dword, 5)));
2126*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(pattern_gen_2_ch_en,       REG_BIT(dword, 4)));
2127*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(fabric_32_44_dis,          REG_BIT(dword, 3)));
2128*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(epss_dis,                  REG_BIT(dword, 2)));
2129*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(ts_test_mode,              REG_BIT(dword, 1)));
2130*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n",   OPNAME(en_mmio_program,           REG_BIT(dword, 0)));
2131*d83cc019SAndroid Build Coastguard Worker }
2132*d83cc019SAndroid Build Coastguard Worker 
parse_skl_audio_freq_cntrl_reg(uint32_t dword)2133*d83cc019SAndroid Build Coastguard Worker static void parse_skl_audio_freq_cntrl_reg(uint32_t dword)
2134*d83cc019SAndroid Build Coastguard Worker {
2135*d83cc019SAndroid Build Coastguard Worker 	printf("\t");
2136*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(sdi_operate_mode,          REG_BIT(dword, 15)));
2137*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n\t", OPNAME(bclk_96mhz,                REG_BIT(dword, 4)));
2138*d83cc019SAndroid Build Coastguard Worker 	printf("%s\n",   OPNAME(bclk_48mhz,                REG_BIT(dword, 3)));
2139*d83cc019SAndroid Build Coastguard Worker }
2140*d83cc019SAndroid Build Coastguard Worker 
2141*d83cc019SAndroid Build Coastguard Worker /* Dump audio registers for Haswell and its successors (eg. Broadwell).
2142*d83cc019SAndroid Build Coastguard Worker  * Their register layout are same in the north display engine.
2143*d83cc019SAndroid Build Coastguard Worker  */
dump_hsw_plus(void)2144*d83cc019SAndroid Build Coastguard Worker static void dump_hsw_plus(void)
2145*d83cc019SAndroid Build Coastguard Worker {
2146*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2147*d83cc019SAndroid Build Coastguard Worker 	int i;
2148*d83cc019SAndroid Build Coastguard Worker 
2149*d83cc019SAndroid Build Coastguard Worker 	set_aud_reg_base(0x65000);
2150*d83cc019SAndroid Build Coastguard Worker 
2151*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PORT_HOTPLUG_EN, "port hotplug enable");
2152*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PORT_HOTPLUG_STAT, "port hotplug status");
2153*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DISPLAY_HOTPLUG_CTL, "display hotplug control");
2154*d83cc019SAndroid Build Coastguard Worker 
2155*d83cc019SAndroid Build Coastguard Worker 	/* HSW DDI Buffer */
2156*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DDI_BUF_CTL_A,                "DDI Buffer Controler A");
2157*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DDI_BUF_CTL_B,                "DDI Buffer Controler B");
2158*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DDI_BUF_CTL_C,                "DDI Buffer Controler C");
2159*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DDI_BUF_CTL_D,                "DDI Buffer Controler D");
2160*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DDI_BUF_CTL_E,                "DDI Buffer Controler E");
2161*d83cc019SAndroid Build Coastguard Worker 
2162*d83cc019SAndroid Build Coastguard Worker 	/* HSW Pipe Function */
2163*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_CONF_A,                  "PIPE Configuration A");
2164*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_CONF_B,                  "PIPE Configuration B");
2165*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_CONF_C,                  "PIPE Configuration C");
2166*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_CONF_EDP,                "PIPE Configuration EDP");
2167*d83cc019SAndroid Build Coastguard Worker 
2168*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_DDI_FUNC_CTL_A,          "PIPE DDI Function Control A");
2169*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_DDI_FUNC_CTL_B,          "PIPE DDI Function Control B");
2170*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_DDI_FUNC_CTL_C,          "PIPE DDI Function Control C");
2171*d83cc019SAndroid Build Coastguard Worker 	dump_reg(PIPE_DDI_FUNC_CTL_EDP,        "PIPE DDI Function Control EDP");
2172*d83cc019SAndroid Build Coastguard Worker 
2173*d83cc019SAndroid Build Coastguard Worker 	/* HSW Display port */
2174*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_CTL_A,                  "DisplayPort Transport A Control");
2175*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_CTL_B,                  "DisplayPort Transport B Control");
2176*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_CTL_C,                  "DisplayPort Transport C Control");
2177*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_CTL_D,                  "DisplayPort Transport D Control");
2178*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_CTL_E,                  "DisplayPort Transport E Control");
2179*d83cc019SAndroid Build Coastguard Worker 
2180*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_ST_A,                   "DisplayPort Transport A Status");
2181*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_ST_B,                   "DisplayPort Transport B Status");
2182*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_ST_C,                   "DisplayPort Transport C Status");
2183*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_ST_D,                   "DisplayPort Transport D Status");
2184*d83cc019SAndroid Build Coastguard Worker 	dump_reg(DP_TP_ST_E,                   "DisplayPort Transport E Status");
2185*d83cc019SAndroid Build Coastguard Worker 
2186*d83cc019SAndroid Build Coastguard Worker 	/* HSW North Display Audio */
2187*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_CONFIG,           "Audio Configuration - Transcoder A");
2188*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_CONFIG,           "Audio Configuration - Transcoder B");
2189*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_CONFIG,           "Audio Configuration - Transcoder C");
2190*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_MISC_CTRL,         "Audio Converter 1 MISC Control");
2191*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_MISC_CTRL,         "Audio Converter 2 MISC Control");
2192*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_MISC_CTRL,         "Audio Converter 3 MISC Control");
2193*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_VID_DID,              "Audio Vendor ID / Device ID");
2194*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_RID,                  "Audio Revision ID");
2195*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder A");
2196*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder B");
2197*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder C");
2198*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PWRST,                "Audio Power State (Function Group, Convertor, Pin Widget)");
2199*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_EDID_DATA,        "Audio EDID Data Block - Transcoder A");
2200*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_EDID_DATA,        "Audio EDID Data Block - Transcoder B");
2201*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_EDID_DATA,        "Audio EDID Data Block - Transcoder C");
2202*d83cc019SAndroid Build Coastguard Worker 	if (IS_GEN9(devid))
2203*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FREQ_CNTRL,   "Audio BCLK Frequency Control");
2204*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_INFOFR,           "Audio Widget Data Island Packet - Transcoder A");
2205*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_INFOFR,           "Audio Widget Data Island Packet - Transcoder B");
2206*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_INFOFR,           "Audio Widget Data Island Packet - Transcoder C");
2207*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIPE_CONV_CFG,        "Audio Pipe and Converter Configs");
2208*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_DIG_CNVT,          "Audio Digital Converter - Converter 1");
2209*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_DIG_CNVT,          "Audio Digital Converter - Converter 2");
2210*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_DIG_CNVT,          "Audio Digital Converter - Converter 3");
2211*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_STR_DESC,          "Audio Stream Descriptor Format - Converter 1");
2212*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_STR_DESC,          "Audio Stream Descriptor Format - Converter 2");
2213*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_STR_DESC,          "Audio Stream Descriptor Format - Converter 3");
2214*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_CHAN_MAP,         "Audio Output Channel Mapping");
2215*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder A");
2216*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder B");
2217*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder C");
2218*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIPE_CONN_SEL_CTRL,   "Audio Pipe Connection Select Control");
2219*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder A");
2220*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder B");
2221*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder C");
2222*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIN_ELD_CP_VLD,       "Audio pin ELD valid and CP ready status");
2223*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMI_FIFO_STATUS,     "Audio HDMI FIFO Status");
2224*d83cc019SAndroid Build Coastguard Worker 
2225*d83cc019SAndroid Build Coastguard Worker 	/* Audio debug registers */
2226*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_ICOI,                 "Audio Immediate Command Output Interface");
2227*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_IRII,                 "Audio Immediate Response Input Interface");
2228*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_ICS,                  "Audio Immediate Command Status");
2229*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CHICKENBIT_REG,       "Audio Chicken Bit Register");
2230*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_DP_DIP_STATUS,        "Audio DP and DIP FIFO Debug Status");
2231*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_M_CTS,            "Audio M CTS Read Back Transcoder A");
2232*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_M_CTS,            "Audio M CTS Read Back Transcoder B");
2233*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_M_CTS,            "Audio M CTS Read Back Transcoder C");
2234*d83cc019SAndroid Build Coastguard Worker 	if (IS_GEN9(devid)) {
2235*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_HDA_DMA_REG,  "Audio HD Audio DMA Control Register");
2236*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_HDA_LPIB0_REG, "Audio HD Audio Stream0 Link Position in Buffer");
2237*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_HDA_LPIB1_REG, "Audio HD Audio Stream1 Link Position in Buffer");
2238*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_HDA_LPIB2_REG, "Audio HD Audio Stream2 Link Position in Buffer");
2239*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_HDA_EXTRA_REG, "Audio HD Audio Extra Register");
2240*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_CTL_A, "Audio FPGA Pipe A CRC Control");
2241*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_CTL_B, "Audio FPGA Pipe B CRC Control");
2242*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_CTL_C, "Audio FPGA Pipe C CRC Control");
2243*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_RESULT_A, "Audio FPGA Pipe A CRC Result");
2244*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_RESULT_B, "Audio FPGA Pipe B CRC Result");
2245*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_FPGA_CRC_RESULT_C, "Audio FPGA Pipe C CRC Result");
2246*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_DFT_MVAL_REG, "Audio DFT M Value Register");
2247*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_DFT_NVAL_REG, "Audio DFT N Value Register");
2248*d83cc019SAndroid Build Coastguard Worker 		dump_aud_reg(AUD_DFT_LOAD_REG, "Audio DFT LOAD Register");
2249*d83cc019SAndroid Build Coastguard Worker 	}
2250*d83cc019SAndroid Build Coastguard Worker 
2251*d83cc019SAndroid Build Coastguard Worker 	printf("\nDetails:\n\n");
2252*d83cc019SAndroid Build Coastguard Worker 
2253*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_buf_ctl(PORT_A);
2254*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_buf_ctl(PORT_B);
2255*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_buf_ctl(PORT_C);
2256*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_buf_ctl(PORT_D);
2257*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_buf_ctl(PORT_E);
2258*d83cc019SAndroid Build Coastguard Worker 
2259*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_func_ctl(PIPE_A);
2260*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_func_ctl(PIPE_B);
2261*d83cc019SAndroid Build Coastguard Worker 	dump_ddi_func_ctl(PIPE_C);
2262*d83cc019SAndroid Build Coastguard Worker 
2263*d83cc019SAndroid Build Coastguard Worker 	/* audio configuration - details */
2264*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(TRANSCODER_A);
2265*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(TRANSCODER_B);
2266*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(TRANSCODER_C);
2267*d83cc019SAndroid Build Coastguard Worker 
2268*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(CONVERTER_1);
2269*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(CONVERTER_2);
2270*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(CONVERTER_3);
2271*d83cc019SAndroid Build Coastguard Worker 
2272*d83cc019SAndroid Build Coastguard Worker 	dump_aud_vendor_device_id();
2273*d83cc019SAndroid Build Coastguard Worker 	dump_aud_revision_id();
2274*d83cc019SAndroid Build Coastguard Worker 
2275*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(TRANSCODER_A);
2276*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(TRANSCODER_B);
2277*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(TRANSCODER_C);
2278*d83cc019SAndroid Build Coastguard Worker 
2279*d83cc019SAndroid Build Coastguard Worker 	dump_aud_power_state();
2280*d83cc019SAndroid Build Coastguard Worker 
2281*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(TRANSCODER_A);
2282*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(TRANSCODER_B);
2283*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(TRANSCODER_C);
2284*d83cc019SAndroid Build Coastguard Worker 
2285*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(TRANSCODER_A);
2286*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(TRANSCODER_B);
2287*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(TRANSCODER_C);
2288*d83cc019SAndroid Build Coastguard Worker 
2289*d83cc019SAndroid Build Coastguard Worker 	dump_aud_pipe_conv_cfg();
2290*d83cc019SAndroid Build Coastguard Worker 
2291*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(CONVERTER_1);
2292*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(CONVERTER_2);
2293*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(CONVERTER_3);
2294*d83cc019SAndroid Build Coastguard Worker 
2295*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(CONVERTER_1);
2296*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(CONVERTER_2);
2297*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(CONVERTER_3);
2298*d83cc019SAndroid Build Coastguard Worker 
2299*d83cc019SAndroid Build Coastguard Worker 	dump_aud_out_chan_map();
2300*d83cc019SAndroid Build Coastguard Worker 
2301*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_list_entry_length(TRANSCODER_A);
2302*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_list_entry_length(TRANSCODER_B);
2303*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_list_entry_length(TRANSCODER_C);
2304*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_select_ctrl();
2305*d83cc019SAndroid Build Coastguard Worker 
2306*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dip_eld_ctrl_st(TRANSCODER_A);
2307*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dip_eld_ctrl_st(TRANSCODER_B);
2308*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dip_eld_ctrl_st(TRANSCODER_C);
2309*d83cc019SAndroid Build Coastguard Worker 
2310*d83cc019SAndroid Build Coastguard Worker 	dump_aud_eld_cp_vld();
2311*d83cc019SAndroid Build Coastguard Worker 	dump_aud_hdmi_fifo_status();
2312*d83cc019SAndroid Build Coastguard Worker 
2313*d83cc019SAndroid Build Coastguard Worker 	dword = read_aud_reg(AUD_ICS);
2314*d83cc019SAndroid Build Coastguard Worker 	printf("IRV [%1lx] %s\t", REG_BIT(dword, 1),
2315*d83cc019SAndroid Build Coastguard Worker 		OPNAME(immed_result_valid, REG_BIT(dword, 1)));
2316*d83cc019SAndroid Build Coastguard Worker 	printf("ICB [%1lx] %s\n", REG_BIT(dword, 1),
2317*d83cc019SAndroid Build Coastguard Worker 		OPNAME(immed_cmd_busy, REG_BIT(dword, 0)));
2318*d83cc019SAndroid Build Coastguard Worker 
2319*d83cc019SAndroid Build Coastguard Worker 	dword = read_aud_reg(AUD_CHICKENBIT_REG);
2320*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_CHICKENBIT_REG Audio Chicken Bits: %08x\n", dword);
2321*d83cc019SAndroid Build Coastguard Worker 	if (IS_BROADWELL(devid))
2322*d83cc019SAndroid Build Coastguard Worker 		parse_bdw_audio_chicken_bit_reg(dword);
2323*d83cc019SAndroid Build Coastguard Worker 
2324*d83cc019SAndroid Build Coastguard Worker 	dword = read_aud_reg(AUD_DP_DIP_STATUS);
2325*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_DP_DIP_STATUS Audio DP & DIP FIFO Status: %08x\n\t", dword);
2326*d83cc019SAndroid Build Coastguard Worker 	for (i = 31; i >= 0; i--)
2327*d83cc019SAndroid Build Coastguard Worker 		if (REG_BIT(dword, i))
2328*d83cc019SAndroid Build Coastguard Worker 			printf("%s\n\t", audio_dp_dip_status[i]);
2329*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
2330*d83cc019SAndroid Build Coastguard Worker 
2331*d83cc019SAndroid Build Coastguard Worker 	dword = read_aud_reg(AUD_FREQ_CNTRL);
2332*d83cc019SAndroid Build Coastguard Worker 	printf("AUD_FREQ_CNTRL Audio BCLK Frequency Control: %08x\n", dword);
2333*d83cc019SAndroid Build Coastguard Worker 	if (IS_GEN9(devid))
2334*d83cc019SAndroid Build Coastguard Worker 		parse_skl_audio_freq_cntrl_reg(dword);
2335*d83cc019SAndroid Build Coastguard Worker }
2336*d83cc019SAndroid Build Coastguard Worker 
2337*d83cc019SAndroid Build Coastguard Worker /* offset of hotplug enable */
2338*d83cc019SAndroid Build Coastguard Worker #define PORT_HOTPLUG_EN_OFFSET 0x1110
2339*d83cc019SAndroid Build Coastguard Worker /* offset of hotplug status */
2340*d83cc019SAndroid Build Coastguard Worker #define PORT_HOTPLUG_STAT_OFFSET 0x1114
2341*d83cc019SAndroid Build Coastguard Worker /* offset of hotplug control*/
2342*d83cc019SAndroid Build Coastguard Worker #define DISPLAY_HOTPLUG_CTL_OFFSET 0x1164
2343*d83cc019SAndroid Build Coastguard Worker /* dump the braswell registers for audio */
dump_braswell(void)2344*d83cc019SAndroid Build Coastguard Worker static void dump_braswell(void)
2345*d83cc019SAndroid Build Coastguard Worker {
2346*d83cc019SAndroid Build Coastguard Worker 	uint32_t dword;
2347*d83cc019SAndroid Build Coastguard Worker 
2348*d83cc019SAndroid Build Coastguard Worker 	/* set_aud_reg_base(0x62000 + VLV_DISPLAY_BASE); */
2349*d83cc019SAndroid Build Coastguard Worker 	set_reg_base(0x60000 + VLV_DISPLAY_BASE, 0x2000);
2350*d83cc019SAndroid Build Coastguard Worker 
2351*d83cc019SAndroid Build Coastguard Worker 
2352*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(PORT_HOTPLUG_EN_OFFSET, "port hotplug enable");
2353*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(PORT_HOTPLUG_STAT_OFFSET, "port hotplug status");
2354*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DISPLAY_HOTPLUG_CTL_OFFSET, "display hotplug control");
2355*d83cc019SAndroid Build Coastguard Worker 
2356*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(BSW_HDMI_CTL_B,       "sDVO/HDMI Port B Control");
2357*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(BSW_HDMI_CTL_C,       "HDMI Port C Control"); // The address is wrong?
2358*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(BSW_HDMI_CTL_D,       "HDMI Port D Control");
2359*d83cc019SAndroid Build Coastguard Worker 
2360*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DP_CTL_B,                 "DisplayPort B Control Register");
2361*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DP_CTL_C,                 "DisplayPort C Control Register");
2362*d83cc019SAndroid Build Coastguard Worker 	dump_disp_reg(DP_CTL_D,         "DisplayPort D Control Register");
2363*d83cc019SAndroid Build Coastguard Worker 
2364*d83cc019SAndroid Build Coastguard Worker 	/* HSW North Display Audio */
2365*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_CONFIG,           "Audio Configuration - Transcoder A");
2366*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_CONFIG,           "Audio Configuration - Transcoder B");
2367*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_CONFIG,           "Audio Configuration - Transcoder C");
2368*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_MISC_CTRL,         "Audio Converter 1 MISC Control");
2369*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_MISC_CTRL,         "Audio Converter 2 MISC Control");
2370*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_MISC_CTRL,         "Audio Converter 3 MISC Control");
2371*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_VID_DID,              "Audio Vendor ID / Device ID");
2372*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_RID,                  "Audio Revision ID");
2373*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder A");
2374*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder B");
2375*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_M_CTS_ENABLE,     "Audio M & CTS Programming Enable - Transcoder C");
2376*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PWRST,                "Audio Power State (Function Group, Convertor, Pin Widget)");
2377*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_EDID_DATA,        "Audio EDID Data Block - Transcoder A");
2378*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_EDID_DATA,        "Audio EDID Data Block - Transcoder B");
2379*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_EDID_DATA,        "Audio EDID Data Block - Transcoder C");
2380*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_INFOFR,           "Audio Widget Data Island Packet - Transcoder A");
2381*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_INFOFR,           "Audio Widget Data Island Packet - Transcoder B");
2382*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_INFOFR,           "Audio Widget Data Island Packet - Transcoder C");
2383*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIPE_CONV_CFG,        "Audio Pipe and Converter Configs");
2384*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_DIG_CNVT,          "Audio Digital Converter - Converter 1");
2385*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_DIG_CNVT,          "Audio Digital Converter - Converter 2");
2386*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_DIG_CNVT,          "Audio Digital Converter - Converter 3");
2387*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C1_STR_DESC,          "Audio Stream Descriptor Format - Converter 1");
2388*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C2_STR_DESC,          "Audio Stream Descriptor Format - Converter 2");
2389*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_C3_STR_DESC,          "Audio Stream Descriptor Format - Converter 3");
2390*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_OUT_CHAN_MAP,         "Audio Output Channel Mapping");
2391*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder A");
2392*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder B");
2393*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_PIN_PIPE_CONN_ENTRY_LNGTH, "Audio Connection List entry and Length - Transcoder C");
2394*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIPE_CONN_SEL_CTRL,   "Audio Pipe Connection Select Control");
2395*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder A");
2396*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder B");
2397*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_DIP_ELD_CTRL_ST,  "Audio DIP and ELD control state - Transcoder C");
2398*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_PIN_ELD_CP_VLD,       "Audio pin ELD valid and CP ready status");
2399*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_HDMI_FIFO_STATUS,     "Audio HDMI FIFO Status");
2400*d83cc019SAndroid Build Coastguard Worker 
2401*d83cc019SAndroid Build Coastguard Worker 	/* Audio debug registers */
2402*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_ICOI,                 "Audio Immediate Command Output Interface");
2403*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_IRII,                 "Audio Immediate Response Input Interface");
2404*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_ICS,                  "Audio Immediate Command Status");
2405*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_CHICKENBIT_REG,       "Audio Chicken Bit Register");
2406*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_DP_DIP_STATUS,        "Audio DP and DIP FIFO Debug Status");
2407*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCA_M_CTS,            "Audio M CTS Read Back Transcoder A");
2408*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCB_M_CTS,            "Audio M CTS Read Back Transcoder B");
2409*d83cc019SAndroid Build Coastguard Worker 	dump_aud_reg(AUD_TCC_M_CTS,            "Audio M CTS Read Back Transcoder C");
2410*d83cc019SAndroid Build Coastguard Worker 
2411*d83cc019SAndroid Build Coastguard Worker 	printf("\n");
2412*d83cc019SAndroid Build Coastguard Worker 
2413*d83cc019SAndroid Build Coastguard Worker 	printf("\nDetails:\n\n");
2414*d83cc019SAndroid Build Coastguard Worker 
2415*d83cc019SAndroid Build Coastguard Worker 	dump_aud_vendor_device_id();
2416*d83cc019SAndroid Build Coastguard Worker 	dump_aud_revision_id();
2417*d83cc019SAndroid Build Coastguard Worker 
2418*d83cc019SAndroid Build Coastguard Worker 	dump_hdmi_port_ctrl(PORT_B);
2419*d83cc019SAndroid Build Coastguard Worker 	dump_hdmi_port_ctrl(PORT_C);
2420*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
2421*d83cc019SAndroid Build Coastguard Worker 		dump_hdmi_port_ctrl(PORT_D);
2422*d83cc019SAndroid Build Coastguard Worker 
2423*d83cc019SAndroid Build Coastguard Worker 	dump_dp_port_ctrl(PORT_B);
2424*d83cc019SAndroid Build Coastguard Worker 	dump_dp_port_ctrl(PORT_C);
2425*d83cc019SAndroid Build Coastguard Worker 	if (!IS_VALLEYVIEW(devid))
2426*d83cc019SAndroid Build Coastguard Worker 		dump_dp_port_ctrl(PORT_D);
2427*d83cc019SAndroid Build Coastguard Worker 
2428*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(PIPE_A);
2429*d83cc019SAndroid Build Coastguard Worker 	dump_aud_config(PIPE_B);
2430*d83cc019SAndroid Build Coastguard Worker 
2431*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(PIPE_A);
2432*d83cc019SAndroid Build Coastguard Worker 	dump_aud_m_cts_enable(PIPE_B);
2433*d83cc019SAndroid Build Coastguard Worker 
2434*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(PIPE_A);
2435*d83cc019SAndroid Build Coastguard Worker 	dump_aud_misc_control(PIPE_B);
2436*d83cc019SAndroid Build Coastguard Worker 
2437*d83cc019SAndroid Build Coastguard Worker 	dump_aud_power_state();
2438*d83cc019SAndroid Build Coastguard Worker 	dump_aud_port_en_hd_cfg();
2439*d83cc019SAndroid Build Coastguard Worker 
2440*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(PIPE_A);
2441*d83cc019SAndroid Build Coastguard Worker 	dump_aud_dig_cnvt(PIPE_B);
2442*d83cc019SAndroid Build Coastguard Worker 
2443*d83cc019SAndroid Build Coastguard Worker 	dump_aud_out_ch_str();
2444*d83cc019SAndroid Build Coastguard Worker 
2445*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(PIPE_A);
2446*d83cc019SAndroid Build Coastguard Worker 	dump_aud_str_desc(PIPE_B);
2447*d83cc019SAndroid Build Coastguard Worker 
2448*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_list();
2449*d83cc019SAndroid Build Coastguard Worker 	dump_aud_connect_select();
2450*d83cc019SAndroid Build Coastguard Worker 
2451*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state(PIPE_A);
2452*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state(PIPE_B);
2453*d83cc019SAndroid Build Coastguard Worker 	dump_aud_ctrl_state2();
2454*d83cc019SAndroid Build Coastguard Worker 
2455*d83cc019SAndroid Build Coastguard Worker 	dump_aud_hdmi_status();
2456*d83cc019SAndroid Build Coastguard Worker 
2457*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(PIPE_A);
2458*d83cc019SAndroid Build Coastguard Worker 	dump_aud_edid_data(PIPE_B);
2459*d83cc019SAndroid Build Coastguard Worker 
2460*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(PIPE_A);
2461*d83cc019SAndroid Build Coastguard Worker 	dump_aud_infoframe(PIPE_B);
2462*d83cc019SAndroid Build Coastguard Worker }
2463*d83cc019SAndroid Build Coastguard Worker 
main(int argc,char ** argv)2464*d83cc019SAndroid Build Coastguard Worker int main(int argc, char **argv)
2465*d83cc019SAndroid Build Coastguard Worker {
2466*d83cc019SAndroid Build Coastguard Worker 	struct pci_device *pci_dev;
2467*d83cc019SAndroid Build Coastguard Worker 
2468*d83cc019SAndroid Build Coastguard Worker 	pci_dev = intel_get_pci_device();
2469*d83cc019SAndroid Build Coastguard Worker 	devid = pci_dev->device_id; /* XXX not true when mapping! */
2470*d83cc019SAndroid Build Coastguard Worker 
2471*d83cc019SAndroid Build Coastguard Worker 	do_self_tests();
2472*d83cc019SAndroid Build Coastguard Worker 
2473*d83cc019SAndroid Build Coastguard Worker 	if (argc == 2)
2474*d83cc019SAndroid Build Coastguard Worker 		intel_mmio_use_dump_file(argv[1]);
2475*d83cc019SAndroid Build Coastguard Worker 	else
2476*d83cc019SAndroid Build Coastguard Worker 		intel_mmio_use_pci_bar(pci_dev);
2477*d83cc019SAndroid Build Coastguard Worker 
2478*d83cc019SAndroid Build Coastguard Worker 	printf("%s audio registers:\n\n", intel_get_device_info(devid)->codename);
2479*d83cc019SAndroid Build Coastguard Worker 	if (IS_VALLEYVIEW(devid)) {
2480*d83cc019SAndroid Build Coastguard Worker 		dump_ironlake();
2481*d83cc019SAndroid Build Coastguard Worker 	} else if (IS_CHERRYVIEW(devid)) {
2482*d83cc019SAndroid Build Coastguard Worker 		dump_braswell();
2483*d83cc019SAndroid Build Coastguard Worker 	}  else if (IS_GEN9(devid)
2484*d83cc019SAndroid Build Coastguard Worker 		|| IS_BROADWELL(devid) || IS_HASWELL(devid)) {
2485*d83cc019SAndroid Build Coastguard Worker 		dump_hsw_plus();
2486*d83cc019SAndroid Build Coastguard Worker 	} else if (IS_GEN6(devid) || IS_GEN7(devid)
2487*d83cc019SAndroid Build Coastguard Worker 		|| getenv("HAS_PCH_SPLIT")) {
2488*d83cc019SAndroid Build Coastguard Worker 		intel_check_pch();
2489*d83cc019SAndroid Build Coastguard Worker 		dump_cpt();
2490*d83cc019SAndroid Build Coastguard Worker 	} else if (IS_GEN5(devid)) {
2491*d83cc019SAndroid Build Coastguard Worker 		dump_ironlake();
2492*d83cc019SAndroid Build Coastguard Worker 	} else if (IS_G4X(devid)) {
2493*d83cc019SAndroid Build Coastguard Worker 		dump_eaglelake();
2494*d83cc019SAndroid Build Coastguard Worker 	}
2495*d83cc019SAndroid Build Coastguard Worker 
2496*d83cc019SAndroid Build Coastguard Worker 	return 0;
2497*d83cc019SAndroid Build Coastguard Worker }
2498