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

📄 gdma_omap32.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 5 页
字号:
//===============================================================================
//            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION           
//                                                                             
//   Property of Texas Instruments 
//   For  Unrestricted  Internal  Use  Only 
//   Unauthorized reproduction 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 "global_types.h"
#include "result.h"
#include "test.h"
#include "intvecs.h"
#include "gdma_omap32.h"
#include "gdma.h"
#include "gdmatest.h"
#include "lcd_omap32.h"
#include "inth.h"


DMA_SYSTEM_STRUCT_OMAP32 SystemDma_omap32;

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

       for (i=0; i<DMA_NUMBER_OF_CHANNEL_OMAP32; i++)
	 {
	   SystemDma_omap32.DmaChannel[i].ChannelNumb=i;  

	 }
       
     //DMA_GCR
     //----------
      SetGroupBits(DMA_ACC(GLOB_REG , 0 , DMA_GCR )      ,DMA_FREE_POS        , DMA_FREE_NUMB   , WithOrWithoutFree );


      /* Disable OMAP 3.0/3.1 mapping by default */
      SetGroupBits (DMA_ACC (GLOB_REG, 0, DMA_GSCR),
                    DMA_OMAP31_MAPPING_POS,
		    DMA_OMAP31_MAPPING_NUMB,
		    TRUE);

      return;
}

//-------------------------------------------------------------------------------
// NAME         : DMA_Omap31DisableMapping       
//
// DESCRIPTION  : disable the omap3.1 mapping
//
// PARAMETERS   : disable (BOOLEAN)    = 1 => 3.1 mapping disabled
//                                     = 0 => 3.1 mapping enabled 
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void DMA_Omap31DisableMapping(BOOL disable )
{

     //DMA_GSCR
     //----------
      SetGroupBits(DMA_ACC(GLOB_REG , 0 , DMA_GSCR )      ,DMA_OMAP31_MAPPING_POS        , DMA_OMAP31_MAPPING_NUMB   , disable );
      
}


//-------------------------------------------------------------------------------
// NAME         : DMA_Omap32SetupChannel       
//
// 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_9
//                                    DMA_CHANNEL_10
//                                    DMA_CHANNEL_11
//                                    DMA_CHANNEL_12
//                                    DMA_CHANNEL_13
//                                    DMA_CHANNEL_14
//                                    DMA_CHANNEL_15
//                                    DMA_CHANNEL_LCD 
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void DMA_Omap32SetupChannel(UWORD16 ChannelNumber)
{
  register UWORD32 Temp;


  if (ChannelNumber != DMA_CHANNEL_LCD_OMAP32)
    {
    CHANNEL_DESCRIPTOR_OMAP32* Chptr;
      Chptr=&(SystemDma_omap32.DmaChannel[ChannelNumber]);
    	//DMA_CSDP
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_TYPE_SIZE_POS        ,DMA_TYPE_SIZE_NUMB      ,Chptr->TypeSize                           );
        SetGroupBits( Temp     ,DMA_SRC_PORT_POS         ,DMA_SRC_PORT_NUMB       ,Chptr->SrcPort                           );
        SetGroupBits( Temp     ,DMA_DEST_PORT_POS        ,DMA_DEST_PORT_NUMB      ,Chptr->DestPort                          );
        SetGroupBits( Temp     ,DMA_SRC_PACK_POS         ,DMA_SRC_PACK_NUMB       ,Chptr->SrcPack                           );
        SetGroupBits( Temp     ,DMA_DEST_PACK_POS        ,DMA_DEST_PACK_NUMB      ,Chptr->DestPack                          );
        SetGroupBits( Temp     ,DMA_SRC_BURST_POS        ,DMA_SRC_BURST_NUMB      ,Chptr->SrcBurst                          );
        SetGroupBits( Temp     ,DMA_DEST_BURST_POS       ,DMA_DEST_BURST_NUMB     ,Chptr->DestBurst                         );
	DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CSDP)=Temp;

    	//DMA_CCR
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_SYNCNUMB_POS         ,DMA_SYNCNUMB_NUMB       ,Chptr->SyncNumb                          );
        SetGroupBits( Temp     ,DMA_FS_POS               ,DMA_FS_NUMB             ,Chptr->EventSync                         );
        SetGroupBits( Temp     ,DMA_PRIORITY_POS         ,DMA_PRIORITY_NUMB       ,Chptr->Priority                          );
        SetGroupBits( Temp     ,DMA_AUTOINIT_POS         ,DMA_AUTOINIT_NUMB       ,Chptr->Autoinit                          );
        SetGroupBits( Temp     ,DMA_REPEAT_POS           ,DMA_REPEAT_NUMB         ,Chptr->Repeat                          );
        SetGroupBits( Temp     ,DMA_COMPATIBLE_POS       ,DMA_COMPATIBLE_NUMB     ,Chptr->OMAP31Disable                     );
        SetGroupBits( Temp     ,DMA_SRC_AMODE_POS        ,DMA_SRC_AMODE_NUMB      ,Chptr->SrcAddressMode                    );
        SetGroupBits( Temp     ,DMA_DEST_AMODE_POS       ,DMA_DEST_AMODE_NUMB     ,Chptr->DestAddressMode                   );
	DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CCR)=Temp;

    	//DMA_CICR
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_TOUTIE_POS           ,DMA_TOUTIE_NUMB         ,Chptr->TimeoutIntEnable                 );
        SetGroupBits( Temp     ,DMA_DROPIE_POS           ,DMA_DROPIE_NUMB         ,Chptr->DropIntEnable                    );
        SetGroupBits( Temp     ,DMA_HALFIE_POS           ,DMA_HALFIE_NUMB         ,Chptr->HalfFrameIntEnable               );
        SetGroupBits( Temp     ,DMA_FRAMEIE_POS          ,DMA_FRAMEIE_NUMB        ,Chptr->FrameIntEnable                   );
        SetGroupBits( Temp     ,DMA_LASTIE_POS           ,DMA_LASTIE_NUMB         ,Chptr->LastFrameIntEnable               );
        SetGroupBits( Temp     ,DMA_BLOCKIE_POS          ,DMA_BLOCKIE_NUMB        ,Chptr->BlockIntEnable                   );
	DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CICR)=Temp;

    	//DMA_CSSA_L
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CSSA_L) = (UWORD16)(Chptr->SrcAdd);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CSSA_L),DMA_CSSA_L_POS,DMA_CSSA_L_NUMB,(Chptr->SrcAdd & DMA_CSSA_L_MASK)       );
    
    	//DMA_CSSA_U
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CSSA_U) = (UWORD16)((Chptr->SrcAdd)>> 16);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CSSA_U),DMA_CSSA_U_POS,DMA_CSSA_U_NUMB,((Chptr->SrcAdd & DMA_CSSA_U_MASK)>> 16));
    
    	//DMA_CDSA_L
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDSA_L) = (UWORD16)(Chptr->DestAdd);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDSA_L),DMA_CDSA_L_POS,DMA_CDSA_L_NUMB,(Chptr->DestAdd & DMA_CDSA_L_MASK)      );
    
    	//DMA_CDSA_U
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDSA_U) = (UWORD16)((Chptr->DestAdd)>> 16);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDSA_U),DMA_CDSA_U_POS,DMA_CDSA_U_NUMB,((Chptr->DestAdd & DMA_CDSA_U_MASK)>> 16));
    
    	//DMA_CEN
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CEN) = (UWORD16)(Chptr->EltNumber);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CEN),DMA_CEN_POS,DMA_CEN_NUMB,(Chptr->EltNumber & DMA_CEN_MASK));
    
    	//DMA_CFN
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CFN) = (UWORD16)(Chptr->FrameNumber);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CFN),DMA_CFN_POS,DMA_CFN_NUMB,(Chptr->FrameNumber & DMA_CFN_MASK));
    
    	//DMA_CFI
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CFI) = (UWORD16)(Chptr->FrameIndex);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CFI),DMA_CFI_POS,DMA_CFI_NUMB,(Chptr->FrameIndex & DMA_CFI_MASK));
    
    	//DMA_CEI/CSEI
    	//------------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CEI) = (UWORD16)(Chptr->EltIndex);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CEI),DMA_CEI_POS,DMA_CEI_NUMB,(Chptr->EltIndex & DMA_CEI_MASK));

    	//DMA_CDEI
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDEI) = (UWORD16)(Chptr->DEltIndex);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDEI),DMA_CDEI_POS,DMA_CDEI_NUMB,(Chptr->DEltIndex & DMA_CDEI_MASK));

    	//DMA_CDFI
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDFI) = (UWORD16)(Chptr->DFrameIndex);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CDFI),DMA_CDFI_POS,DMA_CDFI_NUMB,(Chptr->DFrameIndex & DMA_CDFI_MASK));

    	//DMA_COLOR
    	//----------
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_COLOR_L) = (UWORD16)(Chptr->COLOR);
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_COLOR_U) = (UWORD16)((Chptr->COLOR)>> 16);
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_COLOR_L),DMA_COLOR_L_POS,DMA_COLOR_L_NUMB,(Chptr->COLOR & DMA_COLOR_L_MASK));
        //SetGroupBits(DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_COLOR_U),DMA_COLOR_U_POS,DMA_COLOR_U_NUMB,((Chptr->COLOR & DMA_COLOR_U_MASK)>> 16));

    	//DMA_CCR2
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_CFE_POS           ,DMA_CFE_NUMB         ,Chptr->CFE                 );
        SetGroupBits( Temp     ,DMA_TCE_POS           ,DMA_TCE_NUMB         ,Chptr->TCE                 );
        SetGroupBits( Temp     ,DMA_BSE_POS           ,DMA_BSE_NUMB         ,Chptr->BSE                 );

	DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CCR2)=Temp;

    	//DMA_LCHCTRL
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_LCHTYPE_POS           ,DMA_LCHTYPE_NUMB         ,Chptr->LCH_TYPE                 );
        SetGroupBits( Temp     ,DMA_LCHINTDIS_POS         ,DMA_LCHINTDIS_NUMB       ,Chptr->LCH_INTERLEAVE_DIS       );
        DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_LCH_CTRL)=Temp;

    	//DMA_CLNK_CTRL
    	//-------------
        Temp=0;
        SetGroupBits( Temp     ,DMA_NXTCHID_POS           ,DMA_NXTCHID_NUMB         ,Chptr->NXTLCH_ID );
        SetGroupBits( Temp     ,DMA_ENABLELNK_POS         ,DMA_ENABLELNK_NUMB       ,Chptr->ENABLE_LNK);
	DMA_ACC(NO_GLOB_REG,Chptr->ChannelNumb,DMA_CLNK_CTRL)=Temp;

    }
  else
    {
    LCD_CHANNEL_DESCRIPTOR_OMAP32* Chptr;
     Chptr=&(SystemDma_omap32.LcdChannel);
    	//DMA_CSDP
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_LCD_TYPE_SIZE_B1_POS ,DMA_LCD_TYPE_SIZE_B1_NUMB   ,Chptr->TypeSize_B1                   );
        SetGroupBits( Temp     ,DMA_LCD_B1_PACK_POS      ,DMA_LCD_B1_PACK_NUMB    ,Chptr->B1_Pack                           );
        SetGroupBits( Temp     ,DMA_LCD_B1_BURST_POS     ,DMA_LCD_B1_BURST_NUMB   ,Chptr->B1_Burst                          );
        SetGroupBits( Temp     ,DMA_LCD_TYPE_SIZE_B2_POS ,DMA_LCD_TYPE_SIZE_B2_NUMB   ,Chptr->TypeSize_B2                   );
        SetGroupBits( Temp     ,DMA_LCD_B2_PACK_POS      ,DMA_LCD_B2_PACK_NUMB    ,Chptr->B2_Pack                           );
        SetGroupBits( Temp     ,DMA_LCD_B2_BURST_POS     ,DMA_LCD_B2_BURST_NUMB   ,Chptr->B2_Burst                          );
	    LCD_DMA_ACC(GDMA_LCD_CSDP)=Temp;

    	//DMA_CCR
    	//----------
        Temp=0;
        SetGroupBits( Temp     ,DMA_LCD_PRIORITY_POS     ,DMA_LCD_PRIORITY_NUMB   ,Chptr->Priority                        );
        SetGroupBits( Temp     ,DMA_LCD_AUTOINIT_POS     ,DMA_LCD_AUTOINIT_NUMB   ,Chptr->Autoinit                        );
        SetGroupBits( Temp     ,DMA_LCD_COMPATIBLE_POS   ,DMA_LCD_COMPATIBLE_NUMB ,Chptr->OMAP31Disable                   );
        SetGroupBits( Temp     ,DMA_LCD_REPEAT_POS       ,DMA_LCD_REPEAT_NUMB     ,Chptr->Repeat                          );
        SetGroupBits( Temp     ,DMA_LCD_B1_AMODE_POS     ,DMA_LCD_B1_AMODE_NUMB   ,Chptr->B1AddressMode                   );
        SetGroupBits( Temp     ,DMA_LCD_B2_AMODE_POS     ,DMA_LCD_B2_AMODE_NUMB   ,Chptr->B2AddressMode                   );
	    LCD_DMA_ACC(GDMA_LCD_CCR)=Temp;

    	//DMA_LCD_CTRL
    	//----------
	Temp=0;
        SetGroupBits( Temp     ,DMA_LCD_FRAMEMODE_POS    ,DMA_LCD_FRAMEMODE_NUMB     ,Chptr->FrameMode      );
        SetGroupBits( Temp     ,DMA_LCD_FRAMEIE_POS      ,DMA_LCD_FRAMEIE_NUMB       ,Chptr->FrameItIe      );
        SetGroupBits( Temp     ,DMA_LCD_BUSERROR_POS     ,DMA_LCD_BUSERROR_NUMB      ,Chptr->BusErrorItIe   );
        SetGroupBits( Temp     ,DMA_LCD_FRAME1IT_POS     ,DMA_LCD_FRAME1IT_NUMB      ,Chptr->Frame1ItCond   );
        SetGroupBits( Temp     ,DMA_LCD_FRAME2IT_POS     ,DMA_LCD_FRAME2IT_NUMB      ,Chptr->Frame2ItCond   );
        SetGroupBits( Temp     ,DMA_LCD_BUSERRORIT_POS   ,DMA_LCD_BUSERRORIT_NUMB    ,Chptr->BusErrorItCond );
        SetGroupBits( Temp     ,DMA_LCD_SRC_POS          ,DMA_LCD_SRC_NUMB           ,Chptr->LcdSrc         );
        SetGroupBits( Temp     ,DMA_LCD_DEST_POS         ,DMA_LCD_DEST_NUMB          ,Chptr->LcdDest        );
        LCD_DMA_ACC(GDMA_LCD_CTRL)=Temp;
    
#if 0
    	//DMA_LCD_TOP_B1
    	//---------------
        SetGroupBits( LCD_DMA_ACC(GDMA_LCD_TOP_B1_L)     ,DMA_LCD_TOP_F1_L_POS         ,DMA_LCD_TOP_F1_L_NUMB       ,((Chptr->LcdTopB1)&DMA_LCD_TOP_F1_L_MASK)    );
        SetGroupBits( LCD_DMA_ACC(GDMA_LCD_TOP_B1_U    )     ,DMA_LCD_TOP_F1_L_POS         ,DMA_LCD_TOP_F1_L_NUMB       ,((Chptr->LcdTopB1)&DMA_LCD_TOP_F1_U_MASK)>>16  );

    	//DMA_LCD_BOT_B1
    	//---------------
        SetGroupBits( LCD_DMA_ACC(GDMA_LCD_BOT_B1_L    )     ,DMA_LCD_BOT_F1_L_POS         ,DMA_LCD_BOT_F1_L_NUMB       ,((Chptr->LcdBotB1)&DMA_LCD_BOT_F1_L_MASK)    );
        SetGroupBits( LCD_DMA_ACC(GDMA_LCD_BOT_B1_U    )     ,DMA_LCD_BOT_F1_L_POS         ,DMA_LCD_BOT_F1_L_NUMB       ,((Chptr->LcdBotB1)&DMA_LCD_BOT_F1_U_MASK)>>16  );

⌨️ 快捷键说明

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