⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 omap30_sysdma.c

📁 有关于USB的一些主机端驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
//-------------------------------------------------------------------------------
//          TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION  
//   Property of Texas Instruments
//   For Unrestricted Internal Use Only
//   Unauthorized reprofuction and/or distribution is strictly prohibited.
//   This product is protected under copyright law and trade secret law
//   as an unpublished work
//   Created 2000,  (C) Copyright 2000 Texas Instruments. All rights reserved
//
//------------------------------------------------------------------------------
#include "omap30.h"

//-------------------------------------------------------------------------------
//
//  FUNCTIONS
//
//-------------------------------------------------------------------------------

DMA_SYSTEM_STRUCT SystemDma;

//-------------------------------------------------------------------------------
// NAME         : DMA_SetupSystemDma       
// DESCRIPTION  : Init the SystemDma Structure and Set The debugging mode
// PARAMETERS   : WithOrWithoutFree       DMA_FREE_RUNNING
//                                        DMA_SUSPEND_RUNNING 
// RETURN VALUE : None
//--------------------------------------------------------------------------------
void DMA_SetupSystemDma(BOOL WithOrWithoutFree )
{
UWORD32 i;

       for (i=0; i<DMA_NUMBER_OF_CHANNEL; i++)
	 {
	   SystemDma.DmaChannel[i].ChannelNumb=i;  
	 }
       
     //DMA_GCR
     //----------
     /*SetGroupBits(DMA_ACC(GLOB_REG,0  ,SYSDMA_DMA_GCR )      ,SYSDMA_DMA_GCR_FREE_POS        , SYSDMA_DMA_GCR_FREE_NUMB   , WithOrWithoutFree );*/
     SetGroupBits(REG16(SYSDMA_DMA_GCR_ADD), SYSDMA_DMA_GCR_FREE_POS, SYSDMA_DMA_GCR_FREE_NUMB, WithOrWithoutFree );
}

//-------------------------------------------------------------------------------
// NAME         : DMA_SetupChannel       
// DESCRIPTION  : Copy the channel structure at the right place in the registers of the
//                specified channel
// PARAMETERS   : ChannelNumber       DMA_CHANNEL_0   
//                                    DMA_CHANNEL_1   
//                                    DMA_CHANNEL_2   
//                                    DMA_CHANNEL_3   
//                                    DMA_CHANNEL_4   
//                                    DMA_CHANNEL_5   
//                                    DMA_CHANNEL_6   
//                                    DMA_CHANNEL_7   
//                                    DMA_CHANNEL_8   
//                                    DMA_CHANNEL_LCD 
// RETURN VALUE : None
//--------------------------------------------------------------------------------
void DMA_SetupChannel(UWORD16 ChannelNumber)
{
UWORD32 Temp;


  if (ChannelNumber != DMA_CHANNEL_LCD)
    {
        CHANNEL_DESCRIPTOR* Chptr;

        Chptr=&(SystemDma.DmaChannel[ChannelNumber]);

    	//DMA_CSDP
    	//----------
        Temp=0;
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_DATA_TYPE_POS,    SYSDMA_DMA_CSDP_CHX_DATA_TYPE_NUMB,    Chptr->TypeSize);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_SRC_POS,          SYSDMA_DMA_CSDP_CHX_SRC_NUMB,          Chptr->SrcPort);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_DST_POS,          SYSDMA_DMA_CSDP_CHX_DST_NUMB,          Chptr->DestPort);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_SRC_PACK_POS,     SYSDMA_DMA_CSDP_CHX_SRC_PACK_NUMB,     Chptr->SrcPack);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_DST_PACK_POS,     SYSDMA_DMA_CSDP_CHX_DST_PACK_NUMB,     Chptr->DestPack);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_SRC_BURST_EN_POS, SYSDMA_DMA_CSDP_CHX_SRC_BURST_EN_NUMB, Chptr->SrcBurst);
        SetGroupBits(Temp, SYSDMA_DMA_CSDP_CHX_DST_BURST_EN_POS, SYSDMA_DMA_CSDP_CHX_DST_BURST_EN_NUMB, Chptr->DestBurst);
	    DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CSDP) = Temp;

    	//DMA_CCR
    	//----------
        Temp=0;
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_SYNC_POS,       SYSDMA_DMA_CCR_CHX_SYNC_NUMB,       Chptr->SyncNumb);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_SYNC_PR_POS,    SYSDMA_DMA_CCR_CHX_SYNC_PR_NUMB,    Chptr->SyncPr);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_FS_POS,         SYSDMA_DMA_CCR_CHX_FS_NUMB,         Chptr->EventSync);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_PRIO_POS,       SYSDMA_DMA_CCR_CHX_PRIO_NUMB,       Chptr->Priority);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_AUTO_INIT_POS,  SYSDMA_DMA_CCR_CHX_AUTO_INIT_NUMB,  Chptr->Autoinit);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_FIFO_FLUSH_POS, SYSDMA_DMA_CCR_CHX_FIFO_FLUSH_NUMB, Chptr->Fifofush);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_SRC_AMODE_POS,  SYSDMA_DMA_CCR_CHX_SRC_AMODE_NUMB,  Chptr->SrcAddressMode);
        SetGroupBits(Temp, SYSDMA_DMA_CCR_CHX_DST_AMODE_POS,  SYSDMA_DMA_CCR_CHX_DST_AMODE_NUMB,  Chptr->DestAddressMode);
	    DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CCR) = Temp;

    	//DMA_CICR
    	//----------
        Temp=0;
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_TOUT_IE_POS,  SYSDMA_DMA_CICR_CHX_TOUT_IE_NUMB,  Chptr->TimeoutIntEnable);
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_DROP_IE_POS,  SYSDMA_DMA_CICR_CHX_DROP_IE_NUMB,  Chptr->DropIntEnable);
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_HALF_IE_POS,  SYSDMA_DMA_CICR_CHX_HALF_IE_NUMB,  Chptr->HalfFrameIntEnable);
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_FRAME_IE_POS, SYSDMA_DMA_CICR_CHX_FRAME_IE_NUMB, Chptr->FrameIntEnable);
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_LAST_IE_POS,  SYSDMA_DMA_CICR_CHX_LAST_IE_NUMB,  Chptr->LastFrameIntEnable);
        SetGroupBits(Temp, SYSDMA_DMA_CICR_CHX_BLOCK_IE_POS, SYSDMA_DMA_CICR_CHX_BLOCK_IE_NUMB, Chptr->BlockIntEnable);
	    DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CICR) = Temp;

    	//DMA_CSR
    	//----------
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_TOUT_POS             ,SYSDMA_DMA_CSR_CHX_TOUT_NUMB           ,Chptr->TimeoutInt                      );
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_DROP_POS             ,SYSDMA_DMA_CSR_CHX_DROP_NUMB           ,Chptr->DropInt                         );
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_HALF_POS             ,SYSDMA_DMA_CSR_CHX_HALF_NUMB           ,Chptr->HalfFrameInt                    );
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_FRAME_POS            ,SYSDMA_DMA_CSR_CHX_FRAME_NUMB          ,Chptr->FrameInt                        );
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_LAST_POS        ,SYSDMA_DMA_CSR_CHX_LAST_NUMB      ,Chptr->LastFrameInt                    );
        //SetGroupBits( DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb  ,DMA_CSR    )     ,SYSDMA_DMA_CSR_CHX_BLOCK_POS            ,SYSDMA_DMA_CSR_CHX_BLOCK_NUMB          ,Chptr->BlockInt                        );
    
    	//DMA_CSSA_L
	    //----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CSSA_L), SYSDMA_DMA_CSSA_L_CHX_CSSA_L_POS, SYSDMA_DMA_CSSA_L_CHX_CSSA_L_NUMB, (Chptr->SrcAdd));
    
    	//DMA_CSSA_U
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CSSA_U), SYSDMA_DMA_CSSA_U_CHX_CSSA_U_POS, SYSDMA_DMA_CSSA_U_CHX_CSSA_U_NUMB, ((Chptr->SrcAdd & 0xFFFF0000)>> 16));
    
    	//DMA_CDSA_L
	    //----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CDSA_L), SYSDMA_DMA_CDSA_L_CHX_CDSA_L_POS, SYSDMA_DMA_CDSA_L_CHX_CDSA_L_NUMB, (Chptr->DestAdd));
     
    	//DMA_CDSA_U
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CDSA_U), SYSDMA_DMA_CDSA_U_CHX_CDSA_U_POS, SYSDMA_DMA_CDSA_U_CHX_CDSA_U_NUMB, ((Chptr->DestAdd & 0xFFFF0000)>> 16));
    
    	//DMA_CEN
	    //----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CEN), SYSDMA_DMA_CEN_CHX_CEN_POS, SYSDMA_DMA_CEN_CHX_CEN_NUMB, (Chptr->EltNumber));
    
    	//DMA_CFN
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CFN), SYSDMA_DMA_CFN_CHX_CFN_POS, SYSDMA_DMA_CFN_CHX_CFN_NUMB, (Chptr->FrameNumber));
    
    	//DMA_CFI
	    //----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CFI), SYSDMA_DMA_CFI_CHX_CFI_POS, SYSDMA_DMA_CFI_CHX_CFI_NUMB, (Chptr->FrameIndex));
    
    	//DMA_CEI
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, Chptr->ChannelNumb, DMA_CEI), SYSDMA_DMA_CEI_CHX_CEI_POS, SYSDMA_DMA_CEI_CHX_CEI_NUMB, (Chptr->EltIndex));
    }
  else
    {
        LCD_CHANNEL_DESCRIPTOR* Chptr;

        Chptr=&(SystemDma.LcdChannel);

    	//DMA_LCD_CTRL
    	//----------
	    Temp=0;
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_FRAME_MODE_POS,        SYSDMA_DMA_LCD_CRTL_FRAME_MODE_NUMB,        Chptr->FrameMode);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_FRAME_IT_IE_POS,       SYSDMA_DMA_LCD_CRTL_FRAME_IT_IE_NUMB,       Chptr->FrameItIe);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_BUS_ERROR_IT_IE_POS,   SYSDMA_DMA_LCD_CRTL_BUS_ERROR_IT_IE_NUMB,   Chptr->BusErrorItIe);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_FRAME_1_IT_COND_POS,   SYSDMA_DMA_LCD_CRTL_FRAME_1_IT_COND_NUMB,   Chptr->Frame1ItCond);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_FRAME_2_IT_COND_POS,   SYSDMA_DMA_LCD_CRTL_FRAME_2_IT_COND_NUMB,   Chptr->Frame2ItCond);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_BUS_ERROR_IT_COND_POS, SYSDMA_DMA_LCD_CRTL_BUS_ERROR_IT_COND_NUMB, Chptr->BusErrorItCond);
        SetGroupBits(Temp, SYSDMA_DMA_LCD_CRTL_LCD_SOURCE_POS,        SYSDMA_DMA_LCD_CRTL_LCD_SOURCE_NUMB,        Chptr->LcdSrc);
        DMA_ACC(NO_GLOB_REG,DMA_CHANNEL_LCD  ,DMA_LCD_CTRL   )=Temp;
    
    	//DMA_LCD_TOP_F1
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_TOP_F1_L), SYSDMA_DMA_LCD_TOP_F1_L_ADD_L_POS, SYSDMA_DMA_LCD_TOP_F1_L_ADD_L_NUMB, ((Chptr->LcdTopF1)&DMA_LCD_TOP_F1_L_MASK));
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_TOP_F1_U), SYSDMA_DMA_LCD_TOP_F1_U_ADD_H_POS, SYSDMA_DMA_LCD_TOP_F1_U_ADD_H_NUMB, ((Chptr->LcdTopF1)&DMA_LCD_TOP_F1_U_MASK)>>16);

    	//DMA_LCD_BOT_F1
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_BOT_F1_L), SYSDMA_DMA_LCD_BOT_F1_L_ADD_L_POS, SYSDMA_DMA_LCD_BOT_F1_L_ADD_L_NUMB, ((Chptr->LcdBotF1)&DMA_LCD_BOT_F1_L_MASK));
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_BOT_F1_U), SYSDMA_DMA_LCD_BOT_F1_U_ADD_H_POS, SYSDMA_DMA_LCD_BOT_F1_U_ADD_H_NUMB, ((Chptr->LcdBotF1)&DMA_LCD_BOT_F1_U_MASK)>>16);

    
    	//DMA_LCD_TOP_F2
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_TOP_F2_L), SYSDMA_DMA_LCD_TOP_F2_L_ADD_L_POS, SYSDMA_DMA_LCD_TOP_F2_L_ADD_L_NUMB, ((Chptr->LcdTopF2)&DMA_LCD_TOP_F2_L_MASK));
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_TOP_F2_U), SYSDMA_DMA_LCD_TOP_F2_U_ADD_H_POS, SYSDMA_DMA_LCD_TOP_F2_U_ADD_H_NUMB, ((Chptr->LcdTopF2)&DMA_LCD_TOP_F2_U_MASK)>>16);

    	//DMA_LCD_BOT_F2
    	//----------
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_BOT_F2_L), SYSDMA_DMA_LCD_BOT_F2_L_ADD_L_POS, SYSDMA_DMA_LCD_BOT_F2_L_ADD_L_NUMB, ((Chptr->LcdBotF2)&DMA_LCD_BOT_F2_L_MASK));
        SetGroupBits(DMA_ACC(NO_GLOB_REG, DMA_CHANNEL_LCD, DMA_LCD_BOT_F2_U), SYSDMA_DMA_LCD_BOT_F2_U_ADD_H_POS, SYSDMA_DMA_LCD_BOT_F2_U_ADD_H_NUMB, ((Chptr->LcdBotF2)&DMA_LCD_BOT_F2_U_MASK)>>16);
    }
}


//-------------------------------------------------------------------------------
// NAME         : DMA_EnableChannel       
// DESCRIPTION  : Enable the specified channel
// PARAMETERS   : ChannelNumber       DMA_CHANNEL_0   
//                                    DMA_CHANNEL_1   
//                                    DMA_CHANNEL_2   
//                                    DMA_CHANNEL_3   
//                                    DMA_CHANNEL_4   
//                                    DMA_CHANNEL_5   
//                                    DMA_CHANNEL_6   
//                                    DMA_CHANNEL_7   
//                                    DMA_CHANNEL_8   
//                                    DMA_CHANNEL_LCD 
// RETURN VALUE : None
//--------------------------------------------------------------------------------
void DMA_EnableChannel(UWORD16 ChannelNumber)
{
CHANNEL_DESCRIPTOR* Chptr;

   Chptr=&(SystemDma.DmaChannel[ChannelNumber]);

   if (ChannelNumber==DMA_CHANNEL_LCD)
    {
    return;
    }
   else
    {
     Chptr->Enable = ENABLE;
     //DMA_CCR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -