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