📄 hfctldevaccesstest.c
字号:
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get Local configuration register MARBR */
iStatus = HFCtlPmcGetRegModeArbitration(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegModeArbitration() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set MARBR, MARBR = 0x%.8x\n", *pTempData);
}
/* get Local configuration register BIGEND */
iStatus = HFCtlPmcGetRegBigEndianDesc(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegBigEndianDesc() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: BIGEND = 0x%.8x\n", *pTempCharData);
}
/* set Local configuration register BIGEND */
ucRegCharData = 0xee; /*0x00;*/
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: ucRegCharData = 0x%.2x\n", ucRegCharData);
}
iStatus = HFCtlPmcSetRegBigEndianDesc(iHfCtlFd, ucRegCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegBigEndianDesc() failed.\n");
close(iHfCtlFd);
return(ERROR);
}
/* get Local configuration register BIGEND */
iStatus = HFCtlPmcGetRegBigEndianDesc(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegBigEndianDesc() failed.\n");
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set BIGEND, BIGEND = 0x%.8x\n", *pTempCharData);
}
/* get Local configuration register LMISC1 */
iStatus = HFCtlPmcGetRegLocalMisc1(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalMisc1() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: LMISC1 = 0x%.8x\n", *pTempCharData);
}
/* set Local configuration register LMISC1 */
ucRegCharData = 0x05;
iStatus = HFCtlPmcSetRegLocalMisc1(iHfCtlFd, ucRegCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegLocalMisc1() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get Local configuration register LMISC1 */
iStatus = HFCtlPmcGetRegLocalMisc1(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalMisc1() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set LMISC1, LMISC1 = 0x%.8x\n", *pTempCharData);
}
/* get Local configuration register LMISC2 */
iStatus = HFCtlPmcGetRegLocalMisc2(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalMisc2() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: LMISC2 = 0x%.8x\n", *pTempCharData);
}
/* set Local configuration register LMISC2 */
ucRegCharData = 0x01;
iStatus = HFCtlPmcSetRegLocalMisc2(iHfCtlFd, ucRegCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegLocalMisc2() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get Local configuration register LMISC2 */
iStatus = HFCtlPmcGetRegLocalMisc2(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalMisc2() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set LMISC2, LMISC2 = 0x%.8x\n", *pTempCharData);
}
/* get Local configuration register LBRD0 */
iStatus = HFCtlPmcGetRegLocalBusSpace0RegionDesc(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalBusSpace0RegionDesc() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: LBRD0 = 0x%.8x\n", *pTempData);
}
/* set Local configuration register LBRD0 */
ulRegData = 0x80430303;
#if 0
ulRegData = 0x80430343; /* enable READY */
#endif /* if 0 */
iStatus = HFCtlPmcSetRegLocalBusSpace0RegionDesc(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegLocalBusSpace0RegionDesc() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get Local configuration register LBRD0 */
iStatus = HFCtlPmcGetRegLocalBusSpace0RegionDesc(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegLocalBusSpace0RegionDesc() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set LBRD0, LBRD0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMAMODE0 */
iStatus = HFCtlPmcGetRegDmaChannel0Mode(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0Mode() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMAMODE0 = 0x%.8x\n", *pTempData);
}
/* set DMA register DMAMODE0 */
/*
ulRegData = 0x00030843;
*/
ulRegData = 0x00030043; /* the local addr is incremented */
iStatus = HFCtlPmcSetRegDmaChannel0Mode(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0Mode() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMAMODE0 */
iStatus = HFCtlPmcGetRegDmaChannel0Mode(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0Mode() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMAMODE0, DMAMODE0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMAPADR0 */
iStatus = HFCtlPmcGetRegDmaChannel0PciAdrs(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0PciAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMAPADR0 = 0x%.8x\n", *pTempData);
}
/* set DMA register DMAPADR0 */
ulRegData = ulDmaDataPciAdrs;
iStatus = HFCtlPmcSetRegDmaChannel0PciAdrs(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0PciAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMAPADR0 */
iStatus = HFCtlPmcGetRegDmaChannel0PciAdrs(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0PciAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMAPADR0, DMAPADR0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMALADR0 */
iStatus = HFCtlPmcGetRegDmaChannel0LocalAdrs(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0LocalAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMALADR0 = 0x%.8x\n", *pTempData);
}
/* set DMA register DMALADR0 */
ulRegData = iOffset;
iStatus = HFCtlPmcSetRegDmaChannel0LocalAdrs(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0LocalAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMALADR0 */
iStatus = HFCtlPmcGetRegDmaChannel0LocalAdrs(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0LocalAdrs() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMALADR0, DMALADR0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMASIZ0 */
iStatus = HFCtlPmcGetRegDmaChannel0TransferSize(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0TransferSize() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMASIZ0 = 0x%.8x\n", *pTempData);
}
/* set DMA register DMASIZ0 */
ulRegData = iDmaByteSize;
iStatus = HFCtlPmcSetRegDmaChannel0TransferSize(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0TransferSize() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMASIZ0 */
iStatus = HFCtlPmcGetRegDmaChannel0TransferSize(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0TransferSize() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMASIZ0, DMASIZ0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMADPR0 */
iStatus = HFCtlPmcGetRegDmaChannel0DescPointer(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0DescPointer() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMADPR0 = 0x%.8x\n", *pTempData);
}
/* set DMA register DMADPR0 */
ulRegData = 0x00000008; /* Local to PCI */
iStatus = HFCtlPmcSetRegDmaChannel0DescPointer(iHfCtlFd, ulRegData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0DescPointer() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMADPR0 */
iStatus = HFCtlPmcGetRegDmaChannel0DescPointer(iHfCtlFd, pTempData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0DescPointer() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMADPR0, DMADPR0 = 0x%.8x\n", *pTempData);
}
/* get DMA register DMACSR0 */
iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0CmdStatus() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: DMACSR0 = 0x%.2x\n", *pTempCharData);
}
/* set DMA register DMACSR0 */
ucRegCharData = (*pTempCharData) | DATA_BIT0; /* enable DMA channel 0 */
iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(iHfCtlFd, ucRegCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0CmdStatus() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* get DMA register DMACSR0 */
iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0CmdStatus() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: after set DMACSR0, DMACSR0 = 0x%.8x\n", *pTempCharData);
}
/* start DMA channel 0 */
ucRegCharData = (*pTempCharData) | DATA_BIT1; /* start DMA channel 0 */
if (iDevTestDebug)
{
printf("hfCtlDevDmaReadTest: before start DMA ucRegCharData = 0x%.2x\n", ucRegCharData);
}
iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(iHfCtlFd, ucRegCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcSetRegDmaChannel0CmdStatus() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
/* wait DMA to end */
ucTemp = 0;
while((!ucTemp) && (iWaitCount < 30))
{
taskDelay(5);
iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(iHfCtlFd, pTempCharData);
if (iStatus == ERROR)
{
printf("hfCtlDevDmaReadTest: HFCtlPmcGetRegDmaChannel0CmdStatus() failed.\n");
free(pDmaDataAdrs);
close(iHfCtlFd);
return(ERROR);
}
ucTemp = (*pTempCharData) & DATA_BIT4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -