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

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

?? zl5011xcpu.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
      if (status == ZL5011X_OK)
      {
         /* update structure */
         zl5011xParams->cpuDmaIf.msgPadding= padding;
      }
   }

   return status;
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaGetTxStatus

 Description:
    This function returns the status of device with respect to the CPU
    transmiting packets

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
   pTxMode           ZL5011X_DMA_ENABLED (=busy) or
                     ZL5011X_DMA_DISABLED (=idle)
   pDebugDmaTxBusy   An internal state indicator flag (for system debug only)

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaGetTxStatus(zl5011xParamsS *zl5011xParams,
                                  zl5011xDmaControlModeE *pTxControlMode,
                                  zl5011xBooleanE *pDmaTxBusy)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits=0,bitMask=0; /* Read and set constat register only            */

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaGetTxStatus: ", 0, 0, 0, 0, 0, 0);

   status = zl5011xCpuDmaStoreConstatRegister(zl5011xParams,bits,bitMask,
                                                        ZL5011X_DMA_READ_ONLY);
   if(status == ZL5011X_OK)
   {
      *pDmaTxBusy = (zl5011xBooleanE)(( zl5011xParams->cpuIf.constat >> ZL5011X_DMA_GIF_TX_BUSY_BIT) & ZL5011X_1BIT_MASK);

      if(((zl5011xParams->cpuIf.constat & (ZL5011X_1BIT_MASK <<ZL5011X_DMA_TX_ENABLE_BIT))) > 0)
      {
         *pTxControlMode =  ZL5011X_DMA_ENABLED;
      }
      else
      {
         *pTxControlMode =  ZL5011X_DMA_DISABLED;
      }
   }

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID, "zl5011xCpuDmaGetTxStatus: busy %d",*pDmaTxBusy, 0, 0, 0, 0, 0);

   return(status);
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaGetIntrStatus

 Description:
    This function returns the Tx & Rx status bit values as they appear in the
    constat reg.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
   pStatus ptr to value from intr status register

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaGetIntrStatus(zl5011xParamsS *zl5011xParams,
                                  Uint32T *pStatus)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits=0,bitMask = 0,/*  Read and set constat register only          */
           intBitMask = (ZL5011X_1BIT_MASK << ZL5011X_DMA_TX_INTERRUPT_BIT) |
                          (ZL5011X_1BIT_MASK << ZL5011X_DMA_RX_INTERRUPT_BIT) |
                          (ZL5011X_1BIT_MASK << ZL5011X_DMA_STOP_ERROR_FLAG_BIT) |
                          (ZL5011X_1BIT_MASK << ZL5011X_DMA_START_ERROR_FLAG_BIT);

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaGetIntrStatus: ", 0, 0, 0, 0, 0, 0);

   status = zl5011xCpuDmaStoreConstatRegister(zl5011xParams,bits,bitMask,
                                                        ZL5011X_DMA_READ_ONLY);
   if(status == ZL5011X_OK)
   {
     *pStatus = zl5011xParams->cpuIf.constat & intBitMask;
     zl5011xParams->cpuIf.constat = zl5011xParams->cpuIf.constat & (~intBitMask);
   }

   return(status);
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaErrorFlagsEnable

 Description:
    This function will enable the interrupts that get generated when packets
    destined for the CPU do not have consistant granules. The packet should
    start with a granule which has the start bit set, and end with a granule
    with has the stop bit set.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaErrorFlagsEnable(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits = 0,   /* Don't mask the interrupts                           */
           bitMask= (ZL5011X_1BIT_MASK << ZL5011X_DMA_START_ERROR_MASK_BIT) |
                    (ZL5011X_1BIT_MASK << ZL5011X_DMA_STOP_ERROR_MASK_BIT);

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaErrorFlagsEnable: ", 0, 0, 0, 0, 0, 0);

   status = zl5011xCpuDmaStoreConstatRegister(zl5011xParams,bits,bitMask,
                                                        ZL5011X_DMA_READ_WRITE);

   return(status);
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaErrorFlagsDisable

 Description:
    This function will disable the interrupts that get generated when packets
    destined for the CPU do not have consistant granules. The packet should
    start with a granule which has the start bit set, and end with a granule
    with has the stop bit set.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaErrorFlagsDisable(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits = (ZL5011X_1BIT_MASK << ZL5011X_DMA_START_ERROR_MASK_BIT) |
                  (ZL5011X_1BIT_MASK << ZL5011X_DMA_STOP_ERROR_MASK_BIT),
                             /* Mask all interrupts                           */
           bitMask= (ZL5011X_1BIT_MASK << ZL5011X_DMA_START_ERROR_MASK_BIT) |
                    (ZL5011X_1BIT_MASK << ZL5011X_DMA_STOP_ERROR_MASK_BIT);

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaErrorFlagsDisable: ", 0, 0, 0, 0, 0, 0);

   status = zl5011xCpuDmaStoreConstatRegister(zl5011xParams,bits,bitMask,
                                                        ZL5011X_DMA_READ_WRITE);

   return(status);
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaResoureRegWrite

 Description:
    This function will write the specified number into the CPU resource
    register.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance
    resourceNumber    Number to write

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaResoureRegWrite(zl5011xParamsS *zl5011xParams,
                                                       Uint32T resourceNumber)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaesoureRegWrite: ", 0, 0, 0, 0, 0, 0);

   resourceNumber = resourceNumber & ZL5011X_CPU_RESOURCE_NUM_MASK;
   status = zl5011xWrite(zl5011xParams,ZL5011X_CPU_RESOURCE,resourceNumber);

   return(status);
}

/*******************************************************************************

 Function:
    zl5011xCpuDmaResoureRegRead

 Description:
    This function will read the number stored in the CPU resource register.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    resourceNumber    Number to read

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/
extern zlStatusE zl5011xCpuDmaResoureRegRead(zl5011xParamsS *zl5011xParams,
                                                       Uint32T *resourceNumber)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaesoureRegRead: ", 0, 0, 0, 0, 0, 0);

   status = zl5011xRead(zl5011xParams,ZL5011X_CPU_RESOURCE,resourceNumber);

   *resourceNumber = *resourceNumber & ZL5011X_CPU_RESOURCE_NUM_MASK;

   return(status);
}

/*******************************************************************************

 Function:
   zl5011xCpuDmaPTHWrite

 Description:
   This function will write the PTH from the parameters supplied

 Inputs:
   pathType          Desired destination
                     Any of: ZL5011X_FLOW_CPU_WAN,
                             ZL5011X_FLOW_CPU_PKT,
   packetLength      Packet length in bytes
   context           Multipurpose ID
   blockId           Source block number
   intDone           Generate an interrupt when the packet is sent
   lastPacket        Stop generating Dreq requests after sending the current
                     packet
   transaction64Bit  Set to ZL5011X_FALSE for DMA transfers performed 32 bit wide
                     set to ZL5011X_FALSE for 64 bit transfers

 Outputs:
   pth               Pointer to an array of words to store the PTH constructed

 Returns:
   None

 Remarks:

*******************************************************************************/
extern void zl5011xCpuDmaPTHWrite(Uint32T pathType,
                                      Uint16T packetLength,
                                      Uint16T context,
                                      Uint16T blockId,
                                      Uint16T intDone,
                                      Uint16T lastPacket,
                                      Uint16T sequenceNumber,
                                      Uint16T tstampChksum,
                                      zl5011xBooleanE transaction64Bit,
                                      Uint32T *pth)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T n,regValue[ZL5011X_PTH_WORDSIZE];

   for(n=0;n<ZL5011X_PTH_WORDSIZE;n++)
   {
     pth[n] = 0;
   }

   ZL5011X_TRACE(ZL5011X_CPU_FN_ID,"zl5011xCpuDmaPTHWrite: ", 0, 0, 0, 0, 0, 0);

   if (status == ZL5011X_OK)
   {
     /* Write PTH word 0                                                      */
     regValue[0] =
           ((pathType & ZL5011X_PATHTYPE_MASK) << ZL5011X_PATHTYPE_SHIFT) |
           ((packetLength & ZL5011X_PKT_LEN_MASK) << ZL5011X_PKT_LEN_SHIFT) |
           ((context & ZL5011X_MP_ID_MASK) << ZL5011X_MP_ID_SHIFT);
     regValue[0] =  ZL5011X_DMA_HEADER_BYTE_ORDER(regValue[0]);

     /* Write PTH word 1                                                      */
     regValue[1] =
           ((blockId & ZL5011X_BLOCK_MASK) << ZL5011X_BLOCK_SHIFT)
           | ((ZL5011X_H_OFF & ZL5011X_H_OFF_MASK) << ZL5011X_H_OFF_SHIFT);
     regValue[1] =  ZL5011X_DMA_HEADER_BYTE_ORDER(regValue[1]);

     /* Write PTH word 2                                                      */
     regValue[2] =
           ((intDone & ZL5011X_INT_DONE_MASK) << ZL5011X_INT_DONE_SHIFT)
           | ((lastPacket & ZL5011X_LAST_PKT_MASK) << ZL5011X_LAST_PKT_SHIFT);
     regValue[2] =  ZL5011X_DMA_HEADER_BYTE_ORDER(regValue[2]);

     /* Write PTH word 3                                                      */
     regValue[3] =
           ((sequenceNumber & ZL5011X_SEQ_NO_MASK) << ZL5011X_SEQ_NO_SHIFT) |
           ((tstampChksum & ZL5011X_TSTAMPCHKSUM_MASK)
                                              << ZL5011X_TSTAMPCHKSUM_SHIFT);
     regValue[3] =  ZL5011X_DMA_HEADER_BYTE_ORDER(regValue[3]);

     if (transaction64Bit == ZL5011X_TRUE)
     {
       pth[0] = regValue[1];
       pth[1] = regValue[0];
       pth[2] = regValue[3];
       pth[3] = regValue[2];
     }
     else
     {
       pth[0] = regValue[0];
       pth[1] = regValue[1];
       pth[2] = regValue[2];
       pth[3] = regValue[3];
     }
   }
}

/*******************************************************************************

 Function:
   zl5011xCpuDmaPRHRead

 Description:
   This function will read one or more words from the PRH and load them into
   the parameters specified on the call line. Thus the PRH can be read in one
   or several calls to this function.

 Inputs:
   prhWordToExtract  PRH Word to extract (0 to 3)
   prh               Pointer to the word(s) containing the PRH to extract

 Outputs:
   rxResource        The resource number specified at packet transmit
   packetLength      Packet length in bytes, excluding PRH and padding
   queueNumber       Receive queue number.
                     Any of: ZL5011X_QUEUE_0,
                             ZL5011X_QUEUE_1,
                             ZL5011X_QUEUE_2,
                             ZL5011X_QUEUE_3
   nextPacketOffset  Offset in words to the start of the next packet
   sequenceNumber    Sequence number for the packet. (This is not the same as
                     the sequence number that may have been supplied at packet
                     transmit).
   parity            PRH parity

 Returns:
   None

 Remarks:
   Parameters not read from the specified PRH word will remain unchanged.
   This function will assume the first word of the array always has to be read.
   i.e if prhWordToExtract is set to 2, it will read prh[0] to extract word 2.

*******************************************************************************/
extern void zl5011xCpuDmaPRHRead(Uint32T prhWordToExtract,
                                     Uint32T *prh,
                                     Uint16T *rxResource,
                                     Uint16T *packetLength,
                                     zl5011xQueueE *queueNumber,
                                     Uint16T *nextPacketOffset,
                                     Uint16T *sequenceNumber,
                                     Uint16T *parity)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T regValue = ZL5011X_DMA_HEADER_BYTE_ORDER(*prh);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女尤物国产一区| 成年人国产精品| 国产成人av电影免费在线观看| 成人开心网精品视频| 欧美一级在线观看| 国产精品丝袜久久久久久app| 亚洲一区电影777| www.激情成人| 日韩免费电影一区| 午夜精品久久久久久久久久| 成人视屏免费看| 日韩一区二区三区在线| 亚洲高清视频的网址| 国产高清不卡一区二区| 91精品国产91久久久久久一区二区| 欧美国产精品一区二区三区| 三级在线观看一区二区| 欧美吻胸吃奶大尺度电影| 国产午夜三级一区二区三| 国产日韩欧美在线一区| 免费在线观看视频一区| 色哟哟日韩精品| 亚洲人吸女人奶水| 国产不卡一区视频| 日韩欧美一二三区| 日本在线播放一区二区三区| 92精品国产成人观看免费| 中文字幕制服丝袜一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 色偷偷88欧美精品久久久| 国产精品少妇自拍| 日本成人在线网站| 成人av在线一区二区| 久久综合久久综合九色| 美女视频一区在线观看| 欧美一级艳片视频免费观看| 日韩中文字幕区一区有砖一区| 欧美亚一区二区| 亚洲一区在线播放| 在线精品视频免费观看| 亚洲成人av在线电影| 欧美亚洲综合另类| 日本视频一区二区三区| 91精品综合久久久久久| 调教+趴+乳夹+国产+精品| 日韩欧美一区二区久久婷婷| 五月婷婷激情综合| 日韩精品一区二区三区在线观看 | 色婷婷精品久久二区二区蜜臂av| 欧美国产成人在线| 成人免费精品视频| 亚洲综合丝袜美腿| 欧美性做爰猛烈叫床潮| 久久久www成人免费无遮挡大片| 国产乱码字幕精品高清av| 国产欧美日韩三区| 91亚洲永久精品| 一片黄亚洲嫩模| 青青草成人在线观看| 欧美极品aⅴ影院| www.成人网.com| 亚洲一二三四区不卡| 欧美一区二区不卡视频| 日韩高清不卡一区二区| 欧美激情在线一区二区| 99久久精品99国产精品| 日韩激情中文字幕| 久久久久久日产精品| 国产成人精品影视| 午夜在线电影亚洲一区| 日韩欧美一级特黄在线播放| 成人小视频在线| 成人精品免费网站| 一本大道久久精品懂色aⅴ| 亚洲成人精品影院| 日韩欧美专区在线| 国产乱理伦片在线观看夜一区| 国产精品欧美极品| 欧美色电影在线| 丁香另类激情小说| 亚洲成av人片在www色猫咪| 久久久国产午夜精品| 91在线国内视频| 免费观看一级特黄欧美大片| 一区二区三区四区视频精品免费| 91精品国产综合久久久久久漫画 | 全国精品久久少妇| 国产精品狼人久久影院观看方式| 欧洲国产伦久久久久久久| 成人在线视频一区二区| 丝袜脚交一区二区| 中文字幕综合网| 精品国产一区二区亚洲人成毛片| 97久久超碰国产精品电影| 国内不卡的二区三区中文字幕 | 精品国产乱码91久久久久久网站| 色综合中文字幕国产| 国内精品国产成人国产三级粉色| 一区二区三区精品在线| 国产精品久久久久精k8| 久久影院电视剧免费观看| 欧美综合色免费| 一本大道综合伊人精品热热| 国产一区二区三区日韩 | 亚洲日本va午夜在线影院| 精品蜜桃在线看| 精品日韩99亚洲| 欧美夫妻性生活| 91精品在线观看入口| 91高清视频在线| 成+人+亚洲+综合天堂| 国产91露脸合集magnet| 久久激情五月激情| 激情综合色丁香一区二区| 亚洲成人免费影院| 欧美96一区二区免费视频| 午夜精品福利一区二区蜜股av | 狠狠网亚洲精品| 蜜桃视频一区二区三区在线观看| 日韩国产欧美在线播放| 亚洲综合精品自拍| 亚洲一区电影777| 亚洲综合一区二区| 亚洲裸体xxx| 五月天欧美精品| 全国精品久久少妇| 久久99久久久欧美国产| 看电影不卡的网站| 激情文学综合插| 国产精品18久久久久| 国产在线播精品第三| 国产一区中文字幕| 国产福利精品导航| 91亚洲资源网| 在线看国产一区| 91亚洲男人天堂| 欧美福利视频导航| 日韩欧美久久久| 国产精品色哟哟| 亚洲女子a中天字幕| 亚洲亚洲人成综合网络| 亚洲成人精品一区| 婷婷丁香久久五月婷婷| 国产福利91精品一区| 成人av网站在线观看| 欧美精品国产精品| 日韩欧美123| 综合网在线视频| 亚洲18影院在线观看| 亚洲美女区一区| 久久国产视频网| 国产91丝袜在线18| 在线播放一区二区三区| 欧美大片顶级少妇| 中文字幕字幕中文在线中不卡视频| 一区二区成人在线观看| 天天av天天翘天天综合网| 国产麻豆成人精品| 91在线国产观看| 久久在线免费观看| 亚洲精品国产精品乱码不99| 久久福利视频一区二区| 成人自拍视频在线| 欧美三日本三级三级在线播放| 精品国产91九色蝌蚪| 亚洲欧洲中文日韩久久av乱码| 一区二区三区在线免费| 开心九九激情九九欧美日韩精美视频电影| 成人免费看片app下载| 欧美一区二区三区公司| 国产蜜臀av在线一区二区三区| 亚洲无人区一区| 成人精品鲁一区一区二区| 欧美日韩高清一区| 亚洲视频免费在线观看| 久久99精品国产麻豆婷婷| 欧美精品久久一区二区三区| 欧美国产禁国产网站cc| 激情图片小说一区| 欧美三级日韩三级| 亚洲狼人国产精品| 国产成人亚洲综合a∨婷婷图片| 欧美欧美欧美欧美首页| 亚洲伦理在线免费看| 蜜臀久久久99精品久久久久久| 欧美午夜一区二区| 国产精品不卡视频| 99在线精品免费| 久久久久亚洲综合| 国产精品一二三四区| 精品久久久久久久一区二区蜜臀| 一区二区高清免费观看影视大全 | 欧美日韩大陆在线| 亚洲欧美日韩系列| www.日韩精品| 国产精品女同互慰在线看| 国产成人一区在线| 久久美女艺术照精彩视频福利播放 | 亚洲欧美日韩国产综合| 从欧美一区二区三区|