hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * HDMI driver definition for TI OMAP5 processors.
 *
 * Copyright (C) 2011-2012 Texas Instruments Incorporated - https://www.ti.com/
 */
 
#ifndef _HDMI5_CORE_H_
#define _HDMI5_CORE_H_
 
#include "hdmi.h"
 
/* HDMI IP Core System */
 
/* HDMI Identification */
#define HDMI_CORE_DESIGN_ID            0x00000
#define HDMI_CORE_REVISION_ID            0x00004
#define HDMI_CORE_PRODUCT_ID0            0x00008
#define HDMI_CORE_PRODUCT_ID1            0x0000C
#define HDMI_CORE_CONFIG0_ID            0x00010
#define HDMI_CORE_CONFIG1_ID            0x00014
#define HDMI_CORE_CONFIG2_ID            0x00018
#define HDMI_CORE_CONFIG3_ID            0x0001C
 
/* HDMI Interrupt */
#define HDMI_CORE_IH_FC_STAT0            0x00400
#define HDMI_CORE_IH_FC_STAT1            0x00404
#define HDMI_CORE_IH_FC_STAT2            0x00408
#define HDMI_CORE_IH_AS_STAT0            0x0040C
#define HDMI_CORE_IH_PHY_STAT0            0x00410
#define HDMI_CORE_IH_I2CM_STAT0            0x00414
#define HDMI_CORE_IH_CEC_STAT0            0x00418
#define HDMI_CORE_IH_VP_STAT0            0x0041C
#define HDMI_CORE_IH_I2CMPHY_STAT0        0x00420
#define HDMI_CORE_IH_MUTE            0x007FC
 
/* HDMI Video Sampler */
#define HDMI_CORE_TX_INVID0            0x00800
#define HDMI_CORE_TX_INSTUFFING            0x00804
#define HDMI_CORE_TX_RGYDATA0            0x00808
#define HDMI_CORE_TX_RGYDATA1            0x0080C
#define HDMI_CORE_TX_RCRDATA0            0x00810
#define HDMI_CORE_TX_RCRDATA1            0x00814
#define HDMI_CORE_TX_BCBDATA0            0x00818
#define HDMI_CORE_TX_BCBDATA1            0x0081C
 
/* HDMI Video Packetizer */
#define HDMI_CORE_VP_STATUS            0x02000
#define HDMI_CORE_VP_PR_CD            0x02004
#define HDMI_CORE_VP_STUFF            0x02008
#define HDMI_CORE_VP_REMAP            0x0200C
#define HDMI_CORE_VP_CONF            0x02010
#define HDMI_CORE_VP_STAT            0x02014
#define HDMI_CORE_VP_INT            0x02018
#define HDMI_CORE_VP_MASK            0x0201C
#define HDMI_CORE_VP_POL            0x02020
 
/* Frame Composer */
#define HDMI_CORE_FC_INVIDCONF            0x04000
#define HDMI_CORE_FC_INHACTIV0            0x04004
#define HDMI_CORE_FC_INHACTIV1            0x04008
#define HDMI_CORE_FC_INHBLANK0            0x0400C
#define HDMI_CORE_FC_INHBLANK1            0x04010
#define HDMI_CORE_FC_INVACTIV0            0x04014
#define HDMI_CORE_FC_INVACTIV1            0x04018
#define HDMI_CORE_FC_INVBLANK            0x0401C
#define HDMI_CORE_FC_HSYNCINDELAY0        0x04020
#define HDMI_CORE_FC_HSYNCINDELAY1        0x04024
#define HDMI_CORE_FC_HSYNCINWIDTH0        0x04028
#define HDMI_CORE_FC_HSYNCINWIDTH1        0x0402C
#define HDMI_CORE_FC_VSYNCINDELAY        0x04030
#define HDMI_CORE_FC_VSYNCINWIDTH        0x04034
#define HDMI_CORE_FC_INFREQ0            0x04038
#define HDMI_CORE_FC_INFREQ1            0x0403C
#define HDMI_CORE_FC_INFREQ2            0x04040
#define HDMI_CORE_FC_CTRLDUR            0x04044
#define HDMI_CORE_FC_EXCTRLDUR            0x04048
#define HDMI_CORE_FC_EXCTRLSPAC            0x0404C
#define HDMI_CORE_FC_CH0PREAM            0x04050
#define HDMI_CORE_FC_CH1PREAM            0x04054
#define HDMI_CORE_FC_CH2PREAM            0x04058
#define HDMI_CORE_FC_AVICONF3            0x0405C
#define HDMI_CORE_FC_GCP            0x04060
#define HDMI_CORE_FC_AVICONF0            0x04064
#define HDMI_CORE_FC_AVICONF1            0x04068
#define HDMI_CORE_FC_AVICONF2            0x0406C
#define HDMI_CORE_FC_AVIVID            0x04070
#define HDMI_CORE_FC_AVIETB0            0x04074
#define HDMI_CORE_FC_AVIETB1            0x04078
#define HDMI_CORE_FC_AVISBB0            0x0407C
#define HDMI_CORE_FC_AVISBB1            0x04080
#define HDMI_CORE_FC_AVIELB0            0x04084
#define HDMI_CORE_FC_AVIELB1            0x04088
#define HDMI_CORE_FC_AVISRB0            0x0408C
#define HDMI_CORE_FC_AVISRB1            0x04090
#define HDMI_CORE_FC_AUDICONF0            0x04094
#define HDMI_CORE_FC_AUDICONF1            0x04098
#define HDMI_CORE_FC_AUDICONF2            0x0409C
#define HDMI_CORE_FC_AUDICONF3            0x040A0
#define HDMI_CORE_FC_VSDIEEEID0            0x040A4
#define HDMI_CORE_FC_VSDSIZE            0x040A8
#define HDMI_CORE_FC_VSDIEEEID1            0x040C0
#define HDMI_CORE_FC_VSDIEEEID2            0x040C4
#define HDMI_CORE_FC_VSDPAYLOAD(n)        (n * 4 + 0x040C8)
#define HDMI_CORE_FC_SPDVENDORNAME(n)        (n * 4 + 0x04128)
#define HDMI_CORE_FC_SPDPRODUCTNAME(n)        (n * 4 + 0x04148)
#define HDMI_CORE_FC_SPDDEVICEINF        0x04188
#define HDMI_CORE_FC_AUDSCONF            0x0418C
#define HDMI_CORE_FC_AUDSSTAT            0x04190
#define HDMI_CORE_FC_AUDSV            0x04194
#define HDMI_CORE_FC_AUDSU            0x04198
#define HDMI_CORE_FC_AUDSCHNLS(n)        (n * 4 + 0x0419C)
#define HDMI_CORE_FC_CTRLQHIGH            0x041CC
#define HDMI_CORE_FC_CTRLQLOW            0x041D0
#define HDMI_CORE_FC_ACP0            0x041D4
#define HDMI_CORE_FC_ACP(n)            ((16-n) * 4 + 0x04208)
#define HDMI_CORE_FC_ISCR1_0            0x04248
#define HDMI_CORE_FC_ISCR1(n)            ((16-n) * 4 + 0x0424C)
#define HDMI_CORE_FC_ISCR2(n)            ((15-n) * 4 + 0x0428C)
#define HDMI_CORE_FC_DATAUTO0            0x042CC
#define HDMI_CORE_FC_DATAUTO1            0x042D0
#define HDMI_CORE_FC_DATAUTO2            0x042D4
#define HDMI_CORE_FC_DATMAN            0x042D8
#define HDMI_CORE_FC_DATAUTO3            0x042DC
#define HDMI_CORE_FC_RDRB(n)            (n * 4 + 0x042E0)
#define HDMI_CORE_FC_STAT0            0x04340
#define HDMI_CORE_FC_INT0            0x04344
#define HDMI_CORE_FC_MASK0            0x04348
#define HDMI_CORE_FC_POL0            0x0434C
#define HDMI_CORE_FC_STAT1            0x04350
#define HDMI_CORE_FC_INT1            0x04354
#define HDMI_CORE_FC_MASK1            0x04358
#define HDMI_CORE_FC_POL1            0x0435C
#define HDMI_CORE_FC_STAT2            0x04360
#define HDMI_CORE_FC_INT2            0x04364
#define HDMI_CORE_FC_MASK2            0x04368
#define HDMI_CORE_FC_POL2            0x0436C
#define HDMI_CORE_FC_PRCONF            0x04380
#define HDMI_CORE_FC_GMD_STAT            0x04400
#define HDMI_CORE_FC_GMD_EN            0x04404
#define HDMI_CORE_FC_GMD_UP            0x04408
#define HDMI_CORE_FC_GMD_CONF            0x0440C
#define HDMI_CORE_FC_GMD_HB            0x04410
#define HDMI_CORE_FC_GMD_PB(n)            (n * 4 + 0x04414)
#define HDMI_CORE_FC_DBGFORCE            0x04800
#define HDMI_CORE_FC_DBGAUD0CH0            0x04804
#define HDMI_CORE_FC_DBGAUD1CH0            0x04808
#define HDMI_CORE_FC_DBGAUD2CH0            0x0480C
#define HDMI_CORE_FC_DBGAUD0CH1            0x04810
#define HDMI_CORE_FC_DBGAUD1CH1            0x04814
#define HDMI_CORE_FC_DBGAUD2CH1            0x04818
#define HDMI_CORE_FC_DBGAUD0CH2            0x0481C
#define HDMI_CORE_FC_DBGAUD1CH2            0x04820
#define HDMI_CORE_FC_DBGAUD2CH2            0x04824
#define HDMI_CORE_FC_DBGAUD0CH3            0x04828
#define HDMI_CORE_FC_DBGAUD1CH3            0x0482C
#define HDMI_CORE_FC_DBGAUD2CH3            0x04830
#define HDMI_CORE_FC_DBGAUD0CH4            0x04834
#define HDMI_CORE_FC_DBGAUD1CH4            0x04838
#define HDMI_CORE_FC_DBGAUD2CH4            0x0483C
#define HDMI_CORE_FC_DBGAUD0CH5            0x04840
#define HDMI_CORE_FC_DBGAUD1CH5            0x04844
#define HDMI_CORE_FC_DBGAUD2CH5            0x04848
#define HDMI_CORE_FC_DBGAUD0CH6            0x0484C
#define HDMI_CORE_FC_DBGAUD1CH6            0x04850
#define HDMI_CORE_FC_DBGAUD2CH6            0x04854
#define HDMI_CORE_FC_DBGAUD0CH7            0x04858
#define HDMI_CORE_FC_DBGAUD1CH7            0x0485C
#define HDMI_CORE_FC_DBGAUD2CH7            0x04860
#define HDMI_CORE_FC_DBGTMDS0            0x04864
#define HDMI_CORE_FC_DBGTMDS1            0x04868
#define HDMI_CORE_FC_DBGTMDS2            0x0486C
#define HDMI_CORE_PHY_MASK0            0x0C018
#define HDMI_CORE_PHY_I2CM_INT_ADDR        0x0C09C
#define HDMI_CORE_PHY_I2CM_CTLINT_ADDR        0x0C0A0
 
/* HDMI Audio */
#define HDMI_CORE_AUD_CONF0            0x0C400
#define HDMI_CORE_AUD_CONF1            0x0C404
#define HDMI_CORE_AUD_INT            0x0C408
#define HDMI_CORE_AUD_N1            0x0C800
#define HDMI_CORE_AUD_N2            0x0C804
#define HDMI_CORE_AUD_N3            0x0C808
#define HDMI_CORE_AUD_CTS1            0x0C80C
#define HDMI_CORE_AUD_CTS2            0x0C810
#define HDMI_CORE_AUD_CTS3            0x0C814
#define HDMI_CORE_AUD_INCLKFS            0x0C818
#define HDMI_CORE_AUD_CC08            0x0CC08
#define HDMI_CORE_AUD_GP_CONF0            0x0D400
#define HDMI_CORE_AUD_GP_CONF1            0x0D404
#define HDMI_CORE_AUD_GP_CONF2            0x0D408
#define HDMI_CORE_AUD_D010            0x0D010
#define HDMI_CORE_AUD_GP_STAT            0x0D40C
#define HDMI_CORE_AUD_GP_INT            0x0D410
#define HDMI_CORE_AUD_GP_POL            0x0D414
#define HDMI_CORE_AUD_GP_MASK            0x0D418
 
/* HDMI Main Controller */
#define HDMI_CORE_MC_CLKDIS            0x10004
#define HDMI_CORE_MC_SWRSTZREQ            0x10008
#define HDMI_CORE_MC_FLOWCTRL            0x10010
#define HDMI_CORE_MC_PHYRSTZ            0x10014
#define HDMI_CORE_MC_LOCKONCLOCK        0x10018
 
/* HDMI COLOR SPACE CONVERTER */
#define HDMI_CORE_CSC_CFG            0x10400
#define HDMI_CORE_CSC_SCALE            0x10404
#define HDMI_CORE_CSC_COEF_A1_MSB        0x10408
#define HDMI_CORE_CSC_COEF_A1_LSB        0x1040C
#define HDMI_CORE_CSC_COEF_A2_MSB        0x10410
#define HDMI_CORE_CSC_COEF_A2_LSB        0x10414
#define HDMI_CORE_CSC_COEF_A3_MSB        0x10418
#define HDMI_CORE_CSC_COEF_A3_LSB        0x1041C
#define HDMI_CORE_CSC_COEF_A4_MSB        0x10420
#define HDMI_CORE_CSC_COEF_A4_LSB        0x10424
#define HDMI_CORE_CSC_COEF_B1_MSB        0x10428
#define HDMI_CORE_CSC_COEF_B1_LSB        0x1042C
#define HDMI_CORE_CSC_COEF_B2_MSB        0x10430
#define HDMI_CORE_CSC_COEF_B2_LSB        0x10434
#define HDMI_CORE_CSC_COEF_B3_MSB        0x10438
#define HDMI_CORE_CSC_COEF_B3_LSB        0x1043C
#define HDMI_CORE_CSC_COEF_B4_MSB        0x10440
#define HDMI_CORE_CSC_COEF_B4_LSB        0x10444
#define HDMI_CORE_CSC_COEF_C1_MSB        0x10448
#define HDMI_CORE_CSC_COEF_C1_LSB        0x1044C
#define HDMI_CORE_CSC_COEF_C2_MSB        0x10450
#define HDMI_CORE_CSC_COEF_C2_LSB        0x10454
#define HDMI_CORE_CSC_COEF_C3_MSB        0x10458
#define HDMI_CORE_CSC_COEF_C3_LSB        0x1045C
#define HDMI_CORE_CSC_COEF_C4_MSB        0x10460
#define HDMI_CORE_CSC_COEF_C4_LSB        0x10464
 
/* HDMI HDCP */
#define HDMI_CORE_HDCP_MASK            0x14020
 
/* HDMI CEC */
#define HDMI_CORE_CEC_MASK            0x17408
 
/* HDMI I2C Master */
#define HDMI_CORE_I2CM_SLAVE            0x157C8
#define HDMI_CORE_I2CM_ADDRESS            0x157CC
#define HDMI_CORE_I2CM_DATAO            0x157D0
#define HDMI_CORE_I2CM_DATAI            0X157D4
#define HDMI_CORE_I2CM_OPERATION        0x157D8
#define HDMI_CORE_I2CM_INT            0x157DC
#define HDMI_CORE_I2CM_CTLINT            0x157E0
#define HDMI_CORE_I2CM_DIV            0x157E4
#define HDMI_CORE_I2CM_SEGADDR            0x157E8
#define HDMI_CORE_I2CM_SOFTRSTZ            0x157EC
#define HDMI_CORE_I2CM_SEGPTR            0x157F0
#define HDMI_CORE_I2CM_SS_SCL_HCNT_1_ADDR    0x157F4
#define HDMI_CORE_I2CM_SS_SCL_HCNT_0_ADDR    0x157F8
#define HDMI_CORE_I2CM_SS_SCL_LCNT_1_ADDR    0x157FC
#define HDMI_CORE_I2CM_SS_SCL_LCNT_0_ADDR    0x15800
#define HDMI_CORE_I2CM_FS_SCL_HCNT_1_ADDR    0x15804
#define HDMI_CORE_I2CM_FS_SCL_HCNT_0_ADDR    0x15808
#define HDMI_CORE_I2CM_FS_SCL_LCNT_1_ADDR    0x1580C
#define HDMI_CORE_I2CM_FS_SCL_LCNT_0_ADDR    0x15810
#define HDMI_CORE_I2CM_SDA_HOLD_ADDR        0x15814
 
enum hdmi_core_packet_mode {
   HDMI_PACKETMODERESERVEDVALUE = 0,
   HDMI_PACKETMODE24BITPERPIXEL = 4,
   HDMI_PACKETMODE30BITPERPIXEL = 5,
   HDMI_PACKETMODE36BITPERPIXEL = 6,
   HDMI_PACKETMODE48BITPERPIXEL = 7,
};
 
struct hdmi_core_vid_config {
   struct hdmi_config v_fc_config;
   enum hdmi_core_packet_mode packet_mode;
   int data_enable_pol;
   int vblank_osc;
   int hblank;
   int vblank;
};
 
struct csc_table {
   u16 a1, a2, a3, a4;
   u16 b1, b2, b3, b4;
   u16 c1, c2, c3, c4;
};
 
int hdmi5_read_edid(struct hdmi_core_data *core, u8 *edid, int len);
void hdmi5_core_dump(struct hdmi_core_data *core, struct seq_file *s);
int hdmi5_core_handle_irqs(struct hdmi_core_data *core);
void hdmi5_configure(struct hdmi_core_data *core, struct hdmi_wp_data *wp,
           struct hdmi_config *cfg);
int hdmi5_core_init(struct platform_device *pdev, struct hdmi_core_data *core);
 
int hdmi5_audio_config(struct hdmi_core_data *core, struct hdmi_wp_data *wp,
           struct omap_dss_audio *audio, u32 pclk);
#endif