⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc1394regaccesstest1.c

📁 vxWorks下pc1394的驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
   
   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 + -