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;
|
}
|
}
|
|
|