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

📄 ddx8000_binary.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 3 页
字号:
	WriteToI2c(DDX8K_ADDR,C12MAP_REG,&data,1);
	data = 0x20;
	WriteToI2c(DDX8K_ADDR,C34MAP_REG,&data,1);
	data = 0x51;
	WriteToI2c(DDX8K_ADDR,C56MAP_REG,&data,1);
	data = 0x00;
	WriteToI2c(DDX8K_ADDR,C78MAP_REG,&data,1);
	
//	write_reg_bit(0x30,
//	BYTE data = 0x00;
//	WriteToI2c(DDX8K_ADDR,0x03,&data,1);
	//unmute all channels
//	ddx_enableAM_mode();
/*	NOP;
	ddx_masterMute(0);	
	NOP;
	ddx_enableEPAD();
*/
}
	
void ddx_ampvol_func_left(void);
void ddx_ampvol_func_right(void);
void ddx_ampvol_func_up(void);
void ddx_ampvol_func_down(void);
	
void ddx_volume_adjust(UINT32 key)
{
	switch(key)
	{
		case IRC_UP:
			ddx_ampvol_func_up();
			break;
		case IRC_DOWN:
			ddx_ampvol_func_down();
			break;
		case IRC_LEFT:
			ddx_ampvol_func_left();
			break;
		case IRC_RIGHT:
			ddx_ampvol_func_right();
			break;
	}
}

void load_amp_setup(void)//xyy 2004-1-13 10:20
{
    int iRts,i;
    BYTE tmp = 0;
    BYTE *p = (BYTE *)(&tmp);
    printf("-----*********------load_amp_setup()-----***********-------\n");
    iRts=ReadFromI2c(0xa0, AMP_I2CADDR_START, &amp_userSet, sizeof(amp_userSet));   
    ReadFromI2c(0xa0, BASS_GAIN_ADDR, &amp_userSet.ddx_Bass_lev, 1);   
    ReadFromI2c(0xa0, TREBLE_GAIN_ADDR, &amp_userSet.ddx_Treble_lev, 1);   
    ReadFromI2c(0xa0, DDX_EQ_TYPE_ADDR, &amp_userSet.ddx_EQ_sel, 1);   
    ReadFromI2c(0xa0, DDX_REVB_TYPE_ADDR, &amp_userSet.ddx_Revb_sel, 1);   
    printf("===iRts : %d====\n",iRts);
    if(iRts<0)
    {
    	set_ampsetup_default();
		WriteToI2c(0xa0,AMP_I2CADDR_START,&amp_userSet,sizeof(amp_userSet));
    }
/*	printf("1=========channel mv volume is: %x========\n",amp_userSet.mainvol);
	printf("1=========channel 1 volume is: %x========\n",amp_userSet.lfrontvol);
	printf("1=========channel 2 volume is: %x========\n",amp_userSet.rfrontvol);
	printf("1=========channel 3 volume is: %x========\n",amp_userSet.lrearvol);
	printf("1=========channel 4 volume is: %x========\n",amp_userSet.rrearvol);
	printf("1=========channel 5 volume is: %x========\n",amp_userSet.centervol);
	printf("1=========channel 6 volume is: %x========\n",amp_userSet.woofervol);
*/
	WriteToI2c(DDX8K_ADDR,MASTER_VOL_REG,&amp_userSet.mainvol,1);
	WriteToI2c(DDX8K_ADDR,C1V_REG,&amp_userSet.lfrontvol,1);
	WriteToI2c(DDX8K_ADDR,C2V_REG,&amp_userSet.rfrontvol,1);
	WriteToI2c(DDX8K_ADDR,C3V_REG,&amp_userSet.lrearvol,1);
	WriteToI2c(DDX8K_ADDR,C4V_REG,&amp_userSet.rrearvol,1);
	WriteToI2c(DDX8K_ADDR,C5V_REG,&amp_userSet.centervol,1);
	WriteToI2c(DDX8K_ADDR,C6V_REG,&amp_userSet.woofervol,1);
	ddx_Set_EQ(amp_userSet.ddx_EQ_sel);
	 *p = (amp_userSet.ddx_Treble_lev<<4)|amp_userSet.ddx_Bass_lev;
	WriteToI2c(DDX8K_ADDR,TONE_CTRL_REG,p,1);
}	

/*****************************************
/Function: ddx_Set_EQ()
/Description: Set coefficient values of biquads for preset EQ settings. 
/Creator: xulf
/Date: 2003-12-27
/*****************************************/
void ddx_Set_EQ(BYTE EQtype)
{
    coef_factor biquad_coef;
    ddx_disableEPAD();   //EAPD
    ddx_masterMute(1);  //mute all channels
    switch(EQtype)
    {
	case NONE:
	    //set the channel pre-scale. 
	    ddx_writeCoefVal(0xc8,0xe36809);  //channel 1 
    	    biquad_coef.b2 = 0x000000;
	    biquad_coef.b0 = 0x3fffff;
	    biquad_coef.a2 = 0x000000;
	    biquad_coef.a1 = 0x000000;
	    biquad_coef.b1 = 0x000000;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 	
	    break;	
	case ROCK:
	    ddx_writeCoefVal(0xc8,0xaf3cc5);  //channel 1 
	    biquad_coef.b2 = 0x7fcf05;
	    biquad_coef.b0 = 0x40058a;
	    biquad_coef.a2 = 0x8025e6;
	    biquad_coef.a1 = 0x7fed02;
	    biquad_coef.b1 = 0x8012fe;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7fd80a;
	    biquad_coef.b0 = 0x4006a3;
	    biquad_coef.a2 = 0x801aaf;
	    biquad_coef.a1 = 0x7ff28c;
	    biquad_coef.b1 = 0x800d74;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x7ead9f;
	    biquad_coef.b0 = 0x3fc7c8;
	    biquad_coef.a2 = 0x81c2d0;
	    biquad_coef.a1 = 0x7f1d06;
	    biquad_coef.b1 = 0x80e2fa;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x5d3dab;
	    biquad_coef.b0 = 0x46a5ae;
	    biquad_coef.a2 = 0x9576f8;
	    biquad_coef.a1 = 0x714597;
	    biquad_coef.b1 = 0x8eba69;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 	
	    break;	
	case POP:
	    ddx_writeCoefVal(0xc8,0xdb759b);  //channel 1 
    	    biquad_coef.b2 = 0x7fe781;
	    biquad_coef.b0 = 0x3ffd3a;
	    biquad_coef.a2 = 0x801e09;
	    biquad_coef.a1 = 0x7ff0f8;
	    biquad_coef.b1 = 0x800f08;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7cc19b;
	    biquad_coef.b0 = 0x40e89e;
	    biquad_coef.a2 = 0x816d29;
	    biquad_coef.a1 = 0x7f40df;
	    biquad_coef.b1 = 0x80bf21;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x640c0d;
	    biquad_coef.b0 = 0x3cd666;
	    biquad_coef.a2 = 0xa24727;
	    biquad_coef.a1 = 0x6cbb1a;
	    biquad_coef.b1 = 0x9344e6;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x4274ad;
	    biquad_coef.b0 = 0x37613b;
	    biquad_coef.a2 = 0xcec8dd;
	    biquad_coef.a1 = 0x4cbc8c;
	    biquad_coef.b1 = 0xb34374;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 
	    break;
	case PARTY:
	    ddx_writeCoefVal(0xc8,0xe4a917);  //channel 1 
    	    biquad_coef.b2 = 0x7fc83b;
	    biquad_coef.b0 = 0x400e7c;
	    biquad_coef.a2 = 0x801acd;
	    biquad_coef.a1 = 0x7ff297;
	    biquad_coef.b1 = 0x800d69;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7f4db3;
	    biquad_coef.b0 = 0x402e50;
	    biquad_coef.a2 = 0x8055ad;
	    biquad_coef.a1 = 0x7fd50c;
	    biquad_coef.b1 = 0x802af4;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x7908a0;
	    biquad_coef.b0 = 0x412849;
	    biquad_coef.a2 = 0x84a6cc;
	    biquad_coef.a1 = 0x7d8082;
	    biquad_coef.b1 = 0x827f7e;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x2688b9;
	    biquad_coef.b0 = 0x4edd22;
	    biquad_coef.a2 = 0xbbbd01;
	    biquad_coef.a1 = 0x4dda39;
	    biquad_coef.b1 = 0xb225c7;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 	
	    break;
	    case DANCE:
	    ddx_writeCoefVal(0xc8,0xddef46);  //channel 1 
    	    biquad_coef.b2 = 0x7fd0f2;
	    biquad_coef.b0 = 0x400a20;
	    biquad_coef.a2 = 0x801acd;
	    biquad_coef.a1 = 0x7ff297;
	    biquad_coef.b1 = 0x800d69;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7f2132;
	    biquad_coef.b0 = 0x4039df;
	    biquad_coef.a2 = 0x806b0f;
	    biquad_coef.a1 = 0x7fca4b;
	    biquad_coef.b1 = 0x8035b5;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x7a469f;
	    biquad_coef.b0 = 0x40cd3f;
	    biquad_coef.a2 = 0x841ee2;
	    biquad_coef.a1 = 0x7ddf4c;
	    biquad_coef.b1 = 0x8220b4;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x2ca6df;
	    biquad_coef.b0 = 0x4dd8f0;
	    biquad_coef.a2 = 0xb7a741;
	    biquad_coef.a1 = 0x534a84;
	    biquad_coef.b1 = 0xacb57c;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 
	    break;
	case HARD:
	    ddx_writeCoefVal(0xc8,0xdfd91e);  //channel 1 
    	    biquad_coef.b2 = 0x7fdeb7;
	    biquad_coef.b0 = 0x400729;
	    biquad_coef.a2 = 0x8012f5;
	    biquad_coef.a1 = 0x7ff683;
	    biquad_coef.b1 = 0x80097d;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7fbd74;
	    biquad_coef.b0 = 0x400e52;
	    biquad_coef.a2 = 0x8025e6;
	    biquad_coef.a1 = 0x7fed02;
	    biquad_coef.b1 = 0x8012fe;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x007c0c;
	    biquad_coef.b0 = 0x662860;
	    biquad_coef.a2 = 0xb33334;
	    biquad_coef.a1 = 0x58ae56;
	    biquad_coef.b1 = 0xa751aa;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x000000;
	    biquad_coef.b0 = 0x3fffff;
	    biquad_coef.a2 = 0x000000;
	    biquad_coef.a1 = 0x000000;
	    biquad_coef.b1 = 0x000000;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 	    
	    break;
	case CLASSIC:
	    ddx_writeCoefVal(0xc8,0xaf3cc5);  //channel 1 
    	    biquad_coef.b2 = 0x7f4977;
	    biquad_coef.b0 = 0x400f9b;
	    biquad_coef.a2 = 0x809753;
	    biquad_coef.a1 = 0x7fb3a3;
	    biquad_coef.b1 = 0x804c5d;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7b9d6f;
	    biquad_coef.b0 = 0x40ba80;
	    biquad_coef.a2 = 0x82ed90;
	    biquad_coef.a1 = 0x7e77e0;
	    biquad_coef.b1 = 0x818820;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x4e4a5f;
	    biquad_coef.b0 = 0x459fbc;
	    biquad_coef.a2 = 0xa67628;
	    biquad_coef.a1 = 0x5e3269;
	    biquad_coef.b1 = 0xa1cd97;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x000000;
	    biquad_coef.b0 = 0x3fffff;
	    biquad_coef.a2 = 0x000000;
	    biquad_coef.a1 = 0x000000;
	    biquad_coef.b1 = 0x000000;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 
	    break;
	case SOFT:
	    ddx_writeCoefVal(0xc8,0xd77b6);  //channel 1 
    	    biquad_coef.b2 = 0x7fdd5d;
	    biquad_coef.b0 = 0x4003eb;
	    biquad_coef.a2 = 0x801acd;
	    biquad_coef.a1 = 0x7ff297;
	    biquad_coef.b1 = 0x800d69;
	    ddx_writeCoefValSets(0x05,biquad_coef);  //channel 1 biquad2
    	    biquad_coef.b2 = 0x7fa8c6;
	    biquad_coef.b0 = 0x4009de;
	    biquad_coef.a2 = 0x80437d;
	    biquad_coef.a1 = 0x7fde2f;
	    biquad_coef.b1 = 0x8021d1;
	    ddx_writeCoefValSets(0x0a,biquad_coef);  //channel 1 biquad3	    
    	    biquad_coef.b2 = 0x7d21e7;
	    biquad_coef.b0 = 0x3f992d;
	    biquad_coef.a2 = 0x83abbd;
	    biquad_coef.a1 = 0x7e25ce;
	    biquad_coef.b1 = 0x81da32;
	    ddx_writeCoefValSets(0x0f,biquad_coef);  //channel 1 biquad4	    
    	    biquad_coef.b2 = 0x157218;
	    biquad_coef.b0 = 0x5bad59;
	    biquad_coef.a2 = 0xb33334;
	    biquad_coef.a1 = 0x58ae56;
	    biquad_coef.b1 = 0xa751aa;
	    ddx_writeCoefValSets(0x14,biquad_coef);  //channel 1 biquad5
	    //each channel uses channel 1 coefficient values.
    	    write_reg_bit(CONFIGREG_D,7,1); 
	    break;
	default:
    }	
    ddx_enableEPAD();   //unEAPD
    ddx_masterMute(0);  //demute all channels			
}

/******************************************
/Function: ddx_TunerOutput_VSS()
/description: Specific stereo to "virtual 5.1 effect" 
			setting for tuner input mode 
/creator: xulf 
/date: 2003-12-24
/******************************************/
void ddx_TunerOutput_VSS(void)
{
    BYTE data;
    coef_factor bass_coef;
    
    ddx_disableEPAD();   //EAPD
    ddx_masterMute(1);  //mute all channels
    
    //disable bass management mode
    ddx_disable_BassManagement();
    //enable adjacent channel-mixing mode
    write_reg_bit(CONFIGREG_E,0,1);

    //SDI_12-->LT/RT; SDI_34-->0; SDI_56-->0; SDI_78-->0
    //7 5 4 2 1 6-->FL FR VirtualCE  VirtualSL VirtualSR VirtualSW
	data = 0x01;
	WriteToI2c(DDX8K_ADDR,C12MAP_REG,&data,1);
	data = 0x01;
	WriteToI2c(DDX8K_ADDR,C34MAP_REG,&data,1);
	data = 0x01;
	WriteToI2c(DDX8K_ADDR,C56MAP_REG,&data,1);
	data = 0x00;
	WriteToI2c(DDX8K_ADDR,C78MAP_REG,&data,1);
   
    //set pre-scale factor
    ddx_writeCoefVal(0xd0,0x000000);  //X-Full attenuation
    ddx_writeCoefVal(0xd1,0x7FFFFF);  //0dB
    ddx_writeCoefVal(0xd2,0x400000);  //-6dB
    ddx_writeCoefVal(0xd3,0x400000);
    ddx_writeCoefVal(0xd4,0x400000);
    ddx_writeCoefVal(0xd5,0x400000);
    ddx_writeCoefVal(0xd6,0x000000);
    
    //set channel 7,5,4,2,1 filter coefficient
    bass_coef.b2 = HPF_COEF_B2;
    bass_coef.b0 = HPF_COEF_B0;
    bass_coef.a2 = HPF_COEF_A2;
    bass_coef.a1 = HPF_COEF_A1;
    bass_coef.b1 = HPF_COEF_B1;
    ddx_writeCoefValSets(0x96,bass_coef);  //channel 7    xulf 2003-12-15
    ddx_writeCoefValSets(0x64,bass_coef);  //channel 5
    ddx_writeCoefValSets(0x4b,bass_coef);  //channel 4
    ddx_writeCoefValSets(0x19,bass_coef);  //channel 2
    ddx_writeCoefValSets(0x00,bass_coef);  //channel 1
	
    //set channel 6 filter coefficient
    bass_coef.b2 = LPF_COEF_B2;
    bass_coef.b0 = LPF_COEF_B0;
    bass_coef.a2 = LPF_COEF_A2;
    bass_coef.a1 = LPF_COEF_A1;
    bass_coef.b1 = LPF_COEF_B1;
    ddx_writeCoefValSets(0x7d,bass_coef);    
	
    ddx_enableEPAD();   //unEAPD
    ddx_masterMute(0);  //demute all channels    
}


⌨️ 快捷键说明

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