亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
99久久夜色精品国产网站| 欧美三级视频在线观看| 一本色道久久加勒比精品| 欧美日本一道本| 国产精品剧情在线亚洲| 日韩av高清在线观看| 99视频一区二区| 国产日本欧洲亚洲| 美女视频第一区二区三区免费观看网站| 波多野结衣中文字幕一区二区三区| 777色狠狠一区二区三区| 亚洲特黄一级片| 国产999精品久久| 欧美精品一区二| 青青草原综合久久大伊人精品| 色哟哟一区二区在线观看| 久久精子c满五个校花| 蜜臀a∨国产成人精品| 欧美日韩综合在线免费观看| 国产精品天天看| 黑人精品欧美一区二区蜜桃| 欧美丰满一区二区免费视频| 亚洲一区二区三区四区五区中文| 成人免费视频网站在线观看| 久久久精品综合| 九一九一国产精品| 日韩一区二区三区观看| 三级欧美韩日大片在线看| 欧美日韩日日骚| 一区二区三区精品久久久| 91麻豆swag| 亚洲欧美日韩精品久久久久| 9i看片成人免费高清| 亚洲欧洲日韩在线| 亚洲国产日韩综合久久精品| 国产一区二区三区| 9191久久久久久久久久久| 一区二区不卡在线播放 | 日韩欧美区一区二| 五月婷婷激情综合| 欧美日韩一区二区三区在线 | 欧美一级黄色录像| 丝袜国产日韩另类美女| 正在播放亚洲一区| 老司机免费视频一区二区| 日韩欧美中文一区| 日韩成人一级片| 69堂精品视频| 久久精品国产精品青草| 欧美激情一区二区三区不卡 | 国产一区 二区| 国产精品午夜久久| 在线看日本不卡| 午夜精品久久久久久久| 精品免费国产一区二区三区四区| 国产精品亚洲成人| 亚洲美女偷拍久久| 在线播放91灌醉迷j高跟美女| 激情综合色综合久久| 欧美—级在线免费片| 欧美亚洲动漫制服丝袜| 久久精品国产一区二区三| 国产精品女同一区二区三区| 色婷婷久久久久swag精品| 免费在线观看日韩欧美| 国产网站一区二区| 在线观看日韩av先锋影音电影院| 美女诱惑一区二区| 亚洲欧洲日产国码二区| 在线成人免费观看| www.日本不卡| 人妖欧美一区二区| 亚洲人成在线观看一区二区| 欧美一区二区三级| 91一区一区三区| 久久99精品久久只有精品| 亚洲欧美日韩成人高清在线一区| 日韩一级免费观看| 91在线观看污| 国产一区二区三区蝌蚪| 亚洲一区二区三区小说| 国产精品日日摸夜夜摸av| 91精品国产乱| 色猫猫国产区一区二在线视频| 九九国产精品视频| 亚洲一级不卡视频| 国产精品看片你懂得| 精品国产免费视频| 欧美日韩三级视频| 91久久香蕉国产日韩欧美9色| 国产激情偷乱视频一区二区三区| 婷婷开心激情综合| 亚洲精品免费看| 国产精品久久久久久久久动漫 | 国产精品第一页第二页第三页| 5566中文字幕一区二区电影| 色综合久久久久久久久久久| 国产黄色精品网站| 久久成人免费网| 视频一区二区三区入口| 亚洲影院理伦片| 亚洲品质自拍视频| 中文字幕亚洲精品在线观看 | 石原莉奈一区二区三区在线观看| ...xxx性欧美| 国产精品免费久久| 国产日韩欧美不卡在线| 久久久精品蜜桃| 久久久久国产成人精品亚洲午夜| 精品国精品自拍自在线| 欧美一区二区三区视频免费| 欧美精品一级二级三级| 欧美三级午夜理伦三级中视频| 欧美午夜一区二区三区| 欧美午夜精品免费| 欧美在线视频你懂得| 色婷婷综合久久久中文一区二区| 成人99免费视频| 99视频在线精品| 91久久线看在观草草青青| 91久久免费观看| 欧美日韩aaaaaa| 欧美mv日韩mv国产| 国产亚洲综合在线| 国产精品青草久久| 亚洲精品久久嫩草网站秘色| 亚洲主播在线观看| 日韩精品三区四区| 精品一区二区三区香蕉蜜桃| 国产精一品亚洲二区在线视频| 国产91对白在线观看九色| 99久久婷婷国产| 欧美视频中文一区二区三区在线观看| 欧美日韩精品三区| 精品国产91洋老外米糕| 国产欧美日韩精品在线| 亚洲日本在线看| 日韩av二区在线播放| 国产乱人伦偷精品视频免下载 | 亚洲欧洲99久久| 亚洲香肠在线观看| 麻豆91精品91久久久的内涵| 国产一区二区美女| 91在线精品一区二区三区| 在线不卡中文字幕播放| 久久久久99精品一区| 中文字幕一区二区三区在线不卡| 亚洲一区二区三区四区五区黄| 蓝色福利精品导航| 99久久久精品| 日韩美女一区二区三区四区| 国产精品人妖ts系列视频| 午夜精品aaa| 国产99久久久久久免费看农村| 91久久一区二区| 久久久久久久久久久久久久久99 | 国产精品久久久久久福利一牛影视| 亚洲综合色视频| 国产91精品一区二区麻豆网站| 欧美日韩国产三级| 国产精品久久毛片av大全日韩| 日韩影视精彩在线| 99r精品视频| 精品国产凹凸成av人网站| 亚洲黄色免费电影| 国产精品69毛片高清亚洲| 欧美色网站导航| 中文在线一区二区| 久久国产人妖系列| 欧美日韩色一区| 亚洲男女一区二区三区| 韩国理伦片一区二区三区在线播放| 欧美影院精品一区| 欧美国产一区二区在线观看| 日本不卡高清视频| 欧洲一区在线电影| 中文字幕中文字幕一区| 狠狠v欧美v日韩v亚洲ⅴ| 7777精品久久久大香线蕉| 一区二区三区日韩精品视频| 福利一区福利二区| www亚洲一区| 蜜桃一区二区三区在线观看| 欧美日韩在线一区二区| 亚洲猫色日本管| 成人免费视频视频| 久久久久综合网| 精品一区二区三区免费观看| 欧美一卡2卡三卡4卡5免费| 亚洲一区电影777| 色综合久久中文综合久久97| 自拍偷拍国产亚洲| 91视频在线观看| 一区二区中文视频| 99这里只有久久精品视频| 国产精品热久久久久夜色精品三区| 国产精品996| 国产精品激情偷乱一区二区∴| 国产成a人亚洲| 国产精品护士白丝一区av|