Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}