static void fc8300_data(HANDLE handle, DEVICEID devid, u8 buf_int_status) { u32 size = 0; s32 i; print_log(0,"%s status=%d\n",__func__,buf_int_status); for (i = 0; (i < 4) && (buf_int_status & 0x0f); i++) { if (buf_int_status & (1 << i)) { bbm_word_read(handle, devid, BBM_BUF_TS0_THR + (i << 1), (u16 *) &size); if (size == 0) continue; size = (size + 1) << 1; bbm_data(handle, devid, BBM_TS0_DATA + i, &ts_buffer[0], size); if (fc8300_ts_callback) { print_log(0,"fc8300_ts_callback\n"); (*fc8300_ts_callback)(fc8300_ts_user_data, i, &ts_buffer[0], size); } } } for (i = 4; i < 8 && (buf_int_status & 0xf0); i++) { if (buf_int_status & (1 << i)) { bbm_word_read(handle, devid, BBM_BUF_TS0_THR + (i << 1), (u16 *) &size); if (size == 0) continue; size = (size + 1) << 1; bbm_data(handle, devid, BBM_TS0_DATA + i, &ac_buffer[0], size); if (fc8300_ac_callback) { print_log(0,"fc8300_ac_callback\n"); (*fc8300_ac_callback)(fc8300_ac_user_data, i, &ac_buffer[0], size); } } } }
static void fc8180_data(HANDLE handle, u8 buf_int_status) { u16 size = 0; if (buf_int_status & 0x01) { /* TS */ bbm_word_read(handle, BBM_BUF_TS_THR, &size); size += 1; bbm_data(handle, BBM_TS_DATA, &ts_buf[0], size); if (fc8180_ts_callback) (*fc8180_ts_callback)(fc8180_ts_user_data, &ts_buf[0], size); } if (buf_int_status & 0x02) { /* AC */ bbm_word_read(handle, BBM_BUF_AC_THR, &size); size += 1; bbm_data(handle, BBM_AC_DATA, &ac_buf[0], size); if (fc8180_ac_callback) (*fc8180_ac_callback)(fc8180_ac_user_data, &ac_buf[0], size); } if (buf_int_status & 0x04) /* TMCC alarm */ ; if (buf_int_status & 0x08) /* TMCC re-configuration */ ; if (buf_int_status & 0x10) { /* Sync Lock or Unlock */ /*u8 sync = 0; BBM_READ(handle, BBM_SYNC_RELATED_INT_STATUS, &sync); BBM_WRITE(handle, BBM_SYNC_RELATED_INT_STATUS, sync); if (sync & 0x01) { // OFDM Detection } if (sync & 0x02) { // Resync } if (sync & 0x04) { // TMCC Lock } if (sync & 0x08) { // BER } if (sync & 0x10) { }*/ } }
int BBM_DATA(HANDLE hDevice, u16 addr, u8 *data, u16 size) { int res; res = bbm_data(hDevice, addr, data, size); return res; }
fci_s32 bbm_com_data(HANDLE handle, fci_u16 addr, fci_u8 *data, fci_u32 size) { fci_s32 res; res = bbm_data(handle, addr, data, size); return res; }
s32 bbm_com_data(HANDLE handle, DEVICEID devid, u16 addr, u8 *data, u32 size) { s32 res; res = bbm_data(handle, devid, addr, data, size); return res; }
void fc8100_isr(HANDLE hDevice) { bbm_data(hDevice, 0, &dmbBuffer[0], 188*2); if(pCallback) (*pCallback)(gUserData, &dmbBuffer[0], 188); }
static void fc8150_data(HANDLE hDevice, u8 bufIntStatus) { if (bufIntStatus & 0x01) { /* TS */ bbm_data(hDevice, BBM_TS_DATA, &tsBuffer[0], TS_BUF_SIZE/2); if (pTSCallback) (*pTSCallback)(gTSUserData , &tsBuffer[0], TS_BUF_SIZE/2); } }
static void fc8080_data(HANDLE handle, u16 status) { u16 size; s32 i; if (status & 0x0100) { bbm_word_read(handle, BBM_BUF_FIC_THR, &size); size++; bbm_data(handle, BBM_RD_FIC, &fic_buffer[0], size); #ifdef CONFIG_TDMB_SPI if (fic_callback) (*fic_callback)(fic_user_data, &fic_buffer[4], size); #else if (fic_callback) (*fic_callback)(fic_user_data, &fic_buffer[0], size); #endif } for (i = 0; i < 3; i++) { u8 subch_id; if (!(status & (1 << i))) continue; bbm_word_read(handle, BBM_BUF_CH0_THR + i * 2, &size); size++; bbm_read(handle, BBM_BUF_CH0_SUBID + i, &subch_id); subch_id &= 0x3f; bbm_data(handle, (BBM_RD_BUF0 + i), &msc_buffer[0], size); #ifdef CONFIG_TDMB_SPI if (msc_callback) (*msc_callback)(msc_user_data, subch_id, &msc_buffer[4], size); #else if (msc_callback) (*msc_callback)(msc_user_data, subch_id, &msc_buffer[0], size); #endif } }
void fc8050_isr(HANDLE hDevice) { u8 ext_int_status = 0; bbm_read(hDevice, BBM_COM_INT_STATUS, &ext_int_status); bbm_write(hDevice, BBM_COM_INT_STATUS, ext_int_status); bbm_write(hDevice, BBM_COM_INT_STATUS, 0x00); if (ext_int_status & BBM_MF_INT) { u16 buf_int_status = 0; u16 size; int i; bbm_word_read(hDevice, BBM_BUF_STATUS, &buf_int_status); bbm_word_write(hDevice, BBM_BUF_STATUS, buf_int_status); bbm_word_write(hDevice, BBM_BUF_STATUS, 0x0000); if (buf_int_status & 0x0100) { bbm_word_read(hDevice, BBM_BUF_FIC_THR, &size); size += 1; if (size-1) { bbm_data(hDevice, BBM_COM_FIC_DATA , &fic_buffer[0], size); #ifdef CONFIG_TDMB_SPI if (fic_callback) (*fic_callback)(fic_user_data , &fic_buffer[2], size); #else if (fic_callback) (*fic_callback)(fic_user_data , &fic_buffer[0], size); #endif } } for (i = 0; i < 8; i++) { if (buf_int_status & (1 << i)) { bbm_word_read(hDevice , BBM_BUF_CH0_THR+i*2, &size); size += 1; if (size-1) { u8 sub_ch_id; bbm_read(hDevice, BBM_BUF_CH0_SUBCH+i , &sub_ch_id); sub_ch_id = sub_ch_id & 0x3f; bbm_data(hDevice, (BBM_COM_CH0_DATA+i) , &msc_buffer[0], size); #ifdef CONFIG_TDMB_SPI if (msc_callback) (*msc_callback)( msc_user_data , sub_ch_id , &msc_buffer[2] , size); #else if (msc_callback) (*msc_callback)( msc_user_data , sub_ch_id , &msc_buffer[0] , size); #endif } } } } }
void fc8050_isr(HANDLE hDevice) { fci_u8 extIntStatus = 0; //bbm_write(hDevice, BBM_COM_INT_ENABLE, 0); bbm_read(hDevice, BBM_COM_INT_STATUS, &extIntStatus); bbm_write(hDevice, BBM_COM_INT_STATUS, extIntStatus); bbm_write(hDevice, BBM_COM_INT_STATUS, 0x00); if(extIntStatus & BBM_MF_INT) { fci_u16 mfIntStatus = 0; fci_u16 size; int i; bbm_word_read(hDevice, BBM_BUF_STATUS, &mfIntStatus); //bbm_word_write(hDevice, BBM_BUF_STATUS, mfIntStatus); //bbm_word_write(hDevice, BBM_BUF_STATUS, 0x0000); if(mfIntStatus & 0x0100) { bbm_word_read(hDevice, BBM_BUF_FIC_THR, &size); //wonhee.jeong test if(size > 516) { printk("FIC Data size is bigger than 516.\n"); } // size += 1; if(size-1) { bbm_data(hDevice, BBM_COM_FIC_DATA, &ficBuffer[0], size); if(pFicCallback) (*pFicCallback)((fci_u32) hDevice, &ficBuffer[0], size); } } for(i=0; i<8; i++) { if(mfIntStatus & (1<<i)) { bbm_word_read(hDevice, BBM_BUF_CH0_THR+i*2, &size); //wonhee.jeong test if(size > 8196) { printk("MSC Data size is bigger than 8196.\n"); } // size += 1; if(size-1) { fci_u8 subChId; bbm_read(hDevice, BBM_BUF_CH0_SUBCH+i, &subChId); subChId = subChId & 0x3f; { fci_u8 rsSubChId; bbm_read(hDevice, BBM_CDI0_SUBCH_EN, &rsSubChId); rsSubChId &= 0x3F; if(rsSubChId == subChId) tp_total_cnt += size/188; } bbm_data(hDevice, (BBM_COM_CH0_DATA+i), &mscBuffer[0], size); if(size>384) { if(pMscCallback) (*pMscCallback)(gMscUserData, subChId, &mscBuffer[2], size); } else { if(pMscCallback) (*pMscCallback)(gMscUserData, subChId, &mscBuffer[0], size); } } } } bbm_word_write(hDevice, BBM_BUF_STATUS, mfIntStatus); bbm_word_write(hDevice, BBM_BUF_STATUS, 0x0000); } //bbm_write(hDevice, BBM_COM_INT_ENABLE, ENABLE_INT_MASK); }
static void fc8300_data(HANDLE handle, DEVICEID devid, u8 buf_int_status) { u32 size = 0; s32 i; u8 overrun; ISDB_PR_DBG("FC8300_DATA buf_int : 0x%x \n", buf_int_status); for (i = 0; (i < 4) && (buf_int_status & 0x0f); i++) { if (buf_int_status & (1 << i)) { bbm_word_read(handle, devid, BBM_BUF_TS0_THR + (i << 1), (u16 *) &size); ISDB_PR_DBG("ThSize[%d] : %d \n", i, (size + 1) << 1); if (size == 0) continue; size = (size + 1) << 1; if ((size > 188*320)) continue; bbm_data(handle, devid, BBM_TS0_DATA + i, &ts_buffer[0], size); ISDB_PR_DBG("fc8300_data size : %d, [0x%x][0x%x][0x%x][0x%x]\n" , size, ts_buffer[0], ts_buffer[1], ts_buffer[2], ts_buffer[3]); if (fc8300_ts_callback) { ISDB_PR_DBG("fc8300_ts_callback\n"); (*fc8300_ts_callback)(fc8300_ts_user_data, i, &ts_buffer[0], size); } } } #if 0 //Fix PLM P140206-02359 for (i = 4; i < 8 && (buf_int_status & 0xf0); i++) { if (buf_int_status & (1 << i)) { bbm_word_read(handle, devid, BBM_BUF_TS0_THR + (i << 1), (u16 *) &size); if (size == 0) continue; size = (size + 1) << 1; bbm_data(handle, devid, BBM_TS0_DATA + i, &ac_buffer[0], size); if (fc8300_ac_callback) { ISDB_PR_DBG("fc8300_ac_callback\n"); (*fc8300_ac_callback)(fc8300_ac_user_data, i, &ac_buffer[0], size); } } } #endif bbm_read(handle, DIV_BROADCAST, BBM_BUF_OVERRUN, &overrun); if (overrun) bbm_write(handle, DIV_BROADCAST, BBM_BUF_OVERRUN, overrun); ISDB_PR_DBG("ISR OVR : 0x%x, INT : 0x%x, SIZE : %d \n" , overrun, buf_int_status, size); }