📄 gdma_omap32.c
字号:
//===============================================================================
// 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 + -