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", &reg, &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", &reg, &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");
	}
}
Example #2
0
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);
  }
}