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/] [hardware.c] - Diff between revs 30 and 54

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

Rev 30 Rev 54
Line 77... Line 77...
    deviceID = ReadOperationWordReg(brd, PEMAINadr_DEVICE_ID);
    deviceID = ReadOperationWordReg(brd, PEMAINadr_DEVICE_ID);
    deviceRev = ReadOperationWordReg(brd, PEMAINadr_DEVICE_REV);
    deviceRev = ReadOperationWordReg(brd, PEMAINadr_DEVICE_REV);
 
 
    dbg_msg(dbg_trace, "%s(): DeviceID = 0x%X, DeviceRev = 0x%X.\n", __FUNCTION__, deviceID, deviceRev);
    dbg_msg(dbg_trace, "%s(): DeviceID = 0x%X, DeviceRev = 0x%X.\n", __FUNCTION__, deviceID, deviceRev);
 
 
 
    pci_set_dma_mask(brd->m_pci, DMA_BIT_MASK(32));
 
 
    temp = ReadOperationWordReg(brd, PEMAINadr_PLD_VER);
    temp = ReadOperationWordReg(brd, PEMAINadr_PLD_VER);
 
 
    dbg_msg(dbg_trace, "%s(): PldVER = 0x%X.\n", __FUNCTION__, temp);
    dbg_msg(dbg_trace, "%s(): PldVER = 0x%X.\n", __FUNCTION__, temp);
 
 
Line 444... Line 444...
//--------------------------------------------------------------------
//--------------------------------------------------------------------
 
 
int DmaEnable(struct pex_device *brd, u32 AdmNumber, u32 TetrNumber)
int DmaEnable(struct pex_device *brd, u32 AdmNumber, u32 TetrNumber)
{
{
    int Status = 0;
    int Status = 0;
    //u32 Value = 0;
    u32 Value = 0;
    //Status = ReadRegData(brd, AdmNumber, TetrNumber, 0, &Value);
    Status = ReadRegData(brd, AdmNumber, TetrNumber, 0, &Value);
    //if(Status != 0) return Status;
    if(Status != 0) return Status;
    //Value |= 0x8; // DRQ enable
    Value |= 0x8; // DRQ enable
    //Status = WriteRegData(brd, AdmNumber, TetrNumber, 0, Value);
    Status = WriteRegData(brd, AdmNumber, TetrNumber, 0, Value);
    //err_msg(err_trace, "%s: MODE0 = 0x%X.\n", __FUNCTION__, Value);
    //err_msg(err_trace, "%s: MODE0 = 0x%X.\n", __FUNCTION__, Value);
    return Status;
    return Status;
}
}
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
 
 
int DmaDisable(struct pex_device *brd, u32 AdmNumber, u32 TetrNumber)
int DmaDisable(struct pex_device *brd, u32 AdmNumber, u32 TetrNumber)
{
{
    int Status = 0;
    int Status = 0;
    //u32 Value = 0;
    u32 Value = 0;
    //Status = ReadRegData(brd, AdmNumber, TetrNumber, 0, &Value);
    Status = ReadRegData(brd, AdmNumber, TetrNumber, 0, &Value);
    //if(Status != 0) return Status;
    if(Status != 0) return Status;
    //Value &= 0xfff7; // DRQ disable
    Value &= 0xfff7; // DRQ disable
    //Status = WriteRegData(brd, AdmNumber, TetrNumber, 0, Value);
    Status = WriteRegData(brd, AdmNumber, TetrNumber, 0, Value);
    return Status;
    return Status;
}
}
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
 
 
Line 503... Line 503...
    int Status = 0;
    int Status = 0;
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
    CtrlExt.AsWhole = ReadOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr);
    CtrlExt.AsWhole = ReadOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr);
    CtrlExt.ByBits.Pause = 0;
    CtrlExt.ByBits.Pause = 0;
 
 
    //printk("<0>%s(): CtrlExt.AsWhole = 0x%x\n", __FUNCTION__, CtrlExt.AsWhole);
    //printk("%s(): CtrlExt.AsWhole = 0x%x\n", __FUNCTION__, CtrlExt.AsWhole);
 
 
    WriteOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr, CtrlExt.AsWhole);
    WriteOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr, CtrlExt.AsWhole);
 
 
    return Status;
    return Status;
}
}
Line 520... Line 520...
    u64 SGTableAddress;
    u64 SGTableAddress;
    u32 LocalAddress, DmaDirection;
    u32 LocalAddress, DmaDirection;
    u32 adm_num, tetr_num;
    u32 adm_num, tetr_num;
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
 
 
    dbg_msg(dbg_trace, "%s(): channel = %d, FifoAddr = 0x%04X.\n",__FUNCTION__,  NumberOfChannel, FifoAddr);
    dbg_msg(err_trace, "%s(): channel = %d, FifoAddr = 0x%04X.\n",__FUNCTION__,  NumberOfChannel, FifoAddr);
 
 
    DmaCtrl.AsWhole = 0;
    DmaCtrl.AsWhole = 0;
    WriteOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr, DmaCtrl.AsWhole);
    WriteOperationWordReg(brd, PEFIFOadr_DMA_CTRL + FifoAddr, DmaCtrl.AsWhole);
    if(brd->m_BlockFifoId[NumberOfChannel] == PE_EXT_FIFO_ID)
    if(brd->m_BlockFifoId[NumberOfChannel] == PE_EXT_FIFO_ID)
    {
    {
Line 566... Line 566...
        dbg_msg(dbg_trace, "%s(): channel = %d, DMA_CTRL_EXT = 0x%04X.\n", __FUNCTION__, NumberOfChannel, CtrlExt.AsWhole);
        dbg_msg(dbg_trace, "%s(): channel = %d, DMA_CTRL_EXT = 0x%04X.\n", __FUNCTION__, NumberOfChannel, CtrlExt.AsWhole);
    }
    }
 
 
    adm_num = GetAdmNum(brd->m_DmaChannel[NumberOfChannel]);
    adm_num = GetAdmNum(brd->m_DmaChannel[NumberOfChannel]);
    tetr_num = GetTetrNum(brd->m_DmaChannel[NumberOfChannel]);
    tetr_num = GetTetrNum(brd->m_DmaChannel[NumberOfChannel]);
    //Status = DmaEnable(brd, adm_num, tetr_num);
    Status = DmaEnable(brd, adm_num, tetr_num);
 
 
    return Status;
    return Status;
}
}
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
Line 581... Line 581...
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
    u32 FifoAddr = brd->m_FifoAddr[NumberOfChannel];
    int enbl = 0;
    int enbl = 0;
    int i = 0;
    int i = 0;
    u32 tetr_num;
    u32 tetr_num;
 
 
 
    dbg_msg(err_trace, "%s(): channel = %d, FifoAddr = 0x%04X.\n",__FUNCTION__,  NumberOfChannel, FifoAddr);
 
 
    if(brd->m_BlockFifoId[NumberOfChannel] == PE_EXT_FIFO_ID)
    if(brd->m_BlockFifoId[NumberOfChannel] == PE_EXT_FIFO_ID)
    {
    {
        DMA_CTRL_EXT CtrlExt;
        DMA_CTRL_EXT CtrlExt;
        DMA_MODE_EXT ModeExt;
        DMA_MODE_EXT ModeExt;
 
 
Line 602... Line 604...
        if(brd->m_DmaChanEnbl[i])
        if(brd->m_DmaChanEnbl[i])
            enbl = 1;
            enbl = 1;
    brd->m_DmaIrqEnbl = enbl;
    brd->m_DmaIrqEnbl = enbl;
 
 
    tetr_num = GetTetrNum(brd->m_DmaChannel[NumberOfChannel]);
    tetr_num = GetTetrNum(brd->m_DmaChannel[NumberOfChannel]);
    //Status = DmaDisable(brd, 0, tetr_num);
    Status = DmaDisable(brd, 0, tetr_num);
    CompleteDmaTransfer(brd->m_DmaChannel[NumberOfChannel]);
    CompleteDmaTransfer(brd->m_DmaChannel[NumberOfChannel]);
 
 
    return Status;
    return Status;
}
}
 
 

powered by: WebSVN 2.1.0

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