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 7 and 19

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 7 Rev 19
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 365... Line 365...
{
{
    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");
    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);
Line 389... Line 390...
 
 
    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 );
 
 
    return Status;
    return Status;
}
}
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
Line 506... Line 508...
    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("<0>IoctlSetDirMem: Entered.\n");
    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 543... Line 545...
    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");
    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 560... Line 563...
        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;
}
}

powered by: WebSVN 2.1.0

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