static void T3900_pull_data(void) { INC_UINT16 ulRemainLength = INC_INTERRUPT_SIZE; #if !(INC_INTERRUPT_SIZE <= 0xFFF) INC_UINT16 unIndex = 0; INC_UINT16 unSPISize = 0xFFF; #endif memset(g_acStreamBuf, 0, sizeof(g_acStreamBuf)); #if (INC_INTERRUPT_SIZE <= 0xFFF) INC_CMD_READ_BURST(TDMB_I2C_ID80, APB_STREAM_BASE, g_acStreamBuf, ulRemainLength); #else while (ulRemainLength) { if (ulRemainLength >= unSPISize) { INC_CMD_READ_BURST(TDMB_I2C_ID80, APB_STREAM_BASE, &g_acStreamBuf[unIndex*unSPISize], unSPISize); unIndex++; ulRemainLength -= unSPISize; } else { INC_CMD_READ_BURST(TDMB_I2C_ID80, APB_STREAM_BASE, &g_acStreamBuf[unIndex*unSPISize], ulRemainLength); ulRemainLength = 0; } } #endif tdmb_store_data(g_acStreamBuf, INC_INTERRUPT_SIZE); }
int8 tunerbb_drv_t39fx_get_fic(uint8* buffer, uint32* buffer_size/* bool crc_onoff*/) { INC_UINT32 uiFicSize; INC_UINT8 ret; ret = INTERFACE_GET_FIC(TDMB_RFBB_DEV_ADDR,&uiFicSize); if(ret == INC_ERROR) { *buffer_size = 0; return INC_ERROR; } else if(ret == INC_SUCCESS) { if(uiFicSize > 384) { printk("tunerbb_drv_t39fx_get_fic uiFicSize = (%d) is over 384\n", uiFicSize); uiFicSize = 384; } if(INC_CMD_READ_BURST(TDMB_RFBB_DEV_ADDR, APB_FIC_BASE, buffer, uiFicSize) == INC_SUCCESS) { *buffer_size = uiFicSize; //printk("tunerbb_drv_T39fx_get_fic = %x %x %x %x %x\n", *buffer, *(buffer+1), *(buffer+2), *(buffer+3), *(buffer+4)); } } return INC_SUCCESS; }
// 인터럽트 서비스 루틴... // SPI Slave Mode or MPI Slave Mode INC_UINT8 INTERFACE_ISR(INC_UINT8 ucI2CID, INC_UINT8* pBuff) { INC_UINT16 unData; unData = INC_CMD_READ(ucI2CID, APB_MPI_BASE + 0x6); if(unData < INC_INTERRUPT_SIZE) return INC_ERROR; INC_CMD_READ_BURST(ucI2CID, APB_STREAM_BASE, pBuff, INC_INTERRUPT_SIZE); if((m_unIntCtrl & INC_INTERRUPT_LEVEL) && (!(m_unIntCtrl & INC_INTERRUPT_AUTOCLEAR_ENABLE))) INTERFACE_INT_CLEAR(ucI2CID, INC_MPI_INTERRUPT_ENABLE); return INC_SUCCESS; }
static void t3900_pull_data(void) { unsigned short remain_len = INC_INTERRUPT_SIZE; #if !(INC_INTERRUPT_SIZE <= 0xFFF) unsigned short idx = 0; unsigned short spi_size = 0xFFF; #endif memset(stream_buff, 0, sizeof(stream_buff)); #if (INC_INTERRUPT_SIZE <= 0xFFF) INC_CMD_READ_BURST( TDMB_I2C_ID80, APB_STREAM_BASE , stream_buff , remain_len); #else while (remain_len) { if (remain_len >= spi_size) { INC_CMD_READ_BURST( TDMB_I2C_ID80, APB_STREAM_BASE , &stream_buff[idx*spi_size] , spi_size); idx++; remain_len -= spi_size; } else { INC_CMD_READ_BURST( TDMB_I2C_ID80, APB_STREAM_BASE , &stream_buff[idx*spi_size] , remain_len); remain_len = 0; } } #endif tdmb_store_data(stream_buff, INC_INTERRUPT_SIZE); }
int8 tunerbb_drv_t39fx_get_fic(uint8* buffer, uint32* buffer_size /*, boolean cr_onoff */) { INC_UINT32 uiFicSize; if(buffer == NULL || buffer_size == NULL) { return INC_ERROR; } if(!(INC_CMD_READ(TDMB_RFBB_DEV_ADDR, APB_VTB_BASE+ 0x00) & 0x4000)) { *buffer_size = 0; return INC_ERROR; } uiFicSize = (INC_UINT32)INC_CMD_READ(TDMB_RFBB_DEV_ADDR, APB_VTB_BASE+ 0x09) +1; if(uiFicSize == 1) { *buffer_size = 0; return INC_ERROR; } if(uiFicSize > 384) { printk("tunerbb_drv_t39fx_get_fic uiFicSize = (%d) is over 384\n", uiFicSize); uiFicSize = 384; } if(INC_CMD_READ_BURST(TDMB_RFBB_DEV_ADDR, APB_FIC_BASE, buffer, uiFicSize) == INC_SUCCESS) { *buffer_size = uiFicSize; printk("tunerbb_drv_t39fx_get_fic = %x %x %x %x %x\n", *buffer, *(buffer+1), *(buffer+2), *(buffer+3), *(buffer+4)); return INC_SUCCESS; } return INC_ERROR; }