コード例 #1
0
static int ite9133_fe_resume(struct aml_fe_dev *dev)
{
	printk("ite9133_fe_resume\n");
	gpio_direction_output(dev->reset_gpio, dev->reset_value);
	msleep(300);
	gpio_direction_output(dev->reset_gpio, !dev->reset_value); //enable tuner power
	msleep(200);
	
	if(Error_NO_ERROR != Demodulator_initialize (pdemod, streamType))
			return -1;
	
	return 0;

}
コード例 #2
0
static int ite9133_fe_enter_mode(struct aml_fe *fe, int mode)
{
	struct aml_fe_dev *dev = fe->dtv_demod;

	pr_dbg("=========================demod init\r\n");
	gpio_direction_output(dev->reset_gpio, dev->reset_value);
	msleep(300);
	gpio_direction_output(dev->reset_gpio, !dev->reset_value); //enable tuner power
	msleep(200);
	
	if(Error_NO_ERROR != Demodulator_initialize (pdemod, streamType))
		return -1;

	return 0;
}
コード例 #3
0
static int ite9173_fe_resume(struct aml_fe_dev *dev)
{
	printk("ite9173_fe_resume\n");
	gpio_out(dev->reset_gpio, 0);
	msleep(300);
	gpio_out(dev->reset_gpio, 1);
	msleep(200);

	gpio_out(dev->tuner_power_gpio, 1);
	msleep(200);
	
	if(Error_NO_ERROR != Demodulator_initialize (pdemod, streamType))
			return -1;
	
	return 0;

}
コード例 #4
0
static int ite9133_init(struct dvb_frontend *fe)
{
	struct ite9133_state *state = fe->demodulator_priv;

	gpio_direction_output(frontend_reset, 0);
	msleep(300);
	gpio_direction_output(frontend_reset, 1);  //reset
	msleep(500);
//	gpio_direction_output(frontend_power, 1);  //enable tuner power

	if(Error_NO_ERROR != Demodulator_initialize (pdemod, streamType))
		return -1;

	printk("=========================demod init\r\n");

	return 0;
}
コード例 #5
0
static int ite9173_fe_enter_mode(struct aml_fe *fe, int mode)
{
	struct aml_fe_dev *dev = fe->dtv_demod;

	pr_dbg("=========================demod init\r\n");
	gpio_out(dev->reset_gpio, 0);
	msleep(300);
	gpio_out(dev->reset_gpio, 1);
	msleep(200);

	gpio_out(dev->tuner_power_gpio, 1);
	msleep(200);
	
	if(Error_NO_ERROR != Demodulator_initialize (pdemod, streamType))
		return -1;

	return 0;
}
コード例 #6
0
char Example_initialize (Demodulator *demod) {
    Dword error = Error_NO_ERROR;
    Dword start = 0, end = 0;

    //Initialize with StreamType (StreamType_DVBT_PARALLEL or StreamType_DVBT_SERIAL)
    start = GetTickCount();
    error = OMEGA_supportLNA(demod, 0x02); // with External LNA Config. 2 design (IT9133FN_NIM_TS_ V15)
    if (error) return;	
    error = Demodulator_initialize (demod, streamType);
    end = GetTickCount();
	if (error){
		printk("Initialize failed.0x%08x\n", error);
		return ITE9133_FALSE;
	}
    printk("Initialize Time: %lld msec\n", ((long)(end-start)));
    printk("Initialize successful.\n");
    
    return ITE9133_TRUE;  
}
コード例 #7
0
DWORD A337TunerPowerControl(
	PDEVICE_CONTEXT pdc,	
	BYTE    ucSlaveDemod,
	bool        bPowerOn
)
{

	DWORD dwError = Error_NO_ERROR;

	if(bPowerOn)
		PTI.bTunerInited = true;
	else
		PTI.bTunerInited = false;    

	if(bPowerOn) //tuner on
	{
		if(pdc->bTunerPowerOff == true) 
		{
			//use variable to control gpio

			// enable tuner power
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_en, 1);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_on, 1);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_en, 1);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_on, 1);

			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_o, 1); 
			mdelay(100);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_o, 1);
			mdelay(100);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_en, 1);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_on, 1);

				
			// reset tuner
			deb_data("A337 reset");
			mdelay(10);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_o, 0); 
			mdelay(30);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_o, 1);

			mdelay(300);
			deb_data("pdc->bTunerPowerOff == true\n");
			dwError = Demodulator_initialize ((Demodulator*) &pdc->Demodulator, pdc->Demodulator.chipNumber , pdc->Demodulator.bandwidth[0], pdc->StreamType, pdc->architecture);  
			pdc->bTunerPowerOff = false;
		}              	        
	}
	else //tuner off
	{
		// Bugfix: wrong level of tuner i2c whiling plugging in device.
		dwError = Demodulator_finalize((Demodulator*) &pdc->Demodulator);
		if(pdc->bTunerPowerOff == false) 
		{                
			pdc->bTunerPowerOff = true;

			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_o, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_en, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, p_reg_top_gpioh12_on, 0);
			mdelay(10);

			// disable tuner power
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_o, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_o, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_en,0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR1_on,0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_en,0);
			dwError = Demodulator_writeRegister((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, pdc->Map.GPIO_TUR2_on,0);
		}      
	}

	return dwError;
}
コード例 #8
0
DWORD A333TunerPowerControl(
	PDEVICE_CONTEXT pdc,	
	BYTE    ucSlaveDemod,
	bool        bPowerOn
)
{

	DWORD dwError = Error_NO_ERROR;

	if(bPowerOn)
       	PTI.bTunerInited = true;
	else
		PTI.bTunerInited = false;    

    //control oscilator	
   	dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_OSC_en, 1);
    dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_OSC_on, 1);
   	dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_OSC_o, 1); 

    dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR1_en, 1);
   	dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR1_on, 1);
    dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR1_o, 1); 
   	dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR2_en, 1);
    dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR2_on, 1);
   	dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR2_o, 1);

    if(bPowerOn) 
	{
   		dwError=Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_OSC_o, 1); 
       	dwError=Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR1_o, 1);
       	dwError=Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR2_o, 1);
        if(pdc->bTunerPowerOff == true) 
   	    {
       	    dwError = Demodulator_initialize ((Demodulator*) &pdc->Demodulator, pdc->Demodulator.chipNumber, 
											pdc->Demodulator.bandwidth[0], pdc->StreamType, pdc->architecture);  
			pdc->bTunerPowerOff = false;
		}              	        
		
    }
	else 
	{ // power off
	
		if(pdc->architecture == Architecture_PIP)
		{
			if(pdc->fc[0].tunerinfo.bTunerInited == false && pdc->fc[1].tunerinfo.bTunerInited == false) 
           	{                                
               	if(pdc->bTunerPowerOff == false) 
               	{
                   	dwError = Demodulator_finalize((Demodulator*) &pdc->Demodulator);
					pdc->bTunerPowerOff = true;
				}
       	        dwError = Demodulator_writeRegister((Demodulator*)&PDC->Demodulator,0,Processor_LINK,PDC->Map.GPIO_TUR1_o, 0);
           	    dwError = Demodulator_writeRegister((Demodulator*)&PDC->Demodulator,0,Processor_LINK,PDC->Map.GPIO_TUR2_o, 0);
   	        	dwError = Demodulator_writeRegister((Demodulator*)&PDC->Demodulator,0,Processor_LINK,PDC->Map.GPIO_OSC_o, 0);
            }
        }
		else 
		{
			if(pdc->bTunerPowerOff == false) 
            {                
               	dwError = Demodulator_finalize((Demodulator*) &pdc->Demodulator);
	        	pdc->bTunerPowerOff = true;
			}      

			dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR1_o, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_TUR2_o, 0);
			dwError = Demodulator_writeRegister((Demodulator*) &PDC->Demodulator, 0, Processor_LINK, PDC->Map.GPIO_OSC_o, 0);
		}        	
	}

	return dwError;
}
コード例 #9
0
static DWORD  DRV_Initialize(
	    void *      handle
)
{
	DWORD error = Error_NO_ERROR;
	 
	PDEVICE_CONTEXT pdc = (PDEVICE_CONTEXT)handle;

	DWORD fileVersion, cmdVersion = 0; 

	deb_data("- Enter %s Function -\n",__FUNCTION__);

	if(pdc->Demodulator.booted) //from Standard_setBusTuner() > Standard_getFirmwareVersion()
    	{
        	//use "#define version" to get fw version (from firmware.h title)
        	error = DRV_getFirmwareVersionFromFile(Processor_OFDM, &fileVersion);

        	//use "Command_QUERYINFO" to get fw version 
        	error = Demodulator_getFirmwareVersion((Demodulator*) &pdc->Demodulator, Processor_OFDM, &cmdVersion);
        	if(error) deb_data("DRV_Initialize : Demodulator_getFirmwareVersion : error = 0x%08x\n", error);

        	if(cmdVersion != fileVersion)
        	{
            		deb_data("Reboot: Outside Fw = 0x%X, Inside Fw = 0x%X", fileVersion, cmdVersion);               
            		error = Demodulator_reboot((Demodulator*) &pdc->Demodulator);
            		pdc->bBootCode = true;
            		if(error) 
            		{
                		deb_data("Demodulator_reboot : error = 0x%08x\n", error);
                		return error;
            		}
            		else {
                		return Error_NOT_READY;
            		}
        	}
        	else
        	{
            		deb_data("	Fw version is the same!\n");
  	      		error = Error_NO_ERROR;
        	}
	}//pdc->Demodulator.booted
	
ReInit:  //Patch for NIM fail or disappear, Maggie   
    error = Demodulator_initialize ((Demodulator*) &pdc->Demodulator, pdc->Demodulator.chipNumber , 8000, pdc->StreamType, pdc->architecture);    
    if (error) 
    { 
        deb_data("Device initialize fail : 0x%08x\n", error);
        if( ((error&Error_FIRMWARE_STATUS) && (error&0x10)) && (pdc->Demodulator.chipNumber>1) )
        {
            pdc->Demodulator.cmdDescription->sendCommand ((Demodulator*) &pdc->Demodulator, Command_FW_DOWNLOAD_END, 0, Processor_LINK, 0, NULL, 0, NULL);

            deb_data("	Retry to download FW with Single TS\n");
            pdc->Demodulator.chipNumber = 1;
            pdc->bDualTs = false;
            error = Demodulator_writeRegister ((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, 0x417F, 0);
            goto ReInit;
       }
    }
    else {
        deb_data("    Device initialize Ok!!\n");
    }

	error = Demodulator_writeRegisterBits ((Demodulator*) &pdc->Demodulator, 0, Processor_LINK, 
											p_reg_usb_min_len, reg_usb_min_len_pos, reg_usb_min_len_len, 1);

    Demodulator_getFirmwareVersion ((Demodulator*) &pdc->Demodulator, Processor_OFDM, &cmdVersion);
    deb_data("    FwVer OFDM = 0x%X, ", cmdVersion);
    Demodulator_getFirmwareVersion ((Demodulator*) &pdc->Demodulator, Processor_LINK, &cmdVersion);
    deb_data("FwVer LINK = 0x%X\n", cmdVersion);
    
    return error;
	
}