static void DMBDrv_Check_Overrun(u8 reset) { u16 mfoverStatus; u16 veri_val=0; BBM_WORD_READ(NULL, BBM_BUF_OVERRUN, &mfoverStatus); if(mfoverStatus & gDmbMode) { //overrun clear BBM_WORD_WRITE(NULL, BBM_BUF_OVERRUN, mfoverStatus); BBM_WORD_WRITE(NULL, BBM_BUF_OVERRUN, 0x0000); if(reset) { //buffer restore BBM_WORD_READ(NULL, BBM_BUF_ENABLE, &veri_val); veri_val &= ~gDmbMode; BBM_WORD_WRITE(NULL, BBM_BUF_ENABLE, veri_val); veri_val |= gDmbMode; BBM_WORD_WRITE(NULL, BBM_BUF_ENABLE, veri_val); //external interrupt restore fc8050_isr_interruptclear(); } DPRINTK("FC8050 Overrun occured %s MODE , Restoration : %s performed\n", (gDmbMode&0x01)?"DMB":"DAB", (reset)?" ":"Not"); } }
void dmb_drv_check_overrun(u8 reset) { u16 overrun; u16 temp = 0; bbm_com_word_read(NULL, BBM_BUF_OVERRUN, &overrun); if (overrun & dmb_mode) { /* overrun clear */ bbm_com_word_write(NULL, BBM_BUF_OVERRUN, overrun); bbm_com_word_write(NULL, BBM_BUF_OVERRUN, 0x0000); if (reset) { /* buffer restore */ bbm_com_word_read(NULL, BBM_BUF_ENABLE, &temp); temp &= ~dmb_mode; bbm_com_word_write(NULL, BBM_BUF_ENABLE, temp); temp |= dmb_mode; bbm_com_word_write(NULL, BBM_BUF_ENABLE, temp); /* external interrupt restore */ fc8050_isr_interruptclear(); } DPRINTK("FC8050 Overrun occured\n"); } }
static int8 tunerbb_drv_fc8050_check_overrun(uint8 op_mode) { uint16 mfoverStatus; // Patch for BER monitoring 20111115 //uint16 buf_set=0; uint16 veri_val=0; uint8 mask; if(op_mode == FC8050_DAB) { mask = 0x08; } else if(op_mode == FC8050_DMB || op_mode == FC8050_VISUAL) { mask = 0x01; } else { printk("fc8050 invaild op_mode %d\n", op_mode); return FC8050_RESULT_ERROR; /* invaild op_mode */ } // Patch for BER monitoring 20111115 //BBM_WORD_READ(NULL, BBM_BUF_ENABLE, &buf_set); // Patch for BER monitoring 20111115 //if(buf_set & mask) { BBM_WORD_READ(NULL, BBM_BUF_OVERRUN, &mfoverStatus); if(mfoverStatus & mask) { BBM_WORD_WRITE(NULL, BBM_BUF_OVERRUN, mfoverStatus); BBM_WORD_WRITE(NULL, BBM_BUF_OVERRUN, 0x0000); BBM_WORD_READ(NULL, BBM_BUF_ENABLE, &veri_val); veri_val &= ~mask; BBM_WORD_WRITE(NULL, BBM_BUF_ENABLE, veri_val); veri_val |= mask; BBM_WORD_WRITE(NULL, BBM_BUF_ENABLE, veri_val); fc8050_isr_interruptclear(); printk("++++++++++++++++++++++ fc8050 overrun occured!!! ++++++++++++++++++++++++++\n"); printk("fc8050 overrun and buffer reset done!! mask %x, over %x\n", mask, mfoverStatus); } } return FC8050_RESULT_SUCCESS; }