?? pc1394regaccesstest1.c
字號:
if ((!(ulTempData & DATA_BIT31)) && (iReadCount == 30))
{
printf("pc1394DevGetPhyReg0Test: read count error.\n");
return(ERROR);
}
printf("iReadCount = %d\n", iReadCount);
ulPhyRdAdrs = (ulTempData & 0x0f000000) >> 24;
if (ulPhyRegAdrs != ulPhyRdAdrs)
{
printf("pc1394DevGetPhyReg0Test: read address error.\n");
return(ERROR);
}
ulPhyRdData = (ulTempData & 0x00ff0000) >> 16;
printf("pc1394DevGetPhyReg0Test: rdData = 0x%.8x\n", ulPhyRdData);
return(OK);
}
/******************************************************************************
TITLE: pc1394DevGetTotalPort
DESC: routine to get total port of PC 1394 card PHY
PARAM: none
RETURN: ulRegData - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetTotalPort(void)
{
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x2);
return((ulRegData == ERROR) ? ulRegData : (ulRegData & 0x0f));
}
/******************************************************************************
TITLE: pc1394DevGetExtended
DESC: routine to get extended field of PC 1394 card PHY
PARAM: none
RETURN: ulRegData - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetExtended(void)
{
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x2);
return((ulRegData == ERROR) ? ulRegData : ((ulRegData & 0xe0) >> 5));
}
/******************************************************************************
TITLE: pc1394DevGetMaxSpeed
DESC: routine to get max speed field of PC 1394 card PHY
PARAM: none
RETURN: ulRegData - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetMaxSpeed(void)
{
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x3);
return((ulRegData == ERROR) ? ulRegData : ((ulRegData & 0xe0) >> 5));
}
/******************************************************************************
TITLE: pc1394DevGetPowerFail
DESC: routine to get Power fail field of PC 1394 card PHY
PARAM: none
RETURN: ulRegData - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetPowerFail(void)
{
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x5);
return((ulRegData == ERROR) ? ulRegData : ((ulRegData & 0x10) >> 4));
}
/******************************************************************************
TITLE: pc1394DevGetVendorID
DESC: routine to get VendorID field of PC 1394 card PHY
PARAM: none
RETURN: ulVendorID - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetVendorID(void)
{
int i;
int iStatus;
unsigned long ulRdData[3];
unsigned long ulTempData;
unsigned long ulWrData;
unsigned long ulPhyPageSel;
unsigned long ulPhyPortSel;
unsigned long ulVendorID;
ulPhyPageSel = 0x1;
ulWrData = (ulPhyPageSel << 5);
/* write page select register */
iStatus = pc1394DevSetPhyReg(0x7, ulWrData);
if (iStatus == ERROR)
{
return(ERROR);
}
/*
ulRdData = pc1394DevGetPhyReg(0x7);
return((ulRdData == ERROR) ? ulRdData : ((ulRdData & 0xe0) >> 5));
*/
ulTempData = pc1394DevGetPhyReg(0x8);
printf("Compliance_level = 0x%.2x\n", ulTempData);
for(i = 0; i < 3; i++)
{
ulRdData[i] = pc1394DevGetPhyReg(0xa + i);
}
/*
ulRdData[0] = pc1394DevGetPhyReg(0xa);
ulRdData[1] = pc1394DevGetPhyReg(0xb);
ulRdData[2] = pc1394DevGetPhyReg(0xc);
printf("VendorID: ulRdData0 = 0x%.8x\n", ulRdData[0]);
printf("VendorID: ulRdData1 = 0x%.8x\n", ulRdData[1]);
printf("VendorID: ulRdData2 = 0x%.8x\n", ulRdData[2]);
ulRdData[0] = pc1394DevGetPhyReg(0xd);
ulRdData[1] = pc1394DevGetPhyReg(0xe);
ulRdData[2] = pc1394DevGetPhyReg(0xf);
printf("ProductID: ulRdData0 = 0x%.8x\n", ulRdData[0]);
printf("ProductID: ulRdData1 = 0x%.8x\n", ulRdData[1]);
printf("ProductID: ulRdData2 = 0x%.8x\n", ulRdData[2]);
*/
ulVendorID = ((ulRdData[2] & 0xff) << 16) | ((ulRdData[1] & 0xff) << 8) | (ulRdData[0] & 0xff);
return(ulVendorID);
}
/******************************************************************************
TITLE: pc1394DevGetPhyIBR
DESC: routine to get IBR field of PC 1394 card PHY
PARAM: none
RETURN: ulRegData - value return from PHY
ERROR - operation runs failed
******************************************************************************/
int pc1394DevGetPhyIBR(void)
{
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x1);
ulRegData = (ulRegData & 0x00000040) >> 6;
return(ulRegData);
}
/******************************************************************************
TITLE: pc1394DevSetPhyIBR
DESC: routine to set IBR field of PC 1394 card PHY
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevSetPhyIBR(void)
{
int iStatus;
unsigned long ulRegData;
ulRegData = pc1394DevGetPhyReg(0x1);
ulRegData = ulRegData | 0x00000040;
iStatus = pc1394DevSetPhyReg(0x1, ulRegData);
if (iStatus == ERROR)
{
printf("pc1394DevSetPhyIBR: pc1394DevSetPhyReg ERROR\n");
return(ERROR);
}
return(OK);
}
/******************************************************************************
TITLE: pc1394DevBusReset
DESC: routine to force a 1394 bus reset
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevBusReset(void)
{
int iStatus;
iStatus = pc1394DevSetPhyIBR();
return(iStatus);
}
/******************************************************************************
TITLE: dataPrintToScr
DESC: routine to print data to standard output
PARAM: pDataPrint - pointer to data
iPrintNum - number to print
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS dataPrintToScr(unsigned int *pDataPrint, int iPrintNum)
{
int i;
printf(" offset value \n");
for(i = 0; i < iPrintNum; i++)
{
printf(" 0x%.4x 0x%.8x \n", i * 4, pDataPrint[i]);
}
return(OK);
}
/******************************************************************************
TITLE: dataFileSave
DESC: routine to save data to specified file
PARAM: pDataPrint - pointer to data
iPrintNum - number to save
pFileName - pointer to file name to save file
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS dataFileSave(unsigned int *pDataPrint, int iPrintNum, char *pFileName)
{
int i;
FILE *fd;
fd = fopen(pFileName, "wb+");
if (fd == NULL)
{
printf("file open failed.\n");
return(ERROR);
}
fprintf(fd, " offset value \n");
for(i = 0; i < iPrintNum; i++)
{
fprintf(fd, " 0x%.4x 0x%.8x \n", i * 4, pDataPrint[i]);
}
fclose(fd);
return(OK);
}
/******************************************************************************
TITLE: pc1394DevGetBIBimage
DESC: routine to get HCControl.BIBimage of PC 1394 card
PARAM: none
RETURN: ulRegData - value return from PHY
******************************************************************************/
int pc1394DevGetBIBimage(void)
{
unsigned long ulTempData;
ulTempData = pciReadLong((int)(pPc1394Dev.pciControllerSpace0 + HC_CTR_SET_ADR));
ulTempData = (ulTempData & 0x80000000) >> 31;
return(ulTempData);
}
/******************************************************************************
TITLE: pc1394DevSetBIBimage
DESC: routine to set HCControl.BIBimage of PC 1394 card
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevSetBIBimage(void)
{
unsigned long ulTempData;
ulTempData = 0x80000000;
pciWriteLong((int)pPc1394Dev.pciControllerSpace0 + HC_CTR_SET_ADR, ulTempData);
return(OK);
}
/******************************************************************************
TITLE: pc1394DevClrBIBimage
DESC: routine to clear HCControl.BIBimage of PC 1394 card
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevClrBIBimage(void)
{
unsigned long ulTempData;
ulTempData = 0x80000000;
pciWriteLong((int)pPc1394Dev.pciControllerSpace0 + HC_CTR_CLR_ADR, ulTempData);
return(OK);
}
/******************************************************************************
TITLE: pc1394DevGetByteSwapData
DESC: routine to get HCControl.noByteSwapData of PC 1394 card
PARAM: none
RETURN: ulRegData - value return from PHY
******************************************************************************/
int pc1394DevGetByteSwapData(void)
{
unsigned long ulTempData;
ulTempData = pciReadLong((int)(pPc1394Dev.pciControllerSpace0 + HC_CTR_SET_ADR));
ulTempData = (ulTempData & 0x40000000) >> 30;
return(ulTempData);
}
/******************************************************************************
TITLE: pc1394DevSetByteSwapData
DESC: routine to set HCControl.ByteSwapData of PC 1394 card
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevSetByteSwapData(void)
{
unsigned long ulTempData;
ulTempData = 0x40000000;
pciWriteLong((int)pPc1394Dev.pciControllerSpace0 + HC_CTR_SET_ADR, ulTempData);
return(OK);
}
/******************************************************************************
TITLE: pc1394DevClrByteSwapData
DESC: routine to clean HCControl.ByteSwapData of PC 1394 card
PARAM: none
RETURN: OK - operation runs successfully
ERROR - operation runs failed
******************************************************************************/
STATUS pc1394DevClrByteSwapData(void)
{
unsigned long ulTempData;
ulTempData = 0x40000000;
pciWriteLong((int)pPc1394Dev.pciControllerSpace0 + HC_CTR_CLR_ADR, ulTempData);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -