/*==================================================================== FUNCTION fc8150_bb_init DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ int fc8150_bb_init(void) { int ret = BBM_NOK; ISDBT_MSG_FC8150_BB("[%s] start (BBM_XTAL_FREQ)%d\n", __func__, BBM_XTAL_FREQ); ret = BBM_HOSTIF_SELECT(NULL, BBM_SPI); if (ret) { ISDBT_MSG_FC8150_BB("[%s] hostif select fail!!! \n", __func__); return ret; } ret = BBM_I2C_INIT(NULL, FCI_I2C_TYPE); ret |= BBM_PROBE(NULL); if (ret) { ISDBT_MSG_FC8150_BB("[%s] FC8150 Initialize Fail (ret)%d\n", __func__, ret); return ret; } ret = BBM_INIT(NULL); ret |= BBM_TUNER_SELECT(NULL, FC8150_TUNER, 0); if (ret) { ISDBT_MSG_FC8150_BB("[%s] fail to BBM_INIT (ret)%d\n", __func__, ret); return ret; } BBM_TS_CALLBACK_REGISTER(0, ISDBT_DATA_CALLBACK); scan_mode = 0; //ISDBT_MSG_FC8150_BB("[%s] end \n", __func__); return BBM_OK; }
/*======================================================= Function : tunerbb_drv_fc8050_init Description : Initializing the FC8050 Chip after power on Parameter : VOID Return Value : SUCCESS : 1 FAIL : 0 or negative interger (If there is error code) when model who edit history ------------------------------------------------------- 2010/05/17 MOBIT prajuna EBI2 configuration 2010/05/31 MOBIT prajuna Removed test code 2010/06/09 MOBIT prajuna TDMB porting(KB3 Rev. A patch) 2010/07/15 MOBIT prajuna TDMB tuning for QSC 2010/07/16 MOBIT somesoo TDMB tuning for QSC with FCI 2010/07/17 MOBIT somesoo TDMB porting(VG) 2010/08/19 MOBIT prajuna Code review 2010/09/10 MOBIT prajuna TDMB porting(Aloe) ======================================================== */ int8 tunerbb_drv_fc8050_init(void) { uint8 res; /*test*/ /* Common Code */ #if defined(STREAM_SLAVE_PARALLEL_UPLOAD) /* EBI2 Specific Code */ BBM_HOSTIF_SELECT(NULL, BBM_PPI); #elif defined(STREAM_TS_UPLOAD) /* TSIF Specific Code */ BBM_HOSTIF_SELECT(NULL, BBM_I2C); #elif defined(STREAM_SPI_UPLOAD) /* SPI Specific. Code */ BBM_HOSTIF_SELECT(NULL, BBM_SPI); #else #error code not present #endif BBM_FIC_CALLBACK_REGISTER((fci_u32)NULL, tunerbb_drv_fc8050_fic_cb); BBM_MSC_CALLBACK_REGISTER((fci_u32)NULL, tunerbb_drv_fc8050_msc_cb); res = BBM_INIT(NULL); if(res) return FC8050_RESULT_ERROR; else { #if !defined(STREAM_TS_UPLOAD) memset((void*)&g_chinfo, 0xff, sizeof(g_chinfo)); memset((void*)&msc_buffer, 0x00, sizeof(DATA_BUFFER)); memset((void*)&fic_buffer, 0x00, sizeof(DATA_BUFFER)); #endif } res = BBM_TUNER_SELECT(0, FC8050_TUNER, BAND3_TYPE); if(res) return FC8050_RESULT_ERROR; else return FC8050_RESULT_SUCCESS; }
/*======================================================= Function : tunerbb_drv_fc8050_init Description : Initializing the FC8050 Chip after power on Parameter : VOID Return Value : SUCCESS : 1 FAIL : 0 or negative interger (If there is error code) when model who edit history ------------------------------------------------------- 2010/05/17 MOBIT prajuna EBI2 configuration 2010/05/31 MOBIT prajuna Removed test code 2010/06/09 MOBIT prajuna TDMB porting(KB3 Rev. A patch) 2010/07/15 MOBIT prajuna TDMB tuning for QSC 2010/07/16 MOBIT somesoo TDMB tuning for QSC with FCI 최규원 과장 2010/07/17 MOBIT somesoo TDMB porting(VG) 2010/08/19 MOBIT prajuna Code review 2010/09/10 MOBIT prajuna TDMB porting(Aloe) ======================================================== */ int8 tunerbb_drv_fc8050_init(void) { uint8 res; /*test*/ /* uint16 i; uint32 wdata = 0; uint32 ldata = 0; uint32 data = 0; uint32 temp = 0; */ /* Common Code */ #if defined(STREAM_SLAVE_PARALLEL_UPLOAD) /* EBI2 Specific Code */ BBM_HOSTIF_SELECT(NULL, BBM_PPI); #elif defined(STREAM_TS_UPLOAD) /* TSIF Specific Code */ BBM_HOSTIF_SELECT(NULL, BBM_I2C); #elif defined(STREAM_SPI_UPLOAD) /* SPI Specific. Code */ BBM_HOSTIF_SELECT(NULL, BBM_SPI); #else #error code not present #endif BBM_FIC_CALLBACK_REGISTER((fci_u32)NULL, tunerbb_drv_fc8050_fic_cb); BBM_MSC_CALLBACK_REGISTER((fci_u32)NULL, tunerbb_drv_fc8050_msc_cb); res = BBM_INIT(NULL); if(res) return FC8050_RESULT_ERROR; else { #if !defined(STREAM_TS_UPLOAD) memset((void*)&g_chinfo, 0xff, sizeof(g_chinfo)); memset((void*)&msc_buffer, 0x00, sizeof(DATA_BUFFER)); memset((void*)&fic_buffer, 0x00, sizeof(DATA_BUFFER)); #endif } res = BBM_TUNER_SELECT(0, FC8050_TUNER, BAND3_TYPE); // res = BBM_PROBE(0); // printk("tunerbb_drv_fc8050_init probe RES = %d\n", res); #if 0 //fc8050 <-> Host(MSM) 간의 Interface TEST를 위한 code /* test */ for(i=0;i<5000;i++) { // dog_kick(); BBM_WRITE(NULL, 0x05, i & 0xff); BBM_READ(NULL, 0x05, &data); if((i & 0xff) != data) printk("FC8000 byte test (0x%x,0x%x)\n", i & 0xff, data); } for(i=0;i<5000;i++) { BBM_WORD_WRITE(NULL, 0x0210, i & 0xffff); BBM_WORD_READ(NULL, 0x0210, &wdata); if((i & 0xffff) != wdata) printk("FC8000 word test (0x%x,0x%x)\n", i & 0xffff, wdata); } for(i=0;i<5000;i++) { BBM_LONG_WRITE(NULL, 0x0210, i & 0xffffffff); BBM_LONG_READ(NULL, 0x0210, &ldata); if((i & 0xffffffff) != ldata) printk("FC8000 long test (0x%x,0x%x)\n", i & 0xffffffff, ldata); } data = 0; for(i=0;i<5000;i++) { temp = i&0xff; BBM_TUNER_WRITE(NULL, 0x12, 0x01, &temp, 0x01); BBM_TUNER_READ(NULL, 0x12, 0x01, &data, 0x01); if((i & 0xff) != data) printk("FC8000 tuner test (0x%x,0x%x)\n", i & 0xff, data); } temp = 0x51; BBM_TUNER_WRITE(NULL, 0x12, 0x01, &temp, 0x01 ); /* test */ #endif if(res) return FC8050_RESULT_ERROR; else return FC8050_RESULT_SUCCESS; }
unsigned char DMBDrv_init(void) { u8 data; u16 wdata; u32 ldata; int i; u8 temp = 0x1e; #ifdef CONFIG_TDMB_SPI if(BBM_HOSTIF_SELECT(NULL, BBM_SPI)) return TDMB_FAIL; #elif defined(CONFIG_TDMB_EBI) if(BBM_HOSTIF_SELECT(NULL, BBM_PPI)) return TDMB_FAIL; #endif if(BBM_PROBE(NULL) != BBM_OK) // check for factory chip interface test { return TDMB_FAIL; } BBM_FIC_CALLBACK_REGISTER(NULL, TDMBDrv_FIC_CALLBACK); BBM_MSC_CALLBACK_REGISTER(NULL, TDMBDrv_MSC_CALLBACK); BBM_INIT(NULL); BBM_TUNER_SELECT(NULL, FC8050_TUNER, BAND3_TYPE); #if 0 BBM_WRITE(NULL, 0x05, 0xa7); BBM_READ(NULL, 0x05, &data); BBM_READ(NULL, 0x12, &data); BBM_WORD_READ(NULL, 0x12, &wdata); BBM_WORD_WRITE(NULL, 0x310, 0x0b); BBM_WORD_READ(NULL, 0x310, &wdata); BBM_WRITE(NULL, 0x312, 0xc0); BBM_READ(NULL, 0x312, &data); BBM_TUNER_READ(NULL, 0x01, 0x01, &data, 0x01); #endif #if 0 for(i=0;i<1000;i++) { // dog_kick(); BBM_WRITE(NULL, 0x05, i & 0xff); BBM_READ(NULL, 0x05, &data); if((i & 0xff) != data) DPRINTK("FC8000 byte test (0x%x,0x%x)\r\n", i & 0xff, data); } for(i=0;i<1000;i++) { BBM_WORD_WRITE(NULL, 0x0210, i & 0xffff); BBM_WORD_READ(NULL, 0x0210, &wdata); if((i & 0xffff) != wdata) DPRINTK("FC8000 word test (0x%x,0x%x)\r\n", i & 0xffff, wdata); } for(i=0;i<1000;i++) { BBM_LONG_WRITE(NULL, 0x0210, i & 0xffffffff); BBM_LONG_READ(NULL, 0x0210, &ldata); if((i & 0xffffffff) != ldata) DPRINTK("FC8000 long test (0x%x,0x%x)\r\n", i & 0xffffffff, ldata); } for(i=0;i<1000;i++) { temp = i&0xff; BBM_TUNER_WRITE(NULL, 0x12, 0x01, &temp, 0x01); BBM_TUNER_READ(NULL, 0x12, 0x01, &data, 0x01); if((i & 0xff) != data) DPRINTK("FC8000 tuner test (0x%x,0x%x)\r\n", i & 0xff, data); } temp = 0x51; BBM_TUNER_WRITE(NULL, 0x12, 0x01, &temp, 0x01 ); #endif gBer = 3000; gInitFlag = 1; return TDMB_SUCCESS; }