OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [driver/] [pexdrv/] [ioctlrw.c] - Diff between revs 19 and 54

Show entire file | Details | Blame | View Log

Rev 19 Rev 54
Line 289... Line 289...
 
 
    AdmNumber = pKernMemDscr->LocalAddr >> 16;
    AdmNumber = pKernMemDscr->LocalAddr >> 16;
    TetrNumber = pKernMemDscr->LocalAddr & 0xff;
    TetrNumber = pKernMemDscr->LocalAddr & 0xff;
    Address = AdmNumber*ADM_SIZE + TetrNumber*TETRAD_SIZE + TRDadr_DATA*REG_SIZE;
    Address = AdmNumber*ADM_SIZE + TetrNumber*TETRAD_SIZE + TRDadr_DATA*REG_SIZE;
 
 
    //SetDmaLocalAddress(dma, Address);
    SetDmaLocalAddress(dma, Address);
    //SetAdmTetr(dma, AdmNumber, TetrNumber);
    SetAdmTetr(dma, AdmNumber, TetrNumber);
    //error = SetDmaMode(brd, i, AdmNumber, TetrNumber);
    error = SetDmaMode(brd, i, AdmNumber, TetrNumber);
 
 
    dbg_msg(dbg_trace, "%s(): 4\n", __FUNCTION__);
    dbg_msg(dbg_trace, "%s(): 4\n", __FUNCTION__);
 
 
    error = RequestMemory( dma, pKernMemDscr->pBlock, pKernMemDscr->BlockSize,
    error = RequestMemory( dma, pKernMemDscr->pBlock, pKernMemDscr->BlockSize,
                            (u32*)&pKernMemDscr->BlockCnt, &pKernMemDscr->pStub, pKernMemDscr->MemType );
                            (u32*)&pKernMemDscr->BlockCnt, &pKernMemDscr->pStub, pKernMemDscr->MemType );
Line 323... Line 323...
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
 
 
int ioctl_free_mem(struct pex_device *brd, size_t arg)
int ioctl_free_mem(struct pex_device *brd, size_t arg)
{
{
    u32 i = 0;
 
    int error = 0;
    int error = 0;
    AMB_MEM_DMA_CHANNEL MemDscr = {0};
    AMB_MEM_DMA_CHANNEL MemDscr = {0};
    PAMB_MEM_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_MEM_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
Line 342... Line 341...
        err_msg(err_trace, "%s(): Invalid DMA channel number\n", __FUNCTION__);
        err_msg(err_trace, "%s(): Invalid DMA channel number\n", __FUNCTION__);
        error = -EINVAL;
        error = -EINVAL;
        goto do_exit;
        goto do_exit;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    error = ReleaseMemory(brd->m_DmaChannel[pMemDscr->DmaChanNum]);
    ReleaseMemory(brd->m_DmaChannel[i]);
 
 
 
    if(copy_to_user (( void *)arg, (void *)&MemDscr, sizeof(AMB_MEM_DMA_CHANNEL) + (pMemDscr->BlockCnt - 1) * sizeof(void*) )) {
    //if(copy_to_user (( void *)arg, (void *)&MemDscr, sizeof(AMB_MEM_DMA_CHANNEL) + (pMemDscr->BlockCnt - 1) * sizeof(void*) )) {
        err_msg(err_trace, "%s(): Error copy descriptor to user space\n", __FUNCTION__);
    //    err_msg(err_trace, "%s(): Error copy descriptor to user space\n", __FUNCTION__);
        error = -EFAULT;
    //    error = -EFAULT;
        goto do_exit;
    //    goto do_exit;
    }
    //}
 
 
do_exit:
do_exit:
    up(&brd->m_BoardSem);
    up(&brd->m_BoardSem);
 
 
    return error;
    return error;
Line 365... Line 363...
{
{
    int Status = -EINVAL;
    int Status = -EINVAL;
    AMB_START_DMA_CHANNEL StartDscr;
    AMB_START_DMA_CHANNEL StartDscr;
    PAMB_START_DMA_CHANNEL pStartDscr = &StartDscr;
    PAMB_START_DMA_CHANNEL pStartDscr = &StartDscr;
 
 
    printk("<0>ioctl_start_mem: Entered.\n");
    printk("%s(): Entered.\n", __FUNCTION__);
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    if( copy_from_user((void *)&StartDscr, (void *)arg, sizeof(AMB_START_DMA_CHANNEL))) {
    if( copy_from_user((void *)&StartDscr, (void *)arg, sizeof(AMB_START_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pStartDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS) {
    if(pStartDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS) {
        printk("<0>%s(): too large stream number\n", __FUNCTION__);
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    if(!(brd->m_DmaChanMask & (1 << pStartDscr->DmaChanNum))) {
    if(!(brd->m_DmaChanMask & (1 << pStartDscr->DmaChanNum))) {
        printk("<0>%s(): invalid stream number\n", __FUNCTION__);
        printk("%s(): invalid stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    Status = StartDmaTransfer(brd->m_DmaChannel[pStartDscr->DmaChanNum], pStartDscr->IsCycling);
    Status = StartDmaTransfer(brd->m_DmaChannel[pStartDscr->DmaChanNum], pStartDscr->IsCycling);
    Status = HwStartDmaTransfer(brd, pStartDscr->DmaChanNum);
    Status = HwStartDmaTransfer(brd, pStartDscr->DmaChanNum);
 
 
    up(&brd->m_BoardSem);
    up(&brd->m_BoardSem);
    printk("<0>ioctl_start_mem: exit Status=0x%.8X \n", Status );
    printk("%s(): exit Status=0x%.8X \n", __FUNCTION__, Status);
 
 
    return Status;
    return Status;
}
}
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
Line 413... Line 411...
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    //printk("<0>IoctlStopMem: Entered.\n");
    //printk("%s()\n", __FUNCTION__);
 
 
    if(pStopDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pStopDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlStopMem: too large stream number\n");
        printk("IoctlStopMem: too large stream number\n");
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pStopDscr->DmaChanNum;
    i = pStopDscr->DmaChanNum;
Line 467... Line 465...
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    //printk("<0>IoctlStateMem: Entered.\n");
    //printk("%s()\n", __FUNCTION__);
 
 
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlStateMem: too large stream number\n");
        printk("IoctlStateMem: too large stream number\n");
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pStateDscr->DmaChanNum;
    i = pStateDscr->DmaChanNum;
Line 508... Line 506...
    int Status = -EINVAL;
    int Status = -EINVAL;
    u32 i;
    u32 i;
    AMB_SET_DMA_CHANNEL MemDscr;
    AMB_SET_DMA_CHANNEL MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    printk("<0>IoctlSetDirMem: Entered.\n");
    printk("%s()\n", __FUNCTION__);
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    // get the user buffer
    // get the user buffer
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
Line 520... Line 518...
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlSetDirMem: too large stream number\n");
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    i = pMemDscr->DmaChanNum;
Line 545... Line 543...
    u32 TetrNumber = 0;
    u32 TetrNumber = 0;
    u32 Address = 0;
    u32 Address = 0;
    AMB_SET_DMA_CHANNEL MemDscr;
    AMB_SET_DMA_CHANNEL MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    printk("<0>IoctlSetSrcMem: Entered.\n");
    printk("%s()\n", __FUNCTION__);
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    // get the user buffer
    // get the user buffer
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
Line 557... Line 555...
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlSetSrcMem: too large stream number\n");
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    i = pMemDscr->DmaChanNum;
    //AdmNumber = pMemDscr->Param >> 16;
    AdmNumber = pMemDscr->Param >> 16;
    //TetrNumber = pMemDscr->Param & 0xff;
    TetrNumber = pMemDscr->Param & 0xff;
    //Address = AdmNumber * ADM_SIZE + TetrNumber * TETRAD_SIZE + TRDadr_DATA * REG_SIZE;
    Address = AdmNumber * ADM_SIZE + TetrNumber * TETRAD_SIZE + TRDadr_DATA * REG_SIZE;
 
 
    AdmNumber=0;
 
    TetrNumber=0;
 
    Address = pMemDscr->Param;
 
    SetDmaLocalAddress(brd->m_DmaChannel[i], Address);
    SetDmaLocalAddress(brd->m_DmaChannel[i], Address);
    SetAdmTetr(brd->m_DmaChannel[i], AdmNumber, TetrNumber);
    SetAdmTetr(brd->m_DmaChannel[i], AdmNumber, TetrNumber);
    //Status = SetDmaMode(brd, i, AdmNumber, TetrNumber);
    Status = SetDmaMode(brd, i, AdmNumber, TetrNumber);
    Status=0;
 
 
 
    up(&brd->m_BoardSem);
    up(&brd->m_BoardSem);
 
 
    return Status;
    return Status;
}
}
Line 593... Line 586...
    AMB_SET_DMA_CHANNEL MemDscr;
    AMB_SET_DMA_CHANNEL MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    //printk("<0>IoctlSetSrcMem: Entered.\n");
    //printk("%s()\n", __FUNCTION__);
 
 
    // get the user buffer
    // get the user buffer
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlSetDrqMem: too large stream number\n");
        printk("IoctlSetDrqMem: too large stream number\n");
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    i = pMemDscr->DmaChanNum;
Line 629... Line 622...
    AMB_SET_DMA_CHANNEL MemDscr;
    AMB_SET_DMA_CHANNEL MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    //printk("<0>%s()\n", __FUNCTION__);
    //printk("%s()\n", __FUNCTION__);
 
 
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlSetDrqMem: too large stream number\n");
        printk("IoctlSetDrqMem: too large stream number\n");
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    {
    {
        printk("<0>%s(): invalid stream number\n", __FUNCTION__);
        printk("%s(): invalid stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    i = pMemDscr->DmaChanNum;
Line 670... Line 663...
    AMB_SET_DMA_CHANNEL MemDscr;
    AMB_SET_DMA_CHANNEL MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
    PAMB_SET_DMA_CHANNEL pMemDscr = &MemDscr;
 
 
    down(&brd->m_BoardSem);
    down(&brd->m_BoardSem);
 
 
    //printk("<0>%s()\n", __FUNCTION__);
    //printk("%s()\n", __FUNCTION__);
 
 
    // get the user buffer
    // get the user buffer
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
    if( copy_from_user((void *)&MemDscr, (void *)arg, sizeof(AMB_SET_DMA_CHANNEL))) {
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>IoctlSetDrqMem: too large stream number\n");
        printk("IoctlSetDrqMem: too large stream number\n");
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    {
    {
        printk("<0>%s(): invalid stream number\n", __FUNCTION__);
        printk("%s(): invalid stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pMemDscr->DmaChanNum;
    i = pMemDscr->DmaChanNum;
Line 721... Line 714...
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pMemDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>%s(): too large stream number\n", __FUNCTION__);
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    if(!(brd->m_DmaChanMask & (1 << pMemDscr->DmaChanNum)))
    {
    {
        printk("<0>%s(): invalid stream number\n", __FUNCTION__);
        printk("%s(): invalid stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    Status = ResetFifo(brd, pMemDscr->DmaChanNum);
    Status = ResetFifo(brd, pMemDscr->DmaChanNum);
Line 756... Line 749...
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    if(DmaInfo.DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(DmaInfo.DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>%s(): too large stream number\n", __FUNCTION__);
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
    if(!(brd->m_DmaChanMask & (1 << DmaInfo.DmaChanNum)))
    if(!(brd->m_DmaChanMask & (1 << DmaInfo.DmaChanNum)))
    {
    {
        printk("<0>%s(): invalid stream number\n", __FUNCTION__);
        printk("%s(): invalid stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    DmaInfo.Direction = brd->m_DmaDir[DmaInfo.DmaChanNum];
    DmaInfo.Direction = brd->m_DmaDir[DmaInfo.DmaChanNum];
Line 800... Line 793...
                err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
                err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    //printk("<0>%s(): DMA %d\n", __FUNCTION__, pStateDscr->DmaChanNum);
    //printk("%s(): DMA %d\n", __FUNCTION__, pStateDscr->DmaChanNum);
 
 
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>%s(): too large stream number\n", __FUNCTION__);
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pStateDscr->DmaChanNum;
    i = pStateDscr->DmaChanNum;
Line 847... Line 840...
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        err_msg(err_trace, "%s(): Error copy data from userspace\n", __FUNCTION__ );
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EFAULT;
        return -EFAULT;
    }
    }
 
 
    printk("<0>%s(): DMA %d\n", __FUNCTION__, pStateDscr->DmaChanNum);
    printk("%s(): DMA %d\n", __FUNCTION__, pStateDscr->DmaChanNum);
 
 
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    if(pStateDscr->DmaChanNum >= MAX_NUMBER_OF_DMACHANNELS)
    {
    {
        printk("<0>%s(): too large stream number\n", __FUNCTION__);
        printk("%s(): too large stream number\n", __FUNCTION__);
        up(&brd->m_BoardSem);
        up(&brd->m_BoardSem);
        return -EINVAL;
        return -EINVAL;
    }
    }
 
 
    i = pStateDscr->DmaChanNum;
    i = pStateDscr->DmaChanNum;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.