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

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

?? zl5011xdmampc8260.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
   return(dma->bufferDescrip[descriptorNumber].source);
}

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

 Function:
   zl5011xDmaReadDestinationAddress

 Description:
    This function will read the destination address field of the specified
    buffer descriptor

 Inputs:
    dmaChannel        DMA channel
    descriptorNumber  Descriptor number

 Outputs
   None

 Returns:
   Uint32T            Destination address

 Remarks:

*******************************************************************************/
extern Uint32T zl5011xDmaReadDestinationAddress(zl5011xDmaChannelS *dmaChannel,
                               Uint32T descriptorNumber)
{
   zl5011xDmaStructS *dma = (zl5011xDmaStructS *)dmaChannel->dma;

   ZL5011X_TRACE(ZL5011X_DMA_FN_ID,"zl5011xDmaReadDestinationAddress:", 0, 0, 0, 0, 0, 0);

   return(dma->bufferDescrip[descriptorNumber].destination);
}

/*****************   STATIC FUNCTION DEFINTIONS   *****************************/

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

 Function:
   zl5011xDmaOutOfBuffers

 Description:
    This function is called as a result of the CP being out of buffers interrupt.
    Its purpose is to disconnect the external DREQ to prevent communications to
    the processor from failing.

 Inputs:
   None

 Outputs:
   None

 Returns:
   None

 Remarks:

*******************************************************************************/
static void zl5011xDmaOutOfBuffers(void)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xDmaStatusE dmaStatus;
   Uint32T n;

   ZL5011X_TRACE(ZL5011X_DMA_FN_ID,"zl5011xDmaOutOfBuffers Beginning ",0,0,0,0,0,0);

   while ((IdmaMonitor.goFlag == ZL5011X_TRUE) && (status == ZL5011X_OK))
   {
     for(n=0;n<ZL5011X_DMA_NUMBER_OF_CHANNELS && status == ZL5011X_OK;n++)
     {
       if (IdmaMonitor.channelEnabled[n] == ZL5011X_TRUE)
       {
         dmaStatus = zl5011xDmaDetermineStatus(IdmaMonitor.dmaChannel[n]);
         if (dmaStatus == ZL5011X_DMA_OUT_OF_BUFFERS)
         {
           zl5011xDisconnectDreq(IdmaMonitor.dmaChannel[n]);
         }
       }
     }

     OS_TICK_DELAY(1);
   }

   ZL5011X_TRACE(ZL5011X_DMA_FN_ID,"zl5011xDmaOutOfBuffers terminating with "
          "status %d",status,0,0,0,0,0);
}

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

 Function:
   zl5011xassignDmaPorts

 Description:
    This function will program the DREQ and DACK pins from the device to
    the appropriate DMA channel in the MPC8260

 Inputs:
    dmaChannel        DMA channel

 Outputs:
   None

 Returns:
   None

 Remarks:
   This function is both micro specific and board specific. For the
   _ZARLINK_ZLE5011X_BOARD, DMA channels 0 (corresponding to IDMA1), and 1
   (IDMA2) MUST be used.

    Direction: CPU out
       DMA channel 0 (IDMA1 [DREQ1, DACK1])
       Connection to device made usaing Port C pins 0 and 23

    Direction: CPU in
       DMA channel 1 (IDMA2 [DREQ2, DACK2])
       Connection to device made using Port C pins 1 and 3

*******************************************************************************/
static void zl5011xassignDmaPorts(zl5011xDmaChannelS *dmaChannel)
{
#ifdef _ZARLINK_ZLE5011X_BOARD
   if (dmaChannel->channelNumber == 0)
   {
      /* Setup port C pin assignment (DREQ to be inputs (0), DACK to be
          output (0))                                                            */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PDIRC))
           = ((*((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PDIRC))
                       & ~PPC8260_PORTC_DREQ1_MASK)
                       | PPC8260_PORTC_DACK1_MASK);

      /* Setup PORT C pin functionality (DREQ and DACK to be set to dedicated
          function (1))                                                      */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PPARC))
                 |= PPC8260_PORTC_DREQ1_MASK
                     | PPC8260_PORTC_DACK1_MASK;

      /* Set DREQ to be level sensitive (active high)                           */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_CPM_RCCR))
                           |= PPC8260_IMM_CPM_CMD_1;

      /* Connect external DACK to processor                                     */
      /* Set the PSORC bit for DACK1 */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                        |= PPC8260_PORTC_DACK1_MASK;
   }
   else  /* Assume that (dmaChannel->channelNumber == 1) */
   {
      /* Setup port C pin assignment (DREQ to be inputs (0), DACK to be
          output (0))                                                            */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PDIRC))
           = ((*((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PDIRC))
                       & ~PPC8260_PORTC_DREQ2_MASK)
                       |  PPC8260_PORTC_DACK2_MASK);

      /* Setup PORT C pin functionality (DREQ and DACK to be set to dedicated
          function (1))                                                      */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PPARC))
                 |= PPC8260_PORTC_DREQ2_MASK
                     | PPC8260_PORTC_DACK2_MASK;

      /* Set DREQ to be level sensitive (active high)                           */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_CPM_RCCR))
                           |= PPC8260_IMM_CPM_CMD_2;

      /* Connect external DACK to processor                                     */
      /* Set the PSORC bit for DACK2 */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                        |= PPC8260_PORTC_DACK2_MASK;
   }

   zl5011xDisconnectDreq(dmaChannel);
#endif
}


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

 Function:
   zl5011xConnectDreq

 Description:
    This function will connect the specified DREQ to the processor core

 Inputs:
   dmaChannel        DMA channel

 Outputs:
   None

 Returns:
   None

 Remarks:

*******************************************************************************/
static void zl5011xConnectDreq(zl5011xDmaChannelS *dmaChannel)
{
#ifdef _ZARLINK_ZLE5011X_BOARD
   if (dmaChannel->channelNumber == 0)
   {    /* Clear the PSORC bit for DREQ1 */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                    &= ~PPC8260_PORTC_DREQ1_MASK;
   }
   else
   {    /* Clear the PSORC bit for DREQ2 */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                    &= ~PPC8260_PORTC_DREQ2_MASK;
   }
#endif
}

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

 Function:
   zl5011xDisconnectDreq

 Description:
    This function will disconnect the specified DREQ to the processor core

 Inputs:
    dmaChannel        DMA channel

 Outputs:
   None

 Returns:
   None

 Remarks:

*******************************************************************************/
static void zl5011xDisconnectDreq(zl5011xDmaChannelS *dmaChannel)
{
#ifdef _ZARLINK_ZLE5011X_BOARD
   if (dmaChannel->channelNumber == 0)
   {    /* Set the PSORC bit for DREQ1*/
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                    &= ~PPC8260_PORTC_DREQ1_MASK;
   }
   else
   {    /* Set the PSORC bit for DREQ2 */
      *((volatile Uint32T*)(dmaChannel->imm + PPC8260_IMM_PIO_PSORC))
                    |= PPC8260_PORTC_DREQ2_MASK;
   }
#endif
}


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

 Function:
   zl5011xIsDmaBufferDone

 Description:
    Determines whether the DMA buffer complete flag (BC) is set. If it is
    set then this function also clears it.
    The BC flag will only be set if the I flag was set on this buffer
    descriptor.

 Inputs:
    dmaChannel        DMA channel

 Outputs:
   None

 Returns:
   None

 Remarks:

*******************************************************************************/
zl5011xBooleanE zl5011xIsDmaBufferDone(zl5011xDmaChannelS *dmaChannel)
{
   zl5011xDmaStructS *dma = (zl5011xDmaStructS *)dmaChannel->dma;
   Uint32T idsrValue;

   /* Read idsr status register to determine status                         */
   idsrValue = dma->reg->idsr;

   /* Check the buffer complete flag */
   if ((idsrValue & PPC8260_IDMA_IDSR_BC) == 0)
   {
      return ZL5011X_FALSE;
   }
   else
   {
      /* Clear the buffer complete flag. Other flags are left unchanged */
      dma->reg->idsr = PPC8260_IDMA_IDSR_BC;

      return ZL5011X_TRUE;
   }
}

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

 Function:
   zl5011xDmaSetDescriptorInterruptFlag

 Description:
    This function will set or clear the descriptor buffer interrupt flag
    on the specified buffer

 Inputs:
    dmaChannel             DMA channel to set
    zlBooleanE             enable

 Outputs
   None

 Returns:
   None

 Remarks:

*******************************************************************************/
extern void zl5011xDmaSetDescriptorInterruptFlag(zl5011xDmaChannelS *dmaChannel,
                     Uint16T bufferIndex, zl5011xBooleanE enable)
{
   zl5011xDmaStructS *dma = (zl5011xDmaStructS *)dmaChannel->dma;

   ZL5011X_TRACE(ZL5011X_DMA_FN_ID,"zl5011xDmaFreeDescriptorBuffer:", 0, 0, 0, 0, 0, 0);

   /* Set or reset the I bit for the specified descriptor */
   if (enable == ZL5011X_TRUE)
   {
      dma->bufferDescrip[bufferIndex].ctlsts |= PPC8260_IDMA_BD_INT;
   }
   else
   {
      dma->bufferDescrip[bufferIndex].ctlsts &= ~PPC8260_IDMA_BD_INT;
   }
}



/*****************   END   ****************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲狠狠爱一区二区三区| 国产成人精品亚洲777人妖| 欧美专区日韩专区| 一区二区三区在线高清| 久久精品一区八戒影视| 国产成人精品三级麻豆| 国产精品久久精品日日| 91麻豆产精品久久久久久| 亚洲人妖av一区二区| 91国偷自产一区二区开放时间 | av高清不卡在线| 亚洲欧美另类久久久精品| 91成人看片片| 爽爽淫人综合网网站| 精品国产a毛片| 成人午夜视频免费看| 一区二区在线观看视频在线观看| 日本二三区不卡| 日韩经典中文字幕一区| 精品国产91久久久久久久妲己 | 国产91丝袜在线播放0| 亚洲蜜桃精久久久久久久| 欧美日韩一本到| 久久成人久久爱| 中文字幕一区二区日韩精品绯色| 欧美午夜一区二区| 久久91精品久久久久久秒播| 中文字幕免费一区| 日本韩国视频一区二区| 久久黄色级2电影| 中文字幕一区二区三区不卡 | 国产女同性恋一区二区| 色综合天天性综合| 国产精品一区2区| 国产精品久久三| 欧美日韩亚洲高清一区二区| 国产一区二区毛片| 一区二区三区欧美激情| 精品国内二区三区| 欧美性三三影院| 国产一区二区三区黄视频| 亚洲一区电影777| 日本一区二区高清| 日韩一级片网址| 欧洲生活片亚洲生活在线观看| 精品一区二区国语对白| 午夜精品久久久久久久99水蜜桃 | 91精品国产色综合久久久蜜香臀| 成a人片国产精品| 精品在线免费观看| 亚洲国产aⅴ天堂久久| 亚洲人成在线播放网站岛国| 精品国产1区二区| 8x8x8国产精品| 91色婷婷久久久久合中文| 亚洲动漫第一页| 9191精品国产综合久久久久久| 伊人夜夜躁av伊人久久| 日韩亚洲欧美综合| 蜜臀av性久久久久蜜臀aⅴ| 国产精品美女久久久久久久| 日韩三级视频在线观看| 欧美影院午夜播放| 91一区二区在线| 国产成人精品免费看| 九九热在线视频观看这里只有精品| 亚洲一区免费视频| 亚洲欧美激情一区二区| 亚洲视频中文字幕| 中文字幕在线观看不卡视频| 国产精品拍天天在线| 久久久亚洲精品石原莉奈| 精品国产免费一区二区三区四区 | 久久久久国产精品麻豆ai换脸| 欧美mv日韩mv| 日韩欧美在线1卡| 日韩亚洲欧美成人一区| 日韩视频中午一区| 日韩午夜激情av| 精品欧美一区二区在线观看| 欧美xfplay| 中文字幕国产一区二区| 国产丝袜欧美中文另类| 亚洲国产精品精华液ab| 国产精品福利一区二区三区| 国产精品免费免费| 亚洲色图欧美偷拍| 亚洲va在线va天堂| 日韩精品每日更新| 久久成人麻豆午夜电影| 国产在线观看一区二区| 国产成人在线视频网站| 99免费精品视频| 欧美自拍偷拍午夜视频| 欧美精品一二三四| 精品国产乱码久久久久久夜甘婷婷 | 午夜电影一区二区三区| 精品国产免费人成电影在线观看四季| 91在线小视频| 在线观看日韩毛片| 91精品国产美女浴室洗澡无遮挡| 日韩欧美色电影| 久久午夜老司机| 最好看的中文字幕久久| 视频一区在线播放| 国产伦精品一区二区三区在线观看| 精品在线观看视频| 91免费视频大全| 欧美一级生活片| 国产精品剧情在线亚洲| 一二三四区精品视频| 麻豆国产欧美日韩综合精品二区| 国产成人av网站| 欧美日韩国产中文| 国产欧美一区二区三区沐欲| 亚洲国产精品欧美一二99| 美女视频一区二区| caoporn国产精品| 91精品国产高清一区二区三区蜜臀| 久久久午夜精品理论片中文字幕| 亚洲欧美日韩中文播放| 久久精品国产精品亚洲综合| 国产99久久久精品| 91麻豆精品国产91| 亚洲婷婷综合久久一本伊一区| 日本不卡一二三| 色综合久久中文字幕| 26uuu精品一区二区| 亚洲国产日韩精品| 成人免费毛片a| 亚洲精品一区二区三区99| 亚洲一区二区三区不卡国产欧美 | 国产精品丝袜久久久久久app| 午夜电影一区二区三区| jiyouzz国产精品久久| 日韩免费视频线观看| 亚洲影院久久精品| av在线不卡免费看| 精品国产伦一区二区三区观看体验| 亚洲一卡二卡三卡四卡五卡| 成人免费视频一区| 久久久蜜臀国产一区二区| 日本人妖一区二区| 欧美性生活久久| 日韩毛片一二三区| 丰满放荡岳乱妇91ww| 欧美v亚洲v综合ⅴ国产v| 亚洲v日本v欧美v久久精品| 色婷婷精品久久二区二区蜜臂av| 国产欧美精品一区二区色综合朱莉| 青青草国产精品97视觉盛宴| 欧美视频在线观看一区二区| 亚洲精品乱码久久久久| 波多野结衣欧美| 国产欧美日韩综合精品一区二区| 美女网站色91| 欧美va亚洲va在线观看蝴蝶网| 视频在线在亚洲| 欧美精品vⅰdeose4hd| 午夜免费欧美电影| 7878成人国产在线观看| 午夜日韩在线电影| 欧美日韩成人一区| 日韩制服丝袜先锋影音| 欧美久久高跟鞋激| 爽爽淫人综合网网站| 51精品秘密在线观看| 午夜精品久久久久久不卡8050| 欧美视频第二页| 丝袜美腿亚洲色图| 在线成人免费视频| 日本欧美一区二区在线观看| 欧美一区二区精品| 精品一区二区三区在线观看| 日韩欧美国产成人一区二区| 国内精品视频666| 欧美国产日韩亚洲一区| 成人av高清在线| 亚洲乱码国产乱码精品精可以看 | 免费观看日韩电影| 精品福利视频一区二区三区| 国产精品一区二区在线播放| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产精品18久久久久久久久久久久| 久久精品视频一区二区| 成人免费高清在线| 亚洲动漫第一页| 欧美一区日韩一区| 国产乱理伦片在线观看夜一区| 国产欧美精品一区二区色综合朱莉 | 日韩伦理av电影| 国产精品护士白丝一区av| 91香蕉国产在线观看软件| 亚洲va欧美va人人爽午夜| 欧美本精品男人aⅴ天堂| 大白屁股一区二区视频| 亚洲一区二区三区四区在线观看 | 午夜精品久久久久久久久| 精品理论电影在线观看| 91视频一区二区|