unplugged-kernel/drivers/misc/mediatek/ext_disp/mt6785/extd_hdmi.h

219 lines
5.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2019 MediaTek Inc.
*/
/* ------------------------------------- */
#ifndef __HDMITX_H__
#define __HDMITX_H__
/* #include "mtkfb.h" */
#include "disp_session.h"
#define MHL_UART_SHARE_PIN
enum HDMI_FACTORY_MODE_TEST {
STEP1_ENABLE,
STEP2_GET_STATUS,
STEP3_START,
STEP3_SUSPEND,
STEP_MAX_NUM
};
enum AUDIO_MAX_CHANNEL {
HDMI_MAX_CHANNEL_2 = 0x2,
HDMI_MAX_CHANNEL_3 = 0x3,
HDMI_MAX_CHANNEL_4 = 0x4,
HDMI_MAX_CHANNEL_5 = 0x5,
HDMI_MAX_CHANNEL_6 = 0x6,
HDMI_MAX_CHANNEL_7 = 0x7,
HDMI_MAX_CHANNEL_8 = 0x8,
};
enum AUDIO_MAX_SAMPLERATE {
HDMI_MAX_SAMPLERATE_32 = 0x1,
HDMI_MAX_SAMPLERATE_44 = 0x2,
HDMI_MAX_SAMPLERATE_48 = 0x3,
HDMI_MAX_SAMPLERATE_96 = 0x4,
HDMI_MAX_SAMPLERATE_192 = 0x5,
};
enum AUDIO_MAX_BITWIDTH {
HDMI_MAX_BITWIDTH_16 = 0x1,
HDMI_MAX_BITWIDTH_24 = 0x2,
};
enum HDMI_CAPABILITY {
HDMI_SCALE_ADJUSTMENT_SUPPORT = 0x01,
HDMI_ONE_RDMA_LIMITATION = 0x02,
HDMI_PHONE_GPIO_REUSAGE = 0x04,
/* bit3-bit6: channal count */
/* bit7-bit9: sample rate */
/* bit10-bit11: bitwidth */
HDMI_FACTORY_MODE_NEW = 0x1000,
};
struct hdmi_device_status {
bool is_audio_enabled;
bool is_video_enabled;
};
struct hdmi_device_write {
unsigned long u4Addr;
unsigned long u4Data;
};
struct hdmi_para_setting {
unsigned int u4Data1;
unsigned int u4Data2;
};
struct hdmi_hdcp_key {
unsigned char u1Hdcpkey[287];
};
struct hdmi_hdcp_drmkey {
unsigned char u1Hdcpkey[384];
};
struct send_slt_data {
unsigned char u1sendsltdata[15];
};
struct _HDMI_EDID_T {
unsigned int ui4_ntsc_resolution;
unsigned int ui4_pal_resolution;
unsigned int ui4_sink_native_ntsc_resolution;
unsigned int ui4_sink_native_pal_resolution;
unsigned int ui4_sink_cea_ntsc_resolution;
unsigned int ui4_sink_cea_pal_resolution;
unsigned int ui4_sink_dtd_ntsc_resolution;
unsigned int ui4_sink_dtd_pal_resolution;
unsigned int ui4_sink_1st_dtd_ntsc_resolution;
unsigned int ui4_sink_1st_dtd_pal_resolution;
unsigned short ui2_sink_colorimetry;
unsigned char ui1_sink_rgb_color_bit;
unsigned char ui1_sink_ycbcr_color_bit;
unsigned short ui2_sink_aud_dec;
unsigned char ui1_sink_is_plug_in;
unsigned int ui4_hdmi_pcm_ch_type;
unsigned int ui4_hdmi_pcm_ch3ch4ch5ch7_type;
unsigned int ui4_dac_pcm_ch_type;
unsigned char ui1_sink_i_latency_present;
unsigned char ui1_sink_p_audio_latency;
unsigned char ui1_sink_p_video_latency;
unsigned char ui1_sink_i_audio_latency;
unsigned char ui1_sink_i_video_latency;
unsigned char ui1ExtEdid_Revision;
unsigned char ui1Edid_Version;
unsigned char ui1Edid_Revision;
unsigned char ui1_Display_Horizontal_Size;
unsigned char ui1_Display_Vertical_Size;
unsigned int ui4_ID_Serial_Number;
unsigned int ui4_sink_cea_3D_resolution;
unsigned char ui1_sink_support_ai;
unsigned short ui2_sink_cec_address;
unsigned short ui1_sink_max_tmds_clock;
unsigned short ui2_sink_3D_structure;
unsigned int ui4_sink_cea_FP_SUP_3D_resolution;
unsigned int ui4_sink_cea_TOB_SUP_3D_resolution;
unsigned int ui4_sink_cea_SBS_SUP_3D_resolution;
unsigned short ui2_sink_ID_manufacturer_name;
unsigned short ui2_sink_ID_product_code;
unsigned int ui4_sink_ID_serial_number;
unsigned char ui1_sink_week_of_manufacture;
unsigned char ui1_sink_year_of_manufacture;
};
struct MHL_3D_SUPP_T {
unsigned int ui4_sink_FP_SUP_3D_resolution;
unsigned int ui4_sink_TOB_SUP_3D_resolution;
unsigned int ui4_sink_SBS_SUP_3D_resolution;
};
struct CEC_DRV_ADDR_CFG {
unsigned char ui1_la_num;
unsigned char e_la[3];
unsigned short ui2_pa;
unsigned short h_cecm_svc;
};
struct CEC_HEADER_BLOCK_IO {
unsigned char destination:4;
unsigned char initiator:4;
};
struct CEC_FRAME_BLOCK_IO {
struct CEC_HEADER_BLOCK_IO header;
unsigned char opcode;
unsigned char operand[15];
};
struct CEC_FRAME_DESCRIPTION_IO {
unsigned char size;
unsigned char sendidx;
unsigned char reTXcnt;
void *txtag;
struct CEC_FRAME_BLOCK_IO blocks;
};
struct CEC_FRAME_INFO {
unsigned char ui1_init_addr;
unsigned char ui1_dest_addr;
unsigned short ui2_opcode;
unsigned char aui1_operand[14];
unsigned int z_operand_size;
};
struct CEC_SEND_MSG {
struct CEC_FRAME_INFO t_frame_info;
unsigned char b_enqueue_ok;
};
struct CEC_ADDRESS_IO {
unsigned char ui1_la;
unsigned short ui2_pa;
};
struct CEC_GETSLT_DATA {
unsigned char u1Size;
unsigned char au1Data[14];
};
struct READ_REG_VALUE {
unsigned int u1address;
unsigned int pu1Data;
};
struct HDMITX_AUDIO_PARA {
unsigned char e_hdmi_aud_in;
unsigned char e_iec_frame;
unsigned char e_hdmi_fs;
unsigned char e_aud_code;
unsigned char u1Aud_Input_Chan_Cnt;
unsigned char e_I2sFmt;
unsigned char u1HdmiI2sMclk;
unsigned char bhdmi_LCh_status[5];
unsigned char bhdmi_RCh_status[5];
};
extern int enable_ut;
int hdmi_post_init(void);
void hdmi_force_on(int from_uart_drv);
void hdmi_cable_fake_plug_in(void);
void hdmi_cable_fake_plug_out(void);
void hdmi_force_resolution(int params);
void hdmi_suspend(void);
void hdmi_resume(void);
void hdmi_power_on(void);
void hdmi_power_off(void);
int hdmi_wait_vsync_debug(int enable);
int hdmi_dump_vendor_chip_register(void);
extern void extd_dbg_init(void);
#endif /* __HDMITX_H__ */