Esempio n. 1
0
__s32 Hdmi_hal_set_audio_para(hdmi_audio_t * audio_para)
{
	__u32 update_flag;

	__inf("Hdmi_hal_set_audio_para\n");
	if(!audio_para)
		return -1;

  __inf("sample_bit:%d in Hdmi_hal_set_audio_para, audio_para->sample_bit:%d\n", audio_parameter.sample_bit, audio_para->sample_bit);
  if(audio_para->sample_bit != audio_parameter.sample_bit) {
		audio_parameter.sample_bit   = audio_para->sample_bit;
		update_flag = 1;
		__inf("sample_bit:%d in Hdmi_hal_set_audio_para\n", audio_parameter.sample_bit);
  }

	if(audio_para->sample_rate != audio_parameter.sample_rate) {
		audio_parameter.sample_rate = audio_para->sample_rate;
		update_flag = 1;
		__inf("sample_rate:%d in Hdmi_hal_set_audio_para\n", audio_parameter.sample_rate);
	}

	if(audio_para->channel_num != audio_parameter.ch_num) {
		audio_parameter.ch_num = audio_para->channel_num;
		update_flag = 1;
		__inf("channel_num:%d in Hdmi_hal_set_audio_para\n", audio_parameter.ch_num);
	}
	if(audio_para->data_raw != audio_parameter.type) {
		audio_parameter.type = audio_para->data_raw;
		update_flag = 1;
		__inf("data_raw:%d in Hdmi_hal_set_audio_para\n", audio_parameter.type);
	}
	if(audio_para->ca != audio_parameter.ca) {
		audio_parameter.ca = audio_para->ca;
		update_flag = 1;
		__inf("ca:%d in Hdmi_hal_set_audio_para\n", audio_parameter.ca);
	}

	if(update_flag == 1)
		audio_config(&audio_parameter);
	return 0;
}
Esempio n. 2
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;	
        }
}