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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }