static void process_dbg_opt(const char *opt) { unsigned int reg; unsigned int val; unsigned int vadr_regstart; unsigned int vadr_regend; char *buf; int temp_len = 0; int len = 0; int ret; long int p_temp; buf = (char *)opt; if (strncmp(buf, "dbgtype:", 8) == 0) { ret = sscanf(buf + 8, "%x", &val); mt8193_log_enable(val); pr_debug("hdmidrv_log_on = 0x%08x\n", mt8193_log_on); } else if (strncmp(buf, "w:", 2) == 0) { ret = sscanf(buf + 2, "%x=%x", ®, &val); pr_debug("w:0x%08x=0x%08x\n", reg, val); mt8193_write(reg, val); } else if (strncmp(buf, "r:", 2) == 0) { ret = sscanf(buf + 2, "%x/%x", &vadr_regstart, &vadr_regend); vadr_regend &= 0x3ff; pr_debug("r:0x%08x/0x%08x\n", vadr_regstart, vadr_regend); vadr_regend = vadr_regstart + vadr_regend; while (vadr_regstart <= vadr_regend) { mt8193_read(vadr_regstart, &val); HDMI_ATTR_SPRINTF("0x%08x = 0x%08x\n", vadr_regstart, val); vadr_regstart += 4; } } else if (strncmp(buf, "dw:", 3) == 0) { ret = sscanf(buf + 3, "%x=%x", ®, &val); pr_debug("dw:0x%08x=0x%08x\n", reg, val); iowrite32(val, (void __iomem *)DPI0_BASE_ADDR + reg); } else if (strncmp(buf, "dr:", 3) == 0) { ret = sscanf(buf + 3, "%x/%x", &vadr_regstart, &vadr_regend); vadr_regend &= 0x3ff; pr_debug("dr:0x%08x/0x%08x\n", vadr_regstart, vadr_regend); vadr_regend = vadr_regstart + vadr_regend; while (vadr_regstart <= vadr_regend) { HDMI_ATTR_SPRINTF("0x%08x = 0x%08x\n", vadr_regstart, ioread32((void __iomem *)DPI0_BASE_ADDR + vadr_regstart)); vadr_regstart += 4; } } else if (strncmp(buf, "status", 6) == 0) { HDMI_ATTR_SPRINTF("[hdmi]mt8193_log_on=%x\n", mt8193_log_on); HDMI_ATTR_SPRINTF("[hdmi]hdmi_powerenable=%x\n", hdmi_powerenable); HDMI_ATTR_SPRINTF("[hdmi]mt8193_hdmiinit=%d\n", mt8193_hdmiinit); HDMI_ATTR_SPRINTF("[hdmi]mt8193_hotinit=%d\n", mt8193_hotinit); HDMI_ATTR_SPRINTF("[hdmi]mt8193_hdmipoweroninit=%d\n", mt8193_hdmipoweroninit); HDMI_ATTR_SPRINTF("[hdmi]is_user_mute_hdmi_audio=%x\n", is_user_mute_hdmi_audio); HDMI_ATTR_SPRINTF("[hdmi]port=%d\n", hdmi_port_status()); if (mt8193_hotplugstate == HDMI_STATE_HOT_PLUGIN_AND_POWER_ON) HDMI_ATTR_SPRINTF("[hdmi]plug:HDMI_STATE_HOT_PLUGIN_AND_POWER_ON\n"); else if (mt8193_hotplugstate == HDMI_STATE_HOT_PLUG_OUT) HDMI_ATTR_SPRINTF("[hdmi]plug:HDMI_STATE_HOT_PLUG_OUT\n"); else if (mt8193_hotplugstate == HDMI_STATE_HOT_PLUG_IN_ONLY) HDMI_ATTR_SPRINTF("[hdmi]plug:HDMI_STATE_HOT_PLUG_IN_ONLY\n"); HDMI_ATTR_SPRINTF("[hdmi]video resolution : %d\n", _stAvdAVInfo.e_resolution); HDMI_ATTR_SPRINTF("[hdmi]video color space : %d\n", _stAvdAVInfo.e_video_color_space); HDMI_ATTR_SPRINTF("[hdmi]video deep color : %d\n", _stAvdAVInfo.e_deep_color_bit); HDMI_ATTR_SPRINTF("[hdmi]audio fs : %d\n", _stAvdAVInfo.e_hdmi_fs); if (vIsDviMode()) HDMI_ATTR_SPRINTF("[hdmi]dvi Mode\n"); else HDMI_ATTR_SPRINTF("[hdmi]hdmi Mode\n"); mt8193_hdmistatus(); } else if (0 == strncmp(opt, "po", 2)) { mt8193_power_on(); } else if (0 == strncmp(opt, "pd", 2)) { mt8193_power_off(); } else if (0 == strncmp(opt, "cs:", 3)) { ret = sscanf(buf + 3, "%x", &val); mt8193_colordeep(val, 0); } else if (0 == strncmp(opt, "finit", 5)) { hdmi_factory_mode_test(STEP1_CHIP_INIT, NULL); } else if (0 == strncmp(opt, "fres:", 5)) { ret = sscanf(buf + 5, "%x", &val); p_temp = (long int)val; hdmi_factory_mode_test(STEP3_START_DPI_AND_CONFIG, (void *)p_temp); } else { HDMI_ATTR_SPRINTF("---hdmi debug help---\n"); HDMI_ATTR_SPRINTF("please go in to sys/kernel/debug\n"); HDMI_ATTR_SPRINTF("[debug type] echo dbgtype:VALUE>8193\n"); HDMI_ATTR_SPRINTF("[8193 read reg] echo r:ADDR/LEN>8193;cat 8193\n"); HDMI_ATTR_SPRINTF("[8193 write reg] echo w:ADDR=VALUE>8193\n"); HDMI_ATTR_SPRINTF("[d2 dpi0 read reg] echo dr:ADDR/LEN>8193;cat 8193\n"); HDMI_ATTR_SPRINTF("[d2 dpi0 write reg] echo dw:ADDR=VALUE>8193\n"); HDMI_ATTR_SPRINTF("[hdmi status] echo status>8193;cat 8193\n"); HDMI_ATTR_SPRINTF("[power on] echo po>8193\n"); HDMI_ATTR_SPRINTF("[power off] echo dn>8193\n"); HDMI_ATTR_SPRINTF("[color space] echo cs:VALUE>8193\n"); HDMI_ATTR_SPRINTF("[factory mode init] echo finit>8193\n"); HDMI_ATTR_SPRINTF("[factory res] echo fres:VALUE>8193\n"); } }
void hdmi_timer_impl(void) { if(mt8193_hdmiinit==0) { mt8193_hdmiinit = 1; mt8193_power_off(); vInitAvInfoVar(); return; } if(mt8193_hotinit!=1) mt8193_hdmiinit++; #if defined(CONFIG_HAS_EARLYSUSPEND) if(mt8193_hdmiearlysuspend==1) #endif { if(((mt8193_hdmiinit>5)||(mt8193_hotinit==0))&&(mt8193_hotinit!=1)) { if(bCheckPordHotPlug(PORD_MODE|HOTPLUG_MODE)==FALSE) { if((mt8193_hotplugstate == HDMI_STATE_HOT_PLUGIN_AND_POWER_ON)&&(mt8193_hotinit==2)) { vSetSharedInfo(SI_HDMI_RECEIVER_STATUS, HDMI_PLUG_OUT); vPlugDetectService(HDMI_STATE_HOT_PLUG_OUT); mt8193_hotplugstate = HDMI_STATE_HOT_PLUG_OUT; MT8193_PLUG_LOG("[hotplug1] mt8193_hotinit = %d,mt8193_hdmiinit=%d\n", mt8193_hotinit, mt8193_hdmiinit); } if((mt8193_hotinit==0)&&(bCheckPordHotPlug(HOTPLUG_MODE)==TRUE)) { vSetSharedInfo(SI_HDMI_RECEIVER_STATUS, HDMI_PLUG_IN_AND_SINK_POWER_ON); vPlugDetectService(HDMI_STATE_HOT_PLUGIN_AND_POWER_ON); mt8193_hotinit = 2; mt8193_hotplugstate = HDMI_STATE_HOT_PLUGIN_AND_POWER_ON; vWriteHdmiIntMask(0xff);//INT mask MDI MT8193_PLUG_LOG("[hotplug2] mt8193_hotinit = %d,mt8193_hdmiinit=%d\n", mt8193_hotinit, mt8193_hdmiinit); } } else if((mt8193_hotplugstate == HDMI_STATE_HOT_PLUG_OUT)&&(bCheckPordHotPlug(PORD_MODE|HOTPLUG_MODE)==TRUE)) { vSetSharedInfo(SI_HDMI_RECEIVER_STATUS, HDMI_PLUG_IN_AND_SINK_POWER_ON); vPlugDetectService(HDMI_STATE_HOT_PLUGIN_AND_POWER_ON); mt8193_hotplugstate = HDMI_STATE_HOT_PLUGIN_AND_POWER_ON; mt8193_hotinit = 2; vWriteHdmiIntMask(0xff);//INT mask MDI MT8193_PLUG_LOG("[hotplug3] mt8193_hotinit = %d,mt8193_hdmiinit=%d\n", mt8193_hotinit, mt8193_hdmiinit); } else if((mt8193_hotplugstate == HDMI_STATE_HOT_PLUGIN_AND_POWER_ON)&&((e_hdcp_ctrl_state==HDCP_WAIT_RI)||(e_hdcp_ctrl_state==HDCP_CHECK_LINK_INTEGRITY))) { if(bCheckHDCPStatus(HDCP_STA_RI_RDY)) { vSetHDCPState(HDCP_CHECK_LINK_INTEGRITY); vSendHdmiCmd(HDMI_HDCP_PROTOCAL_CMD); } } mt8193_hdmiinit = 1; } } if(mt8193_hdmiCmd==HDMI_PLUG_DETECT_CMD) { vClearHdmiCmd(); //vcheckhdmiplugstate(); //vPlugDetectService(e_hdmi_ctrl_state); } else if(mt8193_hdmiCmd==HDMI_HDCP_PROTOCAL_CMD) { vClearHdmiCmd(); HdcpService(e_hdcp_ctrl_state); } }