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

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

?? zl5011xtm.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*******************************************************************************
*
*  File name:              zl5011xTm.c
*
*  Version:                24
*
*  Author:                 MRC
*
*  Date created:           09/04/2002
*
*  Copyright 2002, 2003, 2004, 2005, Zarlink Semiconductor Limited.
*  All rights reserved.
*
*  Module Description:
*
*  This file contains all the functions that will initialise and control
*  the TM block.
*
*  Each block connected to the TM is referred to as a port. A source port,
*  is one which generates task manager messages and a destination port is one
*  which takes task manager messages. A message from a source port is routed to
*  a destination port. This routing is dependent on the flow type, which is part
*  of the message. This flow type is used as the address into a lookup table, so
*  as to determine the destination port.
*  All ports are buffered in the TM.
*
*  Revision History:
*
*  Rev:  Date:       Author:  Comments:
*  1     09/04/2002  MRC      Creation
*  2     11/04/2002  MRC      Lookup RAM didn't have base address.
*  3     11/04/2002  MRC      Stores the segment sizes in the device
*                             structure.
*  4     17/04/2002  MRC      Changed the CHECK_.. macros to ZL5011X_CHECK_..
*  5     18/04/2002  MRC      Added WAN loopback flow for test ONLY
*  6     10/06/2002  LCW      Added extra functions
*  7     28/06/2002  MRC      Added setup for flow from PKC to CPU
*  8     03/07/2002  MRC      Added setup for flow from PKC to PKQ for test ONLY
*  9     10/07/2002  MRC      Added setup for flow WAN_RTP_CPU
*  10    24/07/2002  MRC      Added TM trace buffer functions
*  11    23/09/2002  MRC      Added setup for flow CPU-RTP-PKQ for test ONLY
*  12    01/10/2002  DJA      File header updated
*                             ZL5011X_TRACE messages fixed up
*  13    08/10/2002  PJE      Added three intr functions
*  14    31/10/2002  MRC      Added variants + minor fixes
*  15    24/03/2003  MRC      Prevented segment programming for rev A devices
*  16    22/05/2003  MRC      Tidied up interrupt fns
*  17    27/05/2003  APL      Added PKT_PE_PKT flow
*  18    29/07/2003  APL      Disabled inappropriate flows for device variants
*                             with no TDM
*  19    16/06/2004  MRC      Added flow PKT_PE_CPU
*  20    14/07/2004  MRC      Added flow WAN_PE_WAN
*  21    23/07/2004  MRC      Fixed some compiler warnings
*  22    29/07/2004  MRC      Fixed some compiler warnings
*  23    19/10/2004  APL      Added flow CPU_CPU
*  24    21/01/2005  MRC      Added extra test flow
*
*******************************************************************************/

/*****************   INCLUDE FILES                *****************************/

#include "zl5011x.h"
#include "zl5011xTmMap.h"
#include "zl5011xTm.h"
#include "zl5011xUtilLib.h"

/*****************   EXPORTED GLOBAL VARIABLES    *****************************/

/*****************   STATIC GLOBAL VARIABLES      *****************************/

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

 Function:
    zl5011xTmInit

 Description:
    This function initialises the TM block and  data structure.
    Sets up the routing information for the various flow types.

 Inputs:
    zl5011xParams      Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xTmInit(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmInit:", 0, 0, 0, 0, 0, 0);

   /* disable the lookup RAMs, to allow the host access */
   status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_FALSE);

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_FALSE);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_FALSE);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_FALSE);
   }

   /* program the CPU flows (Host -> ?) */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_CPU_WAN, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_CPU_PKT, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_CPU_PE_PKT, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_TM_DEST_PORT_RTP);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_CPU_CPU, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_TM_DEST_PORT_CPU);
   }

   /* program the PLA flows (Wan Rx -> ?) */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_PKT, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_RTP);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PKT, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_CPU, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_CPU);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_CPU, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_RTP);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_WAN, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_WAN, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TM_DEST_PORT_RTP);
   }

   /* program the RTP flows (RTP -> ?) */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_PKT, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_CPU, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_CPU);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_WAN_PE_WAN, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_TS_WAN, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_CPU_PE_PKT, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PE_PKT, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PE_CPU, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TM_DEST_PORT_CPU);
   }

   /* program the PKC flows (PKC -> ?) */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PE_WAN, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_TS_WAN, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_RTP);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_WAN, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_TFQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PKT, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_PKQ);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_CPU, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_CPU);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PE_PKT, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_RTP);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmWriteLookUpRam(zl5011xParams,
            ZL5011X_FLOW_PKT_PE_CPU, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TM_DEST_PORT_RTP);
   }

   /* enable the lookup RAMs, since finished programming */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_CPU, ZL5011X_TRUE);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_PLA, ZL5011X_TRUE);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_RTP, ZL5011X_TRUE);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmEnableLookUpRam(zl5011xParams, ZL5011X_TM_SRC_PORT_PKC, ZL5011X_TRUE);
   }


   /* setup the trace buffer */
   if (status == ZL5011X_OK)
   {
      status = zl5011xTmConfigureTrace(zl5011xParams,
            ZL5011X_TM_TRACE_FULL, ZL5011X_TRUE);
   }

   return(status);
}

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

 Function:
    zl5011xTmEnableLookUpRam

 Description:
   The lookup RAM must be disabled before the host can access it.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   port           which TM port to enable
   enable         TRUE to enable the lookup RAM, FALSE to allow host access
 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xTmEnableLookUpRam(zl5011xParamsS *zl5011xParams,
      zl5011xTmSrcPortE port, zl5011xBooleanE enable)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T bits, bitMask;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmEnableLookUpRam: port %d, enable %d",
         port, enable, 0, 0, 0, 0);

   status = ZL5011X_CHECK_TM_SRC_PORT(port);

   if (status == ZL5011X_OK)
   {
      /* use the port ID to shift a bit into the position to select the
         required port, and then shift this to the position ofthe lookup
         RAM bits */
      bitMask = (ZL5011X_1BIT_MASK << port) << ZL5011X_TM_LOOKUP_RAM_ENABLE_BITS;

      /* enabling the look up RAM, puts it into operational mode. This means that
         the bit has to be cleared */
      if (enable == ZL5011X_TRUE)
      {
         bits = 0;
      }
      else
      {
         bits = bitMask;
      }

      status = zl5011xReadModWrite(zl5011xParams,
           ZL5011X_TM_CONTROL, bits, bitMask);
   }

   return(status);
}

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

 Function:
    zl5011xTmWriteLookUpRam

 Description:
   The lookup RAM must be disabled before the host can access it.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   flow           flow type - this is used as the address within the lookup
                  RAM when programming the flow.
   srcPort        used to determine the lookup RAM to be accessed
   destPort       the required destination for the flow type from this port.

 Outputs:
    None

 Returns:
   zlStatusE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久一卡二卡| 一区二区日韩av| 国产福利不卡视频| 国产欧美精品一区二区三区四区| 精品一区二区三区日韩| 精品盗摄一区二区三区| 国产一区二区不卡| 一区二区三区自拍| 欧美一区二区国产| 国产在线播放一区三区四| 国产日韩欧美高清| 成人免费观看男女羞羞视频| 有坂深雪av一区二区精品| 91麻豆精品国产91| 成人性生交大片免费看中文| 一区二区三区四区亚洲| 欧美精品aⅴ在线视频| 国v精品久久久网| 一区二区三区四区不卡在线 | 国产一区二区三区国产| 亚洲精品免费电影| 中文字幕电影一区| 日韩视频一区二区三区| 91在线高清观看| 国产美女在线精品| 精品动漫一区二区三区在线观看| 91免费小视频| 成人aaaa免费全部观看| 久久97超碰色| 美女网站视频久久| 亚洲女与黑人做爰| 亚洲精品国久久99热| 日韩亚洲欧美中文三级| 欧美日韩在线精品一区二区三区激情| 久久黄色级2电影| 狂野欧美性猛交blacked| 日日摸夜夜添夜夜添精品视频| 亚洲品质自拍视频网站| 日韩美女视频一区二区| 国产精品动漫网站| 亚洲乱码国产乱码精品精可以看| 国产精品高清亚洲| 亚洲欧洲av在线| 亚洲人成人一区二区在线观看 | 91激情在线视频| 久久99精品网久久| 国产精品456| 成人av片在线观看| 欧美亚洲高清一区二区三区不卡| 91麻豆成人久久精品二区三区| 欧洲色大大久久| 欧美在线色视频| 久久精品夜夜夜夜久久| 亚洲国产精品二十页| 亚洲午夜久久久久久久久电影院| 亚洲主播在线播放| 粉嫩在线一区二区三区视频| 91网站最新网址| 精品999在线播放| 久久久久久黄色| 日本午夜一本久久久综合| 国产乱妇无码大片在线观看| 成人在线一区二区三区| 欧美在线不卡视频| 中文字幕中文乱码欧美一区二区| 亚洲国产综合色| 色吊一区二区三区| 国产精品久久久久久久久免费桃花 | thepron国产精品| 欧美色大人视频| 亚洲免费三区一区二区| 国产精品66部| 国产欧美日韩视频在线观看| 麻豆高清免费国产一区| 欧美人与性动xxxx| 亚洲综合色网站| 欧美日本在线视频| 日韩电影在线看| 欧美成人福利视频| 老司机精品视频一区二区三区| 欧美日韩在线免费视频| 午夜伦欧美伦电影理论片| 欧美色区777第一页| 亚洲电影视频在线| 一本一本大道香蕉久在线精品| 国产视频一区在线播放| 国产一区二三区好的| 国产日产欧美一区二区视频| 国产aⅴ综合色| 亚洲精品v日韩精品| 色网站国产精品| 性欧美大战久久久久久久久| 91精品国产aⅴ一区二区| 美女精品自拍一二三四| 国产精品全国免费观看高清| 免费成人深夜小野草| 中文字幕欧美国产| 欧美三级一区二区| 国产成人av资源| 日韩高清不卡一区二区| 久热成人在线视频| 亚洲一区二区三区精品在线| 国产成人99久久亚洲综合精品| 4hu四虎永久在线影院成人| 18成人在线观看| 日韩av在线发布| 国产精品久久久久aaaa樱花| 国产成人亚洲综合色影视| 久久精品国产网站| 中文字幕精品在线不卡| 欧美性videosxxxxx| 成人av电影免费观看| 日韩精品成人一区二区三区| 亚洲精品高清视频在线观看| 欧美一级高清大全免费观看| 色狠狠色噜噜噜综合网| 成人动漫一区二区三区| 国产成人自拍网| 美女视频一区二区| 亚洲欧美日韩电影| 欧美激情综合五月色丁香| 欧美精品乱人伦久久久久久| 欧美色涩在线第一页| 色婷婷综合久久久中文一区二区| 成人av先锋影音| 成人毛片视频在线观看| 成人激情黄色小说| a4yy欧美一区二区三区| 91视频免费观看| 制服丝袜av成人在线看| 久久久另类综合| 亚洲欧洲日韩女同| 一片黄亚洲嫩模| 日韩激情中文字幕| 狠狠久久亚洲欧美| 在线一区二区三区四区五区| 欧美日韩视频一区二区| 久久久久久久一区| 午夜精品视频一区| 国产精品一区不卡| 91视频.com| 日韩一级高清毛片| 精品理论电影在线观看| 亚洲三级久久久| 琪琪久久久久日韩精品| 亚洲一卡二卡三卡四卡五卡| 日韩av一二三| 欧美日韩一本到| 日日噜噜夜夜狠狠视频欧美人| 亚洲欧美日韩国产综合在线 | 亚洲色图另类专区| 三级影片在线观看欧美日韩一区二区| 国产91丝袜在线观看| 欧美久久久一区| 亚洲欧美日本在线| 男女男精品网站| 91丨porny丨首页| 亚洲精品免费电影| 国产不卡在线一区| 中文字幕av在线一区二区三区| 日本亚洲视频在线| 92精品国产成人观看免费 | 久久综合久久综合亚洲| 亚洲一区二区3| 欧美日韩的一区二区| 一区二区三区在线观看欧美| 成人美女视频在线观看| 国产精品日韩精品欧美在线| 国产精品123区| 综合色天天鬼久久鬼色| 97精品久久久久中文字幕 | 色婷婷激情综合| 亚洲第一成人在线| 精品国产成人系列| av在线不卡电影| 亚洲一卡二卡三卡四卡五卡| 91精品国产综合久久精品图片 | 国产在线精品视频| 亚洲视频中文字幕| 日韩精品一区二区在线观看| 国产精品一区二区男女羞羞无遮挡| 国产精品色呦呦| 欧美亚洲禁片免费| 成人一级片网址| 蜜桃视频在线一区| 亚洲欧美在线视频| 欧美成人国产一区二区| 色综合色综合色综合色综合色综合 | 成人污污视频在线观看| 国产精品乡下勾搭老头1| 国产亚洲精品免费| 粉嫩高潮美女一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩午夜精品视频| 99久久免费精品高清特色大片| 亚洲日本中文字幕区| 国产亚洲精品aa午夜观看| 不卡的看片网站| 亚洲成av人综合在线观看| 欧美国产丝袜视频|