FreeCalypso > hg > freecalypso-sw
diff nuc-fw/bsp/dma.h @ 93:45911ad957fd
nuc-fw: beginning to integrate TI's BSP code
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 31 Aug 2013 23:43:23 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nuc-fw/bsp/dma.h Sat Aug 31 23:43:23 2013 +0000 @@ -0,0 +1,200 @@ +/****************************************************************************** + 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 1987, (C) Copyright 1997 Texas Instruments. All + rights reserved. + + + Filename : dma.h + + Description : DMA + + Project : drivers + + Author : pmonteil@tif.ti.com Patrice Monteil. + + Version number : 1.6 + + Date and time : 01/30/01 10:22:23 + + Previous delta : 12/08/00 11:22:15 + + SCCS file : /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release_gprs/RELEASE_GPRS/drivers1/common/SCCS/s.dma.h + + Sccs Id (SID) : '@(#) dma.h 1.6 01/30/01 10:22:23 ' + + +*****************************************************************************/ + +#include "../include/config.h" + +/**** DMA configuration register ****/ + +#if (CHIPSET == 12) + + #define DMA_GCR (MEM_DMA_ADDR + 0x0400) + #define DMA_CAR (MEM_DMA_ADDR + 0x0404) + #define DMA_SCR (MEM_DMA_ADDR + 0x0406) + #define DMA_AR (MEM_DMA_ADDR + 0x040A) + + #define DMA_CONFIG { \ + * (volatile unsigned short *) DMA_GCR = 0x0000; /* Force Autogating off */ \ + * (volatile unsigned short *) DMA_CAR |= 0x0001; /* Channel 0 allocated to DSP */ \ + * (volatile unsigned short *) DMA_SCR &= ~0x0001; /* Channel 0 is not secure */ \ + * (volatile unsigned short *) DMA_AR = 0x001C; /* Reset value */ \ + } + +#else + +// CONTROLLER_CONFIG register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA_CONFIG_ADDR MEM_DMA_ADDR +#else + #define DMA_CONFIG_ADDR (MEM_DMA_ADDR + 0x20) +#endif +#define DMA_CONFIG_BURST 0x1c /* length of burst */ + +// ALLOC_CONFIG register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA_ALLOC_CONFIG_ADDR (MEM_DMA_ADDR + 0x02) +#endif +#define DMA_CONFIG_ALLOC1 0x01 /* allocation for channel 1 */ +#define DMA_CONFIG_ALLOC2 0x02 /* allocation for channel 2 */ + +// DMA Channel 1 configuration +//--------------------------- + +// DMA1_RAD register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_RAD_ADDR (MEM_DMA_ADDR + 0x10) +#else + #define DMA1_RAD_ADDR MEM_DMA_ADDR +#endif +#define DMA_RHEA_ADDR 0x07ff /* rhea start address */ +#define DMA_RHEA_CS 0xf800 /* rhea chip select */ + +// DMA1_RDPTH register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_RDPTH_ADDR (MEM_DMA_ADDR + 0x12) +#else + #define DMA1_RDPTH_ADDR (MEM_DMA_ADDR + 0x02) +#endif +#define DMA_RHEA_LENGTH 0x07ff /* rhea buffer length */ + +// DMA1_AAD register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_AAD_ADDR (MEM_DMA_ADDR + 0x14) +#else + #define DMA1_AAD_ADDR (MEM_DMA_ADDR + 0x04) +#endif +#define DMA_API_ADDR 0x0fff /* API start address */ + +// DMA1_ALGTH register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_ALGTH_ADDR (MEM_DMA_ADDR + 0x16) +#else + #define DMA1_ALGTH_ADDR (MEM_DMA_ADDR + 0x06) +#endif +#define DMA_API_LENGTH 0x0fff /* API page length */ + +// DMA1_CTRL register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_CTRL_ADDR (MEM_DMA_ADDR + 0x18) +#else + #define DMA1_CTRL_ADDR (MEM_DMA_ADDR + 0x08) +#endif +#define DMA_CTRL_ENABLE 0x0001 /* DMA enable */ +#define DMA_CTRL_IDLE 0x0002 /* idle */ +#define DMA_CTRL_ONE_SHOT 0x0004 +#define DMA_CTRL_FIFO_MODE 0x0008 +#define DMA_CTRL_CUR_PAGE 0x0010 /* current page # */ +#define DMA_CTRL_MAS 0x0020 +#define DMA_CTRL_START 0x0040 /* DMA start */ +#define DMA_CTRL_IRQ_MODE 0x0080 +#define DMA_CTRL_IRQ_STATE 0x0100 +#define DMA_CTRL_RHEA_ABORT 0x0200 +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA_CTRL_PRIORITY 0x1800 /* Number of additional reading on the bus */ +#endif + +// DMA1_CUR_OFFSET_API register +//--------------------------- +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA1_OFFSET_ADDR (MEM_DMA_ADDR + 0x1A) +#else + #define DMA1_OFFSET_ADDR (MEM_DMA_ADDR + 0x0A) +#endif + + +// DMA Channel 2 configuration +//--------------------------- + +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + #define DMA2_RAD_ADDR (MEM_DMA_ADDR + 0x20) + #define DMA2_RDPTH_ADDR (MEM_DMA_ADDR + 0x22) + #define DMA2_AAD_ADDR (MEM_DMA_ADDR + 0x24) + #define DMA2_ALGTH_ADDR (MEM_DMA_ADDR + 0x26) + #define DMA2_CTRL_ADDR (MEM_DMA_ADDR + 0x28) + #define DMA2_OFFSET_ADDR (MEM_DMA_ADDR + 0x2A) +#else + #define DMA2_RAD_ADDR (MEM_DMA_ADDR + 0x10) + #define DMA2_RDPTH_ADDR (MEM_DMA_ADDR + 0x12) + #define DMA2_AAD_ADDR (MEM_DMA_ADDR + 0x14) + #define DMA2_ALGTH_ADDR (MEM_DMA_ADDR + 0x16) + #define DMA2_CTRL_ADDR (MEM_DMA_ADDR + 0x18) + #define DMA2_OFFSET_ADDR (MEM_DMA_ADDR + 0x1A) +#endif + +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + // DMA Channel 3 configuration + //--------------------------- + + #define DMA3_RAD_ADDR (MEM_DMA_ADDR + 0x30) + #define DMA3_RDPTH_ADDR (MEM_DMA_ADDR + 0x32) + #define DMA3_AAD_ADDR (MEM_DMA_ADDR + 0x34) + #define DMA3_ALGTH_ADDR (MEM_DMA_ADDR + 0x36) + #define DMA3_CTRL_ADDR (MEM_DMA_ADDR + 0x38) + #define DMA3_OFFSET_ADDR (MEM_DMA_ADDR + 0x3A) + + // DMA Channel 4 configuration + //--------------------------- + + #define DMA4_RAD_ADDR (MEM_DMA_ADDR + 0x40) + #define DMA4_RDPTH_ADDR (MEM_DMA_ADDR + 0x42) + #define DMA4_AAD_ADDR (MEM_DMA_ADDR + 0x44) + #define DMA4_ALGTH_ADDR (MEM_DMA_ADDR + 0x46) + #define DMA4_CTRL_ADDR (MEM_DMA_ADDR + 0x48) + #define DMA4_OFFSET_ADDR (MEM_DMA_ADDR + 0x4A) +#endif + +/*---------------------------------------------------------------/ +/* DMA_ALLOCDMA() */ +/*--------------------------------------------------------------*/ +/* Parameters : none */ +/* Return : none */ +/* Functionality : alloc DMA channel */ +/*--------------------------------------------------------------*/ + +#if ((CHIPSET == 4) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)) + // WARNING : + // Only the first two channels can be configured and the last two channels are forced to be controlled by the ARM + #define DMA_ALLOCDMA(channel0, channel1, dma_burst,priority) { \ + * (volatile unsigned short *) DMA_CONFIG_ADDR = (dma_burst << 2) | (priority << 5); \ + * (volatile unsigned short *) DMA_ALLOC_CONFIG_ADDR = channel0 | (channel1 << 1) | 0x000C; \ + } +#else + #define DMA_ALLOCDMA(channel0, channel1,dma_burst,priority) (* (volatile unsigned short *) DMA_CONFIG_ADDR = channel0 | channel1 << 1 | dma_burst << 2 | priority << 5) +#endif + +#endif /* CHIPSET != 12 */ +