1*d83cc019SAndroid Build Coastguard Worker /*
2*d83cc019SAndroid Build Coastguard Worker * Copyright © 2006,2009,2015 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 FROM,
20*d83cc019SAndroid Build Coastguard Worker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21*d83cc019SAndroid Build Coastguard Worker * SOFTWARE.
22*d83cc019SAndroid Build Coastguard Worker *
23*d83cc019SAndroid Build Coastguard Worker * Authors:
24*d83cc019SAndroid Build Coastguard Worker * Eric Anholt <[email protected]>
25*d83cc019SAndroid Build Coastguard Worker *
26*d83cc019SAndroid Build Coastguard Worker */
27*d83cc019SAndroid Build Coastguard Worker
28*d83cc019SAndroid Build Coastguard Worker #include <errno.h>
29*d83cc019SAndroid Build Coastguard Worker #include <stdarg.h>
30*d83cc019SAndroid Build Coastguard Worker #include <stdbool.h>
31*d83cc019SAndroid Build Coastguard Worker #include <stdint.h>
32*d83cc019SAndroid Build Coastguard Worker #include <stdio.h>
33*d83cc019SAndroid Build Coastguard Worker #include <stdlib.h>
34*d83cc019SAndroid Build Coastguard Worker #include <string.h>
35*d83cc019SAndroid Build Coastguard Worker #include <strings.h>
36*d83cc019SAndroid Build Coastguard Worker
37*d83cc019SAndroid Build Coastguard Worker #include "intel_chipset.h"
38*d83cc019SAndroid Build Coastguard Worker #include "intel_reg.h"
39*d83cc019SAndroid Build Coastguard Worker
40*d83cc019SAndroid Build Coastguard Worker #include "intel_reg_spec.h"
41*d83cc019SAndroid Build Coastguard Worker
42*d83cc019SAndroid Build Coastguard Worker /**
43*d83cc019SAndroid Build Coastguard Worker * DEBUGSTRING:
44*d83cc019SAndroid Build Coastguard Worker * @result: character string where to write
45*d83cc019SAndroid Build Coastguard Worker * @len: maximum number of bytes to write
46*d83cc019SAndroid Build Coastguard Worker * @reg: register offset
47*d83cc019SAndroid Build Coastguard Worker * @val: register value
48*d83cc019SAndroid Build Coastguard Worker * @devid: PCI device ID
49*d83cc019SAndroid Build Coastguard Worker *
50*d83cc019SAndroid Build Coastguard Worker * Print the decoded representation of the register value into @result.
51*d83cc019SAndroid Build Coastguard Worker *
52*d83cc019SAndroid Build Coastguard Worker * Returns: Number of bytes written to @result
53*d83cc019SAndroid Build Coastguard Worker */
54*d83cc019SAndroid Build Coastguard Worker #define _DEBUGSTRING(func) \
55*d83cc019SAndroid Build Coastguard Worker int func(char *result, int len, int reg, uint32_t val, uint32_t devid)
56*d83cc019SAndroid Build Coastguard Worker #define DEBUGSTRING(func) static _DEBUGSTRING(func)
57*d83cc019SAndroid Build Coastguard Worker
58*d83cc019SAndroid Build Coastguard Worker /* snprintf that returns 0 when the thing didn't fit */
59*d83cc019SAndroid Build Coastguard Worker static int __attribute__((format(printf, 3, 4)))
z_snprintf(char * str,size_t size,const char * fmt,...)60*d83cc019SAndroid Build Coastguard Worker z_snprintf(char *str, size_t size, const char *fmt, ...)
61*d83cc019SAndroid Build Coastguard Worker {
62*d83cc019SAndroid Build Coastguard Worker va_list ap;
63*d83cc019SAndroid Build Coastguard Worker int ret;
64*d83cc019SAndroid Build Coastguard Worker
65*d83cc019SAndroid Build Coastguard Worker va_start(ap, fmt);
66*d83cc019SAndroid Build Coastguard Worker ret = vsnprintf(str, size, fmt, ap);
67*d83cc019SAndroid Build Coastguard Worker va_end(ap);
68*d83cc019SAndroid Build Coastguard Worker
69*d83cc019SAndroid Build Coastguard Worker if (ret >= size) {
70*d83cc019SAndroid Build Coastguard Worker fprintf(stderr, "snprintf() returned %d, expected < %zu\n",
71*d83cc019SAndroid Build Coastguard Worker ret, size);
72*d83cc019SAndroid Build Coastguard Worker return 0;
73*d83cc019SAndroid Build Coastguard Worker }
74*d83cc019SAndroid Build Coastguard Worker
75*d83cc019SAndroid Build Coastguard Worker return ret;
76*d83cc019SAndroid Build Coastguard Worker }
77*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_16bit_func)78*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_16bit_func)
79*d83cc019SAndroid Build Coastguard Worker {
80*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "0x%04x", (uint16_t) val);
81*d83cc019SAndroid Build Coastguard Worker }
82*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dcc)83*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dcc)
84*d83cc019SAndroid Build Coastguard Worker {
85*d83cc019SAndroid Build Coastguard Worker const char *addressing = NULL;
86*d83cc019SAndroid Build Coastguard Worker
87*d83cc019SAndroid Build Coastguard Worker if (!IS_MOBILE(devid))
88*d83cc019SAndroid Build Coastguard Worker return 0;
89*d83cc019SAndroid Build Coastguard Worker
90*d83cc019SAndroid Build Coastguard Worker if (IS_GEN4(devid)) {
91*d83cc019SAndroid Build Coastguard Worker if (val & (1 << 1))
92*d83cc019SAndroid Build Coastguard Worker addressing = "dual channel interleaved";
93*d83cc019SAndroid Build Coastguard Worker else
94*d83cc019SAndroid Build Coastguard Worker addressing = "single or dual channel asymmetric";
95*d83cc019SAndroid Build Coastguard Worker } else {
96*d83cc019SAndroid Build Coastguard Worker switch (val & 3) {
97*d83cc019SAndroid Build Coastguard Worker case 0:
98*d83cc019SAndroid Build Coastguard Worker addressing = "single channel";
99*d83cc019SAndroid Build Coastguard Worker break;
100*d83cc019SAndroid Build Coastguard Worker case 1:
101*d83cc019SAndroid Build Coastguard Worker addressing = "dual channel asymmetric";
102*d83cc019SAndroid Build Coastguard Worker break;
103*d83cc019SAndroid Build Coastguard Worker case 2:
104*d83cc019SAndroid Build Coastguard Worker addressing = "dual channel interleaved";
105*d83cc019SAndroid Build Coastguard Worker break;
106*d83cc019SAndroid Build Coastguard Worker case 3:
107*d83cc019SAndroid Build Coastguard Worker addressing = "unknown channel layout";
108*d83cc019SAndroid Build Coastguard Worker break;
109*d83cc019SAndroid Build Coastguard Worker }
110*d83cc019SAndroid Build Coastguard Worker }
111*d83cc019SAndroid Build Coastguard Worker
112*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, XOR randomization: %sabled, XOR bit: %d",
113*d83cc019SAndroid Build Coastguard Worker addressing,
114*d83cc019SAndroid Build Coastguard Worker (val & (1 << 10)) ? "dis" : "en",
115*d83cc019SAndroid Build Coastguard Worker (val & (1 << 9)) ? 17 : 11);
116*d83cc019SAndroid Build Coastguard Worker }
117*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_chdecmisc)118*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_chdecmisc)
119*d83cc019SAndroid Build Coastguard Worker {
120*d83cc019SAndroid Build Coastguard Worker const char *enhmodesel = NULL;
121*d83cc019SAndroid Build Coastguard Worker
122*d83cc019SAndroid Build Coastguard Worker switch ((val >> 5) & 3) {
123*d83cc019SAndroid Build Coastguard Worker case 1:
124*d83cc019SAndroid Build Coastguard Worker enhmodesel = "XOR bank/rank";
125*d83cc019SAndroid Build Coastguard Worker break;
126*d83cc019SAndroid Build Coastguard Worker case 2:
127*d83cc019SAndroid Build Coastguard Worker enhmodesel = "swap bank";
128*d83cc019SAndroid Build Coastguard Worker break;
129*d83cc019SAndroid Build Coastguard Worker case 3:
130*d83cc019SAndroid Build Coastguard Worker enhmodesel = "XOR bank";
131*d83cc019SAndroid Build Coastguard Worker break;
132*d83cc019SAndroid Build Coastguard Worker case 0:
133*d83cc019SAndroid Build Coastguard Worker enhmodesel = "none";
134*d83cc019SAndroid Build Coastguard Worker break;
135*d83cc019SAndroid Build Coastguard Worker }
136*d83cc019SAndroid Build Coastguard Worker
137*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
138*d83cc019SAndroid Build Coastguard Worker "%s, ch2 enh %sabled, ch1 enh %sabled, "
139*d83cc019SAndroid Build Coastguard Worker "ch0 enh %sabled, "
140*d83cc019SAndroid Build Coastguard Worker "flex %sabled, ep %spresent", enhmodesel,
141*d83cc019SAndroid Build Coastguard Worker (val & (1 << 4)) ? "en" : "dis",
142*d83cc019SAndroid Build Coastguard Worker (val & (1 << 3)) ? "en" : "dis",
143*d83cc019SAndroid Build Coastguard Worker (val & (1 << 2)) ? "en" : "dis",
144*d83cc019SAndroid Build Coastguard Worker (val & (1 << 1)) ? "en" : "dis",
145*d83cc019SAndroid Build Coastguard Worker (val & (1 << 0)) ? "" : "not ");
146*d83cc019SAndroid Build Coastguard Worker }
147*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_xyminus1)148*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_xyminus1)
149*d83cc019SAndroid Build Coastguard Worker {
150*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d, %d", (val & 0xffff) + 1,
151*d83cc019SAndroid Build Coastguard Worker ((val & 0xffff0000) >> 16) + 1);
152*d83cc019SAndroid Build Coastguard Worker }
153*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_yxminus1)154*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_yxminus1)
155*d83cc019SAndroid Build Coastguard Worker {
156*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d, %d", ((val & 0xffff0000) >> 16) + 1,
157*d83cc019SAndroid Build Coastguard Worker (val & 0xffff) + 1);
158*d83cc019SAndroid Build Coastguard Worker }
159*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_xy)160*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_xy)
161*d83cc019SAndroid Build Coastguard Worker {
162*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d, %d", (val & 0xffff), ((val & 0xffff0000) >> 16));
163*d83cc019SAndroid Build Coastguard Worker }
164*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dspstride)165*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dspstride)
166*d83cc019SAndroid Build Coastguard Worker {
167*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d bytes", val);
168*d83cc019SAndroid Build Coastguard Worker }
169*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dspcntr)170*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dspcntr)
171*d83cc019SAndroid Build Coastguard Worker {
172*d83cc019SAndroid Build Coastguard Worker const char *enabled = val & DISPLAY_PLANE_ENABLE ? "enabled" : "disabled";
173*d83cc019SAndroid Build Coastguard Worker char plane = val & DISPPLANE_SEL_PIPE_B ? 'B' : 'A';
174*d83cc019SAndroid Build Coastguard Worker if (HAS_PCH_SPLIT(devid) || IS_BROXTON(devid))
175*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s", enabled);
176*d83cc019SAndroid Build Coastguard Worker else
177*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, pipe %c", enabled, plane);
178*d83cc019SAndroid Build Coastguard Worker }
179*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_pipeconf)180*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_pipeconf)
181*d83cc019SAndroid Build Coastguard Worker {
182*d83cc019SAndroid Build Coastguard Worker const char *enabled = val & PIPEACONF_ENABLE ? "enabled" : "disabled";
183*d83cc019SAndroid Build Coastguard Worker const char *bit30;
184*d83cc019SAndroid Build Coastguard Worker char buf[256];
185*d83cc019SAndroid Build Coastguard Worker int buf_len;
186*d83cc019SAndroid Build Coastguard Worker
187*d83cc019SAndroid Build Coastguard Worker if (IS_GEN2(devid) || IS_GEN3(devid))
188*d83cc019SAndroid Build Coastguard Worker bit30 = val & PIPEACONF_DOUBLE_WIDE ?
189*d83cc019SAndroid Build Coastguard Worker "double-wide" : "single-wide";
190*d83cc019SAndroid Build Coastguard Worker else
191*d83cc019SAndroid Build Coastguard Worker bit30 = val & I965_PIPECONF_ACTIVE ? "active" : "inactive";
192*d83cc019SAndroid Build Coastguard Worker
193*d83cc019SAndroid Build Coastguard Worker buf_len = z_snprintf(buf, sizeof(buf), "%s, %s", enabled, bit30);
194*d83cc019SAndroid Build Coastguard Worker
195*d83cc019SAndroid Build Coastguard Worker if (HAS_PCH_SPLIT(devid) || IS_BROXTON(devid)) {
196*d83cc019SAndroid Build Coastguard Worker const char *interlace;
197*d83cc019SAndroid Build Coastguard Worker int interlace_mode;
198*d83cc019SAndroid Build Coastguard Worker
199*d83cc019SAndroid Build Coastguard Worker if ((IS_IVYBRIDGE(devid) || IS_HASWELL(devid) ||
200*d83cc019SAndroid Build Coastguard Worker IS_BROADWELL(devid) || IS_GEN9(devid)))
201*d83cc019SAndroid Build Coastguard Worker interlace_mode = (val >> 21) & 3;
202*d83cc019SAndroid Build Coastguard Worker else
203*d83cc019SAndroid Build Coastguard Worker interlace_mode = (val >> 21) & 7;
204*d83cc019SAndroid Build Coastguard Worker
205*d83cc019SAndroid Build Coastguard Worker switch (interlace_mode) {
206*d83cc019SAndroid Build Coastguard Worker case 0:
207*d83cc019SAndroid Build Coastguard Worker interlace = "pf-pd";
208*d83cc019SAndroid Build Coastguard Worker break;
209*d83cc019SAndroid Build Coastguard Worker case 1:
210*d83cc019SAndroid Build Coastguard Worker interlace = "pf-id";
211*d83cc019SAndroid Build Coastguard Worker break;
212*d83cc019SAndroid Build Coastguard Worker case 3:
213*d83cc019SAndroid Build Coastguard Worker interlace = "if-id";
214*d83cc019SAndroid Build Coastguard Worker break;
215*d83cc019SAndroid Build Coastguard Worker case 4:
216*d83cc019SAndroid Build Coastguard Worker interlace = "if-id-dbl";
217*d83cc019SAndroid Build Coastguard Worker break;
218*d83cc019SAndroid Build Coastguard Worker case 5:
219*d83cc019SAndroid Build Coastguard Worker interlace = "pf-id-dbl";
220*d83cc019SAndroid Build Coastguard Worker break;
221*d83cc019SAndroid Build Coastguard Worker default:
222*d83cc019SAndroid Build Coastguard Worker interlace = "rsvd";
223*d83cc019SAndroid Build Coastguard Worker break;
224*d83cc019SAndroid Build Coastguard Worker }
225*d83cc019SAndroid Build Coastguard Worker if (buf_len < sizeof(buf))
226*d83cc019SAndroid Build Coastguard Worker buf_len += z_snprintf(&buf[buf_len], sizeof(buf) - buf_len,
227*d83cc019SAndroid Build Coastguard Worker ", %s", interlace);
228*d83cc019SAndroid Build Coastguard Worker } else if (IS_GEN4(devid) || IS_VALLEYVIEW(devid) ||
229*d83cc019SAndroid Build Coastguard Worker IS_CHERRYVIEW(devid)) {
230*d83cc019SAndroid Build Coastguard Worker const char *interlace;
231*d83cc019SAndroid Build Coastguard Worker
232*d83cc019SAndroid Build Coastguard Worker switch ((val >> 21) & 7) {
233*d83cc019SAndroid Build Coastguard Worker case 0:
234*d83cc019SAndroid Build Coastguard Worker case 1:
235*d83cc019SAndroid Build Coastguard Worker case 2:
236*d83cc019SAndroid Build Coastguard Worker case 3:
237*d83cc019SAndroid Build Coastguard Worker interlace = "progressive";
238*d83cc019SAndroid Build Coastguard Worker break;
239*d83cc019SAndroid Build Coastguard Worker case 4:
240*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced embedded";
241*d83cc019SAndroid Build Coastguard Worker break;
242*d83cc019SAndroid Build Coastguard Worker case 5:
243*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced";
244*d83cc019SAndroid Build Coastguard Worker break;
245*d83cc019SAndroid Build Coastguard Worker case 6:
246*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced sdvo";
247*d83cc019SAndroid Build Coastguard Worker break;
248*d83cc019SAndroid Build Coastguard Worker case 7:
249*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced legacy";
250*d83cc019SAndroid Build Coastguard Worker break;
251*d83cc019SAndroid Build Coastguard Worker }
252*d83cc019SAndroid Build Coastguard Worker if (buf_len < sizeof(buf))
253*d83cc019SAndroid Build Coastguard Worker buf_len += z_snprintf(&buf[buf_len], sizeof(buf) - buf_len,
254*d83cc019SAndroid Build Coastguard Worker ", %s", interlace);
255*d83cc019SAndroid Build Coastguard Worker }
256*d83cc019SAndroid Build Coastguard Worker
257*d83cc019SAndroid Build Coastguard Worker if (IS_HASWELL(devid) || IS_IVYBRIDGE(devid) ||
258*d83cc019SAndroid Build Coastguard Worker IS_GEN6(devid) || IS_GEN5(devid)) {
259*d83cc019SAndroid Build Coastguard Worker const char *rotation;
260*d83cc019SAndroid Build Coastguard Worker
261*d83cc019SAndroid Build Coastguard Worker switch ((val >> 14) & 3) {
262*d83cc019SAndroid Build Coastguard Worker case 0:
263*d83cc019SAndroid Build Coastguard Worker rotation = "rotate 0";
264*d83cc019SAndroid Build Coastguard Worker break;
265*d83cc019SAndroid Build Coastguard Worker case 1:
266*d83cc019SAndroid Build Coastguard Worker rotation = "rotate 90";
267*d83cc019SAndroid Build Coastguard Worker break;
268*d83cc019SAndroid Build Coastguard Worker case 2:
269*d83cc019SAndroid Build Coastguard Worker rotation = "rotate 180";
270*d83cc019SAndroid Build Coastguard Worker break;
271*d83cc019SAndroid Build Coastguard Worker case 3:
272*d83cc019SAndroid Build Coastguard Worker rotation = "rotate 270";
273*d83cc019SAndroid Build Coastguard Worker break;
274*d83cc019SAndroid Build Coastguard Worker }
275*d83cc019SAndroid Build Coastguard Worker if (buf_len < sizeof(buf))
276*d83cc019SAndroid Build Coastguard Worker buf_len += z_snprintf(&buf[buf_len], sizeof(buf) - buf_len,
277*d83cc019SAndroid Build Coastguard Worker ", %s", rotation);
278*d83cc019SAndroid Build Coastguard Worker }
279*d83cc019SAndroid Build Coastguard Worker
280*d83cc019SAndroid Build Coastguard Worker if (IS_IVYBRIDGE(devid) || IS_GEN6(devid) || IS_GEN5(devid)) {
281*d83cc019SAndroid Build Coastguard Worker const char *bpc;
282*d83cc019SAndroid Build Coastguard Worker
283*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 5)) {
284*d83cc019SAndroid Build Coastguard Worker case PIPECONF_8BPP:
285*d83cc019SAndroid Build Coastguard Worker bpc = "8bpc";
286*d83cc019SAndroid Build Coastguard Worker break;
287*d83cc019SAndroid Build Coastguard Worker case PIPECONF_10BPP:
288*d83cc019SAndroid Build Coastguard Worker bpc = "10bpc";
289*d83cc019SAndroid Build Coastguard Worker break;
290*d83cc019SAndroid Build Coastguard Worker case PIPECONF_6BPP:
291*d83cc019SAndroid Build Coastguard Worker bpc = "6bpc";
292*d83cc019SAndroid Build Coastguard Worker break;
293*d83cc019SAndroid Build Coastguard Worker case PIPECONF_12BPP:
294*d83cc019SAndroid Build Coastguard Worker bpc = "12bpc";
295*d83cc019SAndroid Build Coastguard Worker break;
296*d83cc019SAndroid Build Coastguard Worker default:
297*d83cc019SAndroid Build Coastguard Worker bpc = "invalid bpc";
298*d83cc019SAndroid Build Coastguard Worker break;
299*d83cc019SAndroid Build Coastguard Worker }
300*d83cc019SAndroid Build Coastguard Worker if (buf_len < sizeof(buf))
301*d83cc019SAndroid Build Coastguard Worker buf_len += z_snprintf(&buf[buf_len], sizeof(buf) - buf_len,
302*d83cc019SAndroid Build Coastguard Worker ", %s", bpc);
303*d83cc019SAndroid Build Coastguard Worker }
304*d83cc019SAndroid Build Coastguard Worker
305*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s", buf);
306*d83cc019SAndroid Build Coastguard Worker }
307*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_pipestat)308*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_pipestat)
309*d83cc019SAndroid Build Coastguard Worker {
310*d83cc019SAndroid Build Coastguard Worker const char *_FIFO_UNDERRUN = val & FIFO_UNDERRUN ? " FIFO_UNDERRUN" : "";
311*d83cc019SAndroid Build Coastguard Worker const char *_CRC_ERROR_ENABLE =
312*d83cc019SAndroid Build Coastguard Worker val & CRC_ERROR_ENABLE ? " CRC_ERROR_ENABLE" : "";
313*d83cc019SAndroid Build Coastguard Worker const char *_CRC_DONE_ENABLE =
314*d83cc019SAndroid Build Coastguard Worker val & CRC_DONE_ENABLE ? " CRC_DONE_ENABLE" : "";
315*d83cc019SAndroid Build Coastguard Worker const char *_GMBUS_EVENT_ENABLE =
316*d83cc019SAndroid Build Coastguard Worker val & GMBUS_EVENT_ENABLE ? " GMBUS_EVENT_ENABLE" : "";
317*d83cc019SAndroid Build Coastguard Worker const char *_VSYNC_INT_ENABLE =
318*d83cc019SAndroid Build Coastguard Worker val & VSYNC_INT_ENABLE ? " VSYNC_INT_ENABLE" : "";
319*d83cc019SAndroid Build Coastguard Worker const char *_DLINE_COMPARE_ENABLE =
320*d83cc019SAndroid Build Coastguard Worker val & DLINE_COMPARE_ENABLE ? " DLINE_COMPARE_ENABLE" : "";
321*d83cc019SAndroid Build Coastguard Worker const char *_DPST_EVENT_ENABLE =
322*d83cc019SAndroid Build Coastguard Worker val & DPST_EVENT_ENABLE ? " DPST_EVENT_ENABLE" : "";
323*d83cc019SAndroid Build Coastguard Worker const char *_LBLC_EVENT_ENABLE =
324*d83cc019SAndroid Build Coastguard Worker val & LBLC_EVENT_ENABLE ? " LBLC_EVENT_ENABLE" : "";
325*d83cc019SAndroid Build Coastguard Worker const char *_OFIELD_INT_ENABLE =
326*d83cc019SAndroid Build Coastguard Worker val & OFIELD_INT_ENABLE ? " OFIELD_INT_ENABLE" : "";
327*d83cc019SAndroid Build Coastguard Worker const char *_EFIELD_INT_ENABLE =
328*d83cc019SAndroid Build Coastguard Worker val & EFIELD_INT_ENABLE ? " EFIELD_INT_ENABLE" : "";
329*d83cc019SAndroid Build Coastguard Worker const char *_SVBLANK_INT_ENABLE =
330*d83cc019SAndroid Build Coastguard Worker val & SVBLANK_INT_ENABLE ? " SVBLANK_INT_ENABLE" : "";
331*d83cc019SAndroid Build Coastguard Worker const char *_VBLANK_INT_ENABLE =
332*d83cc019SAndroid Build Coastguard Worker val & VBLANK_INT_ENABLE ? " VBLANK_INT_ENABLE" : "";
333*d83cc019SAndroid Build Coastguard Worker const char *_OREG_UPDATE_ENABLE =
334*d83cc019SAndroid Build Coastguard Worker val & OREG_UPDATE_ENABLE ? " OREG_UPDATE_ENABLE" : "";
335*d83cc019SAndroid Build Coastguard Worker const char *_CRC_ERROR_INT_STATUS =
336*d83cc019SAndroid Build Coastguard Worker val & CRC_ERROR_INT_STATUS ? " CRC_ERROR_INT_STATUS" : "";
337*d83cc019SAndroid Build Coastguard Worker const char *_CRC_DONE_INT_STATUS =
338*d83cc019SAndroid Build Coastguard Worker val & CRC_DONE_INT_STATUS ? " CRC_DONE_INT_STATUS" : "";
339*d83cc019SAndroid Build Coastguard Worker const char *_GMBUS_INT_STATUS =
340*d83cc019SAndroid Build Coastguard Worker val & GMBUS_INT_STATUS ? " GMBUS_INT_STATUS" : "";
341*d83cc019SAndroid Build Coastguard Worker const char *_VSYNC_INT_STATUS =
342*d83cc019SAndroid Build Coastguard Worker val & VSYNC_INT_STATUS ? " VSYNC_INT_STATUS" : "";
343*d83cc019SAndroid Build Coastguard Worker const char *_DLINE_COMPARE_STATUS =
344*d83cc019SAndroid Build Coastguard Worker val & DLINE_COMPARE_STATUS ? " DLINE_COMPARE_STATUS" : "";
345*d83cc019SAndroid Build Coastguard Worker const char *_DPST_EVENT_STATUS =
346*d83cc019SAndroid Build Coastguard Worker val & DPST_EVENT_STATUS ? " DPST_EVENT_STATUS" : "";
347*d83cc019SAndroid Build Coastguard Worker const char *_LBLC_EVENT_STATUS =
348*d83cc019SAndroid Build Coastguard Worker val & LBLC_EVENT_STATUS ? " LBLC_EVENT_STATUS" : "";
349*d83cc019SAndroid Build Coastguard Worker const char *_OFIELD_INT_STATUS =
350*d83cc019SAndroid Build Coastguard Worker val & OFIELD_INT_STATUS ? " OFIELD_INT_STATUS" : "";
351*d83cc019SAndroid Build Coastguard Worker const char *_EFIELD_INT_STATUS =
352*d83cc019SAndroid Build Coastguard Worker val & EFIELD_INT_STATUS ? " EFIELD_INT_STATUS" : "";
353*d83cc019SAndroid Build Coastguard Worker const char *_SVBLANK_INT_STATUS =
354*d83cc019SAndroid Build Coastguard Worker val & SVBLANK_INT_STATUS ? " SVBLANK_INT_STATUS" : "";
355*d83cc019SAndroid Build Coastguard Worker const char *_VBLANK_INT_STATUS =
356*d83cc019SAndroid Build Coastguard Worker val & VBLANK_INT_STATUS ? " VBLANK_INT_STATUS" : "";
357*d83cc019SAndroid Build Coastguard Worker const char *_OREG_UPDATE_STATUS =
358*d83cc019SAndroid Build Coastguard Worker val & OREG_UPDATE_STATUS ? " OREG_UPDATE_STATUS" : "";
359*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
360*d83cc019SAndroid Build Coastguard Worker "status:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
361*d83cc019SAndroid Build Coastguard Worker _FIFO_UNDERRUN,
362*d83cc019SAndroid Build Coastguard Worker _CRC_ERROR_ENABLE,
363*d83cc019SAndroid Build Coastguard Worker _CRC_DONE_ENABLE,
364*d83cc019SAndroid Build Coastguard Worker _GMBUS_EVENT_ENABLE,
365*d83cc019SAndroid Build Coastguard Worker _VSYNC_INT_ENABLE,
366*d83cc019SAndroid Build Coastguard Worker _DLINE_COMPARE_ENABLE,
367*d83cc019SAndroid Build Coastguard Worker _DPST_EVENT_ENABLE,
368*d83cc019SAndroid Build Coastguard Worker _LBLC_EVENT_ENABLE,
369*d83cc019SAndroid Build Coastguard Worker _OFIELD_INT_ENABLE,
370*d83cc019SAndroid Build Coastguard Worker _EFIELD_INT_ENABLE,
371*d83cc019SAndroid Build Coastguard Worker _SVBLANK_INT_ENABLE,
372*d83cc019SAndroid Build Coastguard Worker _VBLANK_INT_ENABLE,
373*d83cc019SAndroid Build Coastguard Worker _OREG_UPDATE_ENABLE,
374*d83cc019SAndroid Build Coastguard Worker _CRC_ERROR_INT_STATUS,
375*d83cc019SAndroid Build Coastguard Worker _CRC_DONE_INT_STATUS,
376*d83cc019SAndroid Build Coastguard Worker _GMBUS_INT_STATUS,
377*d83cc019SAndroid Build Coastguard Worker _VSYNC_INT_STATUS,
378*d83cc019SAndroid Build Coastguard Worker _DLINE_COMPARE_STATUS,
379*d83cc019SAndroid Build Coastguard Worker _DPST_EVENT_STATUS,
380*d83cc019SAndroid Build Coastguard Worker _LBLC_EVENT_STATUS,
381*d83cc019SAndroid Build Coastguard Worker _OFIELD_INT_STATUS,
382*d83cc019SAndroid Build Coastguard Worker _EFIELD_INT_STATUS,
383*d83cc019SAndroid Build Coastguard Worker _SVBLANK_INT_STATUS,
384*d83cc019SAndroid Build Coastguard Worker _VBLANK_INT_STATUS,
385*d83cc019SAndroid Build Coastguard Worker _OREG_UPDATE_STATUS);
386*d83cc019SAndroid Build Coastguard Worker }
387*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ivb_debug_port)388*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ivb_debug_port)
389*d83cc019SAndroid Build Coastguard Worker {
390*d83cc019SAndroid Build Coastguard Worker const char *drrs = NULL;
391*d83cc019SAndroid Build Coastguard Worker switch (val & (2 << 30)) {
392*d83cc019SAndroid Build Coastguard Worker case PORT_DBG_DRRS_HW_STATE_OFF:
393*d83cc019SAndroid Build Coastguard Worker drrs = "off";
394*d83cc019SAndroid Build Coastguard Worker break;
395*d83cc019SAndroid Build Coastguard Worker case PORT_DBG_DRRS_HW_STATE_LOW:
396*d83cc019SAndroid Build Coastguard Worker drrs = "low";
397*d83cc019SAndroid Build Coastguard Worker break;
398*d83cc019SAndroid Build Coastguard Worker case PORT_DBG_DRRS_HW_STATE_HIGH:
399*d83cc019SAndroid Build Coastguard Worker drrs = "high";
400*d83cc019SAndroid Build Coastguard Worker break;
401*d83cc019SAndroid Build Coastguard Worker }
402*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "HW DRRS %s",
403*d83cc019SAndroid Build Coastguard Worker drrs);
404*d83cc019SAndroid Build Coastguard Worker }
405*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_hvtotal)406*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_hvtotal)
407*d83cc019SAndroid Build Coastguard Worker {
408*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d active, %d total",
409*d83cc019SAndroid Build Coastguard Worker (val & 0xffff) + 1,
410*d83cc019SAndroid Build Coastguard Worker ((val & 0xffff0000) >> 16) + 1);
411*d83cc019SAndroid Build Coastguard Worker }
412*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_hvsyncblank)413*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_hvsyncblank)
414*d83cc019SAndroid Build Coastguard Worker {
415*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d start, %d end",
416*d83cc019SAndroid Build Coastguard Worker (val & 0xffff) + 1,
417*d83cc019SAndroid Build Coastguard Worker ((val & 0xffff0000) >> 16) + 1);
418*d83cc019SAndroid Build Coastguard Worker }
419*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_vgacntrl)420*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_vgacntrl)
421*d83cc019SAndroid Build Coastguard Worker {
422*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s",
423*d83cc019SAndroid Build Coastguard Worker val & VGA_DISP_DISABLE ? "disabled" : "enabled");
424*d83cc019SAndroid Build Coastguard Worker }
425*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_fp)426*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_fp)
427*d83cc019SAndroid Build Coastguard Worker {
428*d83cc019SAndroid Build Coastguard Worker if (IS_PINEVIEW(devid)) {
429*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "n = %d, m1 = %d, m2 = %d",
430*d83cc019SAndroid Build Coastguard Worker ffs((val & FP_N_IGD_DIV_MASK) >>
431*d83cc019SAndroid Build Coastguard Worker FP_N_DIV_SHIFT) - 1,
432*d83cc019SAndroid Build Coastguard Worker ((val & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT),
433*d83cc019SAndroid Build Coastguard Worker ((val & FP_M2_IGD_DIV_MASK) >>
434*d83cc019SAndroid Build Coastguard Worker FP_M2_DIV_SHIFT));
435*d83cc019SAndroid Build Coastguard Worker }
436*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "n = %d, m1 = %d, m2 = %d",
437*d83cc019SAndroid Build Coastguard Worker ((val & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT),
438*d83cc019SAndroid Build Coastguard Worker ((val & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT),
439*d83cc019SAndroid Build Coastguard Worker ((val & FP_M2_DIV_MASK) >> FP_M2_DIV_SHIFT));
440*d83cc019SAndroid Build Coastguard Worker }
441*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_vga_pd)442*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_vga_pd)
443*d83cc019SAndroid Build Coastguard Worker {
444*d83cc019SAndroid Build Coastguard Worker int vga0_p1, vga0_p2, vga1_p1, vga1_p2;
445*d83cc019SAndroid Build Coastguard Worker
446*d83cc019SAndroid Build Coastguard Worker /* XXX: i9xx version */
447*d83cc019SAndroid Build Coastguard Worker
448*d83cc019SAndroid Build Coastguard Worker if (val & VGA0_PD_P1_DIV_2)
449*d83cc019SAndroid Build Coastguard Worker vga0_p1 = 2;
450*d83cc019SAndroid Build Coastguard Worker else
451*d83cc019SAndroid Build Coastguard Worker vga0_p1 = ((val & VGA0_PD_P1_MASK) >> VGA0_PD_P1_SHIFT) + 2;
452*d83cc019SAndroid Build Coastguard Worker vga0_p2 = (val & VGA0_PD_P2_DIV_4) ? 4 : 2;
453*d83cc019SAndroid Build Coastguard Worker
454*d83cc019SAndroid Build Coastguard Worker if (val & VGA1_PD_P1_DIV_2)
455*d83cc019SAndroid Build Coastguard Worker vga1_p1 = 2;
456*d83cc019SAndroid Build Coastguard Worker else
457*d83cc019SAndroid Build Coastguard Worker vga1_p1 = ((val & VGA1_PD_P1_MASK) >> VGA1_PD_P1_SHIFT) + 2;
458*d83cc019SAndroid Build Coastguard Worker vga1_p2 = (val & VGA1_PD_P2_DIV_4) ? 4 : 2;
459*d83cc019SAndroid Build Coastguard Worker
460*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "vga0 p1 = %d, p2 = %d, vga1 p1 = %d, p2 = %d",
461*d83cc019SAndroid Build Coastguard Worker vga0_p1, vga0_p2, vga1_p1, vga1_p2);
462*d83cc019SAndroid Build Coastguard Worker }
463*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_pp_status)464*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_pp_status)
465*d83cc019SAndroid Build Coastguard Worker {
466*d83cc019SAndroid Build Coastguard Worker const char *status = val & PP_ON ? "on" : "off";
467*d83cc019SAndroid Build Coastguard Worker const char *ready = val & PP_READY ? "ready" : "not ready";
468*d83cc019SAndroid Build Coastguard Worker const char *seq = "unknown";
469*d83cc019SAndroid Build Coastguard Worker
470*d83cc019SAndroid Build Coastguard Worker switch (val & PP_SEQUENCE_MASK) {
471*d83cc019SAndroid Build Coastguard Worker case PP_SEQUENCE_NONE:
472*d83cc019SAndroid Build Coastguard Worker seq = "idle";
473*d83cc019SAndroid Build Coastguard Worker break;
474*d83cc019SAndroid Build Coastguard Worker case PP_SEQUENCE_ON:
475*d83cc019SAndroid Build Coastguard Worker seq = "on";
476*d83cc019SAndroid Build Coastguard Worker break;
477*d83cc019SAndroid Build Coastguard Worker case PP_SEQUENCE_OFF:
478*d83cc019SAndroid Build Coastguard Worker seq = "off";
479*d83cc019SAndroid Build Coastguard Worker break;
480*d83cc019SAndroid Build Coastguard Worker }
481*d83cc019SAndroid Build Coastguard Worker
482*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, %s, sequencing %s", status, ready, seq);
483*d83cc019SAndroid Build Coastguard Worker }
484*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_pp_control)485*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_pp_control)
486*d83cc019SAndroid Build Coastguard Worker {
487*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "power target: %s",
488*d83cc019SAndroid Build Coastguard Worker val & POWER_TARGET_ON ? "on" : "off");
489*d83cc019SAndroid Build Coastguard Worker }
490*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dpll)491*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dpll)
492*d83cc019SAndroid Build Coastguard Worker {
493*d83cc019SAndroid Build Coastguard Worker const char *enabled = val & DPLL_VCO_ENABLE ? "enabled" : "disabled";
494*d83cc019SAndroid Build Coastguard Worker const char *dvomode = val & DPLL_DVO_HIGH_SPEED ? "dvo" : "non-dvo";
495*d83cc019SAndroid Build Coastguard Worker const char *vgamode = val & DPLL_VGA_MODE_DIS ? "" : ", VGA";
496*d83cc019SAndroid Build Coastguard Worker const char *mode = "unknown";
497*d83cc019SAndroid Build Coastguard Worker const char *clock = "unknown";
498*d83cc019SAndroid Build Coastguard Worker const char *fpextra = val & DISPLAY_RATE_SELECT_FPA1 ? ", using FPx1!" : "";
499*d83cc019SAndroid Build Coastguard Worker char sdvoextra[20];
500*d83cc019SAndroid Build Coastguard Worker int p1 = 0, p2 = 0;
501*d83cc019SAndroid Build Coastguard Worker
502*d83cc019SAndroid Build Coastguard Worker if (IS_GEN2(devid)) {
503*d83cc019SAndroid Build Coastguard Worker #if 0 /* removed due to use of INREG */
504*d83cc019SAndroid Build Coastguard Worker char is_lvds = (INREG(LVDS) & LVDS_PORT_EN) && (reg == DPLL_B);
505*d83cc019SAndroid Build Coastguard Worker
506*d83cc019SAndroid Build Coastguard Worker if (is_lvds) {
507*d83cc019SAndroid Build Coastguard Worker mode = "LVDS";
508*d83cc019SAndroid Build Coastguard Worker p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS)
509*d83cc019SAndroid Build Coastguard Worker >> DPLL_FPA01_P1_POST_DIV_SHIFT);
510*d83cc019SAndroid Build Coastguard Worker if ((INREG(LVDS) & LVDS_CLKB_POWER_MASK) ==
511*d83cc019SAndroid Build Coastguard Worker LVDS_CLKB_POWER_UP)
512*d83cc019SAndroid Build Coastguard Worker p2 = 7;
513*d83cc019SAndroid Build Coastguard Worker else
514*d83cc019SAndroid Build Coastguard Worker p2 = 14;
515*d83cc019SAndroid Build Coastguard Worker
516*d83cc019SAndroid Build Coastguard Worker } else {
517*d83cc019SAndroid Build Coastguard Worker mode = "DAC/serial";
518*d83cc019SAndroid Build Coastguard Worker if (val & PLL_P1_DIVIDE_BY_TWO) {
519*d83cc019SAndroid Build Coastguard Worker p1 = 2;
520*d83cc019SAndroid Build Coastguard Worker } else {
521*d83cc019SAndroid Build Coastguard Worker /* Map the number in the field to (3, 33) */
522*d83cc019SAndroid Build Coastguard Worker p1 = ((val & DPLL_FPA01_P1_POST_DIV_MASK_I830)
523*d83cc019SAndroid Build Coastguard Worker >> DPLL_FPA01_P1_POST_DIV_SHIFT) + 2;
524*d83cc019SAndroid Build Coastguard Worker }
525*d83cc019SAndroid Build Coastguard Worker if (val & PLL_P2_DIVIDE_BY_4)
526*d83cc019SAndroid Build Coastguard Worker p2 = 4;
527*d83cc019SAndroid Build Coastguard Worker else
528*d83cc019SAndroid Build Coastguard Worker p2 = 2;
529*d83cc019SAndroid Build Coastguard Worker }
530*d83cc019SAndroid Build Coastguard Worker #endif
531*d83cc019SAndroid Build Coastguard Worker } else {
532*d83cc019SAndroid Build Coastguard Worker if (IS_PINEVIEW(devid)) {
533*d83cc019SAndroid Build Coastguard Worker p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK_IGD) >>
534*d83cc019SAndroid Build Coastguard Worker DPLL_FPA01_P1_POST_DIV_SHIFT_IGD);
535*d83cc019SAndroid Build Coastguard Worker } else {
536*d83cc019SAndroid Build Coastguard Worker p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK) >>
537*d83cc019SAndroid Build Coastguard Worker DPLL_FPA01_P1_POST_DIV_SHIFT);
538*d83cc019SAndroid Build Coastguard Worker }
539*d83cc019SAndroid Build Coastguard Worker switch (val & DPLL_MODE_MASK) {
540*d83cc019SAndroid Build Coastguard Worker case DPLLB_MODE_DAC_SERIAL:
541*d83cc019SAndroid Build Coastguard Worker mode = "DAC/serial";
542*d83cc019SAndroid Build Coastguard Worker p2 = val & DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 ? 5 : 10;
543*d83cc019SAndroid Build Coastguard Worker break;
544*d83cc019SAndroid Build Coastguard Worker case DPLLB_MODE_LVDS:
545*d83cc019SAndroid Build Coastguard Worker mode = "LVDS";
546*d83cc019SAndroid Build Coastguard Worker p2 = val & DPLLB_LVDS_P2_CLOCK_DIV_7 ? 7 : 14;
547*d83cc019SAndroid Build Coastguard Worker break;
548*d83cc019SAndroid Build Coastguard Worker }
549*d83cc019SAndroid Build Coastguard Worker }
550*d83cc019SAndroid Build Coastguard Worker
551*d83cc019SAndroid Build Coastguard Worker switch (val & PLL_REF_INPUT_MASK) {
552*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_DREFCLK:
553*d83cc019SAndroid Build Coastguard Worker clock = "default";
554*d83cc019SAndroid Build Coastguard Worker break;
555*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_TVCLKINA:
556*d83cc019SAndroid Build Coastguard Worker clock = "TV A";
557*d83cc019SAndroid Build Coastguard Worker break;
558*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_TVCLKINBC:
559*d83cc019SAndroid Build Coastguard Worker clock = "TV B/C";
560*d83cc019SAndroid Build Coastguard Worker break;
561*d83cc019SAndroid Build Coastguard Worker case PLLB_REF_INPUT_SPREADSPECTRUMIN:
562*d83cc019SAndroid Build Coastguard Worker if (reg == DPLL_B)
563*d83cc019SAndroid Build Coastguard Worker clock = "spread spectrum";
564*d83cc019SAndroid Build Coastguard Worker break;
565*d83cc019SAndroid Build Coastguard Worker }
566*d83cc019SAndroid Build Coastguard Worker
567*d83cc019SAndroid Build Coastguard Worker if (IS_945(devid)) {
568*d83cc019SAndroid Build Coastguard Worker sprintf(sdvoextra, ", SDVO mult %d",
569*d83cc019SAndroid Build Coastguard Worker (int)((val & SDVO_MULTIPLIER_MASK) >>
570*d83cc019SAndroid Build Coastguard Worker SDVO_MULTIPLIER_SHIFT_HIRES) + 1);
571*d83cc019SAndroid Build Coastguard Worker } else {
572*d83cc019SAndroid Build Coastguard Worker sdvoextra[0] = '\0';
573*d83cc019SAndroid Build Coastguard Worker }
574*d83cc019SAndroid Build Coastguard Worker
575*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, %s%s, %s clock, %s mode, p1 = %d, "
576*d83cc019SAndroid Build Coastguard Worker "p2 = %d%s%s",
577*d83cc019SAndroid Build Coastguard Worker enabled, dvomode, vgamode, clock, mode, p1, p2,
578*d83cc019SAndroid Build Coastguard Worker fpextra, sdvoextra);
579*d83cc019SAndroid Build Coastguard Worker }
580*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dpll_test)581*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dpll_test)
582*d83cc019SAndroid Build Coastguard Worker {
583*d83cc019SAndroid Build Coastguard Worker const char *dpllandiv = val & DPLLA_TEST_N_BYPASS ? ", DPLLA N bypassed" : "";
584*d83cc019SAndroid Build Coastguard Worker const char *dpllamdiv = val & DPLLA_TEST_M_BYPASS ? ", DPLLA M bypassed" : "";
585*d83cc019SAndroid Build Coastguard Worker const char *dpllainput = val & DPLLA_INPUT_BUFFER_ENABLE ?
586*d83cc019SAndroid Build Coastguard Worker "" : ", DPLLA input buffer disabled";
587*d83cc019SAndroid Build Coastguard Worker const char *dpllbndiv = val & DPLLB_TEST_N_BYPASS ? ", DPLLB N bypassed" : "";
588*d83cc019SAndroid Build Coastguard Worker const char *dpllbmdiv = val & DPLLB_TEST_M_BYPASS ? ", DPLLB M bypassed" : "";
589*d83cc019SAndroid Build Coastguard Worker const char *dpllbinput = val & DPLLB_INPUT_BUFFER_ENABLE ?
590*d83cc019SAndroid Build Coastguard Worker "" : ", DPLLB input buffer disabled";
591*d83cc019SAndroid Build Coastguard Worker
592*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s%s%s%s%s%s",
593*d83cc019SAndroid Build Coastguard Worker dpllandiv, dpllamdiv, dpllainput,
594*d83cc019SAndroid Build Coastguard Worker dpllbndiv, dpllbmdiv, dpllbinput);
595*d83cc019SAndroid Build Coastguard Worker }
596*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_adpa)597*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_adpa)
598*d83cc019SAndroid Build Coastguard Worker {
599*d83cc019SAndroid Build Coastguard Worker char disp_pipe = (val & ADPA_PIPE_B_SELECT) ? 'B' : 'A';
600*d83cc019SAndroid Build Coastguard Worker const char *enable = (val & ADPA_DAC_ENABLE) ? "enabled" : "disabled";
601*d83cc019SAndroid Build Coastguard Worker char hsync = (val & ADPA_HSYNC_ACTIVE_HIGH) ? '+' : '-';
602*d83cc019SAndroid Build Coastguard Worker char vsync = (val & ADPA_VSYNC_ACTIVE_HIGH) ? '+' : '-';
603*d83cc019SAndroid Build Coastguard Worker
604*d83cc019SAndroid Build Coastguard Worker if (HAS_CPT)
605*d83cc019SAndroid Build Coastguard Worker disp_pipe = val & (1<<29) ? 'B' : 'A';
606*d83cc019SAndroid Build Coastguard Worker
607*d83cc019SAndroid Build Coastguard Worker if (HAS_PCH_SPLIT(devid))
608*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, transcoder %c, %chsync, %cvsync",
609*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe, hsync, vsync);
610*d83cc019SAndroid Build Coastguard Worker else
611*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, pipe %c, %chsync, %cvsync",
612*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe, hsync, vsync);
613*d83cc019SAndroid Build Coastguard Worker }
614*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_lvds)615*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_lvds)
616*d83cc019SAndroid Build Coastguard Worker {
617*d83cc019SAndroid Build Coastguard Worker char disp_pipe = val & LVDS_PIPEB_SELECT ? 'B' : 'A';
618*d83cc019SAndroid Build Coastguard Worker const char *enable = val & LVDS_PORT_EN ? "enabled" : "disabled";
619*d83cc019SAndroid Build Coastguard Worker int depth;
620*d83cc019SAndroid Build Coastguard Worker const char *channels;
621*d83cc019SAndroid Build Coastguard Worker
622*d83cc019SAndroid Build Coastguard Worker if ((val & LVDS_A3_POWER_MASK) == LVDS_A3_POWER_UP)
623*d83cc019SAndroid Build Coastguard Worker depth = 24;
624*d83cc019SAndroid Build Coastguard Worker else
625*d83cc019SAndroid Build Coastguard Worker depth = 18;
626*d83cc019SAndroid Build Coastguard Worker if ((val & LVDS_B0B3_POWER_MASK) == LVDS_B0B3_POWER_UP)
627*d83cc019SAndroid Build Coastguard Worker channels = "2 channels";
628*d83cc019SAndroid Build Coastguard Worker else
629*d83cc019SAndroid Build Coastguard Worker channels = "1 channel";
630*d83cc019SAndroid Build Coastguard Worker
631*d83cc019SAndroid Build Coastguard Worker if (HAS_CPT)
632*d83cc019SAndroid Build Coastguard Worker disp_pipe = val & (1<<29) ? 'B' : 'A';
633*d83cc019SAndroid Build Coastguard Worker
634*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, pipe %c, %d bit, %s",
635*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe, depth, channels);
636*d83cc019SAndroid Build Coastguard Worker }
637*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dvo)638*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dvo)
639*d83cc019SAndroid Build Coastguard Worker {
640*d83cc019SAndroid Build Coastguard Worker const char *enable = val & DVO_ENABLE ? "enabled" : "disabled";
641*d83cc019SAndroid Build Coastguard Worker char disp_pipe = val & DVO_PIPE_B_SELECT ? 'B' : 'A';
642*d83cc019SAndroid Build Coastguard Worker const char *stall;
643*d83cc019SAndroid Build Coastguard Worker char hsync = val & DVO_HSYNC_ACTIVE_HIGH ? '+' : '-';
644*d83cc019SAndroid Build Coastguard Worker char vsync = val & DVO_VSYNC_ACTIVE_HIGH ? '+' : '-';
645*d83cc019SAndroid Build Coastguard Worker
646*d83cc019SAndroid Build Coastguard Worker switch (val & DVO_PIPE_STALL_MASK) {
647*d83cc019SAndroid Build Coastguard Worker case DVO_PIPE_STALL_UNUSED:
648*d83cc019SAndroid Build Coastguard Worker stall = "no stall";
649*d83cc019SAndroid Build Coastguard Worker break;
650*d83cc019SAndroid Build Coastguard Worker case DVO_PIPE_STALL:
651*d83cc019SAndroid Build Coastguard Worker stall = "stall";
652*d83cc019SAndroid Build Coastguard Worker break;
653*d83cc019SAndroid Build Coastguard Worker case DVO_PIPE_STALL_TV:
654*d83cc019SAndroid Build Coastguard Worker stall = "TV stall";
655*d83cc019SAndroid Build Coastguard Worker break;
656*d83cc019SAndroid Build Coastguard Worker default:
657*d83cc019SAndroid Build Coastguard Worker stall = "unknown stall";
658*d83cc019SAndroid Build Coastguard Worker break;
659*d83cc019SAndroid Build Coastguard Worker }
660*d83cc019SAndroid Build Coastguard Worker
661*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, pipe %c, %s, %chsync, %cvsync",
662*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe, stall, hsync, vsync);
663*d83cc019SAndroid Build Coastguard Worker }
664*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_sdvo)665*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_sdvo)
666*d83cc019SAndroid Build Coastguard Worker {
667*d83cc019SAndroid Build Coastguard Worker const char *enable = val & SDVO_ENABLE ? "enabled" : "disabled";
668*d83cc019SAndroid Build Coastguard Worker char disp_pipe = val & SDVO_PIPE_B_SELECT ? 'B' : 'A';
669*d83cc019SAndroid Build Coastguard Worker const char *stall = val & SDVO_STALL_SELECT ? "enabled" : "disabled";
670*d83cc019SAndroid Build Coastguard Worker const char *detected = val & SDVO_DETECTED ? "" : "not ";
671*d83cc019SAndroid Build Coastguard Worker const char *gang = val & SDVOC_GANG_MODE ? ", gang mode" : "";
672*d83cc019SAndroid Build Coastguard Worker char sdvoextra[20];
673*d83cc019SAndroid Build Coastguard Worker
674*d83cc019SAndroid Build Coastguard Worker if (IS_915(devid)) {
675*d83cc019SAndroid Build Coastguard Worker sprintf(sdvoextra, ", SDVO mult %d",
676*d83cc019SAndroid Build Coastguard Worker (int)((val & SDVO_PORT_MULTIPLY_MASK) >>
677*d83cc019SAndroid Build Coastguard Worker SDVO_PORT_MULTIPLY_SHIFT) + 1);
678*d83cc019SAndroid Build Coastguard Worker } else {
679*d83cc019SAndroid Build Coastguard Worker sdvoextra[0] = '\0';
680*d83cc019SAndroid Build Coastguard Worker }
681*d83cc019SAndroid Build Coastguard Worker
682*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, pipe %c, stall %s, %sdetected%s%s",
683*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe, stall, detected, sdvoextra, gang);
684*d83cc019SAndroid Build Coastguard Worker }
685*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i830_debug_dspclk_gate_d)686*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i830_debug_dspclk_gate_d)
687*d83cc019SAndroid Build Coastguard Worker {
688*d83cc019SAndroid Build Coastguard Worker const char *DPUNIT_B = val & DPUNIT_B_CLOCK_GATE_DISABLE ? " DPUNIT_B" : "";
689*d83cc019SAndroid Build Coastguard Worker const char *VSUNIT = val & VSUNIT_CLOCK_GATE_DISABLE ? " VSUNIT" : "";
690*d83cc019SAndroid Build Coastguard Worker const char *VRHUNIT = val & VRHUNIT_CLOCK_GATE_DISABLE ? " VRHUNIT" : "";
691*d83cc019SAndroid Build Coastguard Worker const char *VRDUNIT = val & VRDUNIT_CLOCK_GATE_DISABLE ? " VRDUNIT" : "";
692*d83cc019SAndroid Build Coastguard Worker const char *AUDUNIT = val & AUDUNIT_CLOCK_GATE_DISABLE ? " AUDUNIT" : "";
693*d83cc019SAndroid Build Coastguard Worker const char *DPUNIT_A = val & DPUNIT_A_CLOCK_GATE_DISABLE ? " DPUNIT_A" : "";
694*d83cc019SAndroid Build Coastguard Worker const char *DPCUNIT = val & DPCUNIT_CLOCK_GATE_DISABLE ? " DPCUNIT" : "";
695*d83cc019SAndroid Build Coastguard Worker const char *TVRUNIT = val & TVRUNIT_CLOCK_GATE_DISABLE ? " TVRUNIT" : "";
696*d83cc019SAndroid Build Coastguard Worker const char *TVCUNIT = val & TVCUNIT_CLOCK_GATE_DISABLE ? " TVCUNIT" : "";
697*d83cc019SAndroid Build Coastguard Worker const char *TVFUNIT = val & TVFUNIT_CLOCK_GATE_DISABLE ? " TVFUNIT" : "";
698*d83cc019SAndroid Build Coastguard Worker const char *TVEUNIT = val & TVEUNIT_CLOCK_GATE_DISABLE ? " TVEUNIT" : "";
699*d83cc019SAndroid Build Coastguard Worker const char *DVSUNIT = val & DVSUNIT_CLOCK_GATE_DISABLE ? " DVSUNIT" : "";
700*d83cc019SAndroid Build Coastguard Worker const char *DSSUNIT = val & DSSUNIT_CLOCK_GATE_DISABLE ? " DSSUNIT" : "";
701*d83cc019SAndroid Build Coastguard Worker const char *DDBUNIT = val & DDBUNIT_CLOCK_GATE_DISABLE ? " DDBUNIT" : "";
702*d83cc019SAndroid Build Coastguard Worker const char *DPRUNIT = val & DPRUNIT_CLOCK_GATE_DISABLE ? " DPRUNIT" : "";
703*d83cc019SAndroid Build Coastguard Worker const char *DPFUNIT = val & DPFUNIT_CLOCK_GATE_DISABLE ? " DPFUNIT" : "";
704*d83cc019SAndroid Build Coastguard Worker const char *DPBMUNIT = val & DPBMUNIT_CLOCK_GATE_DISABLE ? " DPBMUNIT" : "";
705*d83cc019SAndroid Build Coastguard Worker const char *DPLSUNIT = val & DPLSUNIT_CLOCK_GATE_DISABLE ? " DPLSUNIT" : "";
706*d83cc019SAndroid Build Coastguard Worker const char *DPLUNIT = val & DPLUNIT_CLOCK_GATE_DISABLE ? " DPLUNIT" : "";
707*d83cc019SAndroid Build Coastguard Worker const char *DPOUNIT = val & DPOUNIT_CLOCK_GATE_DISABLE ? " DPOUNIT" : "";
708*d83cc019SAndroid Build Coastguard Worker const char *DPBUNIT = val & DPBUNIT_CLOCK_GATE_DISABLE ? " DPBUNIT" : "";
709*d83cc019SAndroid Build Coastguard Worker const char *DCUNIT = val & DCUNIT_CLOCK_GATE_DISABLE ? " DCUNIT" : "";
710*d83cc019SAndroid Build Coastguard Worker const char *DPUNIT = val & DPUNIT_CLOCK_GATE_DISABLE ? " DPUNIT" : "";
711*d83cc019SAndroid Build Coastguard Worker const char *VRUNIT = val & VRUNIT_CLOCK_GATE_DISABLE ? " VRUNIT" : "";
712*d83cc019SAndroid Build Coastguard Worker const char *OVHUNIT = val & OVHUNIT_CLOCK_GATE_DISABLE ? " OVHUNIT" : "";
713*d83cc019SAndroid Build Coastguard Worker const char *DPIOUNIT = val & DPIOUNIT_CLOCK_GATE_DISABLE ? " DPIOUNIT" : "";
714*d83cc019SAndroid Build Coastguard Worker const char *OVFUNIT = val & OVFUNIT_CLOCK_GATE_DISABLE ? " OVFUNIT" : "";
715*d83cc019SAndroid Build Coastguard Worker const char *OVBUNIT = val & OVBUNIT_CLOCK_GATE_DISABLE ? " OVBUNIT" : "";
716*d83cc019SAndroid Build Coastguard Worker const char *OVRUNIT = val & OVRUNIT_CLOCK_GATE_DISABLE ? " OVRUNIT" : "";
717*d83cc019SAndroid Build Coastguard Worker const char *OVCUNIT = val & OVCUNIT_CLOCK_GATE_DISABLE ? " OVCUNIT" : "";
718*d83cc019SAndroid Build Coastguard Worker const char *OVUUNIT = val & OVUUNIT_CLOCK_GATE_DISABLE ? " OVUUNIT" : "";
719*d83cc019SAndroid Build Coastguard Worker const char *OVLUNIT = val & OVLUNIT_CLOCK_GATE_DISABLE ? " OVLUNIT" : "";
720*d83cc019SAndroid Build Coastguard Worker
721*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
722*d83cc019SAndroid Build Coastguard Worker "clock gates disabled:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
723*d83cc019SAndroid Build Coastguard Worker DPUNIT_B, VSUNIT, VRHUNIT, VRDUNIT, AUDUNIT, DPUNIT_A, DPCUNIT,
724*d83cc019SAndroid Build Coastguard Worker TVRUNIT, TVCUNIT, TVFUNIT, TVEUNIT, DVSUNIT, DSSUNIT, DDBUNIT,
725*d83cc019SAndroid Build Coastguard Worker DPRUNIT, DPFUNIT, DPBMUNIT, DPLSUNIT, DPLUNIT, DPOUNIT, DPBUNIT,
726*d83cc019SAndroid Build Coastguard Worker DCUNIT, DPUNIT, VRUNIT, OVHUNIT, DPIOUNIT, OVFUNIT, OVBUNIT,
727*d83cc019SAndroid Build Coastguard Worker OVRUNIT, OVCUNIT, OVUUNIT, OVLUNIT);
728*d83cc019SAndroid Build Coastguard Worker }
729*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i810_debug_915_fence)730*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i810_debug_915_fence)
731*d83cc019SAndroid Build Coastguard Worker {
732*d83cc019SAndroid Build Coastguard Worker char format = (val & 1 << 12) ? 'Y' : 'X';
733*d83cc019SAndroid Build Coastguard Worker int pitch = 128 << ((val & 0x70) >> 4);
734*d83cc019SAndroid Build Coastguard Worker unsigned int offset = val & 0x0ff00000;
735*d83cc019SAndroid Build Coastguard Worker int size = (1024 * 1024) << ((val & 0x700) >> 8);
736*d83cc019SAndroid Build Coastguard Worker
737*d83cc019SAndroid Build Coastguard Worker if (IS_GEN4(devid) || (IS_915(devid) && reg >= FENCE_NEW))
738*d83cc019SAndroid Build Coastguard Worker return 0;
739*d83cc019SAndroid Build Coastguard Worker
740*d83cc019SAndroid Build Coastguard Worker if (format == 'X')
741*d83cc019SAndroid Build Coastguard Worker pitch *= 4;
742*d83cc019SAndroid Build Coastguard Worker if (val & 1) {
743*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "enabled, %c tiled, %4d pitch, 0x%08x - 0x%08x (%dkb)",
744*d83cc019SAndroid Build Coastguard Worker format, pitch, offset, offset + size,
745*d83cc019SAndroid Build Coastguard Worker size / 1024);
746*d83cc019SAndroid Build Coastguard Worker } else {
747*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "disabled");
748*d83cc019SAndroid Build Coastguard Worker }
749*d83cc019SAndroid Build Coastguard Worker }
750*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i810_debug_965_fence_start)751*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i810_debug_965_fence_start)
752*d83cc019SAndroid Build Coastguard Worker {
753*d83cc019SAndroid Build Coastguard Worker const char *enable = (val & FENCE_VALID) ? " enabled" : "disabled";
754*d83cc019SAndroid Build Coastguard Worker char format = (val & I965_FENCE_Y_MAJOR) ? 'Y' : 'X';
755*d83cc019SAndroid Build Coastguard Worker int pitch = ((val & 0xffc) >> 2) * 128 + 128;
756*d83cc019SAndroid Build Coastguard Worker unsigned int offset = val & 0xfffff000;
757*d83cc019SAndroid Build Coastguard Worker
758*d83cc019SAndroid Build Coastguard Worker if (!IS_GEN4(devid) && !IS_GEN5(devid))
759*d83cc019SAndroid Build Coastguard Worker return 0;
760*d83cc019SAndroid Build Coastguard Worker
761*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, %c tile walk, %4d pitch, 0x%08x start",
762*d83cc019SAndroid Build Coastguard Worker enable, format, pitch, offset);
763*d83cc019SAndroid Build Coastguard Worker }
764*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(i810_debug_965_fence_end)765*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(i810_debug_965_fence_end)
766*d83cc019SAndroid Build Coastguard Worker {
767*d83cc019SAndroid Build Coastguard Worker unsigned int end = val & 0xfffff000;
768*d83cc019SAndroid Build Coastguard Worker
769*d83cc019SAndroid Build Coastguard Worker if (!IS_GEN4(devid))
770*d83cc019SAndroid Build Coastguard Worker return 0;
771*d83cc019SAndroid Build Coastguard Worker
772*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, " 0x%08x end", end);
773*d83cc019SAndroid Build Coastguard Worker }
774*d83cc019SAndroid Build Coastguard Worker
775*d83cc019SAndroid Build Coastguard Worker #define DEFINEREG(reg) \
776*d83cc019SAndroid Build Coastguard Worker { reg, #reg, NULL }
777*d83cc019SAndroid Build Coastguard Worker #define DEFINEREG_16BIT(reg) \
778*d83cc019SAndroid Build Coastguard Worker { reg, #reg, i830_16bit_func }
779*d83cc019SAndroid Build Coastguard Worker #define DEFINEREG2(reg, func) \
780*d83cc019SAndroid Build Coastguard Worker { reg, #reg, func }
781*d83cc019SAndroid Build Coastguard Worker
782*d83cc019SAndroid Build Coastguard Worker struct reg_debug {
783*d83cc019SAndroid Build Coastguard Worker int reg;
784*d83cc019SAndroid Build Coastguard Worker const char *name;
785*d83cc019SAndroid Build Coastguard Worker _DEBUGSTRING((*debug_output));
786*d83cc019SAndroid Build Coastguard Worker };
787*d83cc019SAndroid Build Coastguard Worker
788*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug intel_debug_regs[] = {
789*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DCC, i830_debug_dcc),
790*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(CHDECMISC, i830_debug_chdecmisc),
791*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRB0),
792*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRB1),
793*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRB2),
794*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRB3),
795*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRB0),
796*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRB1),
797*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRB2),
798*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRB3),
799*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRA01),
800*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C0DRA23),
801*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRA01),
802*d83cc019SAndroid Build Coastguard Worker DEFINEREG_16BIT(C1DRA23),
803*d83cc019SAndroid Build Coastguard Worker
804*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PGETBL_CTL),
805*d83cc019SAndroid Build Coastguard Worker
806*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VCLK_DIVISOR_VGA0, i830_debug_fp),
807*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VCLK_DIVISOR_VGA1, i830_debug_fp),
808*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VCLK_POST_DIV, i830_debug_vga_pd),
809*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DPLL_TEST, i830_debug_dpll_test),
810*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CACHE_MODE_0),
811*d83cc019SAndroid Build Coastguard Worker DEFINEREG(D_STATE),
812*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCLK_GATE_D, i830_debug_dspclk_gate_d),
813*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RENCLK_GATE_D1),
814*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RENCLK_GATE_D2),
815*d83cc019SAndroid Build Coastguard Worker /* DEFINEREG(RAMCLK_GATE_D), CRL only */
816*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(SDVOB, i830_debug_sdvo),
817*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(SDVOC, i830_debug_sdvo),
818*d83cc019SAndroid Build Coastguard Worker /* DEFINEREG(UDIB_SVB_SHB_CODES), CRL only */
819*d83cc019SAndroid Build Coastguard Worker /* DEFINEREG(UDIB_SHA_BLANK_CODES), CRL only */
820*d83cc019SAndroid Build Coastguard Worker DEFINEREG(SDVOUDI),
821*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPARB),
822*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FW_BLC),
823*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FW_BLC2),
824*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FW_BLC_SELF),
825*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPFW1),
826*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPFW2),
827*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPFW3),
828*d83cc019SAndroid Build Coastguard Worker
829*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(ADPA, i830_debug_adpa),
830*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(LVDS, i830_debug_lvds),
831*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DVOA, i830_debug_dvo),
832*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DVOB, i830_debug_dvo),
833*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DVOC, i830_debug_dvo),
834*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DVOA_SRCDIM),
835*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DVOB_SRCDIM),
836*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DVOC_SRCDIM),
837*d83cc019SAndroid Build Coastguard Worker
838*d83cc019SAndroid Build Coastguard Worker DEFINEREG(BLC_PWM_CTL),
839*d83cc019SAndroid Build Coastguard Worker DEFINEREG(BLC_PWM_CTL2),
840*d83cc019SAndroid Build Coastguard Worker
841*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PP_CONTROL, i830_debug_pp_control),
842*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PP_STATUS, i830_debug_pp_status),
843*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PP_ON_DELAYS),
844*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PP_OFF_DELAYS),
845*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PP_DIVISOR),
846*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PFIT_CONTROL),
847*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PFIT_PGM_RATIOS),
848*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PORT_HOTPLUG_EN),
849*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PORT_HOTPLUG_STAT),
850*d83cc019SAndroid Build Coastguard Worker
851*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPACNTR, i830_debug_dspcntr),
852*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPASTRIDE, i830_debug_dspstride),
853*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPAPOS, i830_debug_xy),
854*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPASIZE, i830_debug_xyminus1),
855*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPABASE),
856*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPASURF),
857*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPATILEOFF),
858*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEACONF, i830_debug_pipeconf),
859*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEASRC, i830_debug_yxminus1),
860*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEASTAT, i830_debug_pipestat),
861*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEA_GMCH_DATA_M),
862*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEA_GMCH_DATA_N),
863*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEA_DP_LINK_M),
864*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEA_DP_LINK_N),
865*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_A_BASE),
866*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_A_CONTROL),
867*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_A_POSITION),
868*d83cc019SAndroid Build Coastguard Worker
869*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FPA0, i830_debug_fp),
870*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FPA1, i830_debug_fp),
871*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DPLL_A, i830_debug_dpll),
872*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPLL_A_MD),
873*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_A, i830_debug_hvtotal),
874*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_A, i830_debug_hvsyncblank),
875*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_A, i830_debug_hvsyncblank),
876*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_A, i830_debug_hvtotal),
877*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_A, i830_debug_hvsyncblank),
878*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_A, i830_debug_hvsyncblank),
879*d83cc019SAndroid Build Coastguard Worker DEFINEREG(BCLRPAT_A),
880*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_A),
881*d83cc019SAndroid Build Coastguard Worker
882*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBCNTR, i830_debug_dspcntr),
883*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBSTRIDE, i830_debug_dspstride),
884*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBPOS, i830_debug_xy),
885*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBSIZE, i830_debug_xyminus1),
886*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBBASE),
887*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBSURF),
888*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBTILEOFF),
889*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBCONF, i830_debug_pipeconf),
890*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBSRC, i830_debug_yxminus1),
891*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBSTAT, i830_debug_pipestat),
892*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEB_GMCH_DATA_M),
893*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEB_GMCH_DATA_N),
894*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEB_DP_LINK_M),
895*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPEB_DP_LINK_N),
896*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_B_BASE),
897*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_B_CONTROL),
898*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CURSOR_B_POSITION),
899*d83cc019SAndroid Build Coastguard Worker
900*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FPB0, i830_debug_fp),
901*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FPB1, i830_debug_fp),
902*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DPLL_B, i830_debug_dpll),
903*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPLL_B_MD),
904*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_B, i830_debug_hvtotal),
905*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_B, i830_debug_hvsyncblank),
906*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_B, i830_debug_hvsyncblank),
907*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_B, i830_debug_hvtotal),
908*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_B, i830_debug_hvsyncblank),
909*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_B, i830_debug_hvsyncblank),
910*d83cc019SAndroid Build Coastguard Worker DEFINEREG(BCLRPAT_B),
911*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_B),
912*d83cc019SAndroid Build Coastguard Worker
913*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VCLK_DIVISOR_VGA0),
914*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VCLK_DIVISOR_VGA1),
915*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VCLK_POST_DIV),
916*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VGACNTRL, i830_debug_vgacntrl),
917*d83cc019SAndroid Build Coastguard Worker
918*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CTL),
919*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_DAC),
920*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_Y),
921*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_Y2),
922*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_U),
923*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_U2),
924*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_V),
925*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CSC_V2),
926*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CLR_KNOBS),
927*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CLR_LEVEL),
928*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_CTL_1),
929*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_CTL_2),
930*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_CTL_3),
931*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_1),
932*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_2),
933*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_3),
934*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_4),
935*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_5),
936*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_6),
937*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_V_CTL_7),
938*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_SC_CTL_1),
939*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_SC_CTL_2),
940*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_SC_CTL_3),
941*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_WIN_POS),
942*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_WIN_SIZE),
943*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_FILTER_CTL_1),
944*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_FILTER_CTL_2),
945*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_FILTER_CTL_3),
946*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CC_CONTROL),
947*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_CC_DATA),
948*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_LUMA_0),
949*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_LUMA_59),
950*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_CHROMA_0),
951*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TV_H_CHROMA_59),
952*d83cc019SAndroid Build Coastguard Worker
953*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_CFB_BASE),
954*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_LL_BASE),
955*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_CONTROL),
956*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_COMMAND),
957*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_STATUS),
958*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_CONTROL2),
959*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_FENCE_OFF),
960*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FBC_MOD_NUM),
961*d83cc019SAndroid Build Coastguard Worker
962*d83cc019SAndroid Build Coastguard Worker DEFINEREG(MI_MODE),
963*d83cc019SAndroid Build Coastguard Worker /* DEFINEREG(MI_DISPLAY_POWER_DOWN), CRL only */
964*d83cc019SAndroid Build Coastguard Worker DEFINEREG(MI_ARB_STATE),
965*d83cc019SAndroid Build Coastguard Worker DEFINEREG(MI_RDRET_STATE),
966*d83cc019SAndroid Build Coastguard Worker DEFINEREG(ECOSKPD),
967*d83cc019SAndroid Build Coastguard Worker
968*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_B),
969*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_CTL),
970*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_DATA1),
971*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_DATA2),
972*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_DATA3),
973*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_DATA4),
974*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPB_AUX_CH_DATA5),
975*d83cc019SAndroid Build Coastguard Worker
976*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_C),
977*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_CTL),
978*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_DATA1),
979*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_DATA2),
980*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_DATA3),
981*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_DATA4),
982*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPC_AUX_CH_DATA5),
983*d83cc019SAndroid Build Coastguard Worker
984*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_D),
985*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_CTL),
986*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_DATA1),
987*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_DATA2),
988*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_DATA3),
989*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_DATA4),
990*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPD_AUX_CH_DATA5),
991*d83cc019SAndroid Build Coastguard Worker
992*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_CONFIG),
993*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_HDMIW_STATUS),
994*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_CONV_CHCNT),
995*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VIDEO_DIP_CTL),
996*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_PINW_CNTR),
997*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_CNTL_ST),
998*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_PIN_CAP),
999*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_PINW_CAP),
1000*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_PINW_UNSOLRESP),
1001*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_OUT_DIG_CNVT),
1002*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_OUT_CWCAP),
1003*d83cc019SAndroid Build Coastguard Worker DEFINEREG(AUD_GRP_CAP),
1004*d83cc019SAndroid Build Coastguard Worker
1005*d83cc019SAndroid Build Coastguard Worker #define DEFINEFENCE_915(i) \
1006*d83cc019SAndroid Build Coastguard Worker { FENCE+i*4, "FENCE " #i, i810_debug_915_fence }
1007*d83cc019SAndroid Build Coastguard Worker #define DEFINEFENCE_945(i) \
1008*d83cc019SAndroid Build Coastguard Worker { FENCE_NEW+(i - 8) * 4, "FENCE " #i, i810_debug_915_fence }
1009*d83cc019SAndroid Build Coastguard Worker
1010*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(0),
1011*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(1),
1012*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(2),
1013*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(3),
1014*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(4),
1015*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(5),
1016*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(6),
1017*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_915(7),
1018*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(8),
1019*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(9),
1020*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(10),
1021*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(11),
1022*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(12),
1023*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(13),
1024*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(14),
1025*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_945(15),
1026*d83cc019SAndroid Build Coastguard Worker
1027*d83cc019SAndroid Build Coastguard Worker DEFINEREG(INST_PM),
1028*d83cc019SAndroid Build Coastguard Worker };
1029*d83cc019SAndroid Build Coastguard Worker
1030*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug i965_fences[] = {
1031*d83cc019SAndroid Build Coastguard Worker #define DEFINEFENCE_965(i) \
1032*d83cc019SAndroid Build Coastguard Worker { FENCE_NEW+i*8, "FENCE START " #i, i810_debug_965_fence_start }, \
1033*d83cc019SAndroid Build Coastguard Worker { FENCE_NEW+i*8+4, "FENCE END " #i, i810_debug_965_fence_end }
1034*d83cc019SAndroid Build Coastguard Worker
1035*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(0),
1036*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(1),
1037*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(2),
1038*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(3),
1039*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(4),
1040*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(5),
1041*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(6),
1042*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(7),
1043*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(8),
1044*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(9),
1045*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(10),
1046*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(11),
1047*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(12),
1048*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(13),
1049*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(14),
1050*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_965(15),
1051*d83cc019SAndroid Build Coastguard Worker };
1052*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_rr_hw_ctl)1053*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_rr_hw_ctl)
1054*d83cc019SAndroid Build Coastguard Worker {
1055*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "low %d, high %d", val & RR_HW_LOW_POWER_FRAMES_MASK,
1056*d83cc019SAndroid Build Coastguard Worker (val & RR_HW_HIGH_POWER_FRAMES_MASK) >> 8);
1057*d83cc019SAndroid Build Coastguard Worker }
1058*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_m_tu)1059*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_m_tu)
1060*d83cc019SAndroid Build Coastguard Worker {
1061*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "TU %d, val 0x%x %d", (val >> 25) + 1, val & 0xffffff,
1062*d83cc019SAndroid Build Coastguard Worker val & 0xffffff);
1063*d83cc019SAndroid Build Coastguard Worker }
1064*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_n)1065*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_n)
1066*d83cc019SAndroid Build Coastguard Worker {
1067*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "val 0x%x %d", val & 0xffffff, val & 0xffffff);
1068*d83cc019SAndroid Build Coastguard Worker }
1069*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_fdi_tx_ctl)1070*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_fdi_tx_ctl)
1071*d83cc019SAndroid Build Coastguard Worker {
1072*d83cc019SAndroid Build Coastguard Worker const char *train = NULL, *voltage = NULL, *pre_emphasis = NULL, *portw =
1073*d83cc019SAndroid Build Coastguard Worker NULL;
1074*d83cc019SAndroid Build Coastguard Worker
1075*d83cc019SAndroid Build Coastguard Worker switch (val & FDI_LINK_TRAIN_NONE) {
1076*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_1:
1077*d83cc019SAndroid Build Coastguard Worker train = "pattern_1";
1078*d83cc019SAndroid Build Coastguard Worker break;
1079*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_2:
1080*d83cc019SAndroid Build Coastguard Worker train = "pattern_2";
1081*d83cc019SAndroid Build Coastguard Worker break;
1082*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_IDLE:
1083*d83cc019SAndroid Build Coastguard Worker train = "pattern_idle";
1084*d83cc019SAndroid Build Coastguard Worker break;
1085*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_NONE:
1086*d83cc019SAndroid Build Coastguard Worker train = "not train";
1087*d83cc019SAndroid Build Coastguard Worker break;
1088*d83cc019SAndroid Build Coastguard Worker }
1089*d83cc019SAndroid Build Coastguard Worker
1090*d83cc019SAndroid Build Coastguard Worker if (HAS_CPT) {
1091*d83cc019SAndroid Build Coastguard Worker /* SNB B0 */
1092*d83cc019SAndroid Build Coastguard Worker switch (val & (0x3f << 22)) {
1093*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_400MV_0DB_SNB_B:
1094*d83cc019SAndroid Build Coastguard Worker voltage = "0.4V";
1095*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "0dB";
1096*d83cc019SAndroid Build Coastguard Worker break;
1097*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_400MV_6DB_SNB_B:
1098*d83cc019SAndroid Build Coastguard Worker voltage = "0.4V";
1099*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "6dB";
1100*d83cc019SAndroid Build Coastguard Worker break;
1101*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_600MV_3_5DB_SNB_B:
1102*d83cc019SAndroid Build Coastguard Worker voltage = "0.6V";
1103*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "3.5dB";
1104*d83cc019SAndroid Build Coastguard Worker break;
1105*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_800MV_0DB_SNB_B:
1106*d83cc019SAndroid Build Coastguard Worker voltage = "0.8V";
1107*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "0dB";
1108*d83cc019SAndroid Build Coastguard Worker break;
1109*d83cc019SAndroid Build Coastguard Worker }
1110*d83cc019SAndroid Build Coastguard Worker
1111*d83cc019SAndroid Build Coastguard Worker } else {
1112*d83cc019SAndroid Build Coastguard Worker
1113*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 25)) {
1114*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_VOLTAGE_0_4V:
1115*d83cc019SAndroid Build Coastguard Worker voltage = "0.4V";
1116*d83cc019SAndroid Build Coastguard Worker break;
1117*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_VOLTAGE_0_6V:
1118*d83cc019SAndroid Build Coastguard Worker voltage = "0.6V";
1119*d83cc019SAndroid Build Coastguard Worker break;
1120*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_VOLTAGE_0_8V:
1121*d83cc019SAndroid Build Coastguard Worker voltage = "0.8V";
1122*d83cc019SAndroid Build Coastguard Worker break;
1123*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_VOLTAGE_1_2V:
1124*d83cc019SAndroid Build Coastguard Worker voltage = "1.2V";
1125*d83cc019SAndroid Build Coastguard Worker break;
1126*d83cc019SAndroid Build Coastguard Worker default:
1127*d83cc019SAndroid Build Coastguard Worker voltage = "reserved";
1128*d83cc019SAndroid Build Coastguard Worker }
1129*d83cc019SAndroid Build Coastguard Worker
1130*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 22)) {
1131*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PRE_EMPHASIS_NONE:
1132*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "none";
1133*d83cc019SAndroid Build Coastguard Worker break;
1134*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PRE_EMPHASIS_1_5X:
1135*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "1.5x";
1136*d83cc019SAndroid Build Coastguard Worker break;
1137*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PRE_EMPHASIS_2X:
1138*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "2x";
1139*d83cc019SAndroid Build Coastguard Worker break;
1140*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PRE_EMPHASIS_3X:
1141*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "3x";
1142*d83cc019SAndroid Build Coastguard Worker break;
1143*d83cc019SAndroid Build Coastguard Worker default:
1144*d83cc019SAndroid Build Coastguard Worker pre_emphasis = "reserved";
1145*d83cc019SAndroid Build Coastguard Worker }
1146*d83cc019SAndroid Build Coastguard Worker
1147*d83cc019SAndroid Build Coastguard Worker }
1148*d83cc019SAndroid Build Coastguard Worker
1149*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 19)) {
1150*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X1:
1151*d83cc019SAndroid Build Coastguard Worker portw = "X1";
1152*d83cc019SAndroid Build Coastguard Worker break;
1153*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X2:
1154*d83cc019SAndroid Build Coastguard Worker portw = "X2";
1155*d83cc019SAndroid Build Coastguard Worker break;
1156*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X3:
1157*d83cc019SAndroid Build Coastguard Worker portw = "X3";
1158*d83cc019SAndroid Build Coastguard Worker break;
1159*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X4:
1160*d83cc019SAndroid Build Coastguard Worker portw = "X4";
1161*d83cc019SAndroid Build Coastguard Worker break;
1162*d83cc019SAndroid Build Coastguard Worker }
1163*d83cc019SAndroid Build Coastguard Worker
1164*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, train pattern %s, voltage swing %s,"
1165*d83cc019SAndroid Build Coastguard Worker "pre-emphasis %s, port width %s, enhanced framing %s, FDI PLL %s, scrambing %s, master mode %s",
1166*d83cc019SAndroid Build Coastguard Worker val & FDI_TX_ENABLE ? "enable" : "disable",
1167*d83cc019SAndroid Build Coastguard Worker train, voltage, pre_emphasis, portw,
1168*d83cc019SAndroid Build Coastguard Worker val & FDI_TX_ENHANCE_FRAME_ENABLE ? "enable" :
1169*d83cc019SAndroid Build Coastguard Worker "disable",
1170*d83cc019SAndroid Build Coastguard Worker val & FDI_TX_PLL_ENABLE ? "enable" : "disable",
1171*d83cc019SAndroid Build Coastguard Worker val & (1 << 7) ? "disable" : "enable",
1172*d83cc019SAndroid Build Coastguard Worker val & (1 << 0) ? "enable" : "disable");
1173*d83cc019SAndroid Build Coastguard Worker }
1174*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_fdi_rx_ctl)1175*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_fdi_rx_ctl)
1176*d83cc019SAndroid Build Coastguard Worker {
1177*d83cc019SAndroid Build Coastguard Worker const char *train = NULL, *portw = NULL, *bpc = NULL;
1178*d83cc019SAndroid Build Coastguard Worker
1179*d83cc019SAndroid Build Coastguard Worker if (HAS_CPT) {
1180*d83cc019SAndroid Build Coastguard Worker switch (val & FDI_LINK_TRAIN_PATTERN_MASK_CPT) {
1181*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_1_CPT:
1182*d83cc019SAndroid Build Coastguard Worker train = "pattern_1";
1183*d83cc019SAndroid Build Coastguard Worker break;
1184*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_2_CPT:
1185*d83cc019SAndroid Build Coastguard Worker train = "pattern_2";
1186*d83cc019SAndroid Build Coastguard Worker break;
1187*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_IDLE_CPT:
1188*d83cc019SAndroid Build Coastguard Worker train = "pattern_idle";
1189*d83cc019SAndroid Build Coastguard Worker break;
1190*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_NORMAL_CPT:
1191*d83cc019SAndroid Build Coastguard Worker train = "not train";
1192*d83cc019SAndroid Build Coastguard Worker break;
1193*d83cc019SAndroid Build Coastguard Worker }
1194*d83cc019SAndroid Build Coastguard Worker } else {
1195*d83cc019SAndroid Build Coastguard Worker switch (val & FDI_LINK_TRAIN_NONE) {
1196*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_1:
1197*d83cc019SAndroid Build Coastguard Worker train = "pattern_1";
1198*d83cc019SAndroid Build Coastguard Worker break;
1199*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_2:
1200*d83cc019SAndroid Build Coastguard Worker train = "pattern_2";
1201*d83cc019SAndroid Build Coastguard Worker break;
1202*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_PATTERN_IDLE:
1203*d83cc019SAndroid Build Coastguard Worker train = "pattern_idle";
1204*d83cc019SAndroid Build Coastguard Worker break;
1205*d83cc019SAndroid Build Coastguard Worker case FDI_LINK_TRAIN_NONE:
1206*d83cc019SAndroid Build Coastguard Worker train = "not train";
1207*d83cc019SAndroid Build Coastguard Worker break;
1208*d83cc019SAndroid Build Coastguard Worker }
1209*d83cc019SAndroid Build Coastguard Worker }
1210*d83cc019SAndroid Build Coastguard Worker
1211*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 19)) {
1212*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X1:
1213*d83cc019SAndroid Build Coastguard Worker portw = "X1";
1214*d83cc019SAndroid Build Coastguard Worker break;
1215*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X2:
1216*d83cc019SAndroid Build Coastguard Worker portw = "X2";
1217*d83cc019SAndroid Build Coastguard Worker break;
1218*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X3:
1219*d83cc019SAndroid Build Coastguard Worker portw = "X3";
1220*d83cc019SAndroid Build Coastguard Worker break;
1221*d83cc019SAndroid Build Coastguard Worker case FDI_DP_PORT_WIDTH_X4:
1222*d83cc019SAndroid Build Coastguard Worker portw = "X4";
1223*d83cc019SAndroid Build Coastguard Worker break;
1224*d83cc019SAndroid Build Coastguard Worker }
1225*d83cc019SAndroid Build Coastguard Worker
1226*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 16)) {
1227*d83cc019SAndroid Build Coastguard Worker case FDI_8BPC:
1228*d83cc019SAndroid Build Coastguard Worker bpc = "8bpc";
1229*d83cc019SAndroid Build Coastguard Worker break;
1230*d83cc019SAndroid Build Coastguard Worker case FDI_10BPC:
1231*d83cc019SAndroid Build Coastguard Worker bpc = "10bpc";
1232*d83cc019SAndroid Build Coastguard Worker break;
1233*d83cc019SAndroid Build Coastguard Worker case FDI_6BPC:
1234*d83cc019SAndroid Build Coastguard Worker bpc = "6bpc";
1235*d83cc019SAndroid Build Coastguard Worker break;
1236*d83cc019SAndroid Build Coastguard Worker case FDI_12BPC:
1237*d83cc019SAndroid Build Coastguard Worker bpc = "12bpc";
1238*d83cc019SAndroid Build Coastguard Worker break;
1239*d83cc019SAndroid Build Coastguard Worker }
1240*d83cc019SAndroid Build Coastguard Worker
1241*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, train pattern %s, port width %s, %s,"
1242*d83cc019SAndroid Build Coastguard Worker "link_reverse_strap_overwrite %s, dmi_link_reverse %s, FDI PLL %s,"
1243*d83cc019SAndroid Build Coastguard Worker "FS ecc %s, FE ecc %s, FS err report %s, FE err report %s,"
1244*d83cc019SAndroid Build Coastguard Worker "scrambing %s, enhanced framing %s, %s",
1245*d83cc019SAndroid Build Coastguard Worker val & FDI_RX_ENABLE ? "enable" : "disable",
1246*d83cc019SAndroid Build Coastguard Worker train, portw, bpc,
1247*d83cc019SAndroid Build Coastguard Worker val & FDI_LINK_REVERSE_OVERWRITE ? "yes" : "no",
1248*d83cc019SAndroid Build Coastguard Worker val & FDI_DMI_LINK_REVERSE_MASK ? "yes" : "no",
1249*d83cc019SAndroid Build Coastguard Worker val & FDI_RX_PLL_ENABLE ? "enable" : "disable",
1250*d83cc019SAndroid Build Coastguard Worker val & FDI_FS_ERR_CORRECT_ENABLE ? "enable" : "disable",
1251*d83cc019SAndroid Build Coastguard Worker val & FDI_FE_ERR_CORRECT_ENABLE ? "enable" : "disable",
1252*d83cc019SAndroid Build Coastguard Worker val & FDI_FS_ERR_REPORT_ENABLE ? "enable" : "disable",
1253*d83cc019SAndroid Build Coastguard Worker val & FDI_FE_ERR_REPORT_ENABLE ? "enable" : "disable",
1254*d83cc019SAndroid Build Coastguard Worker val & (1 << 7) ? "disable" : "enable",
1255*d83cc019SAndroid Build Coastguard Worker val & FDI_RX_ENHANCE_FRAME_ENABLE ? "enable" :
1256*d83cc019SAndroid Build Coastguard Worker "disable", val & FDI_SEL_PCDCLK ? "PCDClk" : "RawClk");
1257*d83cc019SAndroid Build Coastguard Worker }
1258*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_dspstride)1259*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_dspstride)
1260*d83cc019SAndroid Build Coastguard Worker {
1261*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d", val >> 6);
1262*d83cc019SAndroid Build Coastguard Worker }
1263*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_pch_dpll)1264*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_pch_dpll)
1265*d83cc019SAndroid Build Coastguard Worker {
1266*d83cc019SAndroid Build Coastguard Worker const char *enable = val & DPLL_VCO_ENABLE ? "enable" : "disable";
1267*d83cc019SAndroid Build Coastguard Worker const char *highspeed = val & DPLL_DVO_HIGH_SPEED ? "yes" : "no";
1268*d83cc019SAndroid Build Coastguard Worker const char *mode = NULL;
1269*d83cc019SAndroid Build Coastguard Worker const char *p2 = NULL;
1270*d83cc019SAndroid Build Coastguard Worker int fpa0_p1, fpa1_p1;
1271*d83cc019SAndroid Build Coastguard Worker const char *refclk = NULL;
1272*d83cc019SAndroid Build Coastguard Worker int sdvo_mul;
1273*d83cc019SAndroid Build Coastguard Worker
1274*d83cc019SAndroid Build Coastguard Worker if ((val & DPLLB_MODE_LVDS) == DPLLB_MODE_LVDS) {
1275*d83cc019SAndroid Build Coastguard Worker mode = "LVDS";
1276*d83cc019SAndroid Build Coastguard Worker if (val & DPLLB_LVDS_P2_CLOCK_DIV_7)
1277*d83cc019SAndroid Build Coastguard Worker p2 = "Div 7";
1278*d83cc019SAndroid Build Coastguard Worker else
1279*d83cc019SAndroid Build Coastguard Worker p2 = "Div 14";
1280*d83cc019SAndroid Build Coastguard Worker } else if ((val & DPLLB_MODE_DAC_SERIAL) == DPLLB_MODE_DAC_SERIAL) {
1281*d83cc019SAndroid Build Coastguard Worker mode = "Non-LVDS";
1282*d83cc019SAndroid Build Coastguard Worker if (val & DPLL_DAC_SERIAL_P2_CLOCK_DIV_5)
1283*d83cc019SAndroid Build Coastguard Worker p2 = "Div 5";
1284*d83cc019SAndroid Build Coastguard Worker else
1285*d83cc019SAndroid Build Coastguard Worker p2 = "Div 10";
1286*d83cc019SAndroid Build Coastguard Worker }
1287*d83cc019SAndroid Build Coastguard Worker fpa0_p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK) >> 16);
1288*d83cc019SAndroid Build Coastguard Worker fpa1_p1 = ffs((val & DPLL_FPA1_P1_POST_DIV_MASK));
1289*d83cc019SAndroid Build Coastguard Worker
1290*d83cc019SAndroid Build Coastguard Worker switch (val & PLL_REF_INPUT_MASK) {
1291*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_DREFCLK:
1292*d83cc019SAndroid Build Coastguard Worker refclk = "default 120Mhz";
1293*d83cc019SAndroid Build Coastguard Worker break;
1294*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_SUPER_SSC:
1295*d83cc019SAndroid Build Coastguard Worker refclk = "SuperSSC 120Mhz";
1296*d83cc019SAndroid Build Coastguard Worker break;
1297*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_TVCLKINBC:
1298*d83cc019SAndroid Build Coastguard Worker refclk = "SDVO TVClkIn";
1299*d83cc019SAndroid Build Coastguard Worker break;
1300*d83cc019SAndroid Build Coastguard Worker case PLLB_REF_INPUT_SPREADSPECTRUMIN:
1301*d83cc019SAndroid Build Coastguard Worker refclk = "SSC";
1302*d83cc019SAndroid Build Coastguard Worker break;
1303*d83cc019SAndroid Build Coastguard Worker case PLL_REF_INPUT_DMICLK:
1304*d83cc019SAndroid Build Coastguard Worker refclk = "DMI RefCLK";
1305*d83cc019SAndroid Build Coastguard Worker break;
1306*d83cc019SAndroid Build Coastguard Worker }
1307*d83cc019SAndroid Build Coastguard Worker
1308*d83cc019SAndroid Build Coastguard Worker sdvo_mul = ((val & PLL_REF_SDVO_HDMI_MULTIPLIER_MASK) >> 9) + 1;
1309*d83cc019SAndroid Build Coastguard Worker
1310*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, sdvo high speed %s, mode %s, p2 %s, "
1311*d83cc019SAndroid Build Coastguard Worker "FPA0 P1 %d, FPA1 P1 %d, refclk %s, sdvo/hdmi mul %d",
1312*d83cc019SAndroid Build Coastguard Worker enable, highspeed, mode, p2, fpa0_p1, fpa1_p1, refclk,
1313*d83cc019SAndroid Build Coastguard Worker sdvo_mul);
1314*d83cc019SAndroid Build Coastguard Worker }
1315*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_dref_ctl)1316*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_dref_ctl)
1317*d83cc019SAndroid Build Coastguard Worker {
1318*d83cc019SAndroid Build Coastguard Worker const char *cpu_source;
1319*d83cc019SAndroid Build Coastguard Worker const char *ssc_source = val & DREF_SSC_SOURCE_ENABLE ? "enable" : "disable";
1320*d83cc019SAndroid Build Coastguard Worker const char *nonspread_source =
1321*d83cc019SAndroid Build Coastguard Worker val & DREF_NONSPREAD_SOURCE_ENABLE ? "enable" : "disable";
1322*d83cc019SAndroid Build Coastguard Worker const char *superspread_source =
1323*d83cc019SAndroid Build Coastguard Worker val & DREF_SUPERSPREAD_SOURCE_ENABLE ? "enable" : "disable";
1324*d83cc019SAndroid Build Coastguard Worker const char *ssc4_mode =
1325*d83cc019SAndroid Build Coastguard Worker val & DREF_SSC4_CENTERSPREAD ? "centerspread" : "downspread";
1326*d83cc019SAndroid Build Coastguard Worker const char *ssc1 = val & DREF_SSC1_ENABLE ? "enable" : "disable";
1327*d83cc019SAndroid Build Coastguard Worker const char *ssc4 = val & DREF_SSC4_ENABLE ? "enable" : "disable";
1328*d83cc019SAndroid Build Coastguard Worker
1329*d83cc019SAndroid Build Coastguard Worker switch (val & DREF_CPU_SOURCE_OUTPUT_NONSPREAD) {
1330*d83cc019SAndroid Build Coastguard Worker case DREF_CPU_SOURCE_OUTPUT_DISABLE:
1331*d83cc019SAndroid Build Coastguard Worker cpu_source = "disable";
1332*d83cc019SAndroid Build Coastguard Worker break;
1333*d83cc019SAndroid Build Coastguard Worker case DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD:
1334*d83cc019SAndroid Build Coastguard Worker cpu_source = "downspread";
1335*d83cc019SAndroid Build Coastguard Worker break;
1336*d83cc019SAndroid Build Coastguard Worker case DREF_CPU_SOURCE_OUTPUT_NONSPREAD:
1337*d83cc019SAndroid Build Coastguard Worker cpu_source = "nonspread";
1338*d83cc019SAndroid Build Coastguard Worker break;
1339*d83cc019SAndroid Build Coastguard Worker default:
1340*d83cc019SAndroid Build Coastguard Worker cpu_source = "reserved";
1341*d83cc019SAndroid Build Coastguard Worker }
1342*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "cpu source %s, ssc_source %s, nonspread_source %s, "
1343*d83cc019SAndroid Build Coastguard Worker "superspread_source %s, ssc4_mode %s, ssc1 %s, ssc4 %s",
1344*d83cc019SAndroid Build Coastguard Worker cpu_source, ssc_source, nonspread_source,
1345*d83cc019SAndroid Build Coastguard Worker superspread_source, ssc4_mode, ssc1, ssc4);
1346*d83cc019SAndroid Build Coastguard Worker }
1347*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_rawclk_freq)1348*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_rawclk_freq)
1349*d83cc019SAndroid Build Coastguard Worker {
1350*d83cc019SAndroid Build Coastguard Worker const char *tp1 = NULL, *tp2 = NULL;
1351*d83cc019SAndroid Build Coastguard Worker
1352*d83cc019SAndroid Build Coastguard Worker switch (val & FDL_TP1_TIMER_MASK) {
1353*d83cc019SAndroid Build Coastguard Worker case 0:
1354*d83cc019SAndroid Build Coastguard Worker tp1 = "0.5us";
1355*d83cc019SAndroid Build Coastguard Worker break;
1356*d83cc019SAndroid Build Coastguard Worker case (1 << 12):
1357*d83cc019SAndroid Build Coastguard Worker tp1 = "1.0us";
1358*d83cc019SAndroid Build Coastguard Worker break;
1359*d83cc019SAndroid Build Coastguard Worker case (2 << 12):
1360*d83cc019SAndroid Build Coastguard Worker tp1 = "2.0us";
1361*d83cc019SAndroid Build Coastguard Worker break;
1362*d83cc019SAndroid Build Coastguard Worker case (3 << 12):
1363*d83cc019SAndroid Build Coastguard Worker tp1 = "4.0us";
1364*d83cc019SAndroid Build Coastguard Worker break;
1365*d83cc019SAndroid Build Coastguard Worker }
1366*d83cc019SAndroid Build Coastguard Worker switch (val & FDL_TP2_TIMER_MASK) {
1367*d83cc019SAndroid Build Coastguard Worker case 0:
1368*d83cc019SAndroid Build Coastguard Worker tp2 = "1.5us";
1369*d83cc019SAndroid Build Coastguard Worker break;
1370*d83cc019SAndroid Build Coastguard Worker case (1 << 10):
1371*d83cc019SAndroid Build Coastguard Worker tp2 = "3.0us";
1372*d83cc019SAndroid Build Coastguard Worker break;
1373*d83cc019SAndroid Build Coastguard Worker case (2 << 10):
1374*d83cc019SAndroid Build Coastguard Worker tp2 = "6.0us";
1375*d83cc019SAndroid Build Coastguard Worker break;
1376*d83cc019SAndroid Build Coastguard Worker case (3 << 10):
1377*d83cc019SAndroid Build Coastguard Worker tp2 = "12.0us";
1378*d83cc019SAndroid Build Coastguard Worker break;
1379*d83cc019SAndroid Build Coastguard Worker }
1380*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "FDL_TP1 timer %s, FDL_TP2 timer %s, freq %d",
1381*d83cc019SAndroid Build Coastguard Worker tp1, tp2, val & RAWCLK_FREQ_MASK);
1382*d83cc019SAndroid Build Coastguard Worker
1383*d83cc019SAndroid Build Coastguard Worker }
1384*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_fdi_rx_misc)1385*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_fdi_rx_misc)
1386*d83cc019SAndroid Build Coastguard Worker {
1387*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "FDI Delay %d", val & ((1 << 13) - 1));
1388*d83cc019SAndroid Build Coastguard Worker }
1389*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_transconf)1390*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_transconf)
1391*d83cc019SAndroid Build Coastguard Worker {
1392*d83cc019SAndroid Build Coastguard Worker const char *enable = val & TRANS_ENABLE ? "enable" : "disable";
1393*d83cc019SAndroid Build Coastguard Worker const char *state = val & TRANS_STATE_ENABLE ? "active" : "inactive";
1394*d83cc019SAndroid Build Coastguard Worker const char *interlace;
1395*d83cc019SAndroid Build Coastguard Worker
1396*d83cc019SAndroid Build Coastguard Worker switch ((val >> 21) & 7) {
1397*d83cc019SAndroid Build Coastguard Worker case 0:
1398*d83cc019SAndroid Build Coastguard Worker interlace = "progressive";
1399*d83cc019SAndroid Build Coastguard Worker break;
1400*d83cc019SAndroid Build Coastguard Worker case 2:
1401*d83cc019SAndroid Build Coastguard Worker if (IS_GEN5(devid))
1402*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced sdvo";
1403*d83cc019SAndroid Build Coastguard Worker else
1404*d83cc019SAndroid Build Coastguard Worker interlace = "rsvd";
1405*d83cc019SAndroid Build Coastguard Worker break;
1406*d83cc019SAndroid Build Coastguard Worker case 3:
1407*d83cc019SAndroid Build Coastguard Worker interlace = "interlaced";
1408*d83cc019SAndroid Build Coastguard Worker break;
1409*d83cc019SAndroid Build Coastguard Worker default:
1410*d83cc019SAndroid Build Coastguard Worker interlace = "rsvd";
1411*d83cc019SAndroid Build Coastguard Worker }
1412*d83cc019SAndroid Build Coastguard Worker
1413*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, %s, %s", enable, state, interlace);
1414*d83cc019SAndroid Build Coastguard Worker }
1415*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_panel_fitting)1416*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_panel_fitting)
1417*d83cc019SAndroid Build Coastguard Worker {
1418*d83cc019SAndroid Build Coastguard Worker const char *vadapt = NULL, *filter_sel = NULL;
1419*d83cc019SAndroid Build Coastguard Worker
1420*d83cc019SAndroid Build Coastguard Worker switch (val & (3 << 25)) {
1421*d83cc019SAndroid Build Coastguard Worker case 0:
1422*d83cc019SAndroid Build Coastguard Worker vadapt = "least";
1423*d83cc019SAndroid Build Coastguard Worker break;
1424*d83cc019SAndroid Build Coastguard Worker case (1 << 25):
1425*d83cc019SAndroid Build Coastguard Worker vadapt = "moderate";
1426*d83cc019SAndroid Build Coastguard Worker break;
1427*d83cc019SAndroid Build Coastguard Worker case (2 << 25):
1428*d83cc019SAndroid Build Coastguard Worker vadapt = "reserved";
1429*d83cc019SAndroid Build Coastguard Worker break;
1430*d83cc019SAndroid Build Coastguard Worker case (3 << 25):
1431*d83cc019SAndroid Build Coastguard Worker vadapt = "most";
1432*d83cc019SAndroid Build Coastguard Worker break;
1433*d83cc019SAndroid Build Coastguard Worker }
1434*d83cc019SAndroid Build Coastguard Worker
1435*d83cc019SAndroid Build Coastguard Worker switch (val & (3 << 23)) {
1436*d83cc019SAndroid Build Coastguard Worker case 0:
1437*d83cc019SAndroid Build Coastguard Worker filter_sel = "programmed";
1438*d83cc019SAndroid Build Coastguard Worker break;
1439*d83cc019SAndroid Build Coastguard Worker case (1 << 23):
1440*d83cc019SAndroid Build Coastguard Worker filter_sel = "hardcoded";
1441*d83cc019SAndroid Build Coastguard Worker break;
1442*d83cc019SAndroid Build Coastguard Worker case (2 << 23):
1443*d83cc019SAndroid Build Coastguard Worker filter_sel = "edge_enhance";
1444*d83cc019SAndroid Build Coastguard Worker break;
1445*d83cc019SAndroid Build Coastguard Worker case (3 << 23):
1446*d83cc019SAndroid Build Coastguard Worker filter_sel = "edge_soften";
1447*d83cc019SAndroid Build Coastguard Worker break;
1448*d83cc019SAndroid Build Coastguard Worker }
1449*d83cc019SAndroid Build Coastguard Worker
1450*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
1451*d83cc019SAndroid Build Coastguard Worker "%s, auto_scale %s, auto_scale_cal %s, v_filter %s, vadapt %s, mode %s, filter_sel %s,"
1452*d83cc019SAndroid Build Coastguard Worker "chroma pre-filter %s, vert3tap %s, v_inter_invert %s",
1453*d83cc019SAndroid Build Coastguard Worker val & PF_ENABLE ? "enable" : "disable",
1454*d83cc019SAndroid Build Coastguard Worker val & (1 << 30) ? "no" : "yes",
1455*d83cc019SAndroid Build Coastguard Worker val & (1 << 29) ? "yes" : "no",
1456*d83cc019SAndroid Build Coastguard Worker val & (1 << 28) ? "bypass" : "enable",
1457*d83cc019SAndroid Build Coastguard Worker val & (1 << 27) ? "enable" : "disable",
1458*d83cc019SAndroid Build Coastguard Worker vadapt,
1459*d83cc019SAndroid Build Coastguard Worker filter_sel,
1460*d83cc019SAndroid Build Coastguard Worker val & (1 << 22) ? "enable" : "disable",
1461*d83cc019SAndroid Build Coastguard Worker val & (1 << 21) ? "force" : "auto",
1462*d83cc019SAndroid Build Coastguard Worker val & (1 << 20) ? "field 0" : "field 1");
1463*d83cc019SAndroid Build Coastguard Worker }
1464*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_panel_fitting_2)1465*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_panel_fitting_2)
1466*d83cc019SAndroid Build Coastguard Worker {
1467*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
1468*d83cc019SAndroid Build Coastguard Worker "vscale %f",
1469*d83cc019SAndroid Build Coastguard Worker val / (float) (1<<15));
1470*d83cc019SAndroid Build Coastguard Worker }
1471*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_panel_fitting_3)1472*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_panel_fitting_3)
1473*d83cc019SAndroid Build Coastguard Worker {
1474*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
1475*d83cc019SAndroid Build Coastguard Worker "vscale initial phase %f",
1476*d83cc019SAndroid Build Coastguard Worker val / (float) (1<<15));
1477*d83cc019SAndroid Build Coastguard Worker }
1478*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_panel_fitting_4)1479*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_panel_fitting_4)
1480*d83cc019SAndroid Build Coastguard Worker {
1481*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len,
1482*d83cc019SAndroid Build Coastguard Worker "hscale %f",
1483*d83cc019SAndroid Build Coastguard Worker val / (float) (1<<15));
1484*d83cc019SAndroid Build Coastguard Worker }
1485*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_pf_win)1486*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_pf_win)
1487*d83cc019SAndroid Build Coastguard Worker {
1488*d83cc019SAndroid Build Coastguard Worker int a, b;
1489*d83cc019SAndroid Build Coastguard Worker
1490*d83cc019SAndroid Build Coastguard Worker a = (val >> 16) & 0x1fff;
1491*d83cc019SAndroid Build Coastguard Worker b = val & 0xfff;
1492*d83cc019SAndroid Build Coastguard Worker
1493*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%d, %d", a, b);
1494*d83cc019SAndroid Build Coastguard Worker }
1495*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_hdmi)1496*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_hdmi)
1497*d83cc019SAndroid Build Coastguard Worker {
1498*d83cc019SAndroid Build Coastguard Worker int disp_pipe;
1499*d83cc019SAndroid Build Coastguard Worker const char *enable, *bpc = NULL, *encoding;
1500*d83cc019SAndroid Build Coastguard Worker const char *mode, *audio, *vsync, *hsync, *detect;
1501*d83cc019SAndroid Build Coastguard Worker
1502*d83cc019SAndroid Build Coastguard Worker if (val & PORT_ENABLE)
1503*d83cc019SAndroid Build Coastguard Worker enable = "enabled";
1504*d83cc019SAndroid Build Coastguard Worker else
1505*d83cc019SAndroid Build Coastguard Worker enable = "disabled";
1506*d83cc019SAndroid Build Coastguard Worker
1507*d83cc019SAndroid Build Coastguard Worker if (HAS_CPT)
1508*d83cc019SAndroid Build Coastguard Worker disp_pipe = (val & (3<<29)) >> 29;
1509*d83cc019SAndroid Build Coastguard Worker else
1510*d83cc019SAndroid Build Coastguard Worker disp_pipe = (val & TRANSCODER_B) >> 29;
1511*d83cc019SAndroid Build Coastguard Worker
1512*d83cc019SAndroid Build Coastguard Worker switch (val & (7 << 26)) {
1513*d83cc019SAndroid Build Coastguard Worker case COLOR_FORMAT_8bpc:
1514*d83cc019SAndroid Build Coastguard Worker bpc = "8bpc";
1515*d83cc019SAndroid Build Coastguard Worker break;
1516*d83cc019SAndroid Build Coastguard Worker case COLOR_FORMAT_12bpc:
1517*d83cc019SAndroid Build Coastguard Worker bpc = "12bpc";
1518*d83cc019SAndroid Build Coastguard Worker break;
1519*d83cc019SAndroid Build Coastguard Worker }
1520*d83cc019SAndroid Build Coastguard Worker
1521*d83cc019SAndroid Build Coastguard Worker if ((val & (3 << 10)) == TMDS_ENCODING)
1522*d83cc019SAndroid Build Coastguard Worker encoding = "TMDS";
1523*d83cc019SAndroid Build Coastguard Worker else
1524*d83cc019SAndroid Build Coastguard Worker encoding = "SDVO";
1525*d83cc019SAndroid Build Coastguard Worker
1526*d83cc019SAndroid Build Coastguard Worker if (val & (1 << 9))
1527*d83cc019SAndroid Build Coastguard Worker mode = "HDMI";
1528*d83cc019SAndroid Build Coastguard Worker else
1529*d83cc019SAndroid Build Coastguard Worker mode = "DVI";
1530*d83cc019SAndroid Build Coastguard Worker
1531*d83cc019SAndroid Build Coastguard Worker if (val & AUDIO_ENABLE)
1532*d83cc019SAndroid Build Coastguard Worker audio = "enabled";
1533*d83cc019SAndroid Build Coastguard Worker else
1534*d83cc019SAndroid Build Coastguard Worker audio = "disabled";
1535*d83cc019SAndroid Build Coastguard Worker
1536*d83cc019SAndroid Build Coastguard Worker if (val & VSYNC_ACTIVE_HIGH)
1537*d83cc019SAndroid Build Coastguard Worker vsync = "+vsync";
1538*d83cc019SAndroid Build Coastguard Worker else
1539*d83cc019SAndroid Build Coastguard Worker vsync = "-vsync";
1540*d83cc019SAndroid Build Coastguard Worker
1541*d83cc019SAndroid Build Coastguard Worker if (val & HSYNC_ACTIVE_HIGH)
1542*d83cc019SAndroid Build Coastguard Worker hsync = "+hsync";
1543*d83cc019SAndroid Build Coastguard Worker else
1544*d83cc019SAndroid Build Coastguard Worker hsync = "-hsync";
1545*d83cc019SAndroid Build Coastguard Worker
1546*d83cc019SAndroid Build Coastguard Worker if (val & PORT_DETECTED)
1547*d83cc019SAndroid Build Coastguard Worker detect = "detected";
1548*d83cc019SAndroid Build Coastguard Worker else
1549*d83cc019SAndroid Build Coastguard Worker detect = "non-detected";
1550*d83cc019SAndroid Build Coastguard Worker
1551*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s pipe %c %s %s %s audio %s %s %s %s",
1552*d83cc019SAndroid Build Coastguard Worker enable, disp_pipe + 'A', bpc, encoding, mode, audio, vsync, hsync, detect);
1553*d83cc019SAndroid Build Coastguard Worker }
1554*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ironlake_debug_dp_buftrans)1555*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ironlake_debug_dp_buftrans)
1556*d83cc019SAndroid Build Coastguard Worker {
1557*d83cc019SAndroid Build Coastguard Worker static const char * const reg_names[] = {
1558*d83cc019SAndroid Build Coastguard Worker "400mV, 0.0dB",
1559*d83cc019SAndroid Build Coastguard Worker "400mV, 3.5dB",
1560*d83cc019SAndroid Build Coastguard Worker "400mV, 6.0dB",
1561*d83cc019SAndroid Build Coastguard Worker "400mV, 9.5dB",
1562*d83cc019SAndroid Build Coastguard Worker "600mV, 0.0dB",
1563*d83cc019SAndroid Build Coastguard Worker "600mV, 3.5dB",
1564*d83cc019SAndroid Build Coastguard Worker "600mV, 6.0dB",
1565*d83cc019SAndroid Build Coastguard Worker "800mV, 0.0dB",
1566*d83cc019SAndroid Build Coastguard Worker "800mV, 3.5dB",
1567*d83cc019SAndroid Build Coastguard Worker "1200mV, 0.0dB",
1568*d83cc019SAndroid Build Coastguard Worker };
1569*d83cc019SAndroid Build Coastguard Worker int idx = (reg - DP_BUFTRANS(0)) / 4;
1570*d83cc019SAndroid Build Coastguard Worker
1571*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s: OE=%3d, pre-emphasis=%2d, P current drive=%2d, N current drive=%2d",
1572*d83cc019SAndroid Build Coastguard Worker reg_names[idx], (val >> 19) & 0x1ff, (val >> 12) & 0x1f, (val >> 6) & 0xf, val & 0xf);
1573*d83cc019SAndroid Build Coastguard Worker }
1574*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(snb_debug_dpll_sel)1575*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(snb_debug_dpll_sel)
1576*d83cc019SAndroid Build Coastguard Worker {
1577*d83cc019SAndroid Build Coastguard Worker const char *transa, *transb;
1578*d83cc019SAndroid Build Coastguard Worker const char *dplla = NULL, *dpllb = NULL;
1579*d83cc019SAndroid Build Coastguard Worker
1580*d83cc019SAndroid Build Coastguard Worker if (!HAS_CPT)
1581*d83cc019SAndroid Build Coastguard Worker return 0;
1582*d83cc019SAndroid Build Coastguard Worker
1583*d83cc019SAndroid Build Coastguard Worker if (val & TRANSA_DPLL_ENABLE) {
1584*d83cc019SAndroid Build Coastguard Worker transa = "enable";
1585*d83cc019SAndroid Build Coastguard Worker if (val & TRANSA_DPLLB_SEL)
1586*d83cc019SAndroid Build Coastguard Worker dplla = "B";
1587*d83cc019SAndroid Build Coastguard Worker else
1588*d83cc019SAndroid Build Coastguard Worker dplla = "A";
1589*d83cc019SAndroid Build Coastguard Worker } else
1590*d83cc019SAndroid Build Coastguard Worker transa = "disable";
1591*d83cc019SAndroid Build Coastguard Worker
1592*d83cc019SAndroid Build Coastguard Worker if (val & TRANSB_DPLL_ENABLE) {
1593*d83cc019SAndroid Build Coastguard Worker transb = "enable";
1594*d83cc019SAndroid Build Coastguard Worker if (val & TRANSB_DPLLB_SEL)
1595*d83cc019SAndroid Build Coastguard Worker dpllb = "B";
1596*d83cc019SAndroid Build Coastguard Worker else
1597*d83cc019SAndroid Build Coastguard Worker dpllb = "A";
1598*d83cc019SAndroid Build Coastguard Worker } else
1599*d83cc019SAndroid Build Coastguard Worker transb = "disable";
1600*d83cc019SAndroid Build Coastguard Worker
1601*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "TransA DPLL %s (DPLL %s), TransB DPLL %s (DPLL %s)",
1602*d83cc019SAndroid Build Coastguard Worker transa, dplla, transb, dpllb);
1603*d83cc019SAndroid Build Coastguard Worker }
1604*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(snb_debug_trans_dp_ctl)1605*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(snb_debug_trans_dp_ctl)
1606*d83cc019SAndroid Build Coastguard Worker {
1607*d83cc019SAndroid Build Coastguard Worker const char *enable, *port = NULL, *bpc = NULL, *vsync, *hsync;
1608*d83cc019SAndroid Build Coastguard Worker
1609*d83cc019SAndroid Build Coastguard Worker if (!HAS_CPT)
1610*d83cc019SAndroid Build Coastguard Worker return 0;
1611*d83cc019SAndroid Build Coastguard Worker
1612*d83cc019SAndroid Build Coastguard Worker if (val & TRANS_DP_OUTPUT_ENABLE)
1613*d83cc019SAndroid Build Coastguard Worker enable = "enable";
1614*d83cc019SAndroid Build Coastguard Worker else
1615*d83cc019SAndroid Build Coastguard Worker enable = "disable";
1616*d83cc019SAndroid Build Coastguard Worker
1617*d83cc019SAndroid Build Coastguard Worker switch (val & TRANS_DP_PORT_SEL_MASK) {
1618*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_PORT_SEL_B:
1619*d83cc019SAndroid Build Coastguard Worker port = "B";
1620*d83cc019SAndroid Build Coastguard Worker break;
1621*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_PORT_SEL_C:
1622*d83cc019SAndroid Build Coastguard Worker port = "C";
1623*d83cc019SAndroid Build Coastguard Worker break;
1624*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_PORT_SEL_D:
1625*d83cc019SAndroid Build Coastguard Worker port = "D";
1626*d83cc019SAndroid Build Coastguard Worker break;
1627*d83cc019SAndroid Build Coastguard Worker default:
1628*d83cc019SAndroid Build Coastguard Worker port = "none";
1629*d83cc019SAndroid Build Coastguard Worker break;
1630*d83cc019SAndroid Build Coastguard Worker }
1631*d83cc019SAndroid Build Coastguard Worker
1632*d83cc019SAndroid Build Coastguard Worker switch (val & (7<<9)) {
1633*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_8BPC:
1634*d83cc019SAndroid Build Coastguard Worker bpc = "8bpc";
1635*d83cc019SAndroid Build Coastguard Worker break;
1636*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_10BPC:
1637*d83cc019SAndroid Build Coastguard Worker bpc = "10bpc";
1638*d83cc019SAndroid Build Coastguard Worker break;
1639*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_6BPC:
1640*d83cc019SAndroid Build Coastguard Worker bpc = "6bpc";
1641*d83cc019SAndroid Build Coastguard Worker break;
1642*d83cc019SAndroid Build Coastguard Worker case TRANS_DP_12BPC:
1643*d83cc019SAndroid Build Coastguard Worker bpc = "12bpc";
1644*d83cc019SAndroid Build Coastguard Worker break;
1645*d83cc019SAndroid Build Coastguard Worker }
1646*d83cc019SAndroid Build Coastguard Worker
1647*d83cc019SAndroid Build Coastguard Worker if (val & TRANS_DP_VSYNC_ACTIVE_HIGH)
1648*d83cc019SAndroid Build Coastguard Worker vsync = "+vsync";
1649*d83cc019SAndroid Build Coastguard Worker else
1650*d83cc019SAndroid Build Coastguard Worker vsync = "-vsync";
1651*d83cc019SAndroid Build Coastguard Worker
1652*d83cc019SAndroid Build Coastguard Worker if (val & TRANS_DP_HSYNC_ACTIVE_HIGH)
1653*d83cc019SAndroid Build Coastguard Worker hsync = "+hsync";
1654*d83cc019SAndroid Build Coastguard Worker else
1655*d83cc019SAndroid Build Coastguard Worker hsync = "-hsync";
1656*d83cc019SAndroid Build Coastguard Worker
1657*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s port %s %s %s %s",
1658*d83cc019SAndroid Build Coastguard Worker enable, port, bpc, vsync, hsync);
1659*d83cc019SAndroid Build Coastguard Worker }
1660*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ilk_debug_pp_control)1661*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ilk_debug_pp_control)
1662*d83cc019SAndroid Build Coastguard Worker {
1663*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "blacklight %s, %spower down on reset, panel %s",
1664*d83cc019SAndroid Build Coastguard Worker (val & (1 << 2)) ? "enabled" : "disabled",
1665*d83cc019SAndroid Build Coastguard Worker (val & (1 << 1)) ? "" : "do not ",
1666*d83cc019SAndroid Build Coastguard Worker (val & (1 << 0)) ? "on" : "off");
1667*d83cc019SAndroid Build Coastguard Worker }
1668*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_port_clk_sel)1669*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_port_clk_sel)
1670*d83cc019SAndroid Build Coastguard Worker {
1671*d83cc019SAndroid Build Coastguard Worker const char *clock = NULL;
1672*d83cc019SAndroid Build Coastguard Worker
1673*d83cc019SAndroid Build Coastguard Worker switch ((val >> 29 ) & 7) {
1674*d83cc019SAndroid Build Coastguard Worker case 0:
1675*d83cc019SAndroid Build Coastguard Worker clock = "LCPLL 2700";
1676*d83cc019SAndroid Build Coastguard Worker break;
1677*d83cc019SAndroid Build Coastguard Worker case 1:
1678*d83cc019SAndroid Build Coastguard Worker clock = "LCPLL 1350";
1679*d83cc019SAndroid Build Coastguard Worker break;
1680*d83cc019SAndroid Build Coastguard Worker case 2:
1681*d83cc019SAndroid Build Coastguard Worker clock = "LCPLL 810";
1682*d83cc019SAndroid Build Coastguard Worker break;
1683*d83cc019SAndroid Build Coastguard Worker case 3:
1684*d83cc019SAndroid Build Coastguard Worker clock = "SPLL";
1685*d83cc019SAndroid Build Coastguard Worker break;
1686*d83cc019SAndroid Build Coastguard Worker case 4:
1687*d83cc019SAndroid Build Coastguard Worker clock = "WRPLL 1";
1688*d83cc019SAndroid Build Coastguard Worker break;
1689*d83cc019SAndroid Build Coastguard Worker case 5:
1690*d83cc019SAndroid Build Coastguard Worker clock = "WRPLL 2";
1691*d83cc019SAndroid Build Coastguard Worker break;
1692*d83cc019SAndroid Build Coastguard Worker case 6:
1693*d83cc019SAndroid Build Coastguard Worker clock = "Reserved";
1694*d83cc019SAndroid Build Coastguard Worker break;
1695*d83cc019SAndroid Build Coastguard Worker case 7:
1696*d83cc019SAndroid Build Coastguard Worker clock = "None";
1697*d83cc019SAndroid Build Coastguard Worker break;
1698*d83cc019SAndroid Build Coastguard Worker }
1699*d83cc019SAndroid Build Coastguard Worker
1700*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s", clock);
1701*d83cc019SAndroid Build Coastguard Worker }
1702*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_pipe_clk_sel)1703*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_pipe_clk_sel)
1704*d83cc019SAndroid Build Coastguard Worker {
1705*d83cc019SAndroid Build Coastguard Worker const char *clock;
1706*d83cc019SAndroid Build Coastguard Worker
1707*d83cc019SAndroid Build Coastguard Worker switch ((val >> 29) & 7) {
1708*d83cc019SAndroid Build Coastguard Worker case 0:
1709*d83cc019SAndroid Build Coastguard Worker clock = "None";
1710*d83cc019SAndroid Build Coastguard Worker break;
1711*d83cc019SAndroid Build Coastguard Worker case 2:
1712*d83cc019SAndroid Build Coastguard Worker clock = "DDIB";
1713*d83cc019SAndroid Build Coastguard Worker break;
1714*d83cc019SAndroid Build Coastguard Worker case 3:
1715*d83cc019SAndroid Build Coastguard Worker clock = "DDIC";
1716*d83cc019SAndroid Build Coastguard Worker break;
1717*d83cc019SAndroid Build Coastguard Worker case 4:
1718*d83cc019SAndroid Build Coastguard Worker clock = "DDID";
1719*d83cc019SAndroid Build Coastguard Worker break;
1720*d83cc019SAndroid Build Coastguard Worker case 5:
1721*d83cc019SAndroid Build Coastguard Worker clock = "DDIE";
1722*d83cc019SAndroid Build Coastguard Worker break;
1723*d83cc019SAndroid Build Coastguard Worker default:
1724*d83cc019SAndroid Build Coastguard Worker clock = "Reserved";
1725*d83cc019SAndroid Build Coastguard Worker break;
1726*d83cc019SAndroid Build Coastguard Worker }
1727*d83cc019SAndroid Build Coastguard Worker
1728*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s", clock);
1729*d83cc019SAndroid Build Coastguard Worker }
1730*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_ddi_buf_ctl)1731*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_ddi_buf_ctl)
1732*d83cc019SAndroid Build Coastguard Worker {
1733*d83cc019SAndroid Build Coastguard Worker const char *enable, *reversal, *width, *detected;
1734*d83cc019SAndroid Build Coastguard Worker
1735*d83cc019SAndroid Build Coastguard Worker enable = (val & (1<<31)) ? "enabled" : "disabled";
1736*d83cc019SAndroid Build Coastguard Worker reversal = (val & (1<<16)) ? "reversed" : "not reversed";
1737*d83cc019SAndroid Build Coastguard Worker
1738*d83cc019SAndroid Build Coastguard Worker switch ((val >> 1) & 7) {
1739*d83cc019SAndroid Build Coastguard Worker case 0:
1740*d83cc019SAndroid Build Coastguard Worker width = "x1";
1741*d83cc019SAndroid Build Coastguard Worker break;
1742*d83cc019SAndroid Build Coastguard Worker case 1:
1743*d83cc019SAndroid Build Coastguard Worker width = "x2";
1744*d83cc019SAndroid Build Coastguard Worker break;
1745*d83cc019SAndroid Build Coastguard Worker case 3:
1746*d83cc019SAndroid Build Coastguard Worker width = "x4";
1747*d83cc019SAndroid Build Coastguard Worker break;
1748*d83cc019SAndroid Build Coastguard Worker default:
1749*d83cc019SAndroid Build Coastguard Worker width = "reserved";
1750*d83cc019SAndroid Build Coastguard Worker break;
1751*d83cc019SAndroid Build Coastguard Worker }
1752*d83cc019SAndroid Build Coastguard Worker
1753*d83cc019SAndroid Build Coastguard Worker detected = (val & 1) ? "detected" : "not detected";
1754*d83cc019SAndroid Build Coastguard Worker
1755*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s %s %s %s", enable, reversal, width, detected);
1756*d83cc019SAndroid Build Coastguard Worker }
1757*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_sfuse_strap)1758*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_sfuse_strap)
1759*d83cc019SAndroid Build Coastguard Worker {
1760*d83cc019SAndroid Build Coastguard Worker const char *display, *crt, *lane_reversal, *portb, *portc, *portd;
1761*d83cc019SAndroid Build Coastguard Worker
1762*d83cc019SAndroid Build Coastguard Worker display = (val & (1<<7)) ? "disabled" : "enabled";
1763*d83cc019SAndroid Build Coastguard Worker crt = (val & (1<<6)) ? "yes" : "no";
1764*d83cc019SAndroid Build Coastguard Worker lane_reversal = (val & (1<<4)) ? "yes" : "no";
1765*d83cc019SAndroid Build Coastguard Worker portb = (val & (1<<2)) ? "yes" : "no";
1766*d83cc019SAndroid Build Coastguard Worker portc = (val & (1<<1)) ? "yes" : "no";
1767*d83cc019SAndroid Build Coastguard Worker portd = (val & (1<<0)) ? "yes" : "no";
1768*d83cc019SAndroid Build Coastguard Worker
1769*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "display %s, crt %s, lane reversal %s, "
1770*d83cc019SAndroid Build Coastguard Worker "port b %s, port c %s, port d %s", display, crt, lane_reversal,
1771*d83cc019SAndroid Build Coastguard Worker portb, portc, portd);
1772*d83cc019SAndroid Build Coastguard Worker }
1773*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_pipe_ddi_func_ctl)1774*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_pipe_ddi_func_ctl)
1775*d83cc019SAndroid Build Coastguard Worker {
1776*d83cc019SAndroid Build Coastguard Worker const char *enable, *port, *mode, *bpc, *vsync, *hsync, *edp_input;
1777*d83cc019SAndroid Build Coastguard Worker const char *width;
1778*d83cc019SAndroid Build Coastguard Worker
1779*d83cc019SAndroid Build Coastguard Worker enable = (val & (1<<31)) ? "enabled" : "disabled";
1780*d83cc019SAndroid Build Coastguard Worker
1781*d83cc019SAndroid Build Coastguard Worker switch ((val >> 28) & 7) {
1782*d83cc019SAndroid Build Coastguard Worker case 0:
1783*d83cc019SAndroid Build Coastguard Worker port = "no port";
1784*d83cc019SAndroid Build Coastguard Worker break;
1785*d83cc019SAndroid Build Coastguard Worker case 1:
1786*d83cc019SAndroid Build Coastguard Worker port = "DDIB";
1787*d83cc019SAndroid Build Coastguard Worker break;
1788*d83cc019SAndroid Build Coastguard Worker case 2:
1789*d83cc019SAndroid Build Coastguard Worker port = "DDIC";
1790*d83cc019SAndroid Build Coastguard Worker break;
1791*d83cc019SAndroid Build Coastguard Worker case 3:
1792*d83cc019SAndroid Build Coastguard Worker port = "DDID";
1793*d83cc019SAndroid Build Coastguard Worker break;
1794*d83cc019SAndroid Build Coastguard Worker case 4:
1795*d83cc019SAndroid Build Coastguard Worker port = "DDIE";
1796*d83cc019SAndroid Build Coastguard Worker break;
1797*d83cc019SAndroid Build Coastguard Worker default:
1798*d83cc019SAndroid Build Coastguard Worker port = "port reserved";
1799*d83cc019SAndroid Build Coastguard Worker break;
1800*d83cc019SAndroid Build Coastguard Worker }
1801*d83cc019SAndroid Build Coastguard Worker
1802*d83cc019SAndroid Build Coastguard Worker switch ((val >> 24) & 7) {
1803*d83cc019SAndroid Build Coastguard Worker case 0:
1804*d83cc019SAndroid Build Coastguard Worker mode = "HDMI";
1805*d83cc019SAndroid Build Coastguard Worker break;
1806*d83cc019SAndroid Build Coastguard Worker case 1:
1807*d83cc019SAndroid Build Coastguard Worker mode = "DVI";
1808*d83cc019SAndroid Build Coastguard Worker break;
1809*d83cc019SAndroid Build Coastguard Worker case 2:
1810*d83cc019SAndroid Build Coastguard Worker mode = "DP SST";
1811*d83cc019SAndroid Build Coastguard Worker break;
1812*d83cc019SAndroid Build Coastguard Worker case 3:
1813*d83cc019SAndroid Build Coastguard Worker mode = "DP MST";
1814*d83cc019SAndroid Build Coastguard Worker break;
1815*d83cc019SAndroid Build Coastguard Worker case 4:
1816*d83cc019SAndroid Build Coastguard Worker mode = "FDI";
1817*d83cc019SAndroid Build Coastguard Worker break;
1818*d83cc019SAndroid Build Coastguard Worker case 5:
1819*d83cc019SAndroid Build Coastguard Worker default:
1820*d83cc019SAndroid Build Coastguard Worker mode = "mode reserved";
1821*d83cc019SAndroid Build Coastguard Worker break;
1822*d83cc019SAndroid Build Coastguard Worker }
1823*d83cc019SAndroid Build Coastguard Worker
1824*d83cc019SAndroid Build Coastguard Worker switch ((val >> 20) & 7) {
1825*d83cc019SAndroid Build Coastguard Worker case 0:
1826*d83cc019SAndroid Build Coastguard Worker bpc = "8 bpc";
1827*d83cc019SAndroid Build Coastguard Worker break;
1828*d83cc019SAndroid Build Coastguard Worker case 1:
1829*d83cc019SAndroid Build Coastguard Worker bpc = "10 bpc";
1830*d83cc019SAndroid Build Coastguard Worker break;
1831*d83cc019SAndroid Build Coastguard Worker case 2:
1832*d83cc019SAndroid Build Coastguard Worker bpc = "6 bpc";
1833*d83cc019SAndroid Build Coastguard Worker break;
1834*d83cc019SAndroid Build Coastguard Worker case 3:
1835*d83cc019SAndroid Build Coastguard Worker bpc = "12 bpc";
1836*d83cc019SAndroid Build Coastguard Worker break;
1837*d83cc019SAndroid Build Coastguard Worker default:
1838*d83cc019SAndroid Build Coastguard Worker bpc = "bpc reserved";
1839*d83cc019SAndroid Build Coastguard Worker break;
1840*d83cc019SAndroid Build Coastguard Worker }
1841*d83cc019SAndroid Build Coastguard Worker
1842*d83cc019SAndroid Build Coastguard Worker hsync = (val & (1<<16)) ? "+HSync" : "-HSync";
1843*d83cc019SAndroid Build Coastguard Worker vsync = (val & (1<<17)) ? "+VSync" : "-VSync";
1844*d83cc019SAndroid Build Coastguard Worker
1845*d83cc019SAndroid Build Coastguard Worker switch ((val >> 12) & 7) {
1846*d83cc019SAndroid Build Coastguard Worker case 0:
1847*d83cc019SAndroid Build Coastguard Worker edp_input = "EDP A ON";
1848*d83cc019SAndroid Build Coastguard Worker break;
1849*d83cc019SAndroid Build Coastguard Worker case 4:
1850*d83cc019SAndroid Build Coastguard Worker edp_input = "EDP A ONOFF";
1851*d83cc019SAndroid Build Coastguard Worker break;
1852*d83cc019SAndroid Build Coastguard Worker case 5:
1853*d83cc019SAndroid Build Coastguard Worker edp_input = "EDP B ONOFF";
1854*d83cc019SAndroid Build Coastguard Worker break;
1855*d83cc019SAndroid Build Coastguard Worker case 6:
1856*d83cc019SAndroid Build Coastguard Worker edp_input = "EDP C ONOFF";
1857*d83cc019SAndroid Build Coastguard Worker break;
1858*d83cc019SAndroid Build Coastguard Worker default:
1859*d83cc019SAndroid Build Coastguard Worker edp_input = "EDP input reserved";
1860*d83cc019SAndroid Build Coastguard Worker break;
1861*d83cc019SAndroid Build Coastguard Worker }
1862*d83cc019SAndroid Build Coastguard Worker
1863*d83cc019SAndroid Build Coastguard Worker switch ((val >> 1) & 7) {
1864*d83cc019SAndroid Build Coastguard Worker case 0:
1865*d83cc019SAndroid Build Coastguard Worker width = "x1";
1866*d83cc019SAndroid Build Coastguard Worker break;
1867*d83cc019SAndroid Build Coastguard Worker case 1:
1868*d83cc019SAndroid Build Coastguard Worker width = "x2";
1869*d83cc019SAndroid Build Coastguard Worker break;
1870*d83cc019SAndroid Build Coastguard Worker case 3:
1871*d83cc019SAndroid Build Coastguard Worker width = "x4";
1872*d83cc019SAndroid Build Coastguard Worker break;
1873*d83cc019SAndroid Build Coastguard Worker default:
1874*d83cc019SAndroid Build Coastguard Worker width = "reserved width";
1875*d83cc019SAndroid Build Coastguard Worker break;
1876*d83cc019SAndroid Build Coastguard Worker }
1877*d83cc019SAndroid Build Coastguard Worker
1878*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, %s, %s, %s, %s, %s, %s, %s", enable,
1879*d83cc019SAndroid Build Coastguard Worker port, mode, bpc, vsync, hsync, edp_input, width);
1880*d83cc019SAndroid Build Coastguard Worker }
1881*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_wm_pipe)1882*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_wm_pipe)
1883*d83cc019SAndroid Build Coastguard Worker {
1884*d83cc019SAndroid Build Coastguard Worker uint32_t primary, sprite, cursor;
1885*d83cc019SAndroid Build Coastguard Worker
1886*d83cc019SAndroid Build Coastguard Worker primary = (val >> 16) & 0x7F;
1887*d83cc019SAndroid Build Coastguard Worker sprite = (val >> 8) & 0x7F;
1888*d83cc019SAndroid Build Coastguard Worker cursor = val & 0x3F;
1889*d83cc019SAndroid Build Coastguard Worker
1890*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "primary %d, sprite %d, pipe %d", primary,
1891*d83cc019SAndroid Build Coastguard Worker sprite, cursor);
1892*d83cc019SAndroid Build Coastguard Worker }
1893*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_lp_wm)1894*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_lp_wm)
1895*d83cc019SAndroid Build Coastguard Worker {
1896*d83cc019SAndroid Build Coastguard Worker const char *enable;
1897*d83cc019SAndroid Build Coastguard Worker uint32_t latency, fbc, pri, cur;
1898*d83cc019SAndroid Build Coastguard Worker
1899*d83cc019SAndroid Build Coastguard Worker enable = ((val >> 31) & 1) ? "enabled" : "disabled";
1900*d83cc019SAndroid Build Coastguard Worker latency = (val >> 24) & 0x7F;
1901*d83cc019SAndroid Build Coastguard Worker fbc = (val >> 20) & 0xF;
1902*d83cc019SAndroid Build Coastguard Worker pri = (val >> 8) & 0x3FF;
1903*d83cc019SAndroid Build Coastguard Worker cur = val & 0xFF;
1904*d83cc019SAndroid Build Coastguard Worker
1905*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s, latency %d, fbc %d, pri %d, cur %d",
1906*d83cc019SAndroid Build Coastguard Worker enable, latency, fbc, pri, cur);
1907*d83cc019SAndroid Build Coastguard Worker }
1908*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_sinterrupt)1909*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_sinterrupt)
1910*d83cc019SAndroid Build Coastguard Worker {
1911*d83cc019SAndroid Build Coastguard Worker int portd, portc, portb, crt;
1912*d83cc019SAndroid Build Coastguard Worker
1913*d83cc019SAndroid Build Coastguard Worker portd = (val >> 23) & 1;
1914*d83cc019SAndroid Build Coastguard Worker portc = (val >> 22) & 1;
1915*d83cc019SAndroid Build Coastguard Worker portb = (val >> 21) & 1;
1916*d83cc019SAndroid Build Coastguard Worker crt = (val >> 19) & 1;
1917*d83cc019SAndroid Build Coastguard Worker
1918*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "port d:%d, port c:%d, port b:%d, crt:%d",
1919*d83cc019SAndroid Build Coastguard Worker portd, portc, portb, crt);
1920*d83cc019SAndroid Build Coastguard Worker }
1921*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ilk_debug_blc_pwm_cpu_ctl2)1922*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ilk_debug_blc_pwm_cpu_ctl2)
1923*d83cc019SAndroid Build Coastguard Worker {
1924*d83cc019SAndroid Build Coastguard Worker int enable, blinking, granularity;
1925*d83cc019SAndroid Build Coastguard Worker const char *pipe;
1926*d83cc019SAndroid Build Coastguard Worker
1927*d83cc019SAndroid Build Coastguard Worker enable = (val >> 31) & 1;
1928*d83cc019SAndroid Build Coastguard Worker
1929*d83cc019SAndroid Build Coastguard Worker if (IS_GEN5(devid) || IS_GEN6(devid)) {
1930*d83cc019SAndroid Build Coastguard Worker pipe = ((val >> 29) & 1) ? "B" : "A";
1931*d83cc019SAndroid Build Coastguard Worker } else {
1932*d83cc019SAndroid Build Coastguard Worker switch ((val >> 29) & 3) {
1933*d83cc019SAndroid Build Coastguard Worker case 0:
1934*d83cc019SAndroid Build Coastguard Worker pipe = "A";
1935*d83cc019SAndroid Build Coastguard Worker break;
1936*d83cc019SAndroid Build Coastguard Worker case 1:
1937*d83cc019SAndroid Build Coastguard Worker pipe = "B";
1938*d83cc019SAndroid Build Coastguard Worker break;
1939*d83cc019SAndroid Build Coastguard Worker case 2:
1940*d83cc019SAndroid Build Coastguard Worker pipe = "C";
1941*d83cc019SAndroid Build Coastguard Worker break;
1942*d83cc019SAndroid Build Coastguard Worker case 3:
1943*d83cc019SAndroid Build Coastguard Worker if (IS_IVYBRIDGE(devid))
1944*d83cc019SAndroid Build Coastguard Worker pipe = "reserved";
1945*d83cc019SAndroid Build Coastguard Worker else
1946*d83cc019SAndroid Build Coastguard Worker pipe = "EDP";
1947*d83cc019SAndroid Build Coastguard Worker break;
1948*d83cc019SAndroid Build Coastguard Worker }
1949*d83cc019SAndroid Build Coastguard Worker }
1950*d83cc019SAndroid Build Coastguard Worker
1951*d83cc019SAndroid Build Coastguard Worker if (IS_GEN5(devid) || IS_GEN6(devid) || IS_IVYBRIDGE(devid)) {
1952*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "enable %d, pipe %s", enable, pipe);
1953*d83cc019SAndroid Build Coastguard Worker } else {
1954*d83cc019SAndroid Build Coastguard Worker blinking = (val >> 28) & 1;
1955*d83cc019SAndroid Build Coastguard Worker granularity = ((val >> 27) & 1) ? 8 : 128;
1956*d83cc019SAndroid Build Coastguard Worker
1957*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "enable %d, pipe %s, blinking %d, "
1958*d83cc019SAndroid Build Coastguard Worker "granularity %d", enable, pipe, blinking,
1959*d83cc019SAndroid Build Coastguard Worker granularity);
1960*d83cc019SAndroid Build Coastguard Worker }
1961*d83cc019SAndroid Build Coastguard Worker }
1962*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ilk_debug_blc_pwm_cpu_ctl)1963*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ilk_debug_blc_pwm_cpu_ctl)
1964*d83cc019SAndroid Build Coastguard Worker {
1965*d83cc019SAndroid Build Coastguard Worker int cycle, freq;
1966*d83cc019SAndroid Build Coastguard Worker
1967*d83cc019SAndroid Build Coastguard Worker cycle = (val & 0xFFFF);
1968*d83cc019SAndroid Build Coastguard Worker
1969*d83cc019SAndroid Build Coastguard Worker if (IS_GEN5(devid) || IS_GEN6(devid) || IS_IVYBRIDGE(devid)) {
1970*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "cycle %d", cycle);
1971*d83cc019SAndroid Build Coastguard Worker } else {
1972*d83cc019SAndroid Build Coastguard Worker freq = (val >> 16) & 0xFFFF;
1973*d83cc019SAndroid Build Coastguard Worker
1974*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "cycle %d, freq %d", cycle, freq);
1975*d83cc019SAndroid Build Coastguard Worker }
1976*d83cc019SAndroid Build Coastguard Worker }
1977*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ibx_debug_blc_pwm_ctl1)1978*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ibx_debug_blc_pwm_ctl1)
1979*d83cc019SAndroid Build Coastguard Worker {
1980*d83cc019SAndroid Build Coastguard Worker int enable, override, inverted_polarity;
1981*d83cc019SAndroid Build Coastguard Worker
1982*d83cc019SAndroid Build Coastguard Worker enable = (val >> 31) & 1;
1983*d83cc019SAndroid Build Coastguard Worker override = (val >> 30) & 1;
1984*d83cc019SAndroid Build Coastguard Worker inverted_polarity = (val >> 29) & 1;
1985*d83cc019SAndroid Build Coastguard Worker
1986*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "enable %d, override %d, inverted polarity %d",
1987*d83cc019SAndroid Build Coastguard Worker enable, override, inverted_polarity);
1988*d83cc019SAndroid Build Coastguard Worker }
1989*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(ibx_debug_blc_pwm_ctl2)1990*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(ibx_debug_blc_pwm_ctl2)
1991*d83cc019SAndroid Build Coastguard Worker {
1992*d83cc019SAndroid Build Coastguard Worker int freq, cycle;
1993*d83cc019SAndroid Build Coastguard Worker
1994*d83cc019SAndroid Build Coastguard Worker freq = (val >> 16) & 0xFFFF;
1995*d83cc019SAndroid Build Coastguard Worker cycle = val & 0xFFFF;
1996*d83cc019SAndroid Build Coastguard Worker
1997*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "freq %d, cycle %d", freq, cycle);
1998*d83cc019SAndroid Build Coastguard Worker }
1999*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_blc_misc_ctl)2000*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_blc_misc_ctl)
2001*d83cc019SAndroid Build Coastguard Worker {
2002*d83cc019SAndroid Build Coastguard Worker const char *sel;
2003*d83cc019SAndroid Build Coastguard Worker
2004*d83cc019SAndroid Build Coastguard Worker sel = (val & 1) ? "PWM1-CPU PWM2-PCH" : "PWM1-PCH PWM2-CPU";
2005*d83cc019SAndroid Build Coastguard Worker
2006*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s", sel);
2007*d83cc019SAndroid Build Coastguard Worker }
2008*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(hsw_debug_util_pin_ctl)2009*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(hsw_debug_util_pin_ctl)
2010*d83cc019SAndroid Build Coastguard Worker {
2011*d83cc019SAndroid Build Coastguard Worker int enable, data, inverted_polarity;
2012*d83cc019SAndroid Build Coastguard Worker const char *transcoder, *mode;
2013*d83cc019SAndroid Build Coastguard Worker
2014*d83cc019SAndroid Build Coastguard Worker enable = (val >> 31) & 1;
2015*d83cc019SAndroid Build Coastguard Worker
2016*d83cc019SAndroid Build Coastguard Worker switch ((val >> 29) & 3) {
2017*d83cc019SAndroid Build Coastguard Worker case 0:
2018*d83cc019SAndroid Build Coastguard Worker transcoder = "A";
2019*d83cc019SAndroid Build Coastguard Worker break;
2020*d83cc019SAndroid Build Coastguard Worker case 1:
2021*d83cc019SAndroid Build Coastguard Worker transcoder = "B";
2022*d83cc019SAndroid Build Coastguard Worker break;
2023*d83cc019SAndroid Build Coastguard Worker case 2:
2024*d83cc019SAndroid Build Coastguard Worker transcoder = "C";
2025*d83cc019SAndroid Build Coastguard Worker break;
2026*d83cc019SAndroid Build Coastguard Worker case 3:
2027*d83cc019SAndroid Build Coastguard Worker transcoder = "EDP";
2028*d83cc019SAndroid Build Coastguard Worker break;
2029*d83cc019SAndroid Build Coastguard Worker }
2030*d83cc019SAndroid Build Coastguard Worker
2031*d83cc019SAndroid Build Coastguard Worker switch ((val >> 24) & 0xF) {
2032*d83cc019SAndroid Build Coastguard Worker case 0:
2033*d83cc019SAndroid Build Coastguard Worker mode = "data";
2034*d83cc019SAndroid Build Coastguard Worker break;
2035*d83cc019SAndroid Build Coastguard Worker case 1:
2036*d83cc019SAndroid Build Coastguard Worker mode = "PWM";
2037*d83cc019SAndroid Build Coastguard Worker break;
2038*d83cc019SAndroid Build Coastguard Worker case 4:
2039*d83cc019SAndroid Build Coastguard Worker mode = "Vblank";
2040*d83cc019SAndroid Build Coastguard Worker break;
2041*d83cc019SAndroid Build Coastguard Worker case 5:
2042*d83cc019SAndroid Build Coastguard Worker mode = "Vsync";
2043*d83cc019SAndroid Build Coastguard Worker break;
2044*d83cc019SAndroid Build Coastguard Worker default:
2045*d83cc019SAndroid Build Coastguard Worker mode = "reserved";
2046*d83cc019SAndroid Build Coastguard Worker break;
2047*d83cc019SAndroid Build Coastguard Worker }
2048*d83cc019SAndroid Build Coastguard Worker
2049*d83cc019SAndroid Build Coastguard Worker data = (val >> 23) & 1;
2050*d83cc019SAndroid Build Coastguard Worker inverted_polarity = (val >> 22) & 1;
2051*d83cc019SAndroid Build Coastguard Worker
2052*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "enable %d, transcoder %s, mode %s, data %d "
2053*d83cc019SAndroid Build Coastguard Worker "inverted polarity %d", enable, transcoder, mode, data,
2054*d83cc019SAndroid Build Coastguard Worker inverted_polarity);
2055*d83cc019SAndroid Build Coastguard Worker }
2056*d83cc019SAndroid Build Coastguard Worker
2057*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug gen6_fences[] = {
2058*d83cc019SAndroid Build Coastguard Worker #define DEFINEFENCE_SNB(i) \
2059*d83cc019SAndroid Build Coastguard Worker { FENCE_REG_SANDYBRIDGE_0 + (i) * 8, "FENCE START "#i, NULL }, \
2060*d83cc019SAndroid Build Coastguard Worker { FENCE_REG_SANDYBRIDGE_0 + (i) * 8 + 4, "FENCE END "#i, NULL }
2061*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(0),
2062*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(1),
2063*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(2),
2064*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(3),
2065*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(4),
2066*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(5),
2067*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(6),
2068*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(7),
2069*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(8),
2070*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(9),
2071*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(10),
2072*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(11),
2073*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(12),
2074*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(13),
2075*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(14),
2076*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(15),
2077*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(16),
2078*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(17),
2079*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(18),
2080*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(19),
2081*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(20),
2082*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(20),
2083*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(21),
2084*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(22),
2085*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(23),
2086*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(24),
2087*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(25),
2088*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(26),
2089*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(27),
2090*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(28),
2091*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(29),
2092*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(30),
2093*d83cc019SAndroid Build Coastguard Worker DEFINEFENCE_SNB(31),
2094*d83cc019SAndroid Build Coastguard Worker };
2095*d83cc019SAndroid Build Coastguard Worker
2096*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug ironlake_debug_regs[] = {
2097*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PGETBL_CTL),
2098*d83cc019SAndroid Build Coastguard Worker DEFINEREG(INSTDONE_I965),
2099*d83cc019SAndroid Build Coastguard Worker DEFINEREG(INSTDONE_1),
2100*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(CPU_VGACNTRL, i830_debug_vgacntrl),
2101*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DIGITAL_PORT_HOTPLUG_CNTRL),
2102*d83cc019SAndroid Build Coastguard Worker
2103*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(RR_HW_CTL, ironlake_debug_rr_hw_ctl),
2104*d83cc019SAndroid Build Coastguard Worker
2105*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_BIOS_0),
2106*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_BIOS_1),
2107*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_BIOS_2),
2108*d83cc019SAndroid Build Coastguard Worker
2109*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DISPLAY_PORT_PLL_BIOS_0),
2110*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DISPLAY_PORT_PLL_BIOS_1),
2111*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DISPLAY_PORT_PLL_BIOS_2),
2112*d83cc019SAndroid Build Coastguard Worker
2113*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_FREQ_CTL),
2114*d83cc019SAndroid Build Coastguard Worker
2115*d83cc019SAndroid Build Coastguard Worker /* pipe B */
2116*d83cc019SAndroid Build Coastguard Worker
2117*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEACONF, i830_debug_pipeconf),
2118*d83cc019SAndroid Build Coastguard Worker
2119*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_A, i830_debug_hvtotal),
2120*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_A, i830_debug_hvsyncblank),
2121*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_A, i830_debug_hvsyncblank),
2122*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_A, i830_debug_hvtotal),
2123*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_A, i830_debug_hvsyncblank),
2124*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_A, i830_debug_hvsyncblank),
2125*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_A),
2126*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEASRC, i830_debug_yxminus1),
2127*d83cc019SAndroid Build Coastguard Worker
2128*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_M1, ironlake_debug_m_tu),
2129*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_N1, ironlake_debug_n),
2130*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_M2, ironlake_debug_m_tu),
2131*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_N2, ironlake_debug_n),
2132*d83cc019SAndroid Build Coastguard Worker
2133*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_M1, ironlake_debug_n),
2134*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_N1, ironlake_debug_n),
2135*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_M2, ironlake_debug_n),
2136*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_N2, ironlake_debug_n),
2137*d83cc019SAndroid Build Coastguard Worker
2138*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPACNTR, i830_debug_dspcntr),
2139*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPABASE),
2140*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPASTRIDE, ironlake_debug_dspstride),
2141*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPASURF),
2142*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPATILEOFF, i830_debug_xy),
2143*d83cc019SAndroid Build Coastguard Worker
2144*d83cc019SAndroid Build Coastguard Worker /* pipe B */
2145*d83cc019SAndroid Build Coastguard Worker
2146*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBCONF, i830_debug_pipeconf),
2147*d83cc019SAndroid Build Coastguard Worker
2148*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_B, i830_debug_hvtotal),
2149*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_B, i830_debug_hvsyncblank),
2150*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_B, i830_debug_hvsyncblank),
2151*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_B, i830_debug_hvtotal),
2152*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_B, i830_debug_hvsyncblank),
2153*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_B, i830_debug_hvsyncblank),
2154*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_B),
2155*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBSRC, i830_debug_yxminus1),
2156*d83cc019SAndroid Build Coastguard Worker
2157*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_M1, ironlake_debug_m_tu),
2158*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_N1, ironlake_debug_n),
2159*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_M2, ironlake_debug_m_tu),
2160*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_N2, ironlake_debug_n),
2161*d83cc019SAndroid Build Coastguard Worker
2162*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_M1, ironlake_debug_n),
2163*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_N1, ironlake_debug_n),
2164*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_M2, ironlake_debug_n),
2165*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_N2, ironlake_debug_n),
2166*d83cc019SAndroid Build Coastguard Worker
2167*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBCNTR, i830_debug_dspcntr),
2168*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBBASE),
2169*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBSTRIDE, ironlake_debug_dspstride),
2170*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBSURF),
2171*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBTILEOFF, i830_debug_xy),
2172*d83cc019SAndroid Build Coastguard Worker
2173*d83cc019SAndroid Build Coastguard Worker /* pipe C */
2174*d83cc019SAndroid Build Coastguard Worker
2175*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPECCONF, i830_debug_pipeconf),
2176*d83cc019SAndroid Build Coastguard Worker
2177*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_C, i830_debug_hvtotal),
2178*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_C, i830_debug_hvsyncblank),
2179*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_C, i830_debug_hvsyncblank),
2180*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_C, i830_debug_hvtotal),
2181*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_C, i830_debug_hvsyncblank),
2182*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_C, i830_debug_hvsyncblank),
2183*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_C),
2184*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPECSRC, i830_debug_yxminus1),
2185*d83cc019SAndroid Build Coastguard Worker
2186*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_M1, ironlake_debug_m_tu),
2187*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_N1, ironlake_debug_n),
2188*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_M2, ironlake_debug_m_tu),
2189*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_N2, ironlake_debug_n),
2190*d83cc019SAndroid Build Coastguard Worker
2191*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_M1, ironlake_debug_n),
2192*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_N1, ironlake_debug_n),
2193*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_M2, ironlake_debug_n),
2194*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_N2, ironlake_debug_n),
2195*d83cc019SAndroid Build Coastguard Worker
2196*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCCNTR, i830_debug_dspcntr),
2197*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPCBASE),
2198*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCSTRIDE, ironlake_debug_dspstride),
2199*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPCSURF),
2200*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCTILEOFF, i830_debug_xy),
2201*d83cc019SAndroid Build Coastguard Worker
2202*d83cc019SAndroid Build Coastguard Worker /* Panel fitter */
2203*d83cc019SAndroid Build Coastguard Worker
2204*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_CTL_1, ironlake_debug_panel_fitting),
2205*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_CTL_2, ironlake_debug_panel_fitting_2),
2206*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_CTL_3, ironlake_debug_panel_fitting_3),
2207*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_CTL_4, ironlake_debug_panel_fitting_4),
2208*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_WIN_POS, ironlake_debug_pf_win),
2209*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_WIN_SIZE, ironlake_debug_pf_win),
2210*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_CTL_1, ironlake_debug_panel_fitting),
2211*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_CTL_2, ironlake_debug_panel_fitting_2),
2212*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_CTL_3, ironlake_debug_panel_fitting_3),
2213*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_CTL_4, ironlake_debug_panel_fitting_4),
2214*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_WIN_POS, ironlake_debug_pf_win),
2215*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_WIN_SIZE, ironlake_debug_pf_win),
2216*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_CTL_1, ironlake_debug_panel_fitting),
2217*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_CTL_2, ironlake_debug_panel_fitting_2),
2218*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_CTL_3, ironlake_debug_panel_fitting_3),
2219*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_CTL_4, ironlake_debug_panel_fitting_4),
2220*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_WIN_POS, ironlake_debug_pf_win),
2221*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_WIN_SIZE, ironlake_debug_pf_win),
2222*d83cc019SAndroid Build Coastguard Worker
2223*d83cc019SAndroid Build Coastguard Worker /* PCH */
2224*d83cc019SAndroid Build Coastguard Worker
2225*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_DREF_CONTROL, ironlake_debug_dref_ctl),
2226*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_RAWCLK_FREQ, ironlake_debug_rawclk_freq),
2227*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DPLL_TMR_CFG),
2228*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_SSC4_PARMS),
2229*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_SSC4_AUX_PARMS),
2230*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_DPLL_SEL, snb_debug_dpll_sel),
2231*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DPLL_ANALOG_CTL),
2232*d83cc019SAndroid Build Coastguard Worker
2233*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_DPLL_A, ironlake_debug_pch_dpll),
2234*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_DPLL_B, ironlake_debug_pch_dpll),
2235*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_FPA0, i830_debug_fp),
2236*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_FPA1, i830_debug_fp),
2237*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_FPB0, i830_debug_fp),
2238*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_FPB1, i830_debug_fp),
2239*d83cc019SAndroid Build Coastguard Worker
2240*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HTOTAL_A, i830_debug_hvtotal),
2241*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HBLANK_A, i830_debug_hvsyncblank),
2242*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HSYNC_A, i830_debug_hvsyncblank),
2243*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VTOTAL_A, i830_debug_hvtotal),
2244*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VBLANK_A, i830_debug_hvsyncblank),
2245*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VSYNC_A, i830_debug_hvsyncblank),
2246*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TRANS_VSYNCSHIFT_A),
2247*d83cc019SAndroid Build Coastguard Worker
2248*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DATA_M1, ironlake_debug_m_tu),
2249*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DATA_N1, ironlake_debug_n),
2250*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DATA_M2, ironlake_debug_m_tu),
2251*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DATA_N2, ironlake_debug_n),
2252*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DP_LINK_M1, ironlake_debug_n),
2253*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DP_LINK_N1, ironlake_debug_n),
2254*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DP_LINK_M2, ironlake_debug_n),
2255*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSA_DP_LINK_N2, ironlake_debug_n),
2256*d83cc019SAndroid Build Coastguard Worker
2257*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HTOTAL_B, i830_debug_hvtotal),
2258*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HBLANK_B, i830_debug_hvsyncblank),
2259*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HSYNC_B, i830_debug_hvsyncblank),
2260*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VTOTAL_B, i830_debug_hvtotal),
2261*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VBLANK_B, i830_debug_hvsyncblank),
2262*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VSYNC_B, i830_debug_hvsyncblank),
2263*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TRANS_VSYNCSHIFT_B),
2264*d83cc019SAndroid Build Coastguard Worker
2265*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DATA_M1, ironlake_debug_m_tu),
2266*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DATA_N1, ironlake_debug_n),
2267*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DATA_M2, ironlake_debug_m_tu),
2268*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DATA_N2, ironlake_debug_n),
2269*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DP_LINK_M1, ironlake_debug_n),
2270*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DP_LINK_N1, ironlake_debug_n),
2271*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DP_LINK_M2, ironlake_debug_n),
2272*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSB_DP_LINK_N2, ironlake_debug_n),
2273*d83cc019SAndroid Build Coastguard Worker
2274*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HTOTAL_C, i830_debug_hvtotal),
2275*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HBLANK_C, i830_debug_hvsyncblank),
2276*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HSYNC_C, i830_debug_hvsyncblank),
2277*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VTOTAL_C, i830_debug_hvtotal),
2278*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VBLANK_C, i830_debug_hvsyncblank),
2279*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VSYNC_C, i830_debug_hvsyncblank),
2280*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TRANS_VSYNCSHIFT_C),
2281*d83cc019SAndroid Build Coastguard Worker
2282*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DATA_M1, ironlake_debug_m_tu),
2283*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DATA_N1, ironlake_debug_n),
2284*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DATA_M2, ironlake_debug_m_tu),
2285*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DATA_N2, ironlake_debug_n),
2286*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DP_LINK_M1, ironlake_debug_n),
2287*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DP_LINK_N1, ironlake_debug_n),
2288*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DP_LINK_M2, ironlake_debug_n),
2289*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSC_DP_LINK_N2, ironlake_debug_n),
2290*d83cc019SAndroid Build Coastguard Worker
2291*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSACONF, ironlake_debug_transconf),
2292*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSBCONF, ironlake_debug_transconf),
2293*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSCCONF, ironlake_debug_transconf),
2294*d83cc019SAndroid Build Coastguard Worker
2295*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_TXA_CTL, ironlake_debug_fdi_tx_ctl),
2296*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_TXB_CTL, ironlake_debug_fdi_tx_ctl),
2297*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_TXC_CTL, ironlake_debug_fdi_tx_ctl),
2298*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXA_CTL, ironlake_debug_fdi_rx_ctl),
2299*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXB_CTL, ironlake_debug_fdi_rx_ctl),
2300*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXC_CTL, ironlake_debug_fdi_rx_ctl),
2301*d83cc019SAndroid Build Coastguard Worker
2302*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPAFE_BMFUNC),
2303*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPAFE_DL_IREFCAL0),
2304*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPAFE_DL_IREFCAL1),
2305*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DPAFE_DP_IREFCAL),
2306*d83cc019SAndroid Build Coastguard Worker
2307*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DSPCLK_GATE_D),
2308*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DSP_CHICKEN1),
2309*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DSP_CHICKEN2),
2310*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DSP_CHICKEN3),
2311*d83cc019SAndroid Build Coastguard Worker
2312*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXA_MISC, ironlake_debug_fdi_rx_misc),
2313*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXB_MISC, ironlake_debug_fdi_rx_misc),
2314*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXC_MISC, ironlake_debug_fdi_rx_misc),
2315*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_TUSIZE1),
2316*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_TUSIZE2),
2317*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXB_TUSIZE1),
2318*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXB_TUSIZE2),
2319*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXC_TUSIZE1),
2320*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXC_TUSIZE2),
2321*d83cc019SAndroid Build Coastguard Worker
2322*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_CTL_1),
2323*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_PLL_CTL_2),
2324*d83cc019SAndroid Build Coastguard Worker
2325*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_IIR),
2326*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_IMR),
2327*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXB_IIR),
2328*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXB_IMR),
2329*d83cc019SAndroid Build Coastguard Worker
2330*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_ADPA, i830_debug_adpa),
2331*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HDMIB, ironlake_debug_hdmi),
2332*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HDMIC, ironlake_debug_hdmi),
2333*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HDMID, ironlake_debug_hdmi),
2334*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_LVDS, i830_debug_lvds),
2335*d83cc019SAndroid Build Coastguard Worker DEFINEREG(CPU_eDP_A),
2336*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DP_B),
2337*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DP_C),
2338*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_DP_D),
2339*d83cc019SAndroid Build Coastguard Worker
2340*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(0), ironlake_debug_dp_buftrans),
2341*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(1), ironlake_debug_dp_buftrans),
2342*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(2), ironlake_debug_dp_buftrans),
2343*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(3), ironlake_debug_dp_buftrans),
2344*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(4), ironlake_debug_dp_buftrans),
2345*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(5), ironlake_debug_dp_buftrans),
2346*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(6), ironlake_debug_dp_buftrans),
2347*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(7), ironlake_debug_dp_buftrans),
2348*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(8), ironlake_debug_dp_buftrans),
2349*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DP_BUFTRANS(9), ironlake_debug_dp_buftrans),
2350*d83cc019SAndroid Build Coastguard Worker
2351*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_DP_CTL_A, snb_debug_trans_dp_ctl),
2352*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_DP_CTL_B, snb_debug_trans_dp_ctl),
2353*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_DP_CTL_C, snb_debug_trans_dp_ctl),
2354*d83cc019SAndroid Build Coastguard Worker
2355*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_CPU_CTL2, ilk_debug_blc_pwm_cpu_ctl2),
2356*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_CPU_CTL, ilk_debug_blc_pwm_cpu_ctl),
2357*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_PCH_CTL1, ibx_debug_blc_pwm_ctl1),
2358*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_PCH_CTL2, ibx_debug_blc_pwm_ctl2),
2359*d83cc019SAndroid Build Coastguard Worker
2360*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_PP_STATUS, i830_debug_pp_status),
2361*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_PP_CONTROL, ilk_debug_pp_control),
2362*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_ON_DELAYS),
2363*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_OFF_DELAYS),
2364*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_DIVISOR),
2365*d83cc019SAndroid Build Coastguard Worker
2366*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_DBG, ivb_debug_port),
2367*d83cc019SAndroid Build Coastguard Worker
2368*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RC6_RESIDENCY_TIME),
2369*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RC6p_RESIDENCY_TIME),
2370*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RC6pp_RESIDENCY_TIME),
2371*d83cc019SAndroid Build Coastguard Worker };
2372*d83cc019SAndroid Build Coastguard Worker
2373*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug haswell_debug_regs[] = {
2374*d83cc019SAndroid Build Coastguard Worker /* Power wells */
2375*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL1),
2376*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL2),
2377*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL3),
2378*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL4),
2379*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL5),
2380*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HSW_PWR_WELL_CTL6),
2381*d83cc019SAndroid Build Coastguard Worker
2382*d83cc019SAndroid Build Coastguard Worker /* DDI pipe function */
2383*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_DDI_FUNC_CTL_A, hsw_debug_pipe_ddi_func_ctl),
2384*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_DDI_FUNC_CTL_B, hsw_debug_pipe_ddi_func_ctl),
2385*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_DDI_FUNC_CTL_C, hsw_debug_pipe_ddi_func_ctl),
2386*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_DDI_FUNC_CTL_EDP, hsw_debug_pipe_ddi_func_ctl),
2387*d83cc019SAndroid Build Coastguard Worker
2388*d83cc019SAndroid Build Coastguard Worker /* DP transport control */
2389*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_CTL_A),
2390*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_CTL_B),
2391*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_CTL_C),
2392*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_CTL_D),
2393*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_CTL_E),
2394*d83cc019SAndroid Build Coastguard Worker
2395*d83cc019SAndroid Build Coastguard Worker /* DP status */
2396*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_STATUS_B),
2397*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_STATUS_C),
2398*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_STATUS_D),
2399*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DP_TP_STATUS_E),
2400*d83cc019SAndroid Build Coastguard Worker
2401*d83cc019SAndroid Build Coastguard Worker /* DDI buffer control */
2402*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DDI_BUF_CTL_A, hsw_debug_ddi_buf_ctl),
2403*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DDI_BUF_CTL_B, hsw_debug_ddi_buf_ctl),
2404*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DDI_BUF_CTL_C, hsw_debug_ddi_buf_ctl),
2405*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DDI_BUF_CTL_D, hsw_debug_ddi_buf_ctl),
2406*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DDI_BUF_CTL_E, hsw_debug_ddi_buf_ctl),
2407*d83cc019SAndroid Build Coastguard Worker
2408*d83cc019SAndroid Build Coastguard Worker /* Clocks */
2409*d83cc019SAndroid Build Coastguard Worker DEFINEREG(SPLL_CTL),
2410*d83cc019SAndroid Build Coastguard Worker DEFINEREG(LCPLL_CTL),
2411*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WRPLL_CTL1),
2412*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WRPLL_CTL2),
2413*d83cc019SAndroid Build Coastguard Worker
2414*d83cc019SAndroid Build Coastguard Worker /* DDI port clock control */
2415*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_CLK_SEL_A, hsw_debug_port_clk_sel),
2416*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_CLK_SEL_B, hsw_debug_port_clk_sel),
2417*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_CLK_SEL_C, hsw_debug_port_clk_sel),
2418*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_CLK_SEL_D, hsw_debug_port_clk_sel),
2419*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PORT_CLK_SEL_E, hsw_debug_port_clk_sel),
2420*d83cc019SAndroid Build Coastguard Worker
2421*d83cc019SAndroid Build Coastguard Worker /* Pipe clock control */
2422*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_CLK_SEL_A, hsw_debug_pipe_clk_sel),
2423*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_CLK_SEL_B, hsw_debug_pipe_clk_sel),
2424*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPE_CLK_SEL_C, hsw_debug_pipe_clk_sel),
2425*d83cc019SAndroid Build Coastguard Worker
2426*d83cc019SAndroid Build Coastguard Worker /* Watermarks */
2427*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_PIPE_A, hsw_debug_wm_pipe),
2428*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_PIPE_B, hsw_debug_wm_pipe),
2429*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_PIPE_C, hsw_debug_wm_pipe),
2430*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_LP1, hsw_debug_lp_wm),
2431*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_LP2, hsw_debug_lp_wm),
2432*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(WM_LP3, hsw_debug_lp_wm),
2433*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_LP1_SPR),
2434*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_LP2_SPR),
2435*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_LP3_SPR),
2436*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_MISC),
2437*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_SR_CNT),
2438*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPE_WM_LINETIME_A),
2439*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPE_WM_LINETIME_B),
2440*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIPE_WM_LINETIME_C),
2441*d83cc019SAndroid Build Coastguard Worker DEFINEREG(WM_DBG),
2442*d83cc019SAndroid Build Coastguard Worker
2443*d83cc019SAndroid Build Coastguard Worker /* Fuses */
2444*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(SFUSE_STRAP, hsw_debug_sfuse_strap),
2445*d83cc019SAndroid Build Coastguard Worker
2446*d83cc019SAndroid Build Coastguard Worker /* Pipe A */
2447*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEASRC, i830_debug_yxminus1),
2448*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPACNTR, i830_debug_dspcntr),
2449*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPASTRIDE, ironlake_debug_dspstride),
2450*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPASURF),
2451*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPATILEOFF, i830_debug_xy),
2452*d83cc019SAndroid Build Coastguard Worker
2453*d83cc019SAndroid Build Coastguard Worker /* Pipe B */
2454*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBSRC, i830_debug_yxminus1),
2455*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBCNTR, i830_debug_dspcntr),
2456*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBSTRIDE, ironlake_debug_dspstride),
2457*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPBSURF),
2458*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPBTILEOFF, i830_debug_xy),
2459*d83cc019SAndroid Build Coastguard Worker
2460*d83cc019SAndroid Build Coastguard Worker /* Pipe C */
2461*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPECSRC, i830_debug_yxminus1),
2462*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCCNTR, i830_debug_dspcntr),
2463*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCSTRIDE, ironlake_debug_dspstride),
2464*d83cc019SAndroid Build Coastguard Worker DEFINEREG(DSPCSURF),
2465*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(DSPCTILEOFF, i830_debug_xy),
2466*d83cc019SAndroid Build Coastguard Worker
2467*d83cc019SAndroid Build Coastguard Worker /* Transcoder A */
2468*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEACONF, i830_debug_pipeconf),
2469*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_A, i830_debug_hvtotal),
2470*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_A, i830_debug_hvsyncblank),
2471*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_A, i830_debug_hvsyncblank),
2472*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_A, i830_debug_hvtotal),
2473*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_A, i830_debug_hvsyncblank),
2474*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_A, i830_debug_hvsyncblank),
2475*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_A),
2476*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_M1, ironlake_debug_m_tu),
2477*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_DATA_N1, ironlake_debug_n),
2478*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_M1, ironlake_debug_n),
2479*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEA_LINK_N1, ironlake_debug_n),
2480*d83cc019SAndroid Build Coastguard Worker
2481*d83cc019SAndroid Build Coastguard Worker /* Transcoder B */
2482*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEBCONF, i830_debug_pipeconf),
2483*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_B, i830_debug_hvtotal),
2484*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_B, i830_debug_hvsyncblank),
2485*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_B, i830_debug_hvsyncblank),
2486*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_B, i830_debug_hvtotal),
2487*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_B, i830_debug_hvsyncblank),
2488*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_B, i830_debug_hvsyncblank),
2489*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_B),
2490*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_M1, ironlake_debug_m_tu),
2491*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_DATA_N1, ironlake_debug_n),
2492*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_M1, ironlake_debug_n),
2493*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEB_LINK_N1, ironlake_debug_n),
2494*d83cc019SAndroid Build Coastguard Worker
2495*d83cc019SAndroid Build Coastguard Worker /* Transcoder C */
2496*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPECCONF, i830_debug_pipeconf),
2497*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_C, i830_debug_hvtotal),
2498*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_C, i830_debug_hvsyncblank),
2499*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_C, i830_debug_hvsyncblank),
2500*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_C, i830_debug_hvtotal),
2501*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_C, i830_debug_hvsyncblank),
2502*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_C, i830_debug_hvsyncblank),
2503*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_C),
2504*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_M1, ironlake_debug_m_tu),
2505*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_DATA_N1, ironlake_debug_n),
2506*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_M1, ironlake_debug_n),
2507*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEC_LINK_N1, ironlake_debug_n),
2508*d83cc019SAndroid Build Coastguard Worker
2509*d83cc019SAndroid Build Coastguard Worker /* Transcoder EDP */
2510*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEEDPCONF, i830_debug_pipeconf),
2511*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HTOTAL_EDP, i830_debug_hvtotal),
2512*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HBLANK_EDP, i830_debug_hvsyncblank),
2513*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(HSYNC_EDP, i830_debug_hvsyncblank),
2514*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VTOTAL_EDP, i830_debug_hvtotal),
2515*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VBLANK_EDP, i830_debug_hvsyncblank),
2516*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(VSYNC_EDP, i830_debug_hvsyncblank),
2517*d83cc019SAndroid Build Coastguard Worker DEFINEREG(VSYNCSHIFT_EDP),
2518*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEEDP_DATA_M1, ironlake_debug_m_tu),
2519*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEEDP_DATA_N1, ironlake_debug_n),
2520*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEEDP_LINK_M1, ironlake_debug_n),
2521*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PIPEEDP_LINK_N1, ironlake_debug_n),
2522*d83cc019SAndroid Build Coastguard Worker
2523*d83cc019SAndroid Build Coastguard Worker /* Panel fitter */
2524*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_CTL_1, ironlake_debug_panel_fitting),
2525*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_WIN_POS, ironlake_debug_pf_win),
2526*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFA_WIN_SIZE, ironlake_debug_pf_win),
2527*d83cc019SAndroid Build Coastguard Worker
2528*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_CTL_1, ironlake_debug_panel_fitting),
2529*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_WIN_POS, ironlake_debug_pf_win),
2530*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFB_WIN_SIZE, ironlake_debug_pf_win),
2531*d83cc019SAndroid Build Coastguard Worker
2532*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_CTL_1, ironlake_debug_panel_fitting),
2533*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_WIN_POS, ironlake_debug_pf_win),
2534*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PFC_WIN_SIZE, ironlake_debug_pf_win),
2535*d83cc019SAndroid Build Coastguard Worker
2536*d83cc019SAndroid Build Coastguard Worker /* LPT */
2537*d83cc019SAndroid Build Coastguard Worker
2538*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HTOTAL_A, i830_debug_hvtotal),
2539*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HBLANK_A, i830_debug_hvsyncblank),
2540*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_HSYNC_A, i830_debug_hvsyncblank),
2541*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VTOTAL_A, i830_debug_hvtotal),
2542*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VBLANK_A, i830_debug_hvsyncblank),
2543*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANS_VSYNC_A, i830_debug_hvsyncblank),
2544*d83cc019SAndroid Build Coastguard Worker DEFINEREG(TRANS_VSYNCSHIFT_A),
2545*d83cc019SAndroid Build Coastguard Worker
2546*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(TRANSACONF, ironlake_debug_transconf),
2547*d83cc019SAndroid Build Coastguard Worker
2548*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(FDI_RXA_MISC, ironlake_debug_fdi_rx_misc),
2549*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_TUSIZE1),
2550*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_IIR),
2551*d83cc019SAndroid Build Coastguard Worker DEFINEREG(FDI_RXA_IMR),
2552*d83cc019SAndroid Build Coastguard Worker
2553*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_CPU_CTL2, ilk_debug_blc_pwm_cpu_ctl2),
2554*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_CPU_CTL, ilk_debug_blc_pwm_cpu_ctl),
2555*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM2_CPU_CTL2, ilk_debug_blc_pwm_cpu_ctl2),
2556*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM2_CPU_CTL, ilk_debug_blc_pwm_cpu_ctl),
2557*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_MISC_CTL, hsw_debug_blc_misc_ctl),
2558*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_PCH_CTL1, ibx_debug_blc_pwm_ctl1),
2559*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(BLC_PWM_PCH_CTL2, ibx_debug_blc_pwm_ctl2),
2560*d83cc019SAndroid Build Coastguard Worker
2561*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(UTIL_PIN_CTL, hsw_debug_util_pin_ctl),
2562*d83cc019SAndroid Build Coastguard Worker
2563*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_PP_STATUS, i830_debug_pp_status),
2564*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(PCH_PP_CONTROL, ilk_debug_pp_control),
2565*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_ON_DELAYS),
2566*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_OFF_DELAYS),
2567*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PCH_PP_DIVISOR),
2568*d83cc019SAndroid Build Coastguard Worker
2569*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PIXCLK_GATE),
2570*d83cc019SAndroid Build Coastguard Worker
2571*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(SDEISR, hsw_debug_sinterrupt),
2572*d83cc019SAndroid Build Coastguard Worker
2573*d83cc019SAndroid Build Coastguard Worker DEFINEREG(RC6_RESIDENCY_TIME),
2574*d83cc019SAndroid Build Coastguard Worker };
2575*d83cc019SAndroid Build Coastguard Worker
2576*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug i945gm_mi_regs[] = {
2577*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PGETBL_CTL),
2578*d83cc019SAndroid Build Coastguard Worker DEFINEREG(PGTBL_ER),
2579*d83cc019SAndroid Build Coastguard Worker DEFINEREG(EXCC),
2580*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HWS_PGA),
2581*d83cc019SAndroid Build Coastguard Worker DEFINEREG(IPEIR),
2582*d83cc019SAndroid Build Coastguard Worker DEFINEREG(IPEHR),
2583*d83cc019SAndroid Build Coastguard Worker DEFINEREG(INSTDONE),
2584*d83cc019SAndroid Build Coastguard Worker DEFINEREG(NOP_ID),
2585*d83cc019SAndroid Build Coastguard Worker DEFINEREG(HWSTAM),
2586*d83cc019SAndroid Build Coastguard Worker DEFINEREG(SCPD0),
2587*d83cc019SAndroid Build Coastguard Worker DEFINEREG(IER),
2588*d83cc019SAndroid Build Coastguard Worker DEFINEREG(IIR),
2589*d83cc019SAndroid Build Coastguard Worker DEFINEREG(IMR),
2590*d83cc019SAndroid Build Coastguard Worker DEFINEREG(ISR),
2591*d83cc019SAndroid Build Coastguard Worker DEFINEREG(EIR),
2592*d83cc019SAndroid Build Coastguard Worker DEFINEREG(EMR),
2593*d83cc019SAndroid Build Coastguard Worker DEFINEREG(ESR),
2594*d83cc019SAndroid Build Coastguard Worker DEFINEREG(INST_PM),
2595*d83cc019SAndroid Build Coastguard Worker DEFINEREG(ECOSKPD),
2596*d83cc019SAndroid Build Coastguard Worker };
2597*d83cc019SAndroid Build Coastguard Worker
DEBUGSTRING(gen6_rp_control)2598*d83cc019SAndroid Build Coastguard Worker DEBUGSTRING(gen6_rp_control)
2599*d83cc019SAndroid Build Coastguard Worker {
2600*d83cc019SAndroid Build Coastguard Worker return z_snprintf(result, len, "%s",
2601*d83cc019SAndroid Build Coastguard Worker (val & (1 << 7)) ? "enabled" : "disabled");
2602*d83cc019SAndroid Build Coastguard Worker }
2603*d83cc019SAndroid Build Coastguard Worker
2604*d83cc019SAndroid Build Coastguard Worker static const struct reg_debug gen6_rp_debug_regs[] = {
2605*d83cc019SAndroid Build Coastguard Worker DEFINEREG2(GEN6_RP_CONTROL, gen6_rp_control),
2606*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RPNSWREQ),
2607*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_DOWN_TIMEOUT),
2608*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_INTERRUPT_LIMITS),
2609*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_UP_THRESHOLD),
2610*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_UP_EI),
2611*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_DOWN_EI),
2612*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RP_IDLE_HYSTERSIS),
2613*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_STATE),
2614*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_CONTROL),
2615*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC1_WAKE_RATE_LIMIT),
2616*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC6_WAKE_RATE_LIMIT),
2617*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_EVALUATION_INTERVAL),
2618*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_IDLE_HYSTERSIS),
2619*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_SLEEP),
2620*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC1e_THRESHOLD),
2621*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC6_THRESHOLD),
2622*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_RC_VIDEO_FREQ),
2623*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_PMIER),
2624*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_PMIMR),
2625*d83cc019SAndroid Build Coastguard Worker DEFINEREG(GEN6_PMINTRMSK),
2626*d83cc019SAndroid Build Coastguard Worker };
2627*d83cc019SAndroid Build Coastguard Worker
is_hsw_plus(uint32_t devid,uint32_t pch)2628*d83cc019SAndroid Build Coastguard Worker static bool is_hsw_plus(uint32_t devid, uint32_t pch)
2629*d83cc019SAndroid Build Coastguard Worker {
2630*d83cc019SAndroid Build Coastguard Worker return IS_HASWELL(devid) || intel_gen(devid) >= 8;
2631*d83cc019SAndroid Build Coastguard Worker }
2632*d83cc019SAndroid Build Coastguard Worker
is_gen6_plus(uint32_t devid,uint32_t pch)2633*d83cc019SAndroid Build Coastguard Worker static bool is_gen6_plus(uint32_t devid, uint32_t pch)
2634*d83cc019SAndroid Build Coastguard Worker {
2635*d83cc019SAndroid Build Coastguard Worker return intel_gen(devid) >= 6;
2636*d83cc019SAndroid Build Coastguard Worker }
2637*d83cc019SAndroid Build Coastguard Worker
is_gen56ivb(uint32_t devid,uint32_t pch)2638*d83cc019SAndroid Build Coastguard Worker static bool is_gen56ivb(uint32_t devid, uint32_t pch)
2639*d83cc019SAndroid Build Coastguard Worker {
2640*d83cc019SAndroid Build Coastguard Worker return IS_GEN5(devid) || IS_GEN6(devid) || IS_IVYBRIDGE(devid);
2641*d83cc019SAndroid Build Coastguard Worker }
2642*d83cc019SAndroid Build Coastguard Worker
is_gen45(uint32_t devid,uint32_t pch)2643*d83cc019SAndroid Build Coastguard Worker static bool is_gen45(uint32_t devid, uint32_t pch)
2644*d83cc019SAndroid Build Coastguard Worker {
2645*d83cc019SAndroid Build Coastguard Worker return IS_GEN4(devid) || IS_GEN5(devid);
2646*d83cc019SAndroid Build Coastguard Worker }
2647*d83cc019SAndroid Build Coastguard Worker
is_945gm(uint32_t devid,uint32_t pch)2648*d83cc019SAndroid Build Coastguard Worker static bool is_945gm(uint32_t devid, uint32_t pch)
2649*d83cc019SAndroid Build Coastguard Worker {
2650*d83cc019SAndroid Build Coastguard Worker return IS_945GM(devid);
2651*d83cc019SAndroid Build Coastguard Worker }
2652*d83cc019SAndroid Build Coastguard Worker
is_gen234(uint32_t devid,uint32_t pch)2653*d83cc019SAndroid Build Coastguard Worker static bool is_gen234(uint32_t devid, uint32_t pch)
2654*d83cc019SAndroid Build Coastguard Worker {
2655*d83cc019SAndroid Build Coastguard Worker return IS_GEN2(devid) || IS_GEN3(devid) || IS_GEN4(devid);
2656*d83cc019SAndroid Build Coastguard Worker }
2657*d83cc019SAndroid Build Coastguard Worker
2658*d83cc019SAndroid Build Coastguard Worker #define DECLARE_REGS(d,r,m) \
2659*d83cc019SAndroid Build Coastguard Worker { .description = d, .regs = r, .count = ARRAY_SIZE(r), .match = m }
2660*d83cc019SAndroid Build Coastguard Worker static struct {
2661*d83cc019SAndroid Build Coastguard Worker const char *description;
2662*d83cc019SAndroid Build Coastguard Worker const struct reg_debug *regs;
2663*d83cc019SAndroid Build Coastguard Worker bool (*match)(uint32_t devid, uint32_t pch);
2664*d83cc019SAndroid Build Coastguard Worker int count;
2665*d83cc019SAndroid Build Coastguard Worker } known_registers[] = {
2666*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen2", intel_debug_regs, is_gen234),
2667*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("i945GM", i945gm_mi_regs, is_945gm),
2668*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen4", i965_fences, is_gen45),
2669*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen5", ironlake_debug_regs, is_gen56ivb),
2670*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen6", gen6_rp_debug_regs, is_gen6_plus),
2671*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen6+", gen6_fences, is_gen6_plus),
2672*d83cc019SAndroid Build Coastguard Worker DECLARE_REGS("Gen7.5", haswell_debug_regs, is_hsw_plus),
2673*d83cc019SAndroid Build Coastguard Worker };
2674*d83cc019SAndroid Build Coastguard Worker #undef DECLARE_REGS
2675*d83cc019SAndroid Build Coastguard Worker
2676*d83cc019SAndroid Build Coastguard Worker /*
2677*d83cc019SAndroid Build Coastguard Worker * Decode register value into buffer for devid.
2678*d83cc019SAndroid Build Coastguard Worker *
2679*d83cc019SAndroid Build Coastguard Worker * If devid is 0, decode for all known platforms, with newline after each
2680*d83cc019SAndroid Build Coastguard Worker * decode.
2681*d83cc019SAndroid Build Coastguard Worker */
intel_reg_spec_decode(char * buf,size_t bufsize,const struct reg * reg,uint32_t val,uint32_t devid)2682*d83cc019SAndroid Build Coastguard Worker int intel_reg_spec_decode(char *buf, size_t bufsize, const struct reg *reg,
2683*d83cc019SAndroid Build Coastguard Worker uint32_t val, uint32_t devid)
2684*d83cc019SAndroid Build Coastguard Worker {
2685*d83cc019SAndroid Build Coastguard Worker char tmp[1024];
2686*d83cc019SAndroid Build Coastguard Worker int i, j;
2687*d83cc019SAndroid Build Coastguard Worker
2688*d83cc019SAndroid Build Coastguard Worker if (!bufsize)
2689*d83cc019SAndroid Build Coastguard Worker return -1;
2690*d83cc019SAndroid Build Coastguard Worker
2691*d83cc019SAndroid Build Coastguard Worker *buf = 0;
2692*d83cc019SAndroid Build Coastguard Worker
2693*d83cc019SAndroid Build Coastguard Worker for (i = 0; i < ARRAY_SIZE(known_registers); i++) {
2694*d83cc019SAndroid Build Coastguard Worker const struct reg_debug *regs = known_registers[i].regs;
2695*d83cc019SAndroid Build Coastguard Worker
2696*d83cc019SAndroid Build Coastguard Worker if (devid) {
2697*d83cc019SAndroid Build Coastguard Worker if (known_registers[i].match &&
2698*d83cc019SAndroid Build Coastguard Worker !known_registers[i].match(devid, 0))
2699*d83cc019SAndroid Build Coastguard Worker continue;
2700*d83cc019SAndroid Build Coastguard Worker }
2701*d83cc019SAndroid Build Coastguard Worker
2702*d83cc019SAndroid Build Coastguard Worker for (j = 0; j < known_registers[i].count; j++) {
2703*d83cc019SAndroid Build Coastguard Worker const struct reg_debug *r = ®s[j];
2704*d83cc019SAndroid Build Coastguard Worker if (reg->addr != r->reg)
2705*d83cc019SAndroid Build Coastguard Worker continue;
2706*d83cc019SAndroid Build Coastguard Worker
2707*d83cc019SAndroid Build Coastguard Worker if (r->debug_output) {
2708*d83cc019SAndroid Build Coastguard Worker if (r->debug_output(tmp, sizeof(tmp), r->reg,
2709*d83cc019SAndroid Build Coastguard Worker val, devid) == 0)
2710*d83cc019SAndroid Build Coastguard Worker continue;
2711*d83cc019SAndroid Build Coastguard Worker } else if (devid) {
2712*d83cc019SAndroid Build Coastguard Worker return 0;
2713*d83cc019SAndroid Build Coastguard Worker } else {
2714*d83cc019SAndroid Build Coastguard Worker continue;
2715*d83cc019SAndroid Build Coastguard Worker }
2716*d83cc019SAndroid Build Coastguard Worker
2717*d83cc019SAndroid Build Coastguard Worker if (devid) {
2718*d83cc019SAndroid Build Coastguard Worker strncpy(buf, tmp, bufsize);
2719*d83cc019SAndroid Build Coastguard Worker return 0;
2720*d83cc019SAndroid Build Coastguard Worker }
2721*d83cc019SAndroid Build Coastguard Worker
2722*d83cc019SAndroid Build Coastguard Worker strncat(buf, known_registers[i].description, bufsize);
2723*d83cc019SAndroid Build Coastguard Worker strncat(buf, "\t", bufsize);
2724*d83cc019SAndroid Build Coastguard Worker strncat(buf, tmp, bufsize);
2725*d83cc019SAndroid Build Coastguard Worker strncat(buf, "\n", bufsize);
2726*d83cc019SAndroid Build Coastguard Worker }
2727*d83cc019SAndroid Build Coastguard Worker }
2728*d83cc019SAndroid Build Coastguard Worker
2729*d83cc019SAndroid Build Coastguard Worker return 0;
2730*d83cc019SAndroid Build Coastguard Worker }
2731*d83cc019SAndroid Build Coastguard Worker
get_regs(struct reg ** regs,size_t * nregs,ssize_t index,uint32_t devid)2732*d83cc019SAndroid Build Coastguard Worker static ssize_t get_regs(struct reg **regs, size_t *nregs, ssize_t index,
2733*d83cc019SAndroid Build Coastguard Worker uint32_t devid)
2734*d83cc019SAndroid Build Coastguard Worker {
2735*d83cc019SAndroid Build Coastguard Worker ssize_t ret = -1;
2736*d83cc019SAndroid Build Coastguard Worker int i, j;
2737*d83cc019SAndroid Build Coastguard Worker
2738*d83cc019SAndroid Build Coastguard Worker if (!devid)
2739*d83cc019SAndroid Build Coastguard Worker return 0;
2740*d83cc019SAndroid Build Coastguard Worker
2741*d83cc019SAndroid Build Coastguard Worker for (i = 0; i < ARRAY_SIZE(known_registers); i++) {
2742*d83cc019SAndroid Build Coastguard Worker if (known_registers[i].match &&
2743*d83cc019SAndroid Build Coastguard Worker !known_registers[i].match(devid, 0))
2744*d83cc019SAndroid Build Coastguard Worker continue;
2745*d83cc019SAndroid Build Coastguard Worker
2746*d83cc019SAndroid Build Coastguard Worker for (j = 0; j < known_registers[i].count; j++) {
2747*d83cc019SAndroid Build Coastguard Worker const struct reg_debug *reg_in =
2748*d83cc019SAndroid Build Coastguard Worker &known_registers[i].regs[j];
2749*d83cc019SAndroid Build Coastguard Worker struct reg reg = {};
2750*d83cc019SAndroid Build Coastguard Worker
2751*d83cc019SAndroid Build Coastguard Worker /* XXX: Could be optimized. */
2752*d83cc019SAndroid Build Coastguard Worker parse_port_desc(®, NULL);
2753*d83cc019SAndroid Build Coastguard Worker
2754*d83cc019SAndroid Build Coastguard Worker reg.name = strdup(reg_in->name);
2755*d83cc019SAndroid Build Coastguard Worker reg.addr = reg_in->reg;
2756*d83cc019SAndroid Build Coastguard Worker
2757*d83cc019SAndroid Build Coastguard Worker if (!*regs || index >= *nregs) {
2758*d83cc019SAndroid Build Coastguard Worker if (!*regs)
2759*d83cc019SAndroid Build Coastguard Worker *nregs = 64;
2760*d83cc019SAndroid Build Coastguard Worker else
2761*d83cc019SAndroid Build Coastguard Worker *nregs *= 2;
2762*d83cc019SAndroid Build Coastguard Worker
2763*d83cc019SAndroid Build Coastguard Worker *regs = recalloc(*regs, *nregs, sizeof(**regs));
2764*d83cc019SAndroid Build Coastguard Worker if (!*regs) {
2765*d83cc019SAndroid Build Coastguard Worker fprintf(stderr, "Error: %s\n", strerror(ENOMEM));
2766*d83cc019SAndroid Build Coastguard Worker goto out;
2767*d83cc019SAndroid Build Coastguard Worker }
2768*d83cc019SAndroid Build Coastguard Worker }
2769*d83cc019SAndroid Build Coastguard Worker
2770*d83cc019SAndroid Build Coastguard Worker (*regs)[index++] = reg;
2771*d83cc019SAndroid Build Coastguard Worker }
2772*d83cc019SAndroid Build Coastguard Worker }
2773*d83cc019SAndroid Build Coastguard Worker
2774*d83cc019SAndroid Build Coastguard Worker ret = index;
2775*d83cc019SAndroid Build Coastguard Worker
2776*d83cc019SAndroid Build Coastguard Worker out:
2777*d83cc019SAndroid Build Coastguard Worker return ret;
2778*d83cc019SAndroid Build Coastguard Worker }
2779*d83cc019SAndroid Build Coastguard Worker
2780*d83cc019SAndroid Build Coastguard Worker /*
2781*d83cc019SAndroid Build Coastguard Worker * Get builtin register definitions for devid.
2782*d83cc019SAndroid Build Coastguard Worker */
intel_reg_spec_builtin(struct reg ** regs,uint32_t devid)2783*d83cc019SAndroid Build Coastguard Worker ssize_t intel_reg_spec_builtin(struct reg **regs, uint32_t devid)
2784*d83cc019SAndroid Build Coastguard Worker {
2785*d83cc019SAndroid Build Coastguard Worker size_t nregs = 0;
2786*d83cc019SAndroid Build Coastguard Worker *regs = NULL;
2787*d83cc019SAndroid Build Coastguard Worker
2788*d83cc019SAndroid Build Coastguard Worker return get_regs(regs, &nregs, 0, devid);
2789*d83cc019SAndroid Build Coastguard Worker }
2790