Exemplo n.º 1
0
/*
Funtion:	Set chip wake up
Input:
Sleep_Enable    --    1: Sleep
					  0: Working
Output:
			SUCCESS or FAILURE

*/
GX_STATE GX_Set_Sleep(struct gx1001_state *state, int Sleep_Enable)
{

    if(NEWONE==GX_Get_Version(state))
    {
        int temp1=0,temp2=0;
        int UCtmp1 = FAILURE,UCtmp2 = FAILURE;

        temp1=GX_Read_one_Byte(state, GX_MAN_PARA);	/*0x10 - bit2*/
        temp2=GX_Read_one_Byte(state, 0x14);/*0x14 - - bit4-bit5*/
        if ((temp1!= FAILURE)&&(temp2!= FAILURE))
        {
            temp1 &=0xfb;
            temp2 &=0xcf;

            temp1 |= 0x04&(Sleep_Enable<<2);
            temp2 |= 0x10&(Sleep_Enable<<4);
            temp2 |= 0x20&(Sleep_Enable<<5);

            UCtmp1 = GX_Write_one_Byte(state, GX_MAN_PARA,temp1);
            UCtmp2 = GX_Write_one_Byte(state, 0x14,temp2);

            if ((SUCCESS == UCtmp1)&&(SUCCESS == UCtmp2))
            {
                if (0==Sleep_Enable )
                {
                    UCtmp1 =GX_HotReset_CHIP(state);
                }
            }
        }
        return UCtmp1&&UCtmp2;
    }
    return 1;

}
Exemplo n.º 2
0
/*
Function: get  the version of chip
Input:None
Output:
	NEWONE--- new version
	OLDONE--- old version
*/
GX_STATE GX_Get_Version(struct gx1001_state *state)
{
    int temp1=0,temp2=0;
    temp1 = GX_Read_one_Byte(state, GX_CHIP_IDD);
    temp2 = GX_Read_one_Byte(state, GX_CHIP_VERSION);
    if((temp1==0x01)&&(temp2==0x02))
    {
        return NEWONE;
    }
    else
    {
        return OLDONE;
    }
}
Exemplo n.º 3
0
/*
Function:   get the signal intensity expressed in percentage
Output:
        The signal Strength value  ( Range is [0,100] )
*/
unsigned char GX_Get_Signal_Strength(void)
{
    int iAGC1_word=300,iAGC2_word=300,Amp_Value;
	int read_i=0, agc1_temp=0,agc2_temp=0;
    
    //the following parameters are specific for certain tuner
    int C0=130;
    int C1=61,  A1=-7;
    int C2=108, A2=-27;
    int C3=14,  A3=9;
    int C4=119, A4=-6;
    //-----------------------------------------------
        
	int i=0;

	while (i<40)
	{
		agc1_temp =GX_Read_one_Byte(GX_AGC1_CTRL);
		agc2_temp =GX_Read_one_Byte(GX_AGC2_CTRL);

		
		if ((agc1_temp>0)&&(agc2_temp>0))
		{

			if ((abs(agc1_temp - iAGC1_word)<5)&&(abs(agc2_temp - iAGC2_word)<5))
			{
				break;
			}
			
			iAGC1_word = agc1_temp;
			iAGC2_word = agc2_temp;
		}

		GX_Delay_N_ms(10);
		i++;

	}

	if (i>=40) 
	{
		iAGC1_word =GX_Read_one_Byte(GX_AGC1_CTRL);
		iAGC2_word =GX_Read_one_Byte(GX_AGC2_CTRL);
	}

	if (iAGC1_word > 0xdf) iAGC1_word = 0xdf;
	Amp_Value = C0 - ((iAGC1_word-C1)*(A1-A2))/(C2-C1) - ((iAGC2_word-C3)*(A3-A4))/(C4-C3);
	return GX_Change2percent(Amp_Value,0,100);

}         
Exemplo n.º 4
0
/*
Function: Set Digital AGC
Input: -------- 0:disable
				1:enable
Output:
	SUCCESS or FAILURE

*/
GX_STATE GX_Set_Digital_AGC(struct gx1001_state *state, int mode)
{
    int temp;
    temp = GX_Read_one_Byte(state, GX_DIGITAL_AGC_ON);
    if(0==mode)
        temp&=0x7f;
    else
        temp|=0x80;
    if(GX_Write_one_Byte(state, GX_DIGITAL_AGC_ON,temp))
        return SUCCESS;
    else
        return FAILURE;
}
Exemplo n.º 5
0
/*
Function: Set Tim Scan
Input: -------- 0:disable
			    1:enable
Output:
	SUCCESS or FAILURE

*/
GX_STATE GX_Set_Tim_Scan(struct gx1001_state *state, int mode)
{
    int temp;
    temp = GX_Read_one_Byte(state, GX_TIM_SCAN_ENA);
    if(0==mode)
        temp&=0x7f;
    else
        temp|=0x80;
    if(GX_Write_one_Byte(state, GX_TIM_SCAN_ENA,temp))
        return SUCCESS;
    else
        return FAILURE;
}
Exemplo n.º 6
0
/*
Function: Set  IF ThresHold Auto Adjust
Input:--------0:disable
			  1:enable
Output:
	SUCCESS or FAILURE

*/
GX_STATE GX_SET_AUTO_IF_THRES(struct gx1001_state *state, int mode)
{
    int temp;
    temp=GX_Read_one_Byte(state, GX_AUTO_THRESH);
    if(0==mode)
        temp&=0x7f;
    else
        temp|=0x80;
    if(GX_Write_one_Byte(state, GX_AUTO_THRESH,temp))
        return SUCCESS;
    else
        return FAILURE;
}
Exemplo n.º 7
0
/*
Function: Set SF Mode
Input: ----0:disable SF
		   1:enable SF
Output:
	SUCCESS or FAILURE

*/
GX_STATE GX_Set_SF(struct gx1001_state *state, int mode)
{
    int temp;
    temp=GX_Read_one_Byte(state, GX_SF_CANCEL_CTRL);
    if(0==mode)
        temp&=0xef;
    else
        temp|=0x10;
    if(GX_Write_one_Byte(state, GX_SF_CANCEL_CTRL,temp))
        return SUCCESS;
    else
        return FAILURE;

}
Exemplo n.º 8
0
/*
Function: Set TS output mode
Input:
		0 - Serial
		1 - Parallel
Output:
        SUCCESS or FAILURE
*/
GX_STATE GX_Set_OutputMode(struct gx1001_state *state, int mode)
{
    int temp=0;
    int UCtmp = FAILURE;
    temp=GX_Read_one_Byte(state, GX_OUT_FORMAT);	/*0x90 - bit6*/

    if (temp != FAILURE)
    {
        temp &= 0xbf;
        if (mode) temp+=0x60;//clock_posedge must set to 0,do not use 0x40  jeffchang

        UCtmp = GX_Write_one_Byte(state, GX_OUT_FORMAT,temp);
    }
    return UCtmp;
}
Exemplo n.º 9
0
/*
Function: Write one byte to chip
Input:
        RegAdddress -- The register address
        WriteValue  -- The write value
Output:
        SUCCESS or FAILURE
*/
GX_STATE GX_Write_one_Byte(struct gx1001_state *state, int RegAddress,int WriteValue)
{
    int UCtmp=FAILURE;
    unsigned char data[2];

    data[0] = (unsigned char)RegAddress;
    data[1] = (unsigned char)WriteValue;

    //UCtmp = GX_I2cReadWrite( WRITE, ChipAddress,data[0],&data[1], 1 );
    UCtmp = gx1001_writeregister(state, data[0], &data[1], 1);
    if (SUCCESS == UCtmp)//ok
    {
        if ((WriteValue&0xff) == (GX_Read_one_Byte(state, RegAddress)&0xff))
            return SUCCESS;
    }
    return FAILURE;
}
Exemplo n.º 10
0
/*
Function: Select QAM size (4 - 256), only for DVB.
Input:
        size  --  0-2 = reserved;
			        3 = 16QAM;
			        4 = 32QAM;
			        5 = 64QAM;
			        6 = 128QAM;
			        7 = 256QAM.
utput:
        SUCCESS or FAILURE
*/
GX_STATE GX_Select_DVB_QAM_Size(struct gx1001_state *state, int size)
{
    int temp=0;
    int UCtmp = FAILURE;

    if ((size>7)||(size<=2)) size = 5;
    size<<=5;

    temp=GX_Read_one_Byte(state, GX_MODE_AGC);

    if (temp != FAILURE)
    {
        temp &= 0x1f;
        temp += size;
        UCtmp = GX_Write_one_Byte(state, GX_MODE_AGC,temp);  /*0x20 - bit7:5   */
    }
    return UCtmp;
}
Exemplo n.º 11
0
/*
Function:   Set AGC parameter
Output:
        SUCCESS or FAILURE
*/
GX_STATE GX_Set_AGC_Parameter(struct gx1001_state *state)
{
    int temp=0;

    GX_Write_one_Byte(state, GX_AGC_STD,28);

    temp=GX_Read_one_Byte(state, GX_MODE_AGC);
    if(temp!=FAILURE)
    {
        //temp&=0xe6 modify be live for double agc

        temp&=0xe6;
        temp=temp+0x10;
        GX_Write_one_Byte(state, GX_MODE_AGC,temp);
        return SUCCESS;

    }
    else
    {
        return FAILURE;
    }

}
Exemplo n.º 12
0
GX_STATE GX_Get_AllReg(struct gx1001_state *state)
{
    AM_TRACE("GX_CHIP_ID          0x00   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_CHIP_ID                   ));
    AM_TRACE("GX_MAN_PARA         0x10   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_MAN_PARA                  ));
    AM_TRACE("GX_INT_PO1_SEL      0x11   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_INT_PO1_SEL               ));
    AM_TRACE("GX_SYSOK_PO2_SEL    0x12   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SYSOK_PO2_SEL             ));
    AM_TRACE("GX_STATE_IND        0x13   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_STATE_IND                 ));
    AM_TRACE("GX_TST_SEL          0x14   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_TST_SEL                   ));
    AM_TRACE("GX_I2C_RST          0x15   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_I2C_RST                   ));
    AM_TRACE("GX_MAN_RST          0x16   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_MAN_RST                   ));
    AM_TRACE("GX_BIST             0x18   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_BIST                      ));
    AM_TRACE("GX_MODE_AGC         0x20   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_MODE_AGC                  ));
    AM_TRACE("GX_AGC_PARA         0x21   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC_PARA                  ));
    AM_TRACE("GX_AGC2_THRES       0x22   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC2_THRES                ));
    AM_TRACE("GX_AGC12_RATIO      0x23   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC12_RATIO               ));
    AM_TRACE("GX_AGC_STD          0x24   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC_STD                   ));
    AM_TRACE("GX_SCAN_TIME        0x25   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SCAN_TIME                 ));
    AM_TRACE("GX_DCO_CENTER_H     0x26   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_DCO_CENTER_H              ));
    AM_TRACE("GX_DCO_CENTER_L     0x27   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_DCO_CENTER_L              ));
    AM_TRACE("GX_BBC_TST_SEL      0x28   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_BBC_TST_SEL               ));
    AM_TRACE("GX_AGC_ERR_MEAN     0x2B   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC_ERR_MEAN              ));
    AM_TRACE("GX_FREQ_OFFSET_H    0x2C   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_FREQ_OFFSET_H             ));
    AM_TRACE("GX_FREQ_OFFSET_L    0x2D   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_FREQ_OFFSET_L             ));
    AM_TRACE("GX_AGC1_CTRL        0x2E   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC1_CTRL                 ));
    AM_TRACE("GX_AGC2_CTRL        0x2F   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_AGC2_CTRL                 ));
    AM_TRACE("GX_FSAMPLE_H        0x40   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_FSAMPLE_H                 ));
    AM_TRACE("GX_FSAMPLE_M        0x41   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_FSAMPLE_M                 ));
    AM_TRACE("GX_FSAMPLE_L        0x42   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_FSAMPLE_L                 ));
    AM_TRACE("GX_SYMB_RATE_H      0x43   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SYMB_RATE_H               ));
    AM_TRACE("GX_SYMB_RATE_M      0x44   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SYMB_RATE_M               ));
    AM_TRACE("GX_SYMB_RATE_L      0x45   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SYMB_RATE_L               ));
    AM_TRACE("GX_TIM_LOOP_CTRL_L  0x46   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_TIM_LOOP_CTRL_L           ));
    AM_TRACE("GX_TIM_LOOP_CTRL_H  0x47   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_TIM_LOOP_CTRL_H           ));
    AM_TRACE("GX_TIM_LOOP_BW      0x48   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_TIM_LOOP_BW               ));
    AM_TRACE("GX_EQU_CTRL         0x50   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_CTRL                  ));
    AM_TRACE("GX_SUM_ERR_POW_L    0x51   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SUM_ERR_POW_L             ));
    AM_TRACE("GX_SUM_ERR_POW_H    0x52   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_SUM_ERR_POW_H             ));
    AM_TRACE("GX_EQU_BYPASS       0x53   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_BYPASS                ));
    AM_TRACE("GX_EQU_TST_SEL      0x54   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_TST_SEL               ));
    AM_TRACE("GX_EQU_COEF_L       0x55   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_COEF_L                ));
    AM_TRACE("GX_EQU_COEF_M       0x56   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_COEF_M                ));
    AM_TRACE("GX_EQU_COEF_H       0x57   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_COEF_H                ));
    AM_TRACE("GX_EQU_IND          0x58   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_EQU_IND                   ));
    AM_TRACE("GX_RSD_CONFIG       0x80   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_RSD_CONFIG                ));
    AM_TRACE("GX_ERR_SUM_1        0x81   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_ERR_SUM_1                 ));
    AM_TRACE("GX_ERR_SUM_2        0x82   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_ERR_SUM_2                 ));
    AM_TRACE("GX_ERR_SUM_3        0x83   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_ERR_SUM_3                 ));
    AM_TRACE("GX_ERR_SUM_4        0x84   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_ERR_SUM_4                 ));
    AM_TRACE("GX_RSD_DEFAULT      0x85   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_RSD_DEFAULT               ));
    AM_TRACE("GX_OUT_FORMAT       0x90   Value = 0X%02x\n",GX_Read_one_Byte(state, GX_OUT_FORMAT                ));
    return 1;
}