video: rockchip: hdmi-cec: fix quick standby then wake-up crash
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / hdmi / rockchip-hdmiv2 / rockchip_hdmiv2_hw.h
1 #ifndef _RK3288_HDMI_HW_H
2 #define _RK3288_HDMI_HW_H
3 #include <linux/interrupt.h>
4 #include "../rockchip-hdmi.h"
5
6 /*#define HDMI_INT_USE_POLL 1*/
7
8 enum PWR_MODE {
9         NORMAL,
10         LOWER_PWR,
11 };
12
13 enum {
14         OUTPUT_DVI = 0,
15         OUTPUT_HDMI,
16 };
17
18 /* Color Space Conversion Mode */
19 enum {
20         CSC_BYPASS,
21         CSC_RGB_0_255_TO_RGB_16_235_8BIT,       /* RGB 0-255 input to RGB
22                                                  * 16-235 output that is 8bit
23                                                  * clolor depth
24                                                  */
25         CSC_RGB_0_255_TO_RGB_16_235_10BIT,      /* RGB 0-255 input to RGB
26                                                  * 16-235 output that is 8bit
27                                                  * clolor depth
28                                                  */
29         CSC_RGB_0_255_TO_ITU601_16_235_8BIT,    /* RGB 0-255 input to YCbCr
30                                                  * 16-235 output according
31                                                  * BT601 that is 8bit clolor
32                                                  * depth
33                                                  */
34         CSC_RGB_0_255_TO_ITU601_16_235_10BIT,   /* RGB 0-255 input to YCbCr
35                                                  * 16-235 output according
36                                                  * BT601 that is 10bit clolor
37                                                  * depth
38                                                  */
39         CSC_RGB_0_255_TO_ITU709_16_235_8BIT,    /* RGB 0-255 input to YCbCr
40                                                  * 16-235 output accroding
41                                                  * BT709 that is 8bit clolor
42                                                  * depth
43                                                  */
44         CSC_RGB_0_255_TO_ITU709_16_235_10BIT,   /* RGB 0-255 input to YCbCr
45                                                  * 16-235 output accroding
46                                                  * BT709 that is 10bit clolor
47                                                  * depth
48                                                  */
49         CSC_ITU601_16_235_TO_RGB_0_255_8BIT,    /* YCbCr 16-235 input to RGB
50                                                  * 0-255 output according
51                                                  * BT601 that is 8bit clolor
52                                                  * depth
53                                                  */
54         CSC_ITU709_16_235_TO_RGB_0_255_8BIT,    /* YCbCr 16-235 input to RGB
55                                                  * 0-255 output according
56                                                  * BT709 that is 8bit clolor
57                                                  * depth
58                                                  */
59         CSC_ITU601_16_235_TO_RGB_16_235_8BIT,   /* YCbCr 16-235 input to RGB
60                                                  * 16-235 output according
61                                                  * BT601 that is 8bit clolor
62                                                  * depth
63                                                  */
64         CSC_ITU709_16_235_TO_RGB_16_235_8BIT    /* YCbCr 16-235 input to RGB
65                                                  * 16-235 output according
66                                                  * BT709 that is 8bit clolor
67                                                  * depth
68                                                  */
69 };
70
71 #define HDMI_SCL_RATE           (100 * 1000)
72 #define DDC_I2C_EDID_ADDR       0x50    /* 0xA0/2 = 0x50 */
73 #define DDC_I2C_SEG_ADDR        0x30    /* 0x60/2 = 0x30 */
74 #define DDC_I2C_SCDC_ADDR       0x54    /* 0xa8/2 = 0x54 */
75
76 /* Register and Field Descriptions */
77 /* Identification Registers */
78 #define IDENTIFICATION_BASE             0x0000
79
80 #define DESIGN_ID                       0x0000
81 #define REVISION_ID                     0x0001
82 #define PRODUCT_ID0                     0x0002
83 #define PRODUCT_ID1                     0x0003
84
85 #define CONFIG0_ID                      0x0004
86 #define m_PREPEN                BIT(7)
87 #define m_AUDSPDIF              BIT(5)
88 #define m_AUDI2S                BIT(4)
89 #define m_HDMI14                BIT(3)
90 #define m_CSC                   BIT(2)
91 #define m_CEC                   BIT(1)
92 #define m_HDCP                  BIT(0)
93
94 #define CONFIG1_ID                      0x0005
95 #define m_HDCP22                BIT(6)
96 #define m_HDMI20                BIT(5)
97 #define m_CONFAPB               BIT(1)
98
99 #define CONFIG2_ID                      0x0006
100 enum PHYTYPE {
101         HDMI_TX_PHY = 0x00,
102         HDMI_MHL_WITH_HEAC_PHY = 0xb2,
103         HDMI_MHL_PHY = 0xc2,
104         HDMI_3D_TX_WITH_HEAC_PHY = 0xe2,
105         HDMI_3D_TX_PHY = 0xf2,
106         HDMI2_TX_PHY = 0xf3
107 };
108
109 #define CONFIG3_ID                      0x0007
110 #define m_AHB_AUD_DMA           BIT(1)
111 #define m_GP_AUD                BIT(0)
112
113 /* Interrupt Registers */
114 #define INTERRUPT_BASE                  0x0100
115
116 #define IH_FC_STAT0                     0x0100
117 #define m_AUD_INFOFRAME         BIT(7)
118 #define m_AUD_CONTENT_PROTECT   BIT(6)
119 #define m_AUD_HBR               BIT(5)
120 #define m_AUD_SAMPLE            BIT(2)
121 #define m_AUD_CLK_REGEN         BIT(1)
122 #define m_NULL_PACKET           BIT(0)
123
124 #define IH_FC_STAT1                     0x0101
125 #define m_GMD                   BIT(7)
126 #define m_ISCR1                 BIT(6)
127 #define m_ISCR2                 BIT(5)
128 #define m_VSD                   BIT(4)
129 #define m_SPD                   BIT(3)
130 #define m_AVI_INFOFRAME         BIT(1)
131 #define m_GCP                   BIT(0)
132
133 #define v_AVI_INFOFRAME(n)      (((n) & 0x01) << 1)
134
135 #define IH_FC_STAT2                     0x0102
136 #define m_LOWPRIO_OVERFLOW      BIT(1)
137 #define m_HIGHPRIO_OVERFLOW     BIT(0)
138
139 #define IH_AS_SATA0                     0x0103
140 #define m_FIFO_UNDERRUN         BIT(4)
141 #define m_FIFO_OVERRUN          BIT(3)
142 #define m_AUD_FIFO_UDFLOW_THR   BIT(2)
143 #define m_AUD_FIFO_UDFLOW       BIT(1)
144 #define m_AUD_FIFO_OVERFLOW     BIT(0)
145
146 #define IH_PHY_STAT0                    0x0104
147 #define m_RX_SENSE3             BIT(5)
148 #define m_RX_SENSE2             BIT(4)
149 #define m_RX_SENSE1             BIT(3)
150 #define m_RX_SENSE0             BIT(2)
151 #define m_TX_PHY_LOCK           BIT(1)
152 #define m_HPD                   BIT(0)
153
154 #define IH_I2CM_STAT0                   0x0105
155 #define m_SCDC_READREQ          BIT(2)
156 #define m_I2CM_DONE             BIT(1)
157 #define m_I2CM_ERROR            BIT(0)
158
159 #define IH_CEC_STAT0                    0x0106
160 #define m_WAKEUP                BIT(6)
161 #define m_ERR_FOLLOW            BIT(5)
162 #define m_ERR_INITIATOR         BIT(4)
163 #define m_ARB_LOST              BIT(3)
164 #define m_NACK                  BIT(2)
165 #define m_EOM                   BIT(1)
166 #define m_DONE                  BIT(0)
167
168 #define IH_VP_STAT0                     0x0107
169 #define m_FIFOFULL_REPET        BIT(7)
170 #define m_FIFOEMPTY_REPET       BIT(6)
171 #define m_FIFOFULL_PACK         BIT(5)
172 #define m_FIFOEMPTY_PACK        BIT(4)
173 #define m_FIFOFULL_REMAP        BIT(3)
174 #define m_FIFOEMPTY_REMAP       BIT(2)
175 #define m_FIFOFULL_BYPASS       BIT(1)
176 #define m_FIFOEMPTY_BYPASS      BIT(0)
177
178 #define IH_I2CMPHY_STAT0                0x0108
179 #define m_I2CMPHY_DONE          BIT(1)
180 #define m_I2CMPHY_ERR           BIT(0)
181
182 #define IH_AHBDMAAUD_STAT0              0x0109
183 #define m_AUDDMA_INT_BUFOVERRUN BIT(6)
184 #define m_AUDDMA_INT_ERR        BIT(5)
185 #define m_AUDDMA_INT_LOST       BIT(4)
186 #define m_AUDDMA_INT_RETRYSPLIT BIT(3)
187 #define m_AUDDMA_INT_DONE       BIT(2)
188 #define m_AUDDMA_INT_BUFFULL    BIT(1)
189 #define m_AUDDMA_INT_BUFEMPTY   BIT(0)
190
191 #define IH_DECODE                       0x0170
192 #define m_IH_FC_STAT0           BIT(7)
193 #define m_IH_FC_STAT1           BIT(6)
194 #define m_IH_FC_STAT2_VP        BIT(5)
195 #define m_IH_AS_STAT0           BIT(4)
196 #define m_IH_PHY                BIT(3)
197 #define m_IH_I2CM_STAT0         BIT(2)
198 #define m_IH_CEC_STAT0          BIT(1)
199 #define m_IH_AHBDMAAUD_STAT0    BIT(0)
200
201 #define IH_MUTE_FC_STAT0                0x0180
202 #define m_AUDI_MUTE             BIT(7)
203 #define m_ACP_MUTE              BIT(6)
204 #define m_DST_MUTE              BIT(4)
205 #define m_OBA_MUTE              BIT(3)
206 #define m_AUDS_MUTE             BIT(2)
207 #define m_ACR_MUTE              BIT(1)
208 #define m_NULL_MUTE             BIT(0)
209
210 #define IH_MUTE_FC_STAT1                0x0181
211 #define m_GMD_MUTE              BIT(7)
212 #define m_ISCR1_MUTE            BIT(6)
213 #define m_ISCR2_MUTE            BIT(5)
214 #define m_VSD_MUTE              BIT(4)
215 #define m_SPD_MUTE              BIT(3)
216 #define m_AVI_MUTE              BIT(1)
217 #define m_GCP_MUTE              BIT(0)
218
219 #define IH_MUTE_FC_STAT2                0x0182
220 #define m_LPRIO_OVERFLOW_MUTE   BIT(1)
221 #define m_HPRIO_OVERFLOW_MUTE   BIT(0)
222
223 #define IH_MUTE_AS_STAT0                0x0183
224 #define m_FIFO_UNDERRUN_MUTE    BIT(4)
225 #define m_FIFO_OVERRUN_MUTE     BIT(3)
226 #define m_AUD_FIFO_UDF_THR_MUTE BIT(2)
227 #define m_AUD_FIFO_UDF_MUTE     BIT(1)
228 #define m_AUD_FIFO_OVF_MUTE     BIT(0)
229
230 #define IH_MUTE_PHY_STAT0               0x0184
231 #define m_RX_SENSE3_MUTE        BIT(5)
232 #define m_RX_SENSE2_MUTE        BIT(4)
233 #define m_RX_SENSE1_MUTE        BIT(3)
234 #define m_RX_SENSE0_MUTE        BIT(2)
235 #define m_TX_PHY_LOCK_MUTE      BIT(1)
236 #define m_HPD_MUTE              BIT(0)
237
238 #define IH_MUTE_I2CM_STAT0              0x0185
239 #define m_SCDC_READREQ_MUTE     BIT(2)
240 #define v_SCDC_READREQ_MUTE(n)  (((n) & 0x01) << 2)
241 #define m_I2CM_DONE_MUTE        BIT(1)
242 #define v_I2CM_DONE_MUTE(n)     (((n) & 0x01) << 1)
243 #define m_I2CM_ERR_MUTE         BIT(0)
244 #define v_I2CM_ERR_MUTE(n)      (((n) & 0x01) << 0)
245
246 #define IH_MUTE_CEC_STAT0               0x0186
247 #define m_WAKEUP_MUTE           BIT(6)
248 #define m_ERR_FOLLOW_MUTE       BIT(5)
249 #define m_ERR_INITIATOR_MUTE    BIT(4)
250 #define m_ARB_LOST_MUTE         BIT(3)
251 #define m_NACK_MUTE             BIT(2)
252 #define m_EOM_MUTE              BIT(1)
253 #define m_DONE_MUTE             BIT(0)
254
255 #define IH_MUTE_VP_STAT0                0x0187
256 #define m_FIFOFULL_REP_MUTE     BIT(7)
257 #define m_FIFOEMPTY_REP_MUTE    BIT(6)
258 #define m_FIFOFULL_PACK_MUTE    BIT(5)
259 #define m_FIFOEMPTY_PACK_MUTE   BIT(4)
260 #define m_FIFOFULL_REMAP_MUTE   BIT(3)
261 #define m_FIFOEMPTY_REMAP_MUTE  BIT(2)
262 #define m_FIFOFULL_BYP_MUTE     BIT(1)
263 #define m_FIFOEMPTY_BYP_MUTE    BIT(0)
264
265 #define IH_MUTE_I2CMPHY_STAT0           0x0188
266 #define m_I2CMPHY_DONE_MUTE     BIT(1)
267 #define m_I2CMPHY_ERR_MUTE      BIT(0)
268
269 #define IH_MUTE_AHBDMAAUD_STAT0         0x0189
270 #define IH_MUTE                         0x01ff
271
272 /* Video Sampler Registers */
273 #define VIDEO_SAMPLER_BASE              0x0200
274
275 #define TX_INVID0                       0x0200
276 #define m_INTERNAL_DE_GEN       BIT(7)
277 #define v_INTERNAL_DE_GEN(n)    (((n) & 0x01) << 7)
278 enum VIDEO_MODE {
279         VIDEO_RGB444_8BIT = 0x01,
280         VIDEO_RGB444_10BIT = 0x03,
281         VIDEO_RGB444_12BIT = 0x05,
282         VIDEO_RGB444_16BIT = 0x07,
283         VIDEO_YCBCR444_8BIT = 0x09,     /* or YCbCr420 */
284         VIDEO_YCBCR444_10BIT = 0x0b,    /* or YCbCr420 */
285         VIDEO_YCBCR444_12BIT = 0x0d,    /* or YCbCr420 */
286         VIDEO_YCBCR444_16BIT = 0x0f,    /* or YCbCr420 */
287         VIDEO_YCBCR422_12BIT = 0x12,
288         VIDEO_YCBCR422_10BIT = 0x14,
289         VIDEO_YCBCR422_8BIT = 0x16
290 };
291
292 #define m_VIDEO_MAPPING         (0x1f << 0)
293 #define v_VIDEO_MAPPING(n)      ((n) & 0x1f)
294
295 #define TX_INSTUFFING                   0x0201
296 #define m_BCBDATA_STUFF         BIT(2)
297 #define v_BCBDATA_STUFF(n)      (((n) & 0x01) << 2)
298 #define m_RCRDATA_STUFF         BIT(1)
299 #define v_RCRDATA_STUFF(n)      (((n) & 0x01) << 1)
300 #define m_GYDATA_STUFF          BIT(0)
301 #define v_GYDATA_STUFF(n)       (((n) & 0x01) << 0)
302
303 #define TX_GYDATA0                      0x0202
304 #define TX_GYDATA1                      0x0203
305 #define TX_RCRDATA0                     0x0204
306 #define TX_RCRDATA1                     0x0205
307 #define TX_BCBDATA0                     0x0206
308 #define TX_BCBDATA1                     0x0207
309
310 /* Video Packetizer Registers */
311 #define VIDEO_PACKETIZER_BASE           0x0800
312
313 #define VP_STATUS                       0x0800
314 #define m_PACKING_PHASE         (0x0f << 0)
315
316 #define VP_PR_CD                        0x0801
317 enum COLOR_DEPTH {
318         COLOR_DEPTH_24BIT_DEFAULT = 0,
319         COLOR_DEPTH_24BIT = 0x04,
320         COLOR_DEPTH_30BIT,
321         COLOR_DEPTH_36BIT,
322         COLOR_DEPTH_48BIT
323 };
324
325 #define m_COLOR_DEPTH           (0x0f << 4)
326 #define v_COLOR_DEPTH(n)        (((n) & 0x0f) << 4)
327 enum PIXEL_REPET {
328         NO_PIXEL_REPET = 0,
329         PIXEL_SENT_2TIMES,
330         PIXEL_SENT_3TIMES,
331         PIXEL_SENT_4TIMES,
332         PIXEL_SENT_5TIMES,
333         PIXEL_SENT_6TIMES,
334         PIXEL_SENT_7TIMES,
335         PIXEL_SENT_8TIMES,
336         PIXEL_SENT_9TIMES,
337         PIXEL_SENT_10TIMES
338 };
339
340 #define m_DESIRED_PR_FACTOR     (0x0f << 0)
341 #define v_DESIRED_PR_FACTOR(n)  (((n) & 0x0f) << 0)
342
343 #define VP_STUFF                        0x0802
344 #define m_IDEFAULT_PHASE        BIT(5)
345 #define v_IDEFAULT_PHASE(n)     (((n) & 0x01) << 5)
346 #define m_IFIX_PP_TO_LAST       BIT(4)
347 #define m_ICX_GOTO_P0_ST        BIT(3)
348 enum {
349         DIRECT_MODE = 0,
350         STUFFING_MODE
351 };
352
353 #define m_YCC422_STUFFING       BIT(2)
354 #define v_YCC422_STUFFING(n)    (((n) & 0x01) << 2)
355 #define m_PP_STUFFING           BIT(1)
356 #define v_PP_STUFFING(n)        (((n) & 0x01) << 1)
357 #define m_PR_STUFFING           BIT(0)
358 #define v_PR_STUFFING(n)        (((n) & 0x01) << 0)
359
360 #define VP_REMAP                        0x0803
361 enum YCC422_SIZE {
362         YCC422_16BIT = 0,
363         YCC422_20BIT,
364         YCC422_24BIT
365 };
366
367 #define m_YCC422_SIZE           (0x03 << 0)
368 #define v_YCC422_SIZE(n)        (((n) & 0x03) << 0)
369
370 #define VP_CONF                         0x0804
371 #define m_BYPASS_EN             BIT(6)
372 #define v_BYPASS_EN(n)          (((n) & 0x01) << 6)
373 #define m_PIXEL_PACK_EN         BIT(5)
374 #define v_PIXEL_PACK_EN(n)      (((n) & 0x01) << 5)
375 #define m_PIXEL_REPET_EN        BIT(4)
376 #define v_PIXEL_REPET_EN(n)     (((n) & 0x01) << 4)
377 #define m_YCC422_EN             BIT(3)
378 #define v_YCC422_EN(n)          (((n) & 0x01) << 3)
379 #define m_BYPASS_SEL            BIT(2)
380 #define v_BYPASS_SEL(n)         (((n) & 0x01) << 2)
381 enum {
382         OUT_FROM_PIXEL_PACKING = 0,
383         OUT_FROM_YCC422_REMAP,
384         OUT_FROM_8BIT_BYPASS
385 };
386
387 #define m_OUTPUT_SEL            (0x03 << 0)
388 #define v_OUTPUT_SEL(n)         ((n & 0x03) << 0)
389
390 #define VP_MASK                         0x0807
391 #define m_OINTFULL_REPET        BIT(7)
392 #define m_OINTEMPTY_REPET       BIT(6)
393 #define m_OINTFULL_PACK         BIT(5)
394 #define m_OINTEMPTY_PACK        BIT(4)
395 #define m_OINTFULL_REMAP        BIT(3)
396 #define m_OINTEMPTY_REMAP       BIT(2)
397 #define m_OINTFULL_BYPASS       BIT(1)
398 #define m_OINTEMPTY_BYPASS      BIT(0)
399
400 /* Frame Composer Registers */
401 #define FRAME_COMPOSER_BASE             0x1000
402
403 #define FC_INVIDCONF                    0x1000
404 #define m_FC_HDCP_KEEPOUT       BIT(7)
405 #define v_FC_HDCP_KEEPOUT(n)    (((n) & 0x01) << 7)
406 #define m_FC_VSYNC_POL          BIT(6)
407 #define v_FC_VSYNC_POL(n)       (((n) & 0x01) << 6)
408 #define m_FC_HSYNC_POL          BIT(5)
409 #define v_FC_HSYNC_POL(n)       (((n) & 0x01) << 5)
410 #define m_FC_DE_POL             BIT(4)
411 #define v_FC_DE_POL(n)          (((n) & 0x01) << 4)
412 #define m_FC_HDMI_DVI           BIT(3)
413 #define v_FC_HDMI_DVI(n)        (((n) & 0x01) << 3)
414 #define m_FC_VBLANK             BIT(1)
415 #define v_FC_VBLANK(n)          (((n) & 0x01) << 1)
416 #define m_FC_INTERLACE_MODE     BIT(0)
417 #define v_FC_INTERLACE_MODE(n)  (((n) & 0x01) << 0)
418
419 #define FC_INHACTIV0                    0x1001
420
421 #define FC_INHACTIV1                    0x1002
422 #define v_FC_HACTIVE1(n)        ((n) & 0x3f)
423 #define m_FC_H_ACTIVE_13        BIT(5)
424 #define v_FC_H_ACTIVE_13(n)     (((n) & 0x01) << 5)
425 #define m_FC_H_ACTIVE_12        BIT(4)
426 #define v_FC_H_ACTIVE_12(n)     (((n) & 0x01) << 4)
427 #define m_FC_H_ACTIVE           (0x0f << 0)
428 #define v_FC_H_ACTIVE(n)        (((n) & 0x0f) << 0)
429
430 #define FC_INHBLANK0                    0x1003
431
432 #define FC_INHBLANK1                    0x1004
433 #define v_FC_HBLANK1(n)         ((n) & 0x1f)
434 #define m_FC_H_BLANK_12_11      (0x07 << 2)
435 #define v_FC_H_BLANK_12_11(n)   (((n) & 0x07) << 2)
436 #define m_FC_H_BLANK            (0x03 << 0)
437 #define v_FC_H_BLANK(n)         (((n) & 0x03) << 0)
438
439 #define FC_INVACTIV0                    0x1005
440
441 #define FC_INVACTIV1                    0x1006
442 #define v_FC_VACTIVE1(n)        ((n) & 0x1f)
443 #define m_FC_V_ACTIVE_12_11     (0x03 << 3)
444 #define v_FC_V_ACTIVE_12_11(n)  (((n) & 0x03) << 3)
445 #define m_FC_V_ACTIVE           (0x07 << 0)
446 #define v_FC_V_ACTIVE(n)        (((n) & 0x07) << 0)
447
448 #define FC_INVBLANK                     0x1007
449 #define FC_HSYNCINDELAY0                0x1008
450
451 #define FC_HSYNCINDELAY1                0x1009
452 #define v_FC_HSYNCINDEAY1(n)    ((n) & 0x1f)
453 #define m_FC_H_SYNCFP_12_11     (0x03 << 3)
454 #define v_FC_H_SYNCFP_12_11(n)  (((n) & 0x03) << 3)
455 #define m_FC_H_SYNCFP           (0x07 << 0)
456 #define v_FC_H_SYNCFP(n)        (((n) & 0x07) << 0)
457
458 #define FC_HSYNCINWIDTH0                0x100a
459
460 #define FC_HSYNCINWIDTH1                0x100b
461 #define v_FC_HSYNCWIDTH1(n)     ((n) & 0x03)
462 #define m_FC_HSYNC_9            BIT(1)
463 #define v_FC_HSYNC_9(n)         (((n) & 0x01) << 1)
464 #define m_FC_HSYNC              BIT(0)
465 #define v_FC_HSYNC(n)           (((n) & 0x01) << 0)
466
467 #define FC_VSYNCINDELAY                 0x100c
468 #define FC_VSYNCINWIDTH                 0x100d
469 #define FC_INFREQ0                      0x100e
470 #define FC_INFREQ1                      0x100f
471 #define FC_INFREQ2                      0x1010
472 #define FC_CTRLDUR                      0x1011
473 #define FC_EXCTRLDUR                    0x1012
474 #define FC_EXCTRLSPAC                   0x1013
475 #define FC_CH0PREAM                     0x1014
476 #define FC_CH1PREAM                     0x1015
477 #define FC_CH2PREAM                     0x1016
478
479 #define FC_AVICONF3                     0x1017
480 enum YCC_QUAN_RANGE {
481         YQ_LIMITED_RANGE = 0,
482         YQ_FULL_RANGE,
483         RESERVED,
484 };
485
486 #define m_FC_YQ                 (0x03 << 2)
487 #define v_FC_YQ(n)              (((n) & 0x03) << 2)
488 enum IT_CONTENT_TYPE {
489         CN_GRAPHICS = 0,
490         CN_PHOTO,
491         CN_CINEMA,
492         CN_GAME,
493 };
494
495 #define m_FC_CN                 (0x03 << 0)
496 #define v_FC_CN(n)              (((n) & 0x03) << 0)
497
498 #define FC_GCP                          0x1018
499 #define m_FC_DEFAULT_PHASE      BIT(2)
500 #define v_FC_DEFAULT_PHASE(n)   (((n) & 0x01) << 2)
501 #define m_FC_SET_AVMUTE         BIT(1)
502 #define v_FC_SET_AVMUTE(n)      (((n) & 0x01) << 1)
503 #define m_FC_CLR_AVMUTE         BIT(0)
504 #define v_FC_CLR_AVMUTE(n)      (((n) & 0x01) << 0)
505
506 enum {
507         AVI_COLOR_MODE_RGB = 0,
508         AVI_COLOR_MODE_YCBCR422,
509         AVI_COLOR_MODE_YCBCR444,
510         AVI_COLOR_MODE_YCBCR420
511 };
512
513 enum {
514         AVI_COLORIMETRY_NO_DATA = 0,
515         AVI_COLORIMETRY_SMPTE_170M,
516         AVI_COLORIMETRY_ITU709,
517         AVI_COLORIMETRY_EXTENDED
518 };
519
520 enum {
521         AVI_CODED_FRAME_ASPECT_NO_DATA,
522         AVI_CODED_FRAME_ASPECT_4_3,
523         AVI_CODED_FRAME_ASPECT_16_9
524 };
525
526 enum {
527         ACTIVE_ASPECT_RATE_DEFAULT = 0x08,
528         ACTIVE_ASPECT_RATE_4_3,
529         ACTIVE_ASPECT_RATE_16_9,
530         ACTIVE_ASPECT_RATE_14_9
531 };
532
533 enum {
534         AVI_QUANTIZATION_RANGE_DEFAULT = 0,
535         AVI_QUANTIZATION_RANGE_LIMITED,
536         AVI_QUANTIZATION_RANGE_FULL
537 };
538
539 #define FC_AVICONF0                     0x1019
540 #define m_FC_RGC_YCC_2          BIT(7)  /* use for HDMI2.0 TX */
541 #define v_FC_RGC_YCC_2(n)       (((n) & 0x01) << 7)
542 #define m_FC_ACTIV_FORMAT       BIT(6)
543 #define v_FC_ACTIV_FORMAT(n)    (((n) & 0x01) << 6)
544 #define m_FC_SCAN_INFO          (0x03 << 4)
545 #define v_FC_SCAN_INFO(n)       (((n) & 0x03) << 4)
546 #define m_FC_BAR_FORMAT         (0x03 << 2)
547 #define v_FC_BAR_FORMAT(n)      (((n) & 0x03) << 2)
548 #define m_FC_RGC_YCC            (0x03 << 0)
549 #define v_FC_RGC_YCC(n)         (((n) & 0x03) << 0)
550
551 #define FC_AVICONF1                     0x101a
552 #define m_FC_COLORIMETRY        (0x03 << 6)
553 #define v_FC_COLORIMETRY(n)     (((n) & 0x03) << 6)
554 #define m_FC_PIC_ASPEC_RATIO    (0x03 << 4)
555 #define v_FC_PIC_ASPEC_RATIO(n) (((n) & 0x03) << 4)
556 #define m_FC_ACT_ASPEC_RATIO    (0x0f << 0)
557 #define v_FC_ACT_ASPEC_RATIO(n) (((n) & 0x0f) << 0)
558
559 #define FC_AVICONF2                     0x101b
560 #define m_FC_IT_CONTENT         BIT(7)
561 #define v_FC_IT_CONTENT(n)      (((n) & 0x01) << 7)
562 #define m_FC_EXT_COLORIMETRY    (0x07 << 4)
563 #define v_FC_EXT_COLORIMETRY(n) (((n) & 0x07) << 4)
564 #define m_FC_QUAN_RANGE         (0x03 << 2)
565 #define v_FC_QUAN_RANGE(n)      (((n) & 0x03) << 2)
566 #define m_FC_NUN_PIC_SCALE      (0x03 << 0)
567 #define v_FC_NUN_PIC_SCALE(n)   (((n) & 0x03) << 0)
568
569 #define FC_AVIVID                       0x101c
570 #define m_FC_AVIVID_H           BIT(7)  /* use for HDMI2.0 TX */
571 #define v_FC_AVIVID_H(n)        (((n) & 0x01) << 7)
572 #define m_FC_AVIVID             (0x7f << 0)
573 #define v_FC_AVIVID(n)          (((n) & 0x7f) << 0)
574
575 #define FC_AVIETB0                      0x101d
576 #define FC_AVIETB1                      0x101e
577 #define FC_AVISBB0                      0x101f
578 #define FC_AVISBB1                      0x1020
579 #define FC_AVIELB0                      0x1021
580 #define FC_AVIELB1                      0x1022
581 #define FC_AVISRB0                      0x1023
582 #define FC_AVISRB1                      0x1024
583
584 #define FC_AUDICONF0                    0x1025
585 #define m_FC_CHN_CNT            (0x07 << 4)
586 #define v_FC_CHN_CNT(n)         (((n) & 0x07) << 4)
587 #define m_FC_CODING_TYPE        (0x0f << 0)
588 #define v_FC_CODING_TYPE(n)     (((n) & 0x0f) << 0)
589
590 #define FC_AUDICONF1                    0x1026
591 #define m_FC_SAMPLE_SIZE        (0x03 << 4)
592 #define v_FC_SAMPLE_SIZE(n)     (((n) & 0x03) << 4)
593 #define m_FC_SAMPLE_FREQ        (0x07 << 0)
594 #define v_FC_SAMPLE_FREQ(n)     (((n) & 0x07) << 0)
595
596 #define FC_AUDICONF2                    0x1027
597
598 #define FC_AUDICONF3                    0x1028
599 #define m_FC_LFE_PBL            (0x03 << 5)     /*only use for HDMI1.4 TX*/
600 #define v_FC_LFE_PBL(n)         (((n) & 0x03) << 5)
601 #define m_FC_DM_INH             BIT(4)
602 #define v_FC_DM_INH(n)          (((n) & 0x01) << 4)
603 #define m_FC_LSV                (0x0f << 0)
604 #define v_FC_LSV(n)             (((n) & 0x0f) << 0)
605
606 #define FC_VSDIEEEID2                   0x1029
607 #define FC_VSDSIZE                      0x102a
608 #define FC_VSDIEEEID1                   0x1030
609 #define FC_VSDIEEEID0                   0x1031
610 #define FC_VSDPAYLOAD0                  0x1032  /* 0~23 */
611 #define FC_SPDVENDORNAME0               0x104a  /* 0~7 */
612 #define FC_SPDPRODUCTNAME0              0x1052  /* 0~15 */
613 #define FC_SPDDEVICEINF                 0x1062
614
615 #define FC_AUDSCONF                     0x1063
616 #define m_AUD_PACK_SAMPFIT      (0x0f << 4)
617 #define v_AUD_PACK_SAMPFIT(n)   (((n) & 0x0f) << 4)
618 #define m_AUD_PACK_LAYOUT       BIT(0)
619 #define v_AUD_PACK_LAYOUT(n)    (((n) & 0x01) << 0)
620
621 #define FC_AUDSSTAT                     0x1064
622 #define FC_AUDSV                        0x1065
623 #define FC_AUDSU                        0x1066
624 #define FC_AUDSCHNLS0                   0x1067  /*0~8*/
625 #define FC_AUDSCHNLS1                   0x1068
626 #define FC_AUDSCHNLS2                   0x1069
627 #define FC_AUDSCHNLS3                   0x106a
628 #define FC_AUDSCHNLS4                   0x106b
629 #define FC_AUDSCHNLS5                   0x106c
630 #define FC_AUDSCHNLS6                   0x106d
631 #define FC_AUDSCHNLS7                   0x106e
632 #define FC_AUDSCHNLS8                   0x106f
633
634 enum {
635         AUDIO_32K       = 0x3,
636         AUDIO_441K      = 0x0,
637         AUDIO_48K       = 0x2,
638         AUDIO_882K      = 0x8,
639         AUDIO_96K       = 0xa,
640         AUDIO_1764K     = 0xc,
641         AUDIO_192K      = 0xe,
642         AUDIO_768K      = 0x9,
643 };
644
645 #define m_AUDIO_SAMPLE_RATE             (0x0f << 0)
646 #define v_AUDIO_SAMPLE_RATE(n)  (((n) & 0x0f) << 0)
647 #define m_AUDIO_ORI_SAMPLE_RATE         (0x0f << 4)
648 #define v_AUDIO_ORI_SAMPLE_RATE(n)      (((~n) & 0x0f) << 4)
649 #define m_AUDIO_WORD_LENGTH             (0x0f << 0)
650 #define v_AUDIO_WORD_LENGTH(n)  (((n) & 0x0f) << 0)
651
652 #define FC_CTRLQHIGH                    0x1073
653 #define FC_CTRLQLOW                     0x1074
654 #define FC_ACP0                         0x1075
655 #define FC_ACP16                        0x1082  /* 16~1 */
656 #define FC_ISCR1_0                      0x1092
657 #define FC_ISCR1_16                     0x1093  /* 16~1 */
658 #define FC_ISCR2_15                     0x10a3  /* 15~0 */
659
660 #define FC_DATAUTO0                     0x10b3
661 #define m_SPD_AUTO              BIT(4)
662 #define v_SPD_AUTO(n)           (((n) & 0x01) << 4)
663 #define m_VSD_AUTO              BIT(3)
664 #define v_VSD_AUTO(n)           (((n) & 0x01) << 3)
665 #define m_ISCR2_AUTO            BIT(2)
666 #define v_ISCR2_AUTO(n)         (((n) & 0x01) << 2)
667 #define m_ISCR1_AUTO            BIT(1)
668 #define v_ISCR1_AUTO(n)         (((n) & 0x01) << 1)
669 #define m_ACP_AUTO              BIT(0)
670 #define v_ACP_AUTO(n)           (((n) & 0x01) << 0)
671
672 #define FC_DATAUTO1                     0x10b4
673 #define FC_DATAUTO2                     0x10b5
674
675 #define FC_DATMAN                       0x10b6
676 #define m_SPD_MAN               BIT(4)
677 #define v_SPD_MAN(n)            (((n) & 0x01) << 4)
678 #define m_VSD_MAN               BIT(3)
679 #define v_VSD_MAN(n)            (((n) & 0x01) << 3)
680 #define m_ISCR2_MAN             BIT(2)
681 #define v_ISCR2_MAN(n)          (((n) & 0x01) << 2)
682 #define m_ISCR1_MAN             BIT(1)
683 #define v_ISCR1_MAN(n)          (((n) & 0x01) << 1)
684 #define m_ACP_MAN               BIT(0)
685 #define v_ACP_MAN(n)            (((n) & 0x01) << 0)
686
687 #define FC_DATAUTO3                     0x10b7
688         #define m_AVI_AUTO              BIT(3)
689         #define v_AVI_AUTO(n)           (((n) & 0x01) << 3)
690         #define m_GCP_AUTO              BIT(2)
691         #define v_GCP_AUTO(n)           (((n) & 0x01) << 2)
692         #define m_AAI_AUTO              BIT(1)
693         #define v_AAI_AUTO(n)           (((n) & 0x01) << 1)
694         #define m_ACR_AUTO              BIT(0)
695         #define v_ACR_AUTO(n)           (((n) & 0x01) << 0)
696 #define FC_RDRB0                        0x10b8
697 #define FC_RDRB1                        0x10b9
698 #define FC_RDRB2                        0x10ba
699 #define FC_RDRB3                        0x10bb
700 #define FC_RDRB4                        0x10bc
701 #define FC_RDRB5                        0x10bd
702 #define FC_RDRB6                        0x10be
703 #define FC_RDRB7                        0x10bf
704         #define m_AVI_PACKETS_PER_FRAME         (0xf << 4)
705         #define m_AVI_PACKERS_LINE_SPACING      (0xf)
706         #define v_AVI_PACKETS_PER_FRAME(n)      (((n) & 0x0f) << 4)
707         #define v_AVI_PACKERS_LINE_SPACING(n)   (((n) & 0x0f) << 0)
708 #define FC_MASK0                        0x10d2
709 #define FC_MASK1                        0x10d6
710 #define FC_MASK2                        0x10da
711
712 #define FC_PRCONF                       0x10e0
713 #define m_FC_PR_FACTOR          (0x0f << 4)
714 #define v_FC_PR_FACTOR(n)       (((n) & 0x0f) << 4)
715 #define m_FC_PR_FACTOR_OUT      (0x0f)
716 #define v_FC_PR_FACTOR_OUT(n)   ((n) & 0x0f)
717
718 #define FC_SCRAMBLER_CTRL               0x10e1
719 #define m_FC_SCRAMBLE_UCP       BIT(4)
720 #define v_FC_SCRAMBLE_UCP(n)    (((n) & 0x01) << 4)
721 #define m_FC_SCRAMBLE_EN        BIT(0)
722 #define v_FC_SCRAMBLE_EN(n)     (((n) & 0x01) << 0)
723
724 #define FC_GMD_STAT                     0x1100
725 #define FC_GMD_EN                       0x1101
726 #define FC_GMD_UP                       0x1102
727 #define FC_GMD_CONF                     0x1103
728 #define FC_GMD_HB                       0x1104
729 #define FC_GMD_PB0                      0x1105  /*0~27*/
730
731 #define FC_DBGFORCE                     0x1200
732 #define m_FC_FORCEAUDIO         BIT(4)
733 #define v_FC_FORCEAUDIO(n)      (((n) & 0x01) << 4)
734 #define m_FC_FORCEVIDEO         BIT(0)
735 #define v_FC_FORCEVIDEO(n)      (((n) & 0x01) << 0)
736
737 #define FC_DBGAUD0CH0                   0x1201  /* aud0~aud2 ch0 */
738 #define FC_DBGAUD0CH1                   0x1204  /* aud0~aud2 ch1 */
739 #define FC_DBGAUD0CH2                   0x1207  /* aud0~aud2 ch2 */
740 #define FC_DBGAUD0CH3                   0x120a  /* aud0~aud2 ch3 */
741 #define FC_DBGAUD0CH4                   0x120d  /* aud0~aud2 ch4 */
742 #define FC_DBGAUD0CH5                   0x1210  /* aud0~aud2 ch5 */
743 #define FC_DBGAUD0CH6                   0x1213  /* aud0~aud2 ch6 */
744 #define FC_DBGAUD0CH7                   0x1216  /* aud0~aud2 ch7 */
745 #define FC_DBGTMDS0                     0x1219
746 #define FC_DBGTMDS1                     0x121a
747 #define FC_DBGTMDS2                     0x121b
748
749 /* HDMI Source PHY Registers */
750 #define HDMI_SOURCE_PHY_BASE            0x3000
751
752 #define PHY_CONF0                       0x3000
753 #define m_POWER_DOWN_EN         BIT(7)/* no use */
754 #define v_POWER_DOWN_EN(n)      (((n) & 0x01) << 7)
755 #define m_TMDS_EN               BIT(6)/* no use */
756 #define v_TMDS_EN(n)            (((n) & 0x01) << 6)
757 #define m_SVSRET_SIG            BIT(5)/* depend on PHY_MHL_COMB0=1 */
758 #define v_SVSRET_SIG(n)         (((n) & 0x01) << 5)
759 #define m_PDDQ_SIG              BIT(4)
760 /*1: power down phy; 0: power on phy */
761 #define v_PDDQ_SIG(n)           (((n) & 0x01) << 4)
762 #define m_TXPWRON_SIG           BIT(3)
763 /*1: power on transmitter; 0: power down transmitter */
764 #define v_TXPWRON_SIG(n)        (((n) & 0x01) << 3)
765 #define m_ENHPD_RXSENSE_SIG     BIT(2)
766 /*1: enable detect hdp & rx sense */
767 #define v_ENHPD_RXSENSE_SIG(n)  (((n) & 0x01) << 2)
768 #define m_SEL_DATAEN_POL        BIT(1)
769 #define v_SEL_DATAEN_POL(n)     (((n) & 0x01) << 1)
770 #define m_SEL_INTERFACE         BIT(0)
771 #define v_SEL_INTERFACE(n)      (((n) & 0x01) << 0)
772
773 #define PHY_TST0                        0x3001
774 #define m_TEST_CLR_SIG          BIT(5)
775 #define m_TEST_EN_SIG           BIT(4)
776 #define m_TEST_CLK_SIG          BIT(0)
777
778 #define PHY_TST1                        0x3002
779 #define PHY_TST2                        0x3003
780 #define PHY_STAT0                       0x3004
781 #define PHY_INI0                        0x3005
782 #define PHY_MASK                        0x3006
783 #define PHY_POL0                        0x3007
784 #define m_PHY_RX_SENSE3         BIT(7)
785 #define v_PHY_TX_SENSE3(n)      (((n) & 0x01) << 7)
786 #define m_PHY_RX_SENSE2         BIT(6)
787 #define v_PHY_TX_SENSE2(n)      (((n) & 0x01) << 6)
788 #define m_PHY_RX_SENSE1         BIT(5)
789 #define v_PHY_TX_SENSE1(n)      (((n) & 0x01) << 5)
790 #define m_PHY_RX_SENSE0         BIT(4)
791 #define v_PHY_TX_SENSE0(n)      (((n) & 0x01) << 4)
792 #define m_PHY_HPD               BIT(1)
793 #define v_PHY_HPD               (((n) & 0x01) << 1)
794 #define m_PHY_LOCK              BIT(0)
795 #define v_PHY_LOCK(n)           (((n) & 0x01) << 0)
796
797 #define PHY_PCLFREQ0                    0x3008
798 #define PHY_PCLFREQ1                    0x3009
799 #define PHY_PLLCFGFREQ0                 0x300a
800 #define PHY_PLLCFGFREQ1                 0x300b
801 #define PHY_PLLCFGFREQ2                 0x300c
802
803 /* I2C Master PHY Registers */
804 #define I2C_MASTER_PHY_BASE             0x3020
805
806 #define PHY_I2CM_SLAVE                  0x3020
807 #define PHY_GEN2_ADDR           0x69
808 #define PHY_HEAC_ADDR           0x49
809 #define PHY_I2C_SLAVE_ADDR      0x54
810
811 #define PHY_I2CM_ADDRESS                0x3021
812 #define PHY_I2CM_DATAO_1                0x3022
813 #define PHY_I2CM_DATAO_0                0x3023
814 #define PHY_I2CM_DATAI_1                0x3024
815 #define PHY_I2CM_DATAI_0                0x3025
816
817 #define PHY_I2CM_OPERATION              0x3026
818 #define m_PHY_I2CM_WRITE        BIT(4)
819 #define m_PHY_I2CM_READ         BIT(0)
820
821 #define PHY_I2CM_INT                    0x3027
822 #define m_PHY_I2CM_DONE_INT_POL BIT(3)
823 #define v_PHY_I2CM_DONE_INT_POL(n) (((n) & 0x01) << 3)
824 #define m_PHY_I2CM_DONE_MASK    BIT(2)
825 #define v_PHY_I2CM_DONE_MASK(n) (((n) & 0x01) << 2)
826 #define m_PHY_I2CM_DONE_INT     BIT(1)
827 #define m_PHY_I2CM_DONE_STATUS  BIT(0)
828
829 #define PHY_I2CM_CTLINT                 0x3028
830 #define m_PHY_I2CM_NACK_POL     BIT(7)
831 #define v_PHY_I2CM_NACK_POL(n)  (((n) & 0x01) << 7)
832 #define m_PHY_I2CM_NACK_MASK    BIT(6)
833 #define v_PHY_I2CM_NACK_MASK(n) (((n) & 0x01) << 6)
834 #define m_PHY_I2CM_NACK_INT     BIT(5)
835 #define m_PHY_I2CM_NACK_STATUS  BIT(4)
836 #define m_PHY_I2CM_ARB_POL      BIT(3)
837 #define v_PHY_I2CM_ARB_POL(n)   (((n) & 0x01) << 3)
838 #define m_PHY_I2CM_ARB_MASK     BIT(2)
839 #define v_PHY_I2CM_ARB_MASK(n)  (((n) & 0x01) << 2)
840 #define m_PHY_I2CM_ARB_INT      BIT(1)
841 #define m_PHY_I2CM_ARB_STATUS   BIT(0)
842
843 #define PHY_I2CM_DIV                    0x3029
844 #define m_PHY_I2CM_FAST_STD     BIT(3)
845 #define v_PHY_I2CM_FAST_STD(n)  (((n) & 0x01) << 3)
846
847 #define PHY_I2CM_SOFTRSTZ               0x302a
848 #define m_PHY_I2CM_SOFTRST      BIT(0)
849 #define v_PHY_I2CM_SOFTRST(n)   (((n) & 0x01) << 0)
850
851 #define PHY_I2CM_SS_SCL_HCNT_1_ADDR     0x302b
852 #define PHY_I2CM_SS_SCL_HCNT_0_ADDR     0x302c
853 #define PHY_I2CM_SS_SCL_LCNT_1_ADDR     0x302d
854 #define PHY_I2CM_SS_SCL_LCNT_0_ADDR     0x302e
855 #define PHY_I2CM_FS_SCL_HCNT_1_ADDR     0x302f
856 #define PHY_I2CM_FS_SCL_HCNT_0_ADDR     0x3030
857 #define PHY_I2CM_FS_SCL_LCNT_1_ADDR     0x3031
858 #define PHY_I2CM_FS_SCL_LCNT_0_ADDR     0x3032
859 #define PHY_I2CM_SDA_HOLD               0x3033
860
861 /* Audio Sampler Registers */
862 #define AUDIO_SAMPLER_BASE              0x3100
863
864 #define AUD_CONF0                       0x3100
865 #define m_SW_AUD_FIFO_RST       BIT(7)
866 #define v_SW_AUD_FIFO_RST(n)    (((n) & 0x01) << 7)
867 enum {
868         AUDIO_SPDIF_GPA = 0,
869         AUDIO_I2S
870 };
871
872 #define m_I2S_SEL               BIT(5)
873 #define v_I2S_SEL(n)            (((n) & 0x01) << 5)
874 enum {
875         I2S_CHANNEL_1_2 = 1,
876         I2S_CHANNEL_3_4 = 3,
877         I2S_CHANNEL_5_6 = 7,
878         I2S_CHANNEL_7_8 = 0xf
879 };
880
881 #define m_I2S_IN_EN             (0x0f << 0)
882 #define v_I2S_IN_EN(n)          (((n) & 0x0f) << 0)
883
884 #define AUD_CONF1                       0x3101
885 enum I2S_MODE {
886         I2S_STANDARD_MODE = 0,
887         I2S_RIGHT_JUSTIFIED_MODE,
888         I2S_LEFT_JUSTIFIED_MODE,
889         I2S_BURST_1_MODE,
890         I2S_BURST_2_MODE
891 };
892
893 #define m_I2S_MODE              (0x07 << 5)
894 #define v_I2S_MODE(n)           (((n) & 0x07) << 5)
895 enum I2S_WIDTH {
896         I2S_16BIT_SAMPLE = 16,
897         I2S_17BIT_SAMPLE,
898         I2S_18BIT_SAMPLE,
899         I2S_19BIT_SAMPLE,
900         I2S_20BIT_SAMPLE,
901         I2S_21BIT_SAMPLE,
902         I2S_22BIT_SAMPLE,
903         I2S_23BIT_SAMPLE,
904         I2S_24BIT_SAMPLE,
905 };
906
907 #define m_I2S_WIDTH             (0x1f << 0)
908 #define v_I2S_WIDTH(n)          (((n) & 0x1f) << 0)
909
910 #define AUD_INT                         0x3102
911 #define AUD_SPDIFINT                    0x3302
912 #define m_FIFO_EMPTY_MASK       BIT(3)
913 #define v_FIFO_EMPTY_MASK(n)    (((n) & 0x01) << 3)
914 #define m_FIFO_FULL_MASK        BIT(2)
915 #define v_FIFO_FULL_MASK(n)     (((n) & 0x01) << 2)
916
917 #define AUD_CONF2                       0x3103
918 #define m_NLPCM_EN              BIT(1)
919 #define v_NLPCM_EN(n)           (((n) & 0x01) << 1)
920 #define m_HBR_EN                BIT(0)
921 #define v_HBR_EN(n)             (((n) & 0x01) << 0)
922
923 #define AUD_INT1                        0x3104
924 #define AUD_SPDIFINT1                   0x3303
925 #define m_FIFO_OVERRUN_MASK     BIT(4)
926 #define v_FIFO_OVERRUN_MASK(n)  (((n) & 0x01) << 4)
927
928 /***************N-CTS Table**************/
929 /*      TMDS LOWCLK:    <=148.5M        */
930 /*      TMDS MIDCLK:    297M            */
931 /*      TMDS HIGHCLK:   594M            */
932 #define N_32K_LOWCLK            0x1000
933 #define N_32K_MIDCLK            0x0c00
934 #define N_32K_HIGHCLK           0x0c00
935 #define N_441K_LOWCLK           0x1880
936 #define N_441K_MIDCLK           0x1260
937 #define N_441K_HIGHCLK          0x24c0
938 #define N_48K_LOWCLK            0x1800
939 #define N_48K_MIDCLK            0x1400
940 #define N_48K_HIGHCLK           0x1800
941 #define N_882K_LOWCLK           0x3100
942 #define N_882K_MIDCLK           0x24c0
943 #define N_882K_HIGHCLK          0x4980
944 #define N_96K_LOWCLK            0x3000
945 #define N_96K_MIDCLK            0x2800
946 #define N_96K_HIGHCLK           0x3000
947 #define N_1764K_LOWCLK          0x6200
948 #define N_1764K_MIDCLK          0x4980
949 #define N_1764K_HIGHCLK         0x9300
950 #define N_192K_LOWCLK           0x6000
951 #define N_192K_MIDCLK           0x5000
952 #define N_192K_HIGHCLK          0x6000
953
954 #define CALC_CTS(N, TMDSCLK, FS)        (((N) / 32) * (TMDSCLK) / ((FS) * 4))
955 /****************************************/
956
957 #define AUD_N1                          0x3200
958 #define AUD_N2                          0x3201
959
960 #define AUD_N3                          0x3202
961 #define m_NCTS_ATOMIC_WR        BIT(7)
962 #define v_NCTS_ATOMIC_WR(n)     (((n) & 0x01) << 7)
963 #define m_AUD_N3                (0x0f << 0)
964 #define v_AUD_N3(n)             (((n) & 0x0f) << 0)
965
966 #define AUD_CTS1                        0x3203
967 #define AUD_CTS2                        0x3204
968
969 #define AUD_CTS3                        0x3205
970 enum {
971         N_SHIFT_1 = 0,
972         N_SHIFT_16,
973         N_SHIFT_32,
974         N_SHIFT_64,
975         N_SHIFT_128,
976         N_SHIFT_256,
977         N_SHIFT_OTHERS_128
978 };
979
980 #define m_N_SHIFT               (0x07 << 5)
981 #define v_N_SHIFT(n)            (((n) & 0x07) << 5)
982 #define m_CTS_MANUAL            BIT(4)
983 #define v_CTS_MANUAL(n)         (((n) & 0x01) << 4)
984 #define m_AUD_CTS3              (0x0f << 0)
985 #define v_AUD_CTS3(n)           (((n) & 0x0f) << 0)
986
987 #define AUD_INPUTCLKFS                  0x3206
988 enum {
989         FS_128 = 0,
990         FS_256,
991         FS_512,
992         FS_64 = 4,
993         FS_OTHERS_128
994 };
995
996 #define m_LFS_FACTOR            (0x07 << 0)
997 #define v_LFS_FACTOR(n)         (((n) & 0x07) << 0)
998
999 #define AUD_SPDIF0                      0x3300
1000 #define m_SW_SAUD_FIFO_RST      BIT(7)
1001 #define v_SW_SAUD_FIFO_RST(n)   (((n) & 0x01) << 7)
1002
1003 #define AUD_SPDIF1                      0x3301
1004 enum {
1005         PCM_LINEAR = 0,
1006         PCM_NONLINEAR
1007 };
1008
1009 #define m_SET_NLPCM             BIT(7)
1010 #define v_SET_NLPCM(n)          (((n) & 0x01) << 7)
1011 #define m_SPDIF_HBR_MODE        BIT(6)
1012 #define v_SPDIF_HBR_MODE(n)     (((n) & 0x01) << 6)
1013 #define m_SPDIF_WIDTH           (0x1f << 0)
1014 #define v_SPDIF_WIDTH(n)        (((n) & 0x1f) << 0)
1015
1016 /* Generic Parallel Audio Interface Registers */
1017 #define GP_AUDIO_INTERFACE_BASE         0x3500
1018
1019 #define GP_CONF0                        0x3500
1020 #define GP_CONF1                        0x3501
1021 #define GP_CONF2                        0x3502
1022 #define GP_MASK                         0x3506
1023
1024 /* Audio DMA Registers */
1025 #define AUDIO_DMA_BASE                  0x3600
1026
1027 #define AHB_DMA_CONF0                   0x3600
1028 #define AHB_DMA_START                   0x3601
1029 #define AHB_DMA_STOP                    0x3602
1030 #define AHB_DMA_THRSLD                  0x3603
1031 #define AHB_DMA_STRADDR_SET0_0          0x3604  /* 0~3 */
1032 #define AHB_DMA_STPADDR_SET0_0          0x3608  /* 0~3 */
1033 #define AHB_DMA_BSTADDR0                0x360c  /* 0~3 */
1034 #define AHB_DMA_MBLENGTH0               0x3610  /* 0~3 */
1035 #define AHB_DMA_MASK                    0x3614
1036 #define AHB_DMA_CONF1                   0x3616
1037 #define AHB_DMA_BUFFMASK                0x3619
1038 #define AHB_DMA_MASK1                   0x361b
1039 #define AHB_DMA_STATUS                  0x361c
1040 #define AHB_DMA_CONF2                   0x361d
1041 #define AHB_DMA_STRADDR_SET1_0          0x3620  /* 0~3 */
1042 #define AHB_DMA_STPADDR_SET1_0          0x3624  /* 0~3 */
1043
1044 /* Main Controller Registers */
1045 #define MAIN_CONTROLLER_BASE            0x4000
1046
1047 #define MC_CLKDIS                       0x4001
1048 #define m_HDCPCLK_DISABLE       BIT(6)
1049 #define v_HDCPCLK_DISABLE(n)    (((n) & 0x01) << 6)
1050 #define m_CECCLK_DISABLE        BIT(5)
1051 #define v_CECCLK_DISABLE(n)     (((n) & 0x01) << 5)
1052 #define m_CSCCLK_DISABLE        BIT(4)
1053 #define v_CSCCLK_DISABLE(n)     (((n) & 0x01) << 4)
1054 #define m_AUDCLK_DISABLE        BIT(3)
1055 #define v_AUDCLK_DISABLE(n)     (((n) & 0x01) << 3)
1056 #define m_PREPCLK_DISABLE       BIT(2)
1057 #define v_PREPCLK_DISABLE(n)    (((n) & 0x01) << 2)
1058 #define m_TMDSCLK_DISABLE       BIT(1)
1059 #define v_TMDSCLK_DISABLE(n)    (((n) & 0x01) << 1)
1060 #define m_PIXELCLK_DISABLE      BIT(0)
1061 #define v_PIXELCLK_DISABLE(n)   (((n) & 0x01) << 0)
1062
1063 #define MC_SWRSTZREQ                    0x4002
1064 #define m_IGPA_SWRST            BIT(7)
1065 #define v_IGPA_SWRST(n)         (((n) & 0x01) << 7)
1066 #define m_CEC_SWRST             BIT(6)
1067 #define v_CEC_SWRST(n)          (((n) & 0x01) << 6)
1068 #define m_ISPDIF_SWRST          BIT(4)
1069 #define v_ISPDIF_SWRST(n)       (((n) & 0x01) << 4)
1070 #define m_II2S_SWRST            BIT(3)
1071 #define v_II2S_SWRST(n)         (((n) & 0x01) << 3)
1072 #define m_PREP_SWRST            BIT(2)
1073 #define v_PREP_SWRST(n)         (((n) & 0x01) << 2)
1074 #define m_TMDS_SWRST            BIT(1)
1075 #define v_TMDS_SWRST(n)         (((n) & 0x01) << 1)
1076 #define m_PIXEL_SWRST           BIT(0)
1077 #define v_PIXEL_SWRST(n)        (((n) & 0x01) << 0)
1078
1079 #define MC_OPCTRL                       0x4003
1080 #define m_HDCP_BLOCK_BYP        BIT(0)
1081 #define v_HDCP_BLOCK_BYP(n)     (((n) & 0x01) << 0)
1082
1083 #define MC_FLOWCTRL                     0x4004
1084 #define m_FEED_THROUGH_OFF      BIT(0)
1085 #define v_FEED_THROUGH_OFF(n)   (((n) & 0x01) << 0)
1086
1087 #define MC_PHYRSTZ                      0x4005
1088 #define m_PHY_RSTZ              BIT(0)
1089 #define v_PHY_RSTZ(n)           (((n) & 0x01) << 0)
1090
1091 #define MC_LOCKONCLOCK                  0x4006
1092 #define m_IGPACLK_ON            BIT(7)
1093 #define v_IGPACLK_ON(n)         (((n) & 0x01) << 7)
1094 #define m_PCLK_ON               BIT(6)
1095 #define v_PCLK_ON(n)            (((n) & 0x01) << 6)
1096 #define m_TMDSCLK_ON            BIT(5)
1097 #define v_TMDSCLK_ON(n)         (((n) & 0x01) << 5)
1098 #define m_PREPCLK_ON            BIT(4)
1099 #define v_PREPCLK_ON(n)         (((n) & 0x01) << 4)
1100 #define m_I2SCLK_ON             BIT(3)
1101 #define v_I2SCLK_ON(n)          (((n) & 0x01) << 3)
1102 #define m_SPDIFCLK_ON           BIT(2)
1103 #define v_SPDIFCLK_ON(n)        (((n) & 0x01) << 2)
1104 #define m_CECCLK_ON             BIT(0)
1105 #define v_CECCLK_ON(n)          (((n) & 0x01) << 0)
1106
1107 #define MC_HEACPHY_RST                  0x4007
1108 #define m_HEAC_PHY_RST          BIT(0)
1109 #define v_HEAC_PHY_RST(n)       (((n) & 0x01) << 0)
1110
1111 #define MC_LOCKONCLOCK_2                0x4009
1112 #define m_AHB_AUD_DMA_CLK       BIT(0)
1113 #define v_AHB_AUD_DMA_CLK(n)    (((n) & 0x01) << 0)
1114
1115 #define MC_SWRSTZREQ_2                  0x400a
1116 #define m_AHB_AUD_DMA_RST       BIT(7)
1117 #define v_AHB_AUD_DMA_RST(n)    (((n) & 0x01) << 7)
1118
1119 /* Color Space Converter Registers */
1120 #define COLOR_SPACE_CONVERTER_BASE      0x4100
1121
1122 #define CSC_CFG                         0x4100
1123 #define m_CSC_INTPMODE          (0x03 << 4)
1124 #define v_CSC_INTPMODE(n)       (((n) & 0x03) << 4)
1125 #define m_CSC_DECIMODE          (0x03 << 0)
1126 #define v_CSC_DECIMODE(n)       (((n) & 0x03) << 0)
1127
1128 #define CSC_SCALE                       0x4101
1129 #define m_CSC_COLOR_DEPTH       (0x0f << 4)
1130 #define v_CSC_COLOR_DEPTH(n)    (((n) & 0x0f) << 4)
1131 #define m_CSC_SCALE             (0x03 << 0)
1132 #define v_CSC_SCALE(n)          (((n) & 0x03) << 0)
1133
1134 #define CSC_COEF_A1_MSB                 0x4102
1135 #define CSC_COEF_A1_LSB                 0x4103
1136 #define CSC_COEF_A2_MSB                 0x4104
1137 #define CSC_COEF_A2_LSB                 0x4105
1138 #define CSC_COEF_A3_MSB                 0x4106
1139 #define CSC_COEF_A3_LSB                 0x4107
1140 #define CSC_COEF_A4_MSB                 0x4108
1141 #define CSC_COEF_A4_LSB                 0x4109
1142 #define CSC_COEF_B1_MSB                 0x410a
1143 #define CSC_COEF_B1_LSB                 0x410b
1144 #define CSC_COEF_B2_MSB                 0x410c
1145 #define CSC_COEF_B2_LSB                 0x410d
1146 #define CSC_COEF_B3_MSB                 0x410e
1147 #define CSC_COEF_B3_LSB                 0x410f
1148 #define CSC_COEF_B4_MSB                 0x4110
1149 #define CSC_COEF_B4_LSB                 0x4111
1150 #define CSC_COEF_C1_MSB                 0x4112
1151 #define CSC_COEF_C1_LSB                 0x4113
1152 #define CSC_COEF_C2_MSB                 0x4114
1153 #define CSC_COEF_C2_LSB                 0x4115
1154 #define CSC_COEF_C3_MSB                 0x4116
1155 #define CSC_COEF_C3_LSB                 0x4117
1156 #define CSC_COEF_C4_MSB                 0x4118
1157 #define CSC_COEF_C4_LSB                 0x4119
1158 #define CSC_SPARE_1                     0x411a
1159 #define CSC_SPARE_2                     0x411b
1160
1161 /* HDCP Encryption Engine Registers */
1162 #define HDCP_ENCRYPTION_ENGINE_BASE     0x5000
1163
1164 #define A_HDCPCFG0                      0x5000
1165 #define m_HDCP_ENHANCE_LIKE     BIT(7)
1166 #define v_HDCP_ENHANCE_LIKE(n)  (((n) & 0x01) << 7)
1167 #define m_I2C_FAST_MODE         BIT(6)
1168 #define v_I2C_FAST_MODE(n)      (((n) & 0x01) << 6)
1169 #define m_ENCRYPT_BYPASS        BIT(5)
1170 #define v_ENCRYPT_BYPASS(n)     (((n) & 0x01) << 5)
1171 #define m_SYNC_RI_CHECK         BIT(4)
1172 #define v_SYNC_RI_CHECK(n)      (((n) & 0x01) << 4)
1173 #define m_AVMUTE                BIT(3)
1174 #define m_RX_DETECT             BIT(2)
1175 #define v_RX_DETECT(n)          (((n) & 0x01) << 2)
1176 #define m_FEATURE11_EN          BIT(1)
1177 #define v_FEATURE11_EN(n)       (((n) & 0x01) << 1)
1178 #define m_HDMI_DVI              BIT(0)
1179 #define v_HDMI_DVI(n)           (((n) & 0x01) << 0)
1180
1181 #define A_HDCPCFG1                      0x5001
1182 #define m_HDCP_LOCK             BIT(4)
1183 #define v_HDCP_LOCK(n)          (((n) & 0x01) << 4)
1184 #define m_SHA1_CHECK_DISABLE    BIT(3)
1185 #define v_SHA1_CHECK_DISBALE(n) (((n) & 0x01) << 3)
1186 #define m_PH2UPSHFTENC          BIT(2)
1187 #define v_PH2UPSHFTENC(n)       (((n) & 0x01) << 2)
1188 #define m_ENCRYPT_DISBALE       BIT(1)
1189 #define v_ENCRYPT_DISBALE(n)    (((n) & 0x01) << 1)
1190 #define m_HDCP_SW_RST           BIT(0)
1191 #define v_HDCP_SW_RST(n)        (((n) & 0x01) << 0)
1192
1193 #define A_HDCPOBS0                      0x5002
1194 #define m_STATE_AUTH            (0x0f << 4)
1195 #define m_SUB_STATE_AUTH        (0x07 << 1)
1196 #define m_STATE_HDCP_ENGAGED    BIT(0)
1197
1198 #define A_HDCPOBS1                      0x5003
1199 #define m_STATE_OESS            (0x07 << 3)
1200 #define m_STATE_REVO            (0x07 << 0)
1201
1202 #define A_HDCPOBS2                      0x5004
1203 #define m_STATE_CIPHER          (0x07 << 3)
1204 #define m_STATE_EESS            (0x07 << 0)
1205
1206 #define A_HDCPOBS3                      0x5005
1207 #define m_BCAP_REPEATER         BIT(6)
1208 #define m_BCAP_KSVFIFO_READY    BIT(5)
1209 #define m_BCAP_FAST_I2C         BIT(4)
1210 #define m_BCAP_HDMI_MODE        BIT(2)
1211 #define m_BCAP_FEATURES11       BIT(1)
1212 #define m_BCAP_FAST_REAUTH      BIT(0)
1213
1214 #define A_APIINTCLR                     0x5006
1215 #define A_APIINTSTAT                    0x5007
1216 #define A_APIINTMSK                     0x5008
1217 #define m_HDCP_ENGAGED          BIT(7)
1218 #define m_HDCP_FAILED           BIT(6)
1219 #define m_HDCP_I2C_NOACK        BIT(4)
1220 #define m_HDCP_LOST_ARBI        BIT(3)
1221 #define m_KEEP_ERR_INT          BIT(2)
1222 #define m_KSVSHA1_CALC_INT      BIT(1)
1223 #define m_KSV_ACCESS_INT        BIT(0)
1224 #define v_HDCP_ENGAGED(n)       (((n) & 0x01) << 7)
1225 #define v_HDCP_FAILED(n)        (((n) & 0x01) << 6)
1226 #define v_HDCP_I2C_NOACK(n)     (((n) & 0x01) << 4)
1227 #define v_HDCP_LOST_ARBI(n)     (((n) & 0x01) << 3)
1228 #define v_KEEP_ERR_INT(n)       (((n) & 0x01) << 1)
1229 #define v_KSVSHA1_CALC_INT(n)   (((n) & 0x01) << 1)
1230 #define v_KSV_ACCESS_INT(n)     (((n) & 0x01) << 0)
1231
1232 #define A_VIDPOLCFG                     0x5009
1233 #define m_UNENCRYT_CONF         (0x03 << 5)
1234 #define v_UNENCRYT_CONF(n)      (((n) & 0x03) << 5)
1235 #define m_DATAEN_POL            BIT(4)
1236 #define v_DATAEN_POL(n)         (((n) & 0x01) << 4)
1237 #define m_VSYNC_POL             BIT(3)
1238 #define v_VSYNC_POL(n)          (((n) & 0x01) << 3)
1239 #define m_HSYNC_POL             BIT(1)
1240 #define v_HSYNC_POL(n)          (((n) & 0x01) << 1)
1241
1242 #define A_OESSWCFG                      0x500a
1243 #define A_COREVERLSB                    0x5014
1244 #define A_COREVERMSB                    0x5015
1245
1246 #define A_KSVMEMCTRL                    0x5016
1247 #define m_SHA1_FAIL             BIT(3)
1248 #define v_SHA1_FAIL(n)          (((n) & 0x01) << 3)
1249 #define m_KSV_UPDATE            BIT(2)
1250 #define v_KSV_UPDATE(n)         (((n) & 0x01) << 2)
1251 #define m_KSV_MEM_ACCESS        BIT(1)
1252 #define m_KSV_MEM_REQ           BIT(0)
1253 #define v_KSV_MEM_REQ(n)        (((n) & 0x01) << 0)
1254
1255 #define HDCP_BSTATUS_0                  0x5020
1256 #define m_MAX_DEVS_EXCEEDED     BIT(7)
1257 #define m_DEVICE_COUNT          (0x7f << 0)
1258
1259 #define HDCP_BSTATUS_1                  0x5021
1260 #define HDCP_M0_0                       0x5022
1261 #define HDCP_M0_1                       0x5023
1262 #define HDCP_M0_2                       0x5024
1263 #define HDCP_M0_3                       0x5025
1264 #define HDCP_M0_4                       0x5026
1265 #define HDCP_M0_5                       0x5027
1266 #define HDCP_M0_6                       0x5028
1267 #define HDCP_M0_7                       0x5029
1268 #define HDCP_KSV                        0x502a  /* 0~634 */
1269 #define HDCP_VH                         0x52a5  /* 0~19 */
1270 #define HDCP_REVOC_SIZE_0               0x52b9
1271 #define HDCP_REVOC_SIZE_1               0x52ba
1272 #define HDCP_REVOC_LIST                 0x52bb  /* 0~5059 */
1273
1274 /* HDCP BKSV Registers */
1275 #define HDCP_BKSV_BASE                  0x7800
1276
1277 #define HDCPREG_BKSV0                   0x7800
1278 #define HDCPREG_BKSV1                   0x7801
1279 #define HDCPREG_BKSV2                   0x7802
1280 #define HDCPREG_BKSV3                   0x7803
1281 #define HDCPREG_BKSV4                   0x7804
1282
1283 /* HDCP AN Registers */
1284 #define HDCP_AN_BASE                    0x7805
1285
1286 #define HDCPREG_ANCONF                  0x7805
1287 #define m_OAN_BYPASS            BIT(0)
1288 #define v_OAN_BYPASS(n)         (((n) & 0x01) << 0)
1289
1290 #define HDCPREG_AN0                     0x7806
1291 #define HDCPREG_AN1                     0x7807
1292 #define HDCPREG_AN2                     0x7808
1293 #define HDCPREG_AN3                     0x7809
1294 #define HDCPREG_AN4                     0x780a
1295 #define HDCPREG_AN5                     0x780b
1296 #define HDCPREG_AN6                     0x780c
1297 #define HDCPREG_AN7                     0x780d
1298
1299 /* Encrypted DPK Embedded Storage Registers */
1300 #define ENCRYPTED_DPK_EMBEDDED_BASE     0x780e
1301
1302 #define HDCPREG_RMCTL                   0x780e
1303 #define m_DPK_DECRYPT_EN        BIT(0)
1304 #define v_DPK_DECRYPT_EN(n)     (((n) & 0x01) << 0)
1305
1306 #define HDCPREG_RMSTS                   0x780f
1307 #define m_DPK_WR_OK_STS         BIT(6)
1308 #define m_DPK_DATA_INDEX        (0x3f << 6)
1309
1310 #define HDCPREG_SEED0                   0x7810
1311 #define HDCPREG_SEED1                   0x7811
1312 #define HDCPREG_DPK0                    0x7812
1313 #define HDCPREG_DPK1                    0x7813
1314 #define HDCPREG_DPK2                    0x7814
1315 #define HDCPREG_DPK3                    0x7815
1316 #define HDCPREG_DPK4                    0x7816
1317 #define HDCPREG_DPK5                    0x7817
1318 #define HDCPREG_DPK6                    0x7818
1319
1320 #define HDCP2REG_BASE                   0x7900
1321 #define HDCP2REG_ID                     0x7900
1322 #define HDCP2REG_CTRL                   0x7904
1323         #define m_HDCP2_HDP_OVR_VAL     BIT(5)
1324         #define m_HDCP2_HDP_OVR_EN      BIT(4)
1325         #define m_HDCP2_FORCE           BIT(2)
1326         #define m_HDCP2_OVR_EN          BIT(1)
1327         #define m_HDCP2_SWITCH_EN       BIT(0)
1328
1329         #define v_HDCP2_HDP_OVR_VAL(n)  (((n) & 0x01) << 5)
1330         #define v_HDCP2_HDP_OVR_EN(n)   (((n) & 0x01) << 4)
1331         #define v_HDCP2_FORCE(n)        (((n) & 0x01) << 2)
1332         #define v_HDCP2_OVR_EN(n)       (((n) & 0x01) << 1)
1333         #define v_HDCP2_SWITCH_EN(n)    (((n) & 0x01) << 0)
1334 #define HDCP2REG_CTRL1                  0x7905
1335         #define m_HDCP2_CD_VAL          (0xf << 4)
1336         #define m_HDCP2_CD_EN           BIT(3)
1337         #define m_HDCP2_AVMUTE_OVR_VAL  BIT(1)
1338         #define m_HDCP2_AVMUTE_OVR_EN   BIT(0)
1339
1340         #define v_HDCP2_CD_VAL(n)               (((n) & 0x0f) << 4)
1341         #define v_HDCP2_CD_EN(n)                (((n) & 0x01) << 3)
1342         #define v_HDCP2_AVMUTE_OVR_VAL(n)       (((n) & 0x01) << 1)
1343         #define v_HDCP2_AVMUTE_OVR_EN(n)        (((n) & 0x01) << 0)
1344 #define HDCP2REG_STAS                   0x7908
1345 #define HDCP2REG_MASK                   0x790c
1346 #define HDCP2REG_STAT                   0x790d
1347 #define HDCP2REG_MUTE                   0x790e
1348         #define m_HDCP2_CAPABLE         BIT(0)
1349         #define m_HDCP2_NOTCAPABLE      BIT(1)
1350         #define m_HDCP2_AUTH_LOST       BIT(2)
1351         #define m_HDCP2_AUTH_OK         BIT(3)
1352         #define m_HDCP2_AUTH_FAIL       BIT(4)
1353         #define m_HDCP2_DECRYPTED_CHG   BIT(5)
1354
1355 /* CEC Engine Registers */
1356 #define CEC_ENGINE_BASE                 0x7d00
1357
1358 #define CEC_CTRL                        0x7d00
1359         #define m_CEC_STANBY            BIT(4)
1360         #define m_CEC_BC_NCK            BIT(3)
1361         #define m_CEC_FRAME_TYPE        (3 << 1)
1362         #define m_CEC_SEND              BIT(0)
1363         #define v_CEC_STANBY(n)         ((n & 0x1) << 4)
1364         #define v_CEC_BC_NCK(n)         ((n & 0x1) << 3)
1365         #define v_CEC_FRAME_TYPE(n)     ((n & 0x3) << 1)
1366         #define v_CEC_SEND(n)           (n & 0x1)
1367 #define CEC_MASK                        0x7d02
1368 #define CEC_ADDR_L                      0x7d05
1369 #define CEC_ADDR_H                      0x7d06
1370 #define CEC_TX_CNT                      0x7d07
1371 #define CEC_RX_CNT                      0x7d08
1372 #define CEC_TX_DATA0                    0x7d10  /* txdata0~txdata15 */
1373 #define CEC_RX_DATA0                    0x7d20  /* rxdata0~rxdata15 */
1374 #define CEC_LOCK                        0x7d30
1375 #define CEC_WKUPCTRL                    0x7d31
1376
1377 /* I2C Master Registers */
1378 #define I2C_MASTER_BASE                 0x7e00
1379
1380 #define I2CM_SLAVE                      0x7e00
1381 #define I2CM_ADDRESS                    0x7e01
1382 #define I2CM_DATAO                      0x7e02
1383 #define I2CM_DATAI                      0x7e03
1384
1385 #define I2CM_OPERATION                  0x7e04
1386 #define m_I2CM_WR               BIT(4)
1387 #define v_I2CM_WR(n)            (((n) & 0x01) << 4)
1388 #define m_I2CM_RD8_EXT          BIT(3)
1389 #define v_I2CM_RD8_EXT(n)       (((n) & 0x01) << 3)
1390 #define m_I2CM_RD8              BIT(2)
1391 #define v_I2CM_RD8(n)           (((n) & 0x01) << 2)
1392 #define m_I2CM_RD_EXT           BIT(1)
1393 #define v_I2CM_RD_EXT(n)        (((n) & 0x01) << 1)
1394 #define m_I2CM_RD               BIT(0)
1395 #define v_I2CM_RD(n)            (((n) & 0x01) << 0)
1396
1397 #define I2CM_INT                        0x7e05
1398 #define m_I2CM_RD_REQ_MASK      BIT(6)
1399 #define v_I2CM_RD_REQ_MASK(n)   (((n) & 0x01) << 6)
1400 #define m_I2CM_DONE_MASK        BIT(2)
1401 #define v_I2CM_DONE_MASK(n)     (((n) & 0x01) << 2)
1402
1403 #define I2CM_CTLINT                     0x7e06
1404 #define m_I2CM_NACK_MASK        BIT(6)
1405 #define v_I2CM_NACK_MASK(n)     (((n) & 0x01) << 6)
1406 #define m_I2CM_ARB_MASK         BIT(2)
1407 #define v_I2CM_ARB_MASK(n)      (((n) & 0x01) << 2)
1408
1409 #define I2CM_DIV                        0x7e07
1410 enum {
1411         STANDARD_MODE = 0,
1412         FAST_MODE
1413 };
1414
1415 #define m_I2CM_FAST_STD_MODE    BIT(3)
1416 #define v_I2CM_FAST_STD_MODE(n) (((n) & 0x01) << 3)
1417
1418 #define I2CM_SEGADDR                    0x7e08
1419 #define m_I2CM_SEG_ADDR         (0x7f << 0)
1420 #define v_I2CM_SEG_ADDR(n)      (((n) & 0x7f) << 0)
1421
1422 #define I2CM_SOFTRSTZ                   0x7e09
1423 #define m_I2CM_SOFTRST          BIT(0)
1424 #define v_I2CM_SOFTRST(n)       (((n) & 0x01) << 0)
1425
1426 #define I2CM_SEGPTR                     0x7e0a
1427 #define I2CM_SS_SCL_HCNT_1_ADDR         0x7e0b
1428 #define I2CM_SS_SCL_HCNT_0_ADDR         0x7e0c
1429 #define I2CM_SS_SCL_LCNT_1_ADDR         0x7e0d
1430 #define I2CM_SS_SCL_LCNT_0_ADDR         0x7e0e
1431 #define I2CM_FS_SCL_HCNT_1_ADDR         0x7e0f
1432 #define I2CM_FS_SCL_HCNT_0_ADDR         0x7e10
1433 #define I2CM_FS_SCL_LCNT_1_ADDR         0x7e11
1434 #define I2CM_FS_SCL_LCNT_0_ADDR         0x7e12
1435 #define I2CM_SDA_HOLD                   0x7e13
1436
1437 #define I2CM_SCDC_READ_UPDATE           0x7e14
1438 #define m_I2CM_UPRD_VSYNC_EN    BIT(5)
1439 #define v_I2CM_UPRD_VSYNC_EN(n) (((n) & 0x01) << 5)
1440 #define m_I2CM_READ_REQ_EN      BIT(4)
1441 #define v_I2CM_READ_REQ_EN(n)   (((n) & 0x01) << 4)
1442 #define m_I2CM_READ_UPDATE      BIT(0)
1443 #define v_I2CM_READ_UPDATE(n)   (((n) & 0x01) << 0)
1444
1445 #define I2CM_READ_BUFF0                 0x7e20  /* buff0~buff7 */
1446 #define I2CM_SCDC_UPDATE0               0x7e30
1447 #define I2CM_SCDC_UPDATE1               0x7e31
1448
1449 /*
1450 * HDMI TX PHY Define Start
1451 */
1452 #define PHYTX_OPMODE_PLLCFG             0x06
1453 enum {
1454         PREP_DIV_BY_2 = 0,      /* 16 bits */
1455         PREP_DIV_BY_15,         /* 12 bits */
1456         PREP_DIV_BY_125,        /* 10 bits */
1457         PREP_DIV_BY_1,          /* 8 bits */
1458 };
1459
1460 #define m_PREP_DIV              (0x03 << 13)
1461 #define v_PREP_DIV(n)           (((n) & 0x03) << 13)
1462 enum {
1463         TMDS_DIV_BY_1 = 0,
1464         TMDS_DIV_NOT_USED,
1465         TMDS_DIV_BY_3,
1466         TMDS_DIV_BY_4,
1467 };
1468
1469 #define m_TMDS_CNTRL            (0x03 << 11)
1470 #define v_TMDS_CNTRL(n)         (((n) & 0x03) << 11)
1471 enum OPMODE {
1472         OP_HDMI_14 = 0,
1473         OP_HDMI_20,
1474 };
1475
1476 #define m_OPMODE                (0x03 << 9)
1477 #define v_OPMODE(n)             (((n) & 0x03) << 9)
1478 enum {
1479         FBDIV2_BY_1 = 1,
1480         FBDIV2_BY_2,
1481         FBDIV2_BY_3,
1482         FBDIV2_BY_4,
1483         FBDIV2_BY_5,
1484         FBDIV2_BY_6,
1485 };
1486
1487 #define m_FBDIV2_CNTRL          (0x07 << 6)
1488 #define v_FBDIV2_CNTRL(n)       (((n) & 0x07) << 6)
1489 enum {
1490         FBDIV1_BY_1 = 0,
1491         FBDIV1_BY_2,
1492         FBDIV1_BY_3,
1493         FBDIV1_BY_4,
1494 };
1495
1496 #define m_FBDIV1_CNTRL          (0x03 << 4)
1497 #define v_FBDIV1_CNTRL(n)       (((n) & 0x03) << 4)
1498 enum {
1499         REF_DIV_BY_1 = 0,
1500         REF_DIV_BY_2,
1501         REF_DIV_NOT_USED,
1502         REF_DIV_BY_4,
1503 };
1504
1505 #define m_REF_CNTRL             (0x03 << 2)
1506 #define v_REF_CNTRL(n)          (((n) & 0x03) << 2)
1507 #define m_MPLL_N_CNTRL          (0x03 << 0)
1508 #define v_MPLL_N_CNTRL(n)       (((n) & 0x03) << 0)
1509
1510 #define PHYTX_CLKSYMCTRL                0x09
1511 #define v_OVERRIDE(n)           (0x01 << 15)
1512 #define m_SLOPEBOOST            (0x03 << 4)
1513 #define v_SLOPEBOOST(n)         (((n) & 0x03) << 4)
1514 #define m_TX_SYMON              (0x01 << 3)
1515 #define v_TX_SYMON(n)           (((n) & 0x01) << 3)
1516 #define m_PREEMPHASIS           (0x03 << 1)
1517 #define v_PREEMPHASIS(n)        (((n) & 0x03) << 1)
1518 #define m_CLK_SYMON             (0x01 << 0)
1519 #define v_CLK_SYMON(n)          (((n) & 0x01) << 0)
1520
1521 #define PHYTX_VLEVCTRL                  0x0e
1522 #define m_SUP_TXLVL             (0x1f << 5)
1523 #define v_SUP_TXLVL(n)          (((n) & 0x1f) << 5)
1524 #define m_SUP_CLKLVL            (0x1f << 0)
1525 #define v_SUP_CLKLVL(n)         (((n) & 0x1f) << 0)
1526
1527 #define PHYTX_PLLCURRCTRL               0x10
1528 #define m_MPLL_PROP_CNTRL       (0x07 << 3)
1529 #define v_MPLL_PROP_CNTRL(n)    (((n) & 0x07) << 3)
1530 #define m_MPLL_INT_CNTRL        (0x07 << 0)
1531 #define v_MPLL_INT_CNTRL(n)     (((n) & 0x07) << 0)
1532
1533 #define PHYTX_PLLGMPCTRL                0x15
1534 #define m_MPLL_GMP_CNTRL        (0x03 << 0)
1535 #define v_MPLL_GMP_CNTRL(n)     (((n) & 0x03) << 0)
1536
1537 enum TERM_RESIS {
1538         R50_OHMS = 0,
1539         R5714_OHMS,
1540         R6667_OHMS,
1541         R80_OHMS,
1542         R100_OHMS,
1543         R13333_OHMS,
1544         R200_OHMS,
1545         ROPEN_CIRCUIT,
1546 };
1547
1548 #define PHYTX_TERM_RESIS                0x19
1549 #define m_TX_TERM               (0x07 << 0)
1550 #define v_TX_TERM(n)            (((n) & 0x07) << 0)
1551
1552 struct phy_mpll_config_tab {
1553         u32 pix_clock;
1554         u32 tmdsclock;
1555         u8 pix_repet;
1556         u8 color_depth;
1557         u16 prep_div;
1558         u16 tmdsmhl_cntrl;
1559         u16 opmode;
1560         u32 fbdiv2_cntrl;
1561         u16 fbdiv1_cntrl;
1562         u16 ref_cntrl;
1563         u16 n_cntrl;
1564         u32 prop_cntrl;
1565         u32 int_cntrl;
1566         u16 gmp_cntrl;
1567 };
1568
1569 /* PHY Defined for RK322X */
1570 #define EXT_PHY_CONTROL         0
1571         #define EXT_PHY_ANALOG_RESET_MASK               0x80
1572         #define EXT_PHY_DIGITAL_RESET_MASK              0x40
1573         #define EXT_PHY_PCLK_INVERT_MASK                0x08
1574         #define EXT_PHY_PREPCLK_INVERT_MASK             0x04
1575         #define EXT_PHY_TMDSCLK_INVERT_MASK             0x02
1576         #define EXT_PHY_SRC_SELECT_MASK                 0x01
1577
1578 #define EXT_PHY_TERM_CAL                0x03
1579         #define EXT_PHY_TERM_CAL_EN_MASK                0x80
1580         #define EXT_PHY_TERM_CAL_DIV_H_MASK             0x7f
1581
1582 #define EXT_PHY_TERM_CAL_DIV_L          0x04
1583
1584 #define EXT_PHY_PLL_PRE_DIVIDER         0xe2
1585         #define EXT_PHY_PLL_FB_BIT8_MASK                0x80
1586         #define EXT_PHY_PLL_PCLK_DIV5_EN_MASK           0x20
1587         #define EXT_PHY_PLL_PRE_DIVIDER_MASK            0x1f
1588
1589 #define EXT_PHY_PLL_FB_DIVIDER          0xe3
1590
1591 #define EXT_PHY_PCLK_DIVIDER1           0xe4
1592         #define EXT_PHY_PCLK_DIVIDERB_MASK              0x60
1593         #define EXT_PHY_PCLK_DIVIDERA_MASK              0x1f
1594
1595 #define EXT_PHY_PCLK_DIVIDER2           0xe5
1596         #define EXT_PHY_PCLK_DIVIDERC_MASK              0x60
1597         #define EXT_PHY_PCLK_DIVIDERD_MASK              0x1f
1598
1599 #define EXT_PHY_TMDSCLK_DIVIDER         0xe6
1600         #define EXT_PHY_TMDSCLK_DIVIDERC_MASK           0x30
1601         #define EXT_PHY_TMDSCLK_DIVIDERA_MASK           0x0c
1602         #define EXT_PHY_TMDSCLK_DIVIDERB_MASK           0x03
1603
1604 #define EXT_PHY_PLL_BW                  0xe7
1605
1606 #define EXT_PHY_PPLL_PRE_DIVIDER        0xe9
1607         #define EXT_PHY_PPLL_ENABLE_MASK                0xc0
1608         #define EXT_PHY_PPLL_PRE_DIVIDER_MASK           0x1f
1609
1610 #define EXT_PHY_PPLL_FB_DIVIDER         0xea
1611
1612 #define EXT_PHY_PPLL_POST_DIVIDER       0xeb
1613         #define EXT_PHY_PPLL_FB_DIVIDER_BIT8_MASK       0x80
1614         #define EXT_PHY_PPLL_POST_DIVIDER_MASK          0x30
1615         #define EXT_PHY_PPLL_LOCK_STATUS_MASK           0x01
1616
1617 #define EXT_PHY_PPLL_BW                 0xec
1618
1619 #define EXT_PHY_SIGNAL_CTRL             0xee
1620         #define EXT_PHY_TRANSITION_CLK_EN_MASK          0x80
1621         #define EXT_PHY_TRANSITION_D0_EN_MASK           0x40
1622         #define EXT_PHY_TRANSITION_D1_EN_MASK           0x20
1623         #define EXT_PHY_TRANSITION_D2_EN_MASK           0x10
1624         #define EXT_PHY_LEVEL_CLK_EN_MASK               0x08
1625         #define EXT_PHY_LEVEL_D0_EN_MASK                0x04
1626         #define EXT_PHY_LEVEL_D1_EN_MASK                0x02
1627         #define EXT_PHY_LEVEL_D2_EN_MASK                0x01
1628
1629 #define EXT_PHY_SLOPEBOOST              0xef
1630         #define EXT_PHY_SLOPEBOOST_CLK_MASK             0x03
1631         #define EXT_PHY_SLOPEBOOST_D0_MASK              0x0c
1632         #define EXT_PHY_SLOPEBOOST_D1_MASK              0x30
1633         #define EXT_PHY_SLOPEBOOST_D2_MASK              0xc0
1634
1635 #define EXT_PHY_PREEMPHASIS             0xf0
1636         #define EXT_PHY_PREEMPHASIS_D0_MASK             0x03
1637         #define EXT_PHY_PREEMPHASIS_D1_MASK             0x0c
1638         #define EXT_PHY_PREEMPHASIS_D2_MASK             0x30
1639
1640 #define EXT_PHY_LEVEL1                  0xf1
1641         #define EXT_PHY_LEVEL_CLK_MASK                  0xf0
1642         #define EXT_PHY_LEVEL_D2_MASK                   0x0f
1643
1644 #define EXT_PHY_LEVEL2                  0xf2
1645         #define EXT_PHY_LEVEL_D1_MASK                   0xf0
1646         #define EXT_PHY_LEVEL_D0_MASK                   0x0f
1647
1648 #define EXT_PHY_TERM_RESIS_AUTO         0xf4
1649         #define EXT_PHY_AUTO_R50_OHMS                   0
1650         #define EXT_PHY_AUTO_R75_OHMS                   BIT(2)
1651         #define EXT_PHY_AUTO_R100_OHMS                  (2 << 2)
1652         #define EXT_PHY_AUTO_ROPEN_CIRCUIT              (3 << 2)
1653
1654 #define EXT_PHY_TERM_RESIS_MANUAL_CLK   0xfb
1655 #define EXT_PHY_TERM_RESIS_MANUAL_D2    0xfc
1656 #define EXT_PHY_TERM_RESIS_MANUAL_D1    0xfd
1657 #define EXT_PHY_TERM_RESIS_MANUAL_D0    0xfe
1658
1659 #define RK322X_DDC_MASK_EN      ((3 << 13) | (3 << (13 + 16)))
1660 #define RK322X_IO_3V_DOMAIN     ((7 << 4) | (7 << (4 + 16)))
1661 #define RK322X_PLL_POWER_DOWN   (BIT(12) | BIT(12 + 16))
1662 #define RK322X_PLL_POWER_UP     BIT(12 + 16)
1663 #define RK322X_PLL_PDATA_DEN    BIT(11 + 16)
1664 #define RK322X_PLL_PDATA_EN     (BIT(11) | BIT(11 + 16))
1665
1666 #ifndef RK322X_GRF_SOC_CON2
1667 #define RK322X_GRF_SOC_CON2     RK3228_GRF_SOC_CON2
1668 #endif
1669 #ifndef RK322X_GRF_SOC_CON6
1670 #define RK322X_GRF_SOC_CON6     RK3228_GRF_SOC_CON6
1671 #endif
1672
1673 struct ext_pll_config_tab {
1674         u32     pix_clock;
1675         u32     tmdsclock;
1676         u8      color_depth;
1677         u8      pll_nd;
1678         u16     pll_nf;
1679         u8      tmsd_divider_a;
1680         u8      tmsd_divider_b;
1681         u8      tmsd_divider_c;
1682         u8      pclk_divider_a;
1683         u8      pclk_divider_b;
1684         u8      pclk_divider_c;
1685         u8      pclk_divider_d;
1686         u8      vco_div_5;
1687         u8      ppll_nd;
1688         u8      ppll_nf;
1689         u8      ppll_no;
1690 };
1691
1692 /*
1693 * HDMI TX PHY Define End
1694 */
1695
1696 struct rockchip_hdmiv2_reg_table {
1697         int reg_base;
1698         int reg_end;
1699 };
1700
1701 static inline u32 hdmi_readl(struct hdmi_dev *hdmi_dev, u16 offset)
1702 {
1703         return readl_relaxed(hdmi_dev->regbase + (offset) * 0x04);
1704 }
1705
1706 static inline int hdmi_writel(struct hdmi_dev *hdmi_dev, u16 offset, u32 val)
1707 {
1708         int ret = 0;
1709
1710         writel_relaxed(val, hdmi_dev->regbase + (offset) * 0x04);
1711         return ret;
1712 }
1713
1714 static inline int hdmi_msk_reg(struct hdmi_dev *hdmi_dev,
1715                                u16 offset, u32 msk, u32 val)
1716 {
1717         int ret = 0;
1718         u32 temp;
1719
1720         temp = readl_relaxed(hdmi_dev->regbase +
1721                              (offset) * 0x04) & (0xFF - (msk));
1722         writel_relaxed(temp | ((val) & (msk)),
1723                        hdmi_dev->regbase + (offset) * 0x04);
1724         return ret;
1725 }
1726
1727 irqreturn_t rockchip_hdmiv2_dev_irq(int irq, void *priv);
1728 void rockchip_hdmiv2_dev_init_ops(struct hdmi_ops *ops);
1729 void rockchip_hdmiv2_dev_initial(struct hdmi_dev *hdmi_dev);
1730 void rockchip_hdmiv2_cec_init(struct hdmi *hdmi);
1731 void rockchip_hdmiv2_cec_isr(struct hdmi_dev *hdmi_dev, char cec_int);
1732 void rockchip_hdmiv2_hdcp_init(struct hdmi *hdmi);
1733 void rockchip_hdmiv2_hdcp2_enable(int enable);
1734 void rockchip_hdmiv2_hdcp_isr(struct hdmi_dev *hdmi_dev, int hdcp_int);
1735 int rockchip_hdmiv2_write_phy(struct hdmi_dev *hdmi_dev,
1736                               int reg_addr, int val);
1737 int rockchip_hdmiv2_read_phy(struct hdmi_dev *hdmi_dev,
1738                              int reg_addr);
1739 #endif