int spi_Read(Fd_t fd, unsigned char *pBuff, int len) { if (fd != 1 || g_SpiFd != 1) { return -1; } return spi_Read_CPU(pBuff, len); }
int spi_Read(Fd_t fd, unsigned char *pBuff, int len) { int read_size = 0; if(fd!=1 || g_SpiFd!=1) return -1; g_len = len; if(len>DMA_BUFF_SIZE_MIN && g_ucDMAEnabled) { #if defined(SL_PLATFORM_MULTI_THREADED) char temp[4]; #endif while (len>0) { if( len < MAX_DMA_RECV_TRANSACTION_SIZE) { SetupDMAReceive(&pBuff[read_size],len); SPICSEnable(LSPI_BASE); #if defined(SL_PLATFORM_MULTI_THREADED) osi_MsgQRead(&DMAMsgQ,temp,OSI_WAIT_FOREVER); #else while(g_cDummy != 0x1); g_cDummy = 0x0; #endif read_size += len; len = 0; } else { SetupDMAReceive(&pBuff[read_size],MAX_DMA_RECV_TRANSACTION_SIZE); SPICSEnable(LSPI_BASE); #if defined(SL_PLATFORM_MULTI_THREADED) osi_MsgQRead(&DMAMsgQ,temp,OSI_WAIT_FOREVER); #else while(g_cDummy != 0x1); g_cDummy = 0x0; #endif read_size += MAX_DMA_RECV_TRANSACTION_SIZE; len -= MAX_DMA_RECV_TRANSACTION_SIZE; } } } else { read_size += spi_Read_CPU(pBuff,len); } return read_size; }