⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aprv_htv.c

📁 PLM1000C芯片驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
		&&((work_ip_format & 0x1f) == 0x0f));
}
#endif
Byte aprv_HTVPLMGetVIIstatus(void)
{
	return VII_status;
}
void aprv_HTVPLMChangeVIIstatus(void)
{
	VII_status=rgen_ChangeControlAround(VII_status, RGEN_CHANGE_UP, VII_ON, VII_DEMO);
	if(VII_status == VII_DEMO)
	{
		DemoControl(TRUE);
	}
	if(VII_status == VII_ON)
	{
		DemoControl(FALSE);
		//DemoOn();
	}
}
void aprv_HTVPLMSourceswitch(Byte source)
{
       config_Second=0;   
//      	pimg_SetRGBBlanking(PIMG_RGB_BLANK_ON); //mute RGB output , dh modify 1115
		Write_Enable(TRUE);
	if(source ==FSRT_SRC_DVD)
	{
		filter_number[0] = 0;
		work_ip_format_SWITCH[0]=0x0f;
		Switch_to_HD();
		}
	if(source ==FSRT_SRC_RGB)
	{
		work_ip_format_SWITCH[1]=0x0f;
		filter_number[1] = 0;
		Switch_to_VGA();
	}
		Write_Enable(FALSE);
}

void aprv_HTVPLMSetHDTVparameter(void)
{
	if(fsrt_GetCurrentSource() == FSRT_SRC_RGB)
	{
		if(aprv_HTVPLMGetformat() != FORMAT_UNKNOW)
			rsrv_UpdateHardware(RSRV_HTV_PHASE_480P+aprv_HTVPLMGetformat() -FORMAT_480P);
		switch(aprv_HTVPLMGetformat())
		{
			case FORMAT_480I : //480i
			case FORMAT_576I : //480p
			case FORMAT_480P : //576i
			case FORMAT_576P : //576p
						break ;

			case FORMAT_720P60 : //720p/60
			case FORMAT_1080I60: //1080i/60
			case FORMAT_1080P60: //1080p/60
				rsrv_UpdateHardware(APRV_HDTV_VAMP_60);
						break ;

			case FORMAT_720P50 : //720p/50
			case FORMAT_1080I50: //1080i/50
			case FORMAT_1080P50: //1080p/50
				rsrv_UpdateHardware(APRV_HDTV_VAMP_50);
						break ;
			default: 
						return ;
		}
	}
}

void aprv_HTVPLMUpdatePCparameter(void)
{
	Byte i;
	if(fsrt_GetCurrentSource() == FSRT_SRC_RGB)
	{
		for (i=0;i<PC_ADJUST_PARA_MAX; i++)
		{
			aprv_HTVPLMSetPCparameter(i);
		}
	}
}

Byte aprv_HTVPLMGetPCparameter(PC_AjustParaEnum index)
{
	Byte return_value;
	Byte buffer;
	Byte service_item;
	Byte base_value,offset,temp;
	Byte default_format = FORMAT_XGA60;

	if(aprv_HTVPLMGetformat()!=FORMAT_UNKNOW)
		default_format = aprv_HTVPLMGetformat();
	service_item = Get_PCparameter_baseitem(index);	
	if(index == PC_ADJUST_PARA_PHASE)
		return_value = rsrv_GetValue(APRV_PC_ADJUST_PARA_PHASE_XGA60+default_format -FORMAT_XGA60);
	else
	{
		base_value = rsrv_GetValue(service_item);
		offset = rsrv_GetValue(index-PC_ADJUST_PARA_HPOS+APRV_PC_ADJUST_PARA_HPOS);
		temp = offset & 0x80;
		if ( temp == 0x80)
		{
			temp = offset &0x7f;
			buffer = base_value - temp;
		}
		else
		{
			temp = offset &0x7f;
			buffer = base_value + temp;
		}
		return_value = buffer;
	}
	pc_adjust_parameter[index] = return_value; 
	return return_value;
}


void aprv_HTVPLMChangePCparameter(PC_AjustParaEnum index,rgen_ChangeUpDown_type updown_value)
{
	Byte buffer;
	Byte max_value,min_value;
	Byte default_format = FORMAT_XGA60;
	Byte service_item;
	Byte base_value,offset;
	
	service_item = Get_PCparameter_baseitem(index);	
	if(aprv_HTVPLMGetformat()!=FORMAT_UNKNOW)
		default_format = aprv_HTVPLMGetformat();
	if(index == PC_ADJUST_PARA_PHASE)
		max_value = 0x1f;
	buffer = pc_adjust_parameter[index];


	if(index == PC_ADJUST_PARA_PHASE)
	{
		buffer = (rgen_ChangeControl(buffer, updown_value, 0x1f , 0 ));
		rsrv_SetValue((APRV_PC_ADJUST_PARA_PHASE_XGA60+default_format -FORMAT_XGA60), (Word)buffer);
	}
	else
	{
		base_value = rsrv_GetValue(service_item);
		if(base_value>=PC_PARA_CONTROL_RANGE) min_value=base_value-PC_PARA_CONTROL_RANGE;
		else min_value=0;
		if(base_value<=63-PC_PARA_CONTROL_RANGE) max_value=base_value+PC_PARA_CONTROL_RANGE;
		else max_value=63;
		buffer = (rgen_ChangeControl(buffer, updown_value, max_value , min_value));
		
		if (base_value> buffer)
		{
			offset = base_value - buffer;
			offset |= 0x80;
		}
		else
		{
			offset = buffer - base_value;
		}
		rsrv_SetValue(index-PC_ADJUST_PARA_HPOS+APRV_PC_ADJUST_PARA_HPOS, (Word)offset);

	}
	aprv_HTVPLMSetPCparameter(index);
	
}

void aprv_HTVPLMSetPCparameter(PC_AjustParaEnum index)
{
	Byte default_format = FORMAT_XGA60;

	if(aprv_HTVPLMGetformat()!=FORMAT_UNKNOW)
		default_format = aprv_HTVPLMGetformat();
	
	pc_adjust_parameter[index] = aprv_HTVPLMGetPCparameter(index); 

	if(index == PC_ADJUST_PARA_PHASE)
		rsrv_UpdateHardware(APRV_PC_ADJUST_PARA_PHASE_XGA60+default_format -FORMAT_XGA60);
	else
		rsrv_UpdateHardware(index-PC_ADJUST_PARA_HPOS+APRV_PC_ADJUST_PARA_HPOS);
}

void aprv_HTVPLMSetphase(Byte value)
{
	value = value;
	Phase_Manual_Adjustment(value);
}

Bool aprv_HTVPLMPhaseitempresent(Word item)
{

	
	if((fsrt_GetCurrentSource() == FSRT_SRC_DVD)
		&&((work_ip_format & 0x1f) == (item - RSRV_HTV_PHASE_480P + FORMAT_480P)))
	{
		return TRUE;
	}
	else
		return FALSE;
}
//static function define

static Byte Get_PCparameter_baseitem(PC_AjustParaEnum index)
{
	Byte service_item;
	
	switch(index)
	{
		case PC_ADJUST_PARA_HPOS:
			service_item = RSRV_SKYWORTH_H_POS_60;
		break;
		case PC_ADJUST_PARA_HAMP:
			service_item = RSRV_SKYWORTH_H_AMP_60;
		break;
		case PC_ADJUST_PARA_VPOS:
			service_item = RSRV_SKYWORTH_V_POS_60;
		break;
		case PC_ADJUST_PARA_VAMP:
			service_item = RSRV_SKYWORTH_V_AMP_60;
		break;
		case PC_ADJUST_PARA_EWPA:
			service_item = RSRV_SKYWORTH_EWPA_60;
		break;
		default:
		break;
	}	
	return service_item;
}
//运行配置
static Bool Format_monitor(void)
{
/*
//0000	480i                  0001	576i 	
//0110	480P			0111	576P		    	1000	720P/60
//1001	720P/50			1010	1080i/60			1011	1080i/50
//1111	N/A
*/
//配置部分
	if( Power_State == 0 )
		return FALSE;
	cur_ip_format = Read_Ip_Format(PLM1000_ADDR) ;
	if(jbl_DelayActive==TRUE)  //dh modify 1115
	{
		jbl_DelayNum++;
		if(jbl_DelayNum==3)
		{
			jbl_DelayActive=FALSE;
			aprv_MuteImage(APRV_MUTE_TYPE_CONDITIONAL_SYSTEM_DEMUTE);//open RGB output ,
			aprv_MuteSound(APRV_MUTE_TYPE_CONDITIONAL_SYSTEM_DEMUTE);
		}	
	}
       
	if((cur_ip_format&0x1f )== (pre_format[VGA_Input]&0x1f)) //dh modify 1106
	{
		if( filter_number[VGA_Input] < (FILTER_NUM - 1) )
		{
				filter_number[VGA_Input] = filter_number[VGA_Input] + 1 ;
				bRefresh = TRUE;
		}
		else
		{
				filter_number[VGA_Input] = FILTER_NUM ;
//				Loop_Number = 0;
				if(((cur_ip_format&0x1f ) == 0x0f) && bRefresh)
				{
					bRefresh = FALSE;
					aprv_HTVPLMInit(fsrt_GetCurrentSource());
					}
		}
	}
	else //if((cur_ip_format&0x1f )!= (pre_format[VGA_Input]&0x1f))
	{
			pre_format[VGA_Input] = cur_ip_format;
			filter_number[VGA_Input] = 0 ;
/*			Loop_Number++;
			if(Loop_Number > 3)
			{
				Loop_Number =0;
				aprv_HTVPLMInit(fsrt_GetCurrentSource());
				}*/
	}
		
#if 0
	if(((pre_format[VGA_Input]&0x1f)==0x0f))	// when no signal two times , zhb 
	{
		  filter_number_nosignal[VGA_Input] ++;

		  if(filter_number_nosignal[VGA_Input] > 10)
		  {
		       filter_number_nosignal[VGA_Input] = 0;
			if(VGA_Input && jbl_bPreVGA)
				jbl_bPreVGA=0;
			else if(!VGA_Input && jbl_bPreHD)
				jbl_bPreHD=0;
		}
	}
	else
	{
			filter_number_nosignal[VGA_Input] = 0;
	}
#endif

	if((fsrt_GetCurrentSource() == FSRT_SRC_DVD) ||(fsrt_GetCurrentSource() == FSRT_SRC_RGB))  //dh modify 070927
	{
		phase = (Byte)rsrv_GetServiceValue(APRV_ITEM_HTV_PLM_PHASE);
		AGCGain = (Byte)rsrv_GetServiceValue(APRV_ITEM_HTV_PLM_AGCGAIN);
		AGCth = (Byte)rsrv_GetServiceValue(APRV_ITEM_HTV_PLM_AGCTH);

		if(phase && (cur_ip_format != 0x0f) && (cur_ip_format > 5))
			{	
			Write_Enable(TRUE);
	//jyj modify start
	//modified for microvision input		
			Phase_Adjustment(cur_ip_format & 0x1f);
	//jyj modify end

			Write_Enable(FALSE);
			}
		if(AGCGain||AGCth)
		{
			Write_Enable(TRUE);
	//jyj modify start
	//modified for microvision input		
			AGC_Adjustment(cur_ip_format & 0x1f);
	//jyj modify end
			Write_Enable(FALSE);
		}
	}
	if (((filter_number[VGA_Input] == FILTER_NUM - 1) && (cur_ip_format != work_ip_format_SWITCH[VGA_Input])) | (config_Second == 1)) 	
	{
		Loop_Number = 0 ;
		phase_counter = 0 ;
		work_ip_format = cur_ip_format;
		work_ip_format_SWITCH[VGA_Input] =cur_ip_format;
		Write_Enable(TRUE);
		format_override(PLM1000_ADDR,work_ip_format & 0x1f);
		Load_Config_Register( work_ip_format) ;
		aprv_DisplayStatus();
		Write_Enable(FALSE);
		aprv_HTVPLMSetHDTVparameter();
		aprv_HTVPLMUpdatePCparameter();

		if(config_Second == 1)
			config_Second = 0 ;
		else
		{
			config_Second = 1 ;	
			jbl_Delay();	
		}	
		
		return TRUE;
	}
	return FALSE;
}

#if 0
void jbl_UpdateRegister(void)
{	
		//Detect_Num = 0;
		DemoCounter = 0 ;//dh modify 071010 格式变化后,DEMO重新开始
		Demo_Switch_2_On=1; //dh modify 071011,DEMO初始化
		Write_Enable(TRUE);
		format_override(PLM1000_ADDR,work_ip_format & 0x1f);
		Load_Config_Register( work_ip_format) ;  //dh modify here for vga_config 070925
		Write_Enable(FALSE);

//	if(config_Second==0)
//		pimg_SetRGBBlanking(PIMG_RGB_BLANK_OFF);//open RGB output ,dh modify 1107
	
}
#endif

static void VGA_config(Byte cur_ip_format)
{
	Byte RI2C_EXP_RAM value[5] ;
	if(cur_ip_format == 144)//16-1024*768
	{
		value[0] = 98 ;
		value[1] = 112 ;
		value[2] = 128 ;
		Write_HTV_Register(PLM1000_ADDR,3,value,1);
		value[0] = 233 ;
		Write_HTV_Register(PLM1000_ADDR,1,value,70);
		value[0] = 37 ;
		Write_HTV_Register(PLM1000_ADDR,1,value,73);
		value[0] = 75 ;
		value[1] = 131 ;
		Write_HTV_Register(PLM1000_ADDR,2,value,204);
	}
	else if(cur_ip_format == 145)//17-800*600
	{
		value[0] = 0 ;
		value[1] = 40 ;
		value[2] = 0 ;
		value[3] = 0 ;
		value[4] = 37 ;
		Write_HTV_Register(PLM1000_ADDR,5,value,69);
		value[0] = 78 ;
		value[1] = 195 ;
		Write_HTV_Register(PLM1000_ADDR,2,value,204);
	}
//jyj add start
//增加对带microvision信号的处理
	else if((cur_ip_format == 0x80) || (cur_ip_format == 0x81) || (cur_ip_format == 0x86) || (cur_ip_format == 0x87))//480i with microvision
	{
		value[0] = 5;
		value[1] = 20;
		Write_HTV_Register(PLM1000_ADDR,2,value,16);
	}
//jyj add end	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -