亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hfctldevcfgfunc.c

?? vxworks下跳頻控制的驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*            file number            */
/*
modification history
-,            2004, October, 1th      Release
*/

/****************************************************************
Module:       hfCtlDevCfgFunc.c
Author:      
Description:  

        
****************************************************************/
/* Included Files */
#include <vxWorks.h>
#include <stdio.h>
#include <logLib.h>
#include <taskLib.h>
#include <memLib.h>
#include <stdlib.h>
#include <string.h>
#include <cacheLib.h>
#include "../../../include/drv/hF1394Pmc/hFCtlPmc.h"
#include "../../../include/drv/hF1394Pmc/HFCtlPmcLow.h"
#include "../../../include/drv/hF1394Pmc/plx9656.h"
#include "rs60x.h"

/* define some macro */

/* Global Variables */
extern HFCTL_DEV   HFCtlPmcDev;

/* Forward Declaration */


/******************************************************************************
TITLE:  	hfCtlDevLAS0Config
DESC:   	routine to config access to HFCtl device's Local address space 0
PARAM:  	fd       - file descriptor
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevLAS0Config(int fd)
{
   int   i;
   int   iStatus;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned long *pTempData;

   /* get Local configuration register LAS0BA */
   iStatus = HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register LAS0BA bit 0 */
   ulRegData = (*pTempData) | 0x1;
   iStatus = HFCtlPmcSetRegLocalAdrsSpace0BaseAdrs(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register MARBR */
   ulRegData = 0x00210010;
   iStatus = HFCtlPmcSetRegModeArbitration(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register BIGEND */
   ucRegCharData = 0xee;
   iStatus = HFCtlPmcSetRegBigEndianDesc(fd, ucRegCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register LMISC1 */
   ucRegCharData = 0x05;
   iStatus = HFCtlPmcSetRegLocalMisc1(fd, ucRegCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register LMISC2 */
   ucRegCharData = 0x01;
   iStatus = HFCtlPmcSetRegLocalMisc2(fd, ucRegCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local configuration register LBRD0 */
   ulRegData = 0x80430343; /* enable READY */
   iStatus = HFCtlPmcSetRegLocalBusSpace0RegionDesc(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevLAS0ConfigList
DESC:   	routine to list HFCtl device's Local address space 0 configuration 
PARAM:  	fd       - file descriptor
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevLAS0ConfigList(int fd)
{
   int   iStatus;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned char *pTempCharData;
   unsigned long *pTempData;

   /* get Local configuration register LAS0RR */
   iStatus = HFCtlPmcGetRegLAS0Range(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: LAS0RR = 0x%.8x\n", *pTempData);

   /* get Local configuration register LAS0BA */
   iStatus = HFCtlPmcGetRegLocalAdrsSpace0BaseAdrs(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: LAS0BA = 0x%.8x\n", *pTempData);

   /* get Local configuration register MARBR */
   iStatus = HFCtlPmcGetRegModeArbitration(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: MARBR = 0x%.8x\n", *pTempData);

   /* get Local configuration register BIGEND */
   iStatus = HFCtlPmcGetRegBigEndianDesc(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: BIGEND = 0x%.2x\n", *pTempCharData);

   /* get Local configuration register LMISC1 */
   iStatus = HFCtlPmcGetRegLocalMisc1(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: LMISC1 = 0x%.2x\n", *pTempCharData);

   /* get Local configuration register PROT_AREA */
   iStatus = HFCtlPmcGetRegPROT_AREA(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: PROT_AREA = 0x%.2x\n", *pTempCharData);

   /* get Local configuration register LMISC2 */
   iStatus = HFCtlPmcGetRegLocalMisc2(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: LMISC2 = 0x%.2x\n", *pTempCharData);

   /* get Local configuration register LBRD0 */
   iStatus = HFCtlPmcGetRegLocalBusSpace0RegionDesc(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevLAS0ConfigList: LBRD0 = 0x%.8x\n", *pTempData);

   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevDMA0FuncConfig
DESC:   	routine to perform an DMA operation
PARAM:  	fd       - file descriptor
         pDmaPci  - pointer to structure HFCTL_PCIDMA
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed

NOTE:
      BEFORE PERFORM A DMA write operation, 
      if we read the source buffer, then the first Dword in the target memory
      is DMA right, 
      if we don't read the source buffer, then the first Dword in the target memory
      is DMA with the value of register DMAMODE0.
      if we read the DMAMODE0's value, then the first Dword in the target memory
      is DMA right as first Dword in the source buffer.

******************************************************************************/
STATUS hfCtlDevDMA0FuncConfig(int fd, HFCTL_PCIDMA *pDmaPci)
{
   int   i;
   int   iStatus;
   int   iCount;
   int   iWaitCount;
   unsigned char ucTemp;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned char *pTempCharData;
   unsigned long *pTempData;
   unsigned long *pSrcData;
   
#if 0
   printf("hfCtlDevDMA0FuncConfig: pDmaPci = 0x%.8x\n", pDmaPci);

   pSrcData = (unsigned long *)(pDmaPci->pciAddress - 0x40000000);
   
   printf("hfCtlDevDMA0FuncConfig: pSrcData = 0x%.8x\n", pSrcData);

   iCount = pDmaPci->count;

   printf("hfCtlDevDMA0FuncConfig: iCount = 0x%d\n", iCount);
#endif /* if 0 */

   /* get DMA register DMAMODE0 */
   iStatus = HFCtlPmcGetRegDmaChannel0Mode(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   if ((pDmaPci->lockAdrs) == TRUE)
      {
      ulRegData = (*pTempData) | DATA_BIT11;
      }
   else
      {
      ulRegData = (*pTempData) & (~DATA_BIT11);
      }

   /* lock Local address */
   iStatus = HFCtlPmcSetRegDmaChannel0Mode(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /****************************************************
      VERY IMPORTANT!

      BEFORE PERFORM A DMA write operation, 
      should read the value of register DMAMODE0 once 

      conclusion:
      BEFORE PERFORM A DMA write operation, 
      if we read the source buffer, then the first Dword in the target memory
      is DMA right, 
      if we don't read the source buffer, then the first Dword in the target memory
      is DMA with the value of register DMAMODE0.
      if we read the DMAMODE0's value, then the first Dword in the target memory
      is DMA right as first Dword in the source buffer.
   *****************************************************/
   /* get DMA register DMAMODE0 */
   iStatus = HFCtlPmcGetRegDmaChannel0Mode(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }


#if 0
   if (1)
      {
      printf("hfCtlDevDMA0FuncConfig: after set DMAMODE0, DMAMODE0 = 0x%.8x\n", *pTempData);
      }
#endif /* if 0 */
   /* set PCI address */
   ulRegData = pDmaPci->pciAddress;

   iStatus = HFCtlPmcSetRegDmaChannel0PciAdrs(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set Local address */
   ulRegData = pDmaPci->LocalAddress;
   iStatus = HFCtlPmcSetRegDmaChannel0LocalAdrs(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   if ((pDmaPci->count) >= 0x800000)
      {
      printf("hfCtlDevDMA0FuncConfig: dma size too large.\n");
      return(ERROR);
      }

   /* set DMA transfer size */
   ulRegData = (pDmaPci->count) & 0x7fffff;
   iStatus = HFCtlPmcSetRegDmaChannel0TransferSize(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set DMA transfer direction */
   if ((pDmaPci->Read) == TRUE)
      {
      ulRegData = 0x00000008;    
      }
   else
      {
      ulRegData = 0x0;
      }

   iStatus = HFCtlPmcSetRegDmaChannel0DescPointer(fd, ulRegData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* get DMA register DMACSR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* set DMA register DMACSR0 */
   ucRegCharData = (*pTempCharData) | DATA_BIT0;  /* enable DMA channel 0 */
   iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(fd, ucRegCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* get DMA register DMACSR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /****************************************************
      VERY IMPORTANT!
      BEFORE PERFORM A DMA write operation, 
      if we read the source buffer, then the first Dword in the target memory
      is DMA right, 
      if we don't read the source buffer, then the first Dword in the target memory
      is DMA with the value of register DMAMODE0.
      if we read the DMAMODE0's value, then the first Dword in the target memory
      is DMA right as first Dword in the source buffer.
   *****************************************************/
#if 0
   for(i = 0; i < (iCount / 4); i++)
      {
      printf("hfCtlDevDMA0FuncConfig: pSrcData[%d] = 0x%.8x\n", i, pSrcData[i]);
      }

      cacheFlush(DATA_CACHE, pSrcData, iCount);
#endif /* if 0 */

   /* start DMA channel 0 */
   ucRegCharData = (*pTempCharData) | DATA_BIT1;  /* start DMA channel 0 */

   iStatus = HFCtlPmcSetRegDmaChannel0CmdStatus(fd, ucRegCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   /* wait DMA to end */
   ucTemp = 0;
   iWaitCount = 0;
   while((!ucTemp) && (iWaitCount < 30))
      {
      taskDelay(1);

      iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(fd, pTempCharData);
      if (iStatus == ERROR)
         {
         return(ERROR);
         }

      ucTemp = (*pTempCharData) & DATA_BIT4;

      iWaitCount++;
      }

   if ((!ucTemp) && (iWaitCount == 30))
      {
      printf("hfCtlDevDMA0FuncConfig: DMA WAIT TIME OUT.\n");
      return(ERROR);
      }
   
   return(OK);
}

/******************************************************************************
TITLE:  	hfCtlDevDMA0FuncConfigList
DESC:   	routine to list HFCtl device's DMA0 configuration 
PARAM:  	fd       - file descriptor
RETURN: 	OK          -  operation was successful
         ERROR       -  operation Failed
******************************************************************************/
STATUS hfCtlDevDMA0FuncConfigList(int fd)
{
   int   iStatus;
   unsigned long ulRegData;
   unsigned char ucRegCharData;
   unsigned char *pTempCharData;
   unsigned long *pTempData;

   /* get DMA register DMAMODE0 */
   iStatus = HFCtlPmcGetRegDmaChannel0Mode(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMAMODE0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMAPADR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0PciAdrs(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMAPADR0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMALADR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0LocalAdrs(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMALADR0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMASIZ0 */
   iStatus = HFCtlPmcGetRegDmaChannel0TransferSize(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMASIZ0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMADPR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0DescPointer(fd, pTempData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

   printf("hfCtlDevDMA0FuncConfigList: DMADPR0 = 0x%.8x\n", *pTempData);

   /* get DMA register DMACSR0 */
   iStatus = HFCtlPmcGetRegDmaChannel0CmdStatus(fd, pTempCharData);
   if (iStatus == ERROR)
      {
      return(ERROR);
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲国产精品字幕久久久| 中文字幕一区二区三区在线播放 | 欧美aaaaaa午夜精品| 蜜臀av一区二区| 国产精品一品视频| 日本精品一级二级| 精品国产91久久久久久久妲己| 欧美精品一区二区三区四区 | 国产欧美精品一区aⅴ影院| 亚洲乱码日产精品bd| 久久99热这里只有精品| 91同城在线观看| 日韩久久久久久| 亚洲精品国产品国语在线app| 青草国产精品久久久久久| 成人97人人超碰人人99| 精品蜜桃在线看| 亚洲成人免费影院| 欧美一区二区三区视频免费 | 国产91露脸合集magnet| 欧美日韩视频在线一区二区| 国产日韩欧美a| 精品一区二区免费在线观看| 欧美性生活久久| 亚洲少妇中出一区| 国产大片一区二区| 欧美电视剧在线看免费| 亚洲成人动漫在线观看| 91片黄在线观看| 亚洲欧洲www| 99精品视频一区二区| 国产午夜亚洲精品午夜鲁丝片| 蜜桃精品在线观看| 欧美电影免费观看高清完整版在线观看| 亚洲一区二区在线播放相泽| 成人免费毛片片v| 久久精品人人做人人综合 | 一区二区日韩av| 成人精品鲁一区一区二区| 国产精品午夜在线| 97久久精品人人做人人爽| 亚洲视频资源在线| 日本久久电影网| 亚洲国产成人91porn| 欧美天堂一区二区三区| 亚洲成人久久影院| 日韩一级精品视频在线观看| 麻豆91免费观看| 久久久五月婷婷| 不卡av在线网| 亚洲一区二区av电影| 91 com成人网| 国产乱码精品一区二区三区av| 国产日韩欧美不卡在线| 日本电影欧美片| 免费成人在线观看| 欧美激情一区二区| 色哟哟一区二区在线观看| 日本aⅴ亚洲精品中文乱码| 久久久精品中文字幕麻豆发布| 成人av在线一区二区三区| 日韩中文字幕91| 国产精品视频线看| 91精品国产欧美一区二区成人| 国产精品一二二区| 一区二区三区四区精品在线视频| 欧美一区二区二区| 色吊一区二区三区| 国产精品996| 美女任你摸久久| 成人毛片视频在线观看| 美女视频一区二区| 亚洲国产一区视频| 亚洲少妇最新在线视频| 国产午夜精品理论片a级大结局 | 欧美亚洲综合另类| proumb性欧美在线观看| 精品一区二区免费| 亚洲国产日产av| 亚洲天堂成人在线观看| 久久久九九九九| 亚洲成人中文在线| 一二三四社区欧美黄| 中国色在线观看另类| 国产丝袜美腿一区二区三区| 日韩免费性生活视频播放| 欧美日韩aaa| 欧美高清一级片在线| 欧美日韩中文另类| 欧美三级电影在线观看| 在线亚洲高清视频| 91久久精品一区二区三| 欧美性xxxxx极品少妇| 欧美伊人久久久久久久久影院 | 色婷婷综合五月| 日本高清免费不卡视频| 欧美一区二区三区日韩视频| 一区二区成人在线观看| 久久久www免费人成精品| 中文字幕av资源一区| 日本不卡视频在线观看| 精彩视频一区二区| 精品一区二区精品| 不卡电影免费在线播放一区| 99久久久国产精品| 色狠狠色狠狠综合| 欧美在线999| 欧美日韩高清在线播放| 欧美一级片在线看| 久久一区二区三区四区| 国产亚洲精品bt天堂精选| 一区二区三区中文在线观看| 韩国精品在线观看| 在线观看亚洲精品| 国产亚洲欧美中文| 丝瓜av网站精品一区二区| www.欧美亚洲| 欧美一区二区三区公司| 亚洲久本草在线中文字幕| 美女精品一区二区| 欧美色综合久久| 国产精品传媒视频| 精品一区二区三区在线播放| 国产91露脸合集magnet| 国产乱码精品一区二区三区av| 欧美一卡2卡三卡4卡5免费| 日韩黄色免费电影| 日韩视频在线观看一区二区| 一区二区在线看| 91精品办公室少妇高潮对白| 国产精品久久毛片av大全日韩| 久久99在线观看| 欧美一级日韩不卡播放免费| 亚洲国产wwwccc36天堂| 91啪在线观看| 亚洲色图欧洲色图婷婷| 成人动漫av在线| 亚洲美女视频在线观看| 欧美亚男人的天堂| 亚洲欧洲色图综合| www.亚洲免费av| 中文字幕一区免费在线观看| 成年人网站91| 伊人婷婷欧美激情| 在线观看亚洲精品视频| 亚洲无人区一区| 4438x成人网最大色成网站| 一区二区三区在线视频观看| 91麻豆精品在线观看| 亚洲图片欧美视频| 91精品国产综合久久婷婷香蕉| 三级影片在线观看欧美日韩一区二区| 欧美色区777第一页| 蜜桃在线一区二区三区| 国产偷国产偷精品高清尤物| 日本黄色一区二区| 东方欧美亚洲色图在线| 五月天一区二区三区| 国产精品免费av| 欧美性生活久久| 亚洲国产一二三| 欧美日韩国产精选| 日本不卡在线视频| 久久久久久久综合狠狠综合| 成人av免费观看| 亚洲福利一区二区| 精品国产网站在线观看| 99久久亚洲一区二区三区青草| 亚洲自拍偷拍av| 久久久五月婷婷| 欧美系列日韩一区| 国模套图日韩精品一区二区| 国产精品久久久久久久久免费相片| 欧美无人高清视频在线观看| 黄色日韩网站视频| 亚洲成人第一页| 国产精品黄色在线观看| 91精选在线观看| 91丨porny丨国产| 国产高清亚洲一区| 日韩中文字幕一区二区三区| 中文字幕不卡的av| 精品99999| 在线91免费看| 在线视频综合导航| 99re66热这里只有精品3直播| 韩国欧美国产一区| 日韩精品高清不卡| 一区二区免费看| 综合电影一区二区三区| 久久精品视频在线看| 欧美一二三区在线观看| 欧美吻胸吃奶大尺度电影 | 精品成人一区二区三区| 91精品国产入口在线| 欧美色图12p| 欧美剧在线免费观看网站| 欧美精品在线视频| 欧美日韩在线播放一区| 欧美视频你懂的|