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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zl5011xinit.c

?? Zalink50114----TDMoIP芯片驅(qū)動源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
         gotDevice = ZL5011X_TRUE;
      }
   }

   /* main function code starts */

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_INIT_FN_ID, "zl5011xInit: %d", par->deviceType, 0, 0, 0, 0, 0);

      /* Set up the appropriate device limits for this device type */
      zl5011xParams->deviceType = par->deviceType;
      memcpy(&zl5011xParams->devLimits, &Zl5011xLimits[par->deviceType], sizeof(zl5011xParams->devLimits));

      /* initialising the admin block is the first thing to do to the
         device */
      status = zl5011xAdmInit(zl5011xParams);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xInitBlocks(zl5011xParams, ZL5011X_ADM_GM_BIT);
   }

   if (status == ZL5011X_OK)
   {
      zl5011xParams->systemClockFreq = par->systemClockFreq;
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xMmInit(zl5011xParams);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xGmInit(zl5011xParams);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xTmInit(zl5011xParams);
   }

   if (status == ZL5011X_OK)
   {
      zl5011xParams->initialised = ZL5011X_TRUE;
      zl5011xParams->memoryInitialised = ZL5011X_FALSE;
      zl5011xParams->wanInitialised = ZL5011X_FALSE;
      zl5011xParams->lanInitialised = ZL5011X_FALSE;
      zl5011xParams->running = ZL5011X_FALSE;

      for (loop = 0; loop < ZL5011X_MAX_NUM_LAN_PORTS; loop++)
      {
         zl5011xParams->lanPortInitialised[loop] = ZL5011X_FALSE;
      }
   }

   if (gotDevice == ZL5011X_TRUE)
   {
      if (status == ZL5011X_OK)
      {
         status = zl5011xReleaseDevice(zl5011xParams);
      }
      else
      {
         /* already have an error code, so don't overwrite it */
         (void)zl5011xReleaseDevice(zl5011xParams);
      }
   }

   return status;
}

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

 Function:
    zl5011xConfigureMemoryStructInit

 Description:
   Initialises structure used by zl5011xConfigureMemory function.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   par            Pointer to the structure for configuration items.
                  See main function

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xConfigureMemoryStructInit(zl5011xParamsS *zl5011xParams, zl5011xConfigureMemoryS *par)
{
   zlStatusE status = ZL5011X_OK;

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_INIT_FN_ID, "zl5011xConfigureMemoryStructInit:", 0, 0, 0, 0, 0, 0);

      par->extMemChipSize = ZL5011X_EXT_MEM_SIZE_0MB;
      par->extMemParity = ZL5011X_MM_PARITY_NONE;

      /* set an invalid number of granules - this will allow the API to make the
         setting automatically */
      par->numberGranules = (Uint32T)ZL5011X_INVALID;

      /* default to 10% of the internal memory for TDM queues in kBytes */
      par->maxWanQueueSizeInkBytes = (ZL5011X_INT_MEMORY_SIZE_IN_BYTES / 10) / 1024;

      par->osExclusionEnable = ZL5011X_TRUE;
   }

   return status;
}

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

 Function:
    zl5011xConfigureMemory

 Description:
   This function configures the external memory, initialises the granule manager
   and then runs the granule manager. The granule manager is one of the first
   blocks to be configured in the device, since most of the blocks require
   granules for operation.
   There are several functions used to configure the device from reset. They
   are shown below, and must be called in this sequence, in order to enable the
   device.
      zl5011xInit
      zl5011xConfigureMemory
      zl5011xWanInit
      zl5011xLanInit
      zl5011xRun

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   par            Pointer to the structure for configuration items. See below:

 Structure inputs:
   extMemChipSize    size of the memory attached to the device in bytes.
                     (the memory width is 64 bits)
   extMemParity      parity mode - none, odd or even
   numberGranules    how many granules to initialise
   maxWanQueueSizeInkBytes    how much memory to reserve for the Wan Tx queues
   osExclusionEnable ZL5011X_TRUE to enable OS exclusion

 Structure outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

*******************************************************************************/
zlStatusE zl5011xConfigureMemory(zl5011xParamsS *zl5011xParams, zl5011xConfigureMemoryS *par)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T heapStartAddress = 0;
   Uint32T heapEndAddress = 0;
   Uint32T dataBase = 0, descBase = 0, numGranules;
   zl5011xBooleanE gotDevice = ZL5011X_FALSE;

   /* do some parameter checking */
   status = ZL5011X_CHECK_POINTERS(zl5011xParams, par);

   if ((status == ZL5011X_OK) && (par->osExclusionEnable == ZL5011X_TRUE))
   {
      /* get access to the device */
      status = zl5011xGetDevice(zl5011xParams, ZL5011X_GET_DEVICE_TIMEOUT_MODE);

      if (status == ZL5011X_OK)
      {
         gotDevice = ZL5011X_TRUE;
      }
   }

   /* main function code starts */

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_INIT_FN_ID,
            "zl5011xConfigureMemory:  Ext size %d, num granules %d",
            par->extMemChipSize, par->numberGranules, 0, 0, 0, 0);

      /* the basic initialisation must be performed before the memory is configured */
      if (zl5011xParams->initialised == ZL5011X_FALSE)
      {
         status = ZL5011X_NOT_INIT;
      }
   }

   if (status == ZL5011X_OK)
   {
      if (zl5011xParams->memoryInitialised == ZL5011X_TRUE)
      {
         status = ZL5011X_MULTIPLE_INIT_ATTEMPT;
      }
   }

   if (status == ZL5011X_OK)
   {
      /* Check the memory size and parity parameters */
      switch (zl5011xParams->deviceType)
      {
         case ZL_DEVICE_ZL50110:
         case ZL_DEVICE_ZL50111:
         case ZL_DEVICE_ZL50114:
         case ZL_DEVICE_ZL50130:
         case ZL_DEVICE_ZL80041:
            /* These devices support external memory */
            break;

         case ZL_DEVICE_ZL50115:
         case ZL_DEVICE_ZL50116:
         case ZL_DEVICE_ZL50117:
         case ZL_DEVICE_ZL50118:
         case ZL_DEVICE_ZL50119:
         case ZL_DEVICE_ZL50120:
         case ZL_DEVICE_ZL30300:
         case ZL_DEVICE_ZL30301:
         case ZL_DEVICE_ZL30302:
            /* These devices do not support external memory therefore the size must be specified as zero
               and the parity must be specified as none */
            if ((par->extMemChipSize != ZL5011X_EXT_MEM_SIZE_0MB) ||
                (par->extMemParity != ZL5011X_MM_PARITY_NONE))
            {
               status = ZL5011X_PARAMETER_INVALID;
            }
            break;

         default:
            /* Device unknown */
            status = ZL5011X_UNKNOWN_DEVICE_ID;
            break;
      }
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xMmConfigure(zl5011xParams, par->extMemChipSize);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xMmSetParityMode(zl5011xParams, par->extMemParity);
   }

   if (par->numberGranules != (Uint32T)ZL5011X_INVALID)
   {
      status = zl5011xMemoryCalcAddrGranules(zl5011xParams, par,
            &descBase, &dataBase, &heapStartAddress, &heapEndAddress);

      numGranules = par->numberGranules;
   }
   else
   {
      status = zl5011xMemoryCalcAddrGranulesMax(zl5011xParams, par,
            &descBase, &dataBase, &heapStartAddress, &heapEndAddress, &numGranules);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xMmSetGranuleDataBase(zl5011xParams, dataBase);
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xMmSetGranuleDescriptorBase(zl5011xParams, descBase);
   }

   /* the granule manager has already been initialised. The memory manager is now
      programmed, so setup the granule chains */
   if (status == ZL5011X_OK)
   {
      status = zl5011xGmConfigure(zl5011xParams, numGranules);
   }

   /* enable the granule manager, now that the chain has been setup */
   if (status == ZL5011X_OK)
   {
      status = zl5011xAdmEnableBlocks(zl5011xParams, ZL5011X_ADM_GM_BIT);
   }

   if (status == ZL5011X_OK)
    {
      status = zl5011xMmSetHeap(zl5011xParams, heapStartAddress, heapEndAddress);
    }

   if (status == ZL5011X_OK)
   {
      zl5011xParams->memoryInitialised = ZL5011X_TRUE;
   }

   if (gotDevice == ZL5011X_TRUE)
   {
      if (status == ZL5011X_OK)
      {
         status = zl5011xReleaseDevice(zl5011xParams);
      }
      else
      {
         /* already have an error code, so don't overwrite it */
         (void)zl5011xReleaseDevice(zl5011xParams);
      }
   }

   return status;
}

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

 Function:
    zl5011xWanInitStructInit

 Description:
   Initialises structure used by zl5011xWanInit function.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   par            Pointer to the structure for configuration items.
                  See main function

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xWanInitStructInit(zl5011xParamsS *zl5011xParams, zl5011xWanInitS *par)
{
   zlStatusE status = ZL5011X_OK;

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_INIT_FN_ID, "zl5011xWanInitStructInit: ", 0, 0, 0, 0, 0, 0);

      par->ifType = ZL5011X_WAN_FRAMED_2M;
      par->liuFreq = ZL5011X_WAN_LIU_FREQ_2_048M;
      par->liuFreqHz = (Uint32T)ZL5011X_INVALID;

      /* set a default for the maximum number of granules for the Tx queues,
         will be need to be increased if external memory is used */
      par->txQueueMaxNumberOfGranules = 4000;
      par->osExclusionEnable = ZL5011X_TRUE;
   }

   return status;
}

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

 Function:
    zl5011xWanInit

 Description:
   This function initialises the WAN interface blocks, and then configures
   the blocks using the interface type.
   There are several functions used to configure the device from reset. They
   are shown below, and must be called in this sequence, in order to enable the
   device.
      zl5011xInit
      zl5011xConfigureMemory
      zl5011xWanInit
      zl5011xLanInit
      zl5011xRun

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   par            Pointer to the structure for configuration items. See below:

 Structure inputs:
   ifType      Wan interface type
   liuFreq     the frequency of the LIU
   liuFreqHz   the frequency of the stream clocks if the variable liuFreq is set
               to ZL5011X_WAN_LIU_FREQ_OTHER
   txQueueMaxNumberOfGranules sets the maximum number of granules that can be
               active within the TDM queues
   osExclusionEnable ZL5011X_TRUE to enable OS exclusion

 Structure outputs:
   None

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xWanInit(zl5011xParamsS *zl5011xParams, zl5011xWanInitS *par)
{
   Uint32T loop;
   zlStatusE status = ZL5011X_OK;
   zl5011xBooleanE gotDevice = ZL5011X_FALSE;

   /* do some parameter checking */
   status = ZL5011X_CHECK_POINTERS(zl5011xParams, par);

   if ((status == ZL5011X_OK) && (par->osExclusionEnable == ZL5011X_TRUE))
   {
      /* get access to the device */
      status = zl5011xGetDevice(zl5011xParams, ZL5011X_GET_DEVICE_TIMEOUT_MODE);

      if (status == ZL5011X_OK)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
proumb性欧美在线观看| 亚洲成人在线网站| 91年精品国产| 水蜜桃久久夜色精品一区的特点| 日韩欧美在线综合网| 日韩中文字幕av电影| 久久九九全国免费| 一本大道久久a久久精二百| 视频一区欧美日韩| 国产精品午夜久久| 精品视频一区二区不卡| 国内精品嫩模私拍在线| 国产精品美女久久久久久2018| 色综合色狠狠综合色| 性久久久久久久久久久久| 久久久美女毛片| 日本乱人伦aⅴ精品| 久久97超碰国产精品超碰| 国产精品三级视频| 91久久精品一区二区二区| 麻豆精品一二三| 亚洲激情男女视频| 欧美精品一区二区在线播放| 91福利小视频| 国产精品123区| 婷婷成人激情在线网| 国产精品无圣光一区二区| 欧美精品丝袜久久久中文字幕| 国产成人亚洲精品狼色在线| 午夜影院在线观看欧美| 国产精品久久久久三级| 欧美一区欧美二区| 日本精品一区二区三区四区的功能| 久久精品国产秦先生| 国产精品乱码一区二三区小蝌蚪| 欧美亚洲综合一区| 国产一区二区免费在线| 午夜久久久久久电影| 成人欧美一区二区三区在线播放| 日韩午夜av一区| 欧美日韩亚洲综合在线| 91免费看片在线观看| 国产高清一区日本| 激情综合色丁香一区二区| 偷窥少妇高潮呻吟av久久免费 | 日韩精品一区二区三区在线观看 | 日本一区二区视频在线观看| 在线观看一区日韩| av不卡在线播放| 福利91精品一区二区三区| 成人av手机在线观看| 欧洲av在线精品| 丁香天五香天堂综合| 精品一区二区综合| 日产国产欧美视频一区精品| 亚洲国产精品一区二区尤物区| 国产精品国产三级国产普通话蜜臀 | 一区二区在线观看av| 欧美国产日韩亚洲一区| 久久九九久精品国产免费直播| 日韩欧美国产综合在线一区二区三区| 欧美色男人天堂| 色综合久久久久久久久久久| 91网上在线视频| 色噜噜狠狠色综合中国| 在线免费观看日本欧美| 色综合视频在线观看| 色综合久久综合网欧美综合网| 99久久免费精品| av一区二区不卡| 亚洲国产精品成人久久综合一区| 在线91免费看| 日韩亚洲电影在线| 欧美精品一区二区三区四区| 精品剧情在线观看| 欧美精品一区二区三区视频| 在线不卡免费av| 日韩欧美一级二级三级久久久| 日韩一区二区精品| 久久午夜色播影院免费高清| 69堂成人精品免费视频| 欧美一级视频精品观看| 欧美日韩国产一区| 日韩午夜在线观看| 26uuu色噜噜精品一区| 国产三级精品三级在线专区| 精品久久久久香蕉网| 国产欧美精品一区二区色综合朱莉| 中文字幕精品在线不卡| 亚洲视频精选在线| 婷婷开心激情综合| 国产伦精品一区二区三区免费| 成人av集中营| 欧美三级电影网| 欧美成人精品福利| 欧美韩日一区二区三区四区| 亚洲日本在线a| 一区二区视频在线看| 日韩激情av在线| 粉嫩av一区二区三区| 日本精品视频一区二区三区| 欧美大片拔萝卜| 国产欧美一区二区三区在线看蜜臀 | 综合久久久久综合| 欧美在线不卡一区| 欧洲精品一区二区| 制服丝袜激情欧洲亚洲| 国产欧美综合在线| 亚洲国产精品久久久久婷婷884| 麻豆精品一区二区三区| 色综合色狠狠天天综合色| 日韩欧美中文一区二区| 亚洲天堂久久久久久久| 一区二区三区在线影院| 日韩av一区二区在线影视| 国产高清精品在线| 欧美日韩精品一区二区三区四区 | 国产精品中文有码| av中文字幕不卡| 欧美电影免费观看高清完整版在| 亚洲嫩草精品久久| 国产1区2区3区精品美女| 欧美福利视频导航| 国产精品久久久久久久蜜臀| 久久激五月天综合精品| 91在线观看成人| 久久这里只精品最新地址| 亚洲成av人**亚洲成av**| 国产高清在线精品| 日韩欧美久久久| 亚洲综合一区二区| av中文字幕不卡| 久久免费视频色| 国产精品不卡在线| 国产一区二区三区四区五区美女| 欧美日韩夫妻久久| 亚洲欧美激情一区二区| 国产98色在线|日韩| 日韩欧美在线123| 亚洲第一成年网| 成人在线视频首页| 欧美一卡在线观看| 亚洲妇女屁股眼交7| 91网站视频在线观看| 国产精品久久久久久一区二区三区| 久久99国产精品久久| 制服丝袜亚洲播放| 亚洲猫色日本管| 成人高清av在线| 亚洲国产激情av| 国产精品99久久久久久久女警| 日韩一区二区免费高清| 日韩av高清在线观看| 欧美高清dvd| 亚洲chinese男男1069| 成人免费视频播放| 欧美日本一区二区三区| 日本va欧美va精品| 久久久亚洲国产美女国产盗摄 | 国内成人精品2018免费看| 久久婷婷综合激情| 成人精品视频一区| 一区二区三区国产精品| 欧美人与z0zoxxxx视频| 韩国女主播成人在线观看| 国产日韩av一区| 色综合色综合色综合| 天堂成人国产精品一区| xf在线a精品一区二区视频网站| 成人一道本在线| 亚洲午夜视频在线观看| 欧美一区二区三区免费| 国产激情偷乱视频一区二区三区| 综合av第一页| 欧美一区二区三区日韩| 国产成人精品免费网站| 亚洲国产美女搞黄色| 精品精品国产高清a毛片牛牛| 成人午夜免费av| 五月综合激情网| 亚洲国产经典视频| 欧美一区二区视频观看视频| 风间由美一区二区三区在线观看 | 亚洲欧美经典视频| 日韩欧美国产电影| 91蝌蚪porny成人天涯| 蜜臀av性久久久久蜜臀av麻豆| 亚洲国产电影在线观看| 欧美日韩国产另类不卡| 成人午夜视频福利| 蜜臀av一级做a爰片久久| 国产精品成人免费精品自在线观看 | 亚洲国产精品久久人人爱| 国产色婷婷亚洲99精品小说| 欧美吻胸吃奶大尺度电影| 懂色av中文一区二区三区| 日韩在线一区二区| 亚洲免费毛片网站| 国产午夜久久久久| 制服丝袜亚洲播放|