Esempio n. 1
0
__s32 hdmi_main_task_loop(void)
{
	static __u32 times = 0;

	HPD = main_Hpd_Check();
	if( 0 == HPD )
	{
		if((hdmi_state > HDMI_State_Wait_Hpd)  || (hdmi_state == HDMI_State_Idle)) {
			__inf("plugout\n");
			hdmi_state = HDMI_State_Idle;
			video_on = 0;
			audio_on = 0;
			Hdmi_hpd_event();
		}

		if((times++) >= 10) {
			times = 0;
			__inf("unplug state !!\n");
		}
  }

	switch(hdmi_state) {

		case HDMI_State_Idle:
			__inf("HDMI_State_Idle\n");
			bsp_hdmi_hrst();
			bsp_hdmi_standby();

			hdmi_state = HDMI_State_Wait_Hpd;
		case HDMI_State_Wait_Hpd:
			__inf("HDMI_State_Wait_Hpd\n");
			//bsp_hdmi_init();
			if(HPD) {
				hdmi_state = HDMI_State_EDID_Parse;
				__inf("plugin\n");
			} else {
				return 0;
			}
			msleep(200);
		case HDMI_State_Rx_Sense:

		case HDMI_State_EDID_Parse:
			__inf("HDMI_State_EDID_Parse\n");
			ParseEDID();
			hdmi_state = HDMI_State_HPD_Done;
			Hdmi_hpd_event();
			if(video_enable)
				set_video_enable(true);

		case HDMI_State_HPD_Done:
			//__inf("HDMI_State_HPD_Done\n");
			if(video_on && hdcp_enable)
				bsp_hdmi_hdl();
			return 0;
		default:
			__wrn(" unkonwn hdmi state, set to idle\n");
			hdmi_state = HDMI_State_Idle;
			return 0;
	}
}
Esempio n. 2
0
__s32 hdmi_core_initial(void)
{
	if(0 != sw_init_flag)
	{
		hdmi_state = HDMI_State_Playback;
	}
	else
	{
		hdmi_state = HDMI_State_Idle;
		video_mode = HDMI720P_50;
	}

	memset(&audio_info,0,sizeof(HDMI_AUDIO_INFO));
	memset(Device_Support_VIC,0,sizeof(Device_Support_VIC));
	sunxi_set_reg_base(0xf0000000);
	api_set_func(hdmi_delay_us);
	if(0 != sw_init_flag)
	{
		ParseEDID();
		Hdmi_hpd_event();
	}
	else
	{
		video_enter_lp();
	}
	audio_info.data_raw = 1; /* default pcm */

	return 0;
}
Esempio n. 3
0
__s32 Hdmi_early_suspend(void)
{
	pr_info("[HDMI]Hdmi_early_suspend\n");
	if(hdmi_used) {
		Hdmi_hpd_event(0);
		b_hdmi_suspend = 1;
	}

	return 0;
}
Esempio n. 4
0
__s32 hdmi_core_initial(bool sw_only)
{
	memset(&audio_info,0,sizeof(HDMI_AUDIO_INFO));
	mutex_init(&hdmi_lock);
	api_set_func(hdmi_delay_us);
	hdmi_para_init();
	if(sw_only) {
		video_enable = 1;
		hdmi_state = HDMI_State_HPD_Done;
		if(bsp_hdmi_get_hpd()) {
			ParseEDID();
			video_on = 1;
			Hdmi_hpd_event();
		}
	} else {
		bsp_hdmi_init();
	}

	return 0;
}
Esempio n. 5
0
__s32 hdmi_main_task_loop(void)
{
	static __u32 times = 0;

	HPD = main_Hpd_Check();
	if( !HPD )
	{
		if((times++) >= 10) {
			times = 0;
			sunxi_hdcp_rst();
			__inf("unplug state\n");
		}
		if(hdmi_state > HDMI_State_Wait_Hpd) {
			__inf("plugout\n");
			hdmi_state = HDMI_State_Wait_Hpd;
			sunxi_hdcp_rst();
			Hdmi_hpd_event();
			video_enter_lp();
		}
  }

	if(hdmi_state > HDMI_State_Video_config)
	{
		if(hdcp_enable)
			sunxi_hdcp_hdl();
	}

	switch(hdmi_state) {
		case HDMI_State_Idle:
			hdmi_state = HDMI_State_Wait_Hpd;

		case HDMI_State_Wait_Hpd:
			if(HPD) {
				hdmi_state = HDMI_State_EDID_Parse;
				__inf("plugin\n");
			} else {
				return 0;
			}

		case HDMI_State_Rx_Sense:

		case HDMI_State_EDID_Parse:
			hdmi_state = HDMI_State_Wait_Video_config;
			ParseEDID();
			Hdmi_hpd_event();

		case HDMI_State_Wait_Video_config:
			if(video_enable) {
				hdmi_state = 	HDMI_State_Video_config;
			} else {
				return 0;
			}
		case HDMI_State_Video_config:
			sunxi_hdcp_rst();
			video_config(video_mode);
			hdmi_state = 	HDMI_State_Audio_config;

		case HDMI_State_Audio_config:
			audio_config();
			hdmi_state = 	HDMI_State_Playback;
		case HDMI_State_Playback:
			return 0;
		default:
			__wrn(" unkonwn hdmi state, set to idle\n");
			hdmi_state = HDMI_State_Idle;
			return 0;
	}
}
__s32 hdmi_main_task_loop(void)
{
	static __u32 times = 0;
	HPD = main_Hpd_Check();
	if( !HPD )
	{
        if((times++) >= 10)
        {
            times = 0;
            __inf("unplug state\n");
        }
		
		if(hdmi_state > HDMI_State_Wait_Hpd)
		{
            __inf("plugout\n");
            hdmi_state = HDMI_State_Wait_Hpd;
            Hdmi_hpd_event();
		}
	}
	switch(hdmi_state)
        {
    	        case HDMI_State_Idle:
    		        hdmi_state = 	HDMI_State_Wait_Hpd;
    		        return 0; 
    		 
    	        case HDMI_State_Wait_Hpd:
    		        if(HPD)
    		        {
    		 	        hdmi_state = 	HDMI_State_EDID_Parse;
    		 	        __inf("plugin\n");
    		        }else
    		        {
    		 	        return 0;
    		        } 
    		 
    	        case HDMI_State_Rx_Sense:
    		 
    	        case HDMI_State_EDID_Parse:
                        HDMI_WUINT32(0x004,0x80000000);
                        HDMI_WUINT32(0x208,(1<<31)+ (1<<30)+ (1<<29)+ (3<<27)+ (0<<26)+ 
                        	       (1<<25)+ (0<<24)+ (0<<23)+ (4<<20)+ (7<<17)+
                        	       (15<<12)+ (7<<8)+ (0x0f<<4)+(8<<0) );	  
                        HDMI_WUINT32(0x200,0xfe800000);   			//txen enable
                        HDMI_WUINT32(0x204,0x00D8C850);   			//ckss = 1

                        HDMI_WUINT32(0x20c, 0 << 21);    		 


                        ParseEDID();
                        HDMI_RUINT32(0x5f0);

    		        hdmi_state = HDMI_State_Wait_Video_config;
                        Hdmi_hpd_event();

    	        case HDMI_State_Wait_Video_config:
    	        if(video_enable)
                {
                        hdmi_state = 	HDMI_State_Video_config;
                }else
                {
                	return 0;
                }
    		 
    	        case HDMI_State_Video_config:
                        video_config(video_mode);
                        hdmi_state = 	HDMI_State_Audio_config;    	
    		 
    	        case HDMI_State_Audio_config:
                        audio_config();
                        hdmi_state = 	HDMI_State_Playback;    
    		 
    	        case HDMI_State_Playback:
    		        return 0;  
    		 
		default:
                        __wrn(" unkonwn hdmi state, set to idle\n");
                        hdmi_state = HDMI_State_Idle;	
                        return 0;	
        }
}