4 #ifdef CONFIG_MTK_MT8193_HDMI_SUPPORT
6 #include "mt8193hdmictrl.h"
7 #include "mt8193edid.h"
10 #define AVD_TMR_ISR_TICKS 5
11 #define MDI_BOUCING_TIMING 50//20 //20ms
17 HDMI_HDCP_PROTOCAL_CMD
,
18 HDMI_DISABLE_HDMI_TASK_CMD
,
21 }HDMI_TASK_COMMAND_TYPE_T
;
26 #define ARY_SIZE(x) (sizeof((x)) / sizeof((x[0])))
31 HDMI_POLARITY_RISING
= 0,
32 HDMI_POLARITY_FALLING
= 1
37 HDMI_CLOCK_PHASE_0
= 0,
38 HDMI_CLOCK_PHASE_90
= 1
43 HDMI_COLOR_ORDER_RGB
= 0,
44 HDMI_COLOR_ORDER_BGR
= 1
49 IO_DRIVING_CURRENT_8MA
= (1 << 0),
50 IO_DRIVING_CURRENT_4MA
= (1 << 1),
51 IO_DRIVING_CURRENT_2MA
= (1 << 2),
52 IO_DRIVING_CURRENT_SLEW_CNTL
= (1 << 3),
55 #if !defined(CONFIG_MTK_MT8193_HDMI_SUPPORT)
58 HDMI_VIDEO_720x480p_60Hz
= 0,
59 HDMI_VIDEO_1280x720p_60Hz
=2,
60 HDMI_VIDEO_1920x1080p_30Hz
=6,
61 HDMI_VIDEO_RESOLUTION_NUM
62 }HDMI_VIDEO_RESOLUTION
;
67 HDMI_VIN_FORMAT_RGB565
,
68 HDMI_VIN_FORMAT_RGB666
,
69 HDMI_VIN_FORMAT_RGB888
,
70 } HDMI_VIDEO_INPUT_FORMAT
;
74 HDMI_VOUT_FORMAT_RGB888
,
75 HDMI_VOUT_FORMAT_YUV422
,
76 HDMI_VOUT_FORMAT_YUV444
,
77 }HDMI_VIDEO_OUTPUT_FORMAT
;
81 HDMI_AUDIO_PCM_16bit_48000
,
82 HDMI_AUDIO_PCM_16bit_44100
,
83 HDMI_AUDIO_PCM_16bit_32000
,
84 HDMI_AUDIO_SOURCE_STREAM
,
89 HDMI_VIDEO_RESOLUTION vformat
;
90 HDMI_VIDEO_INPUT_FORMAT vin
;
91 HDMI_VIDEO_OUTPUT_FORMAT vout
;
92 HDMI_AUDIO_FORMAT aformat
;
96 HDMI_OUTPUT_MODE_LCD_MIRROR
,
97 HDMI_OUTPUT_MODE_VIDEO_MODE
,
98 HDMI_OUTPUT_MODE_DPI_BYPASS
105 MHL_2_CABLE
///MHL 2.0
113 HDMI_CONFIG init_config
;
115 /* polarity parameters */
116 HDMI_POLARITY clk_pol
;
117 HDMI_POLARITY de_pol
;
118 HDMI_POLARITY vsync_pol
;
119 HDMI_POLARITY hsync_pol
;
121 /* timing parameters */
122 unsigned int hsync_pulse_width
;
123 unsigned int hsync_back_porch
;
124 unsigned int hsync_front_porch
;
125 unsigned int vsync_pulse_width
;
126 unsigned int vsync_back_porch
;
127 unsigned int vsync_front_porch
;
129 /* output format parameters */
130 HDMI_COLOR_ORDER rgb_order
;
132 /* intermediate buffers parameters */
133 unsigned int intermediat_buffer_num
; // 2..3
135 /* iopad parameters */
136 IO_DRIVING_CURRENT io_driving_current
;
137 HDMI_OUTPUT_MODE output_mode
;
140 int is_force_landscape
;
142 unsigned int scaling_factor
; // determine the scaling of output screen size, valid value 0~10
143 // 0 means no scaling, 5 means scaling to 95%, 10 means 90%
144 HDMI_CABLE_TYPE cabletype
;
149 HDMI_STATE_NO_DEVICE
,
151 HDMI_STATE_CONNECTING
,
152 #if defined(CONFIG_MTK_MT8193_HDMI_SUPPORT)
153 HDMI_STATE_PLUGIN_ONLY
,
154 HDMI_STATE_EDID_UPDATE
,
155 HDMI_STATE_CEC_UPDATE
159 // ---------------------------------------------------------------------------
163 void (*set_reset_pin
)(unsigned int value
);
164 int (*set_gpio_out
)(unsigned int gpio
, unsigned int value
);
165 void (*udelay
)(unsigned int us
);
166 void (*mdelay
)(unsigned int ms
);
167 void (*wait_transfer_done
)(void);
168 void (*state_callback
)(HDMI_STATE state
);
174 void (*set_util_funcs
)(const HDMI_UTIL_FUNCS
*util
);
175 void (*get_params
)(HDMI_PARAMS
*params
);
180 void (*suspend
)(void);
181 void (*resume
)(void);
182 int (*audio_config
)(HDMI_AUDIO_FORMAT aformat
);
183 int (*video_config
)(HDMI_VIDEO_RESOLUTION vformat
, HDMI_VIDEO_INPUT_FORMAT vin
, HDMI_VIDEO_OUTPUT_FORMAT vou
);
184 int (*video_enable
)(bool enable
);
185 int (*audio_enable
)(bool enable
);
186 int (*irq_enable
)(bool enable
);
187 int (*power_on
)(void);
188 void (*power_off
)(void);
189 HDMI_STATE (*get_state
)(void);
190 void (*set_mode
)(unsigned char ucMode
);
192 #if !defined(CONFIG_MTK_MT8193_HDMI_SUPPORT)
193 void (*read
)(unsigned char u8Reg
);
194 void (*write
)(unsigned char u8Reg
, unsigned char u8Data
);
195 void (*log_enable
)(bool enable
);
197 void (*read
)(u16 u2Reg
, u32
*p4Data
);
198 void (*write
)(u16 u2Reg
, u32 u4Data
);
199 void (*log_enable
)(u16 enable
);
200 void (*InfoframeSetting
)(u8 i1typemode
, u8 i1typeselect
);
201 void (*checkedid
)(u8 i1noedid
);
202 void (*colordeep
)(u8 u1colorspace
, u8 u1deepcolor
);
203 void (*enablehdcp
)(u8 u1hdcponoff
);
204 void (*setcecrxmode
)(u8 u1cecrxmode
);
205 void (*hdmistatus
)(void);
206 void (*hdcpkey
)(u8
*pbhdcpkey
);
207 void (*getedid
)(HDMI_EDID_INFO_T
*pv_get_info
);
208 void (*setcecla
)(CEC_DRV_ADDR_CFG_T
* prAddr
);
209 void (*sendsltdata
)(u8
*pu1Data
);
210 void (*getceccmd
)(CEC_FRAME_DESCRIPTION
* frame
);
211 void (*getsltdata
)(CEC_SLT_DATA
* rCecSltData
);
212 void (*setceccmd
)(CEC_SEND_MSG_T
* msg
);
213 void (*cecenable
)(u8 u1EnCec
);
214 void (*getcecaddr
)(CEC_ADDRESS
*cecaddr
);
215 void (*mutehdmi
)(u8 u1flagvideomute
, u8 u1flagaudiomute
);
220 // ---------------------------------------------------------------------------
221 // HDMI Driver Functions
222 // ---------------------------------------------------------------------------
224 const HDMI_DRIVER
* HDMI_GetDriver(void);
226 #endif // __HDMI_DRV_H__