void* osl_dma_alloc_consistent(void *dev, uint size, void **pap) { void *va; va = cacheDmaMalloc(size); *pap = (void *)CACHE_DMA_VIRT_TO_PHYS(va); return (va); }
void* osl_dma_alloc_consistent(osl_t *osh, unsigned int size, ulong *pap) { void *va; va = cacheDmaMalloc(size); *pap = (ulong)CACHE_DMA_VIRT_TO_PHYS(va); return (va); }
void* osl_dma_map(void *dev, void *va, uint size, uint direction) { if (direction == DMA_TX) cacheFlush(DATA_CACHE, va, size); else cacheInvalidate(DATA_CACHE, va, size); return ((void*)CACHE_DMA_VIRT_TO_PHYS(va)); }
void* osl_dma_map(osl_t *osh, void *va, unsigned int size, unsigned int direction) { if (((uint)va & 0x20000000) == 0) { if (direction == DMA_TX) cacheFlush(DATA_CACHE, va, size); else cacheInvalidate(DATA_CACHE, va, size); } return ((void*)CACHE_DMA_VIRT_TO_PHYS(va)); }
int fgread(int id, void *buffer, int size) { if ( Simulate ) { return sfgread(id, buffer, size); } context->fgStatus = READ; intFgPhBuff = CACHE_DMA_VIRT_TO_PHYS(buffer); /* Write command structure */ fg_buf.bufphysadr = (const UINT32)intFgPhBuff; fg_buf.bufsize = size; fg_buf.bufid = 1234; DBGMSG("fgread> bufphysadr=%#lx bufsize=%ld bufid=%#lx\n", fg_buf.bufphysadr, fg_buf.bufsize, fg_buf.bufid); if (WRITE_FIFO(context->fifo[USER_DATA_EMPTY], (void *) &fg_buf, sizeof(fg_buf)) != BUFFER_OK) { ERRMSG("fgread> ERROR - write to FIFO USER_DATA_EMPTY\n"); return ERR_WRITEFIFO; } if ((bytes = READ_FIFO(context->fifo[USER_DATA_FULL], (void *) &fg_buf, sizeof(fg_buf))) != sizeof(fg_buf)) { if (bytes > 0) { ERRMSG("fgread> ERROR - read from FIFO USER_DATA_FULL %d bytes\n", bytes); return ERR_READFIFO; } else if (bytes < 0) { ERRMSG("fgread> ERROR - read from FIFO USER_DATA_FULL, errno %d\n", bytes); return ERR_READFIFO; } else { /* When zero bytes are read this probably means the task or FIFO has been deleted */ ERRMSG("fgread> read from FIFO USER_DATA_FULL %d bytes, read FIFO aborted!\n", bytes); return ERR_READFIFO; } } else { DBGMSG("fgread> bufphysadr=%#lx bufsize=%ld bufid=%#lx\n", fg_buf.bufphysadr, fg_buf.bufsize, fg_buf.bufid); } if ( fg_buf.bufphysadr == 0 && fg_buf.bufsize == 0 && fg_buf.bufid == 0 ) { ERRMSG("fgread> ERROR - got null buffer\n"); return ERR_READFIFO; } DBGMSG("fgread> bufphysadr=%#lx bufsize=%ld bufid=%#lx\n", fg_buf.bufphysadr, fg_buf.bufsize, fg_buf.bufid); context->fgStatus = SDSU_FREE; return size; }
int WriteSDSUCommand(void) { if ( intVirBuff == NULL ) if ( (intVirBuff = (void *)memalign(SDSU_BURST_BLOCK, intBuffSize)) == NULL ) { ERRMSG("WriteSDSUCommand> ERROR allocating buffer memory.\n"); return ERR_MBUFF; } else { intPhyBuff = CACHE_DMA_VIRT_TO_PHYS(intVirBuff); /* Write command structure */ intBuf.bufphysadr = (volatile const UINT32)intPhyBuff; intBuf.bufsize = intBuffSize; intBuf.bufid = 4321; } DBGMSG("WriteSDSUCommand> bufphysadr=%#lx bufsize=%ld bufid=%#lx\n", intBuf.bufphysadr, intBuf.bufsize, intBuf.bufid); if (WRITE_FIFO(context->fifo[USER_DATA_EMPTY], (void *) &intBuf, sizeof(intBuf)) != BUFFER_OK) { ERRMSG("WriteSDSUCommand> ERROR - write to FIFO USER_DATA_EMPTY\n"); return ERR_WRITEFIFO; } return NO_ERROR; }