/************************************************************************
 *
 * defBF561.h
 *
 * (c) Copyright 2001-2003 Analog Devices, Inc.  All rights reserved.
 *
 ************************************************************************/

/* SYSTEM MMR REGISTER AND MEMORY MAP FOR ADSP-BF561 */

#ifndef _DEF_BF561_H
#define _DEF_BF561_H

/*
 * #if !defined(__ADSPBF561__)
 * #warning defBF561.h should only be included for BF561 chip.
 * #endif
 */

// include all Core registers and bit definitions
#include <asm/cpu/def_LPBlackfin.h>

//*****************************************************************************
// System MMR Register Map
//*****************************************************************************

//// Clock and System Control (0xFFC00000 - 0xFFC000FF)
#define PLL_CTL			0xFFC00000	// PLL Control register (16-bit)
#define PLL_DIV		        0xFFC00004	// PLL Divide Register (16-bit)
#define VR_CTL		        0xFFC00008	// Voltage Regulator
						// Control Register (16-bit)
#define PLL_STAT		0xFFC0000C	// PLL Status register (16-bit)
#define PLL_LOCKCNT		0xFFC00010	// PLL Lock Count register
						// (16-bit)

// System Reset and Interrupt Controller registers for
// core A (0xFFC0 0100-0xFFC0 01FF)
#define SICA_SWRST              0xFFC00100	// Software Reset register
#define SICA_SYSCR              0xFFC00104	// System Reset Configuration 
						// register
#define SICA_RVECT              0xFFC00108	// SIC Reset Vector Address
						// Register
#define SICA_IMASK              0xFFC0010C	// SIC Interrupt Mask
						// register 0 - hack to fix
						// old tests
#define SICA_IMASK0             0xFFC0010C	// SIC Interrupt Mask
						// register 0
#define SICA_IMASK1             0xFFC00110	// SIC Interrupt Mask
						// register 1
#define SICA_IAR0               0xFFC00124	// SIC Interrupt Assignment
						// Register 0
#define SICA_IAR1               0xFFC00128	// SIC Interrupt Assignment
						// Register 1
#define SICA_IAR2               0xFFC0012C	// SIC Interrupt Assignment
						// Register 2
#define SICA_IAR3               0xFFC00130	// SIC Interrupt Assignment
						// Register 3
#define SICA_IAR4               0xFFC00134	// SIC Interrupt Assignment
						// Register 4
#define SICA_IAR5               0xFFC00138	// SIC Interrupt Assignment
						// Register 5
#define SICA_IAR6               0xFFC0013C	// SIC Interrupt Assignment
						// Register 6
#define SICA_IAR7               0xFFC00140	// SIC Interrupt Assignment
						// Register 7
#define SICA_ISR0               0xFFC00114	// SIC Interrupt Status
						// register 0
#define SICA_ISR1               0xFFC00118	// SIC Interrupt Status
						// register 1
#define SICA_IWR0               0xFFC0011C	// SIC Interrupt
						// Wakeup-Enable register 0
#define SICA_IWR1               0xFFC00120	// SIC Interrupt
						// Wakeup-Enable register 1

// System Reset and Interrupt Controller registers for
// Core B (0xFFC0 1100-0xFFC0 11FF)
#define SICB_SWRST              0xFFC01100	// reserved
#define SICB_SYSCR              0xFFC01104	// reserved
#define SICB_RVECT              0xFFC01108	// SIC Reset Vector Address
						// Register
#define SICB_IMASK0             0xFFC0110C	// SIC Interrupt Mask
						// register 0
#define SICB_IMASK1             0xFFC01110	// SIC Interrupt Mask
						// register 1
#define SICB_IAR0               0xFFC01124	// SIC Interrupt Assignment
						// Register 0
#define SICB_IAR1               0xFFC01128	// SIC Interrupt Assignment
						// Register 1
#define SICB_IAR2               0xFFC0112C	// SIC Interrupt Assignment
						// Register 2
#define SICB_IAR3               0xFFC01130	// SIC Interrupt Assignment
						// Register 3
#define SICB_IAR4               0xFFC01134	// SIC Interrupt Assignment
						// Register 4
#define SICB_IAR5               0xFFC01138	// SIC Interrupt Assignment
						// Register 5
#define SICB_IAR6               0xFFC0113C	// SIC Interrupt Assignment
						// Register 6
#define SICB_IAR7               0xFFC01140	// SIC Interrupt Assignment
						// Register 7
#define SICB_ISR0               0xFFC01114	// SIC Interrupt Status
						// register 0
#define SICB_ISR1               0xFFC01118	// SIC Interrupt Status
						// register 1
#define SICB_IWR0               0xFFC0111C	// SIC Interrupt
						// Wakeup-Enable register 0
#define SICB_IWR1               0xFFC01120	// SIC Interrupt
						// Wakeup-Enable register 1

// Watchdog Timer registers for Core A (0xFFC0 0200-0xFFC0 02FF)
#define WDOGA_CTL 		0xFFC00200	// Watchdog Control register
#define WDOGA_CNT 		0xFFC00204	// Watchdog Count register
#define WDOGA_STAT 		0xFFC00208	// Watchdog Status register

// Watchdog Timer registers for Core B (0xFFC0 1200-0xFFC0 12FF)
#define WDOGB_CTL		0xFFC01200	// Watchdog Control register
#define WDOGB_CNT 		0xFFC01204	// Watchdog Count register
#define WDOGB_STAT 		0xFFC01208	// Watchdog Status register

// UART Controller (0xFFC00400 - 0xFFC004FF)
#define UART_THR             	0xFFC00400	// Transmit Holding register
#define UART_RBR             	0xFFC00400	// Receive Buffer register
#define UART_DLL              	0xFFC00400	// Divisor Latch (Low-Byte)
#define UART_IER              	0xFFC00404	// Interrupt Enable Register
#define UART_DLH              	0xFFC00404	// Divisor Latch (High-Byte)
#define UART_IIR              	0xFFC00408	// Interrupt Identification
						// Register
#define UART_LCR              	0xFFC0040C	// Line Control Register
#define UART_MCR		0xFFC00410	// Modem Control Register
#define UART_LSR              	0xFFC00414	// Line Status Register
#define UART_MSR            	0xFFC00418	// Modem Status Register
#define UART_SCR              	0xFFC0041C	// SCR Scratch Register
#define UART_GCTL      	      	0xFFC00424	// Global Control Register

// SPI Controller (0xFFC00500 - 0xFFC005FF)
#define SPI_CTL          	0xFFC00500	// SPI Control Register
#define SPI_FLG               	0xFFC00504	// SPI Flag register
#define SPI_STAT              	0xFFC00508	// SPI Status register
#define SPI_TDBR              	0xFFC0050C	// SPI Transmit Data
						// Buffer Register
#define SPI_RDBR              	0xFFC00510	// SPI Receive Data
						// Buffer Register
#define SPI_BAUD              	0xFFC00514	// SPI Baud rate
						// Register
#define SPI_SHADOW            	0xFFC00518	// SPI_RDBR Shadow
						// Register

// Timer 0-7 registers (0xFFC0 0600-0xFFC0 06FF)
#define TIMER0_CONFIG 		0xFFC00600	// Timer0 Configuration 
						// register
#define TIMER0_COUNTER 		0xFFC00604	// Timer0 Counter register
#define TIMER0_PERIOD 		0xFFC00608	// Timer0 Period register
#define TIMER0_WIDTH 		0xFFC0060C	// Timer0 Width register
#define TIMER1_CONFIG 		0xFFC00610	// Timer1 Configuration 
						// register
#define TIMER1_COUNTER 		0xFFC00614	// Timer1 Counter register
#define TIMER1_PERIOD 		0xFFC00618	// Timer1 Period register
#define TIMER1_WIDTH 		0xFFC0061C	// Timer1 Width register
#define TIMER2_CONFIG 		0xFFC00620	// Timer2 Configuration 
						// register
#define TIMER2_COUNTER 		0xFFC00624	// Timer2 Counter register
#define TIMER2_PERIOD 		0xFFC00628	// Timer2 Period register
#define TIMER2_WIDTH 		0xFFC0062C	// Timer2 Width register
#define TIMER3_CONFIG 		0xFFC00630	// Timer3 Configuration 
						// register
#define TIMER3_COUNTER 		0xFFC00634	// Timer3 Counter register
#define TIMER3_PERIOD 		0xFFC00638	// Timer3 Period register
#define TIMER3_WIDTH 		0xFFC0063C	// Timer3 Width register
#define TIMER4_CONFIG 		0xFFC00640	// Timer4 Configuration
						// register
#define TIMER4_COUNTER 		0xFFC00644	// Timer4 Counter register
#define TIMER4_PERIOD 		0xFFC00648	// Timer4 Period register
#define TIMER4_WIDTH 		0xFFC0064C	// Timer4 Width register
#define TIMER5_CONFIG 		0xFFC00650	// Timer5 Configuration 
						// register
#define TIMER5_COUNTER 		0xFFC00654	// Timer5 Counter register
#define TIMER5_PERIOD 		0xFFC00658	// Timer5 Period register
#define TIMER5_WIDTH 		0xFFC0065C	// Timer5 Width register
#define TIMER6_CONFIG 		0xFFC00660	// Timer6 Configuration 
						// register
#define TIMER6_COUNTER 		0xFFC00664	// Timer6 Counter register
#define TIMER6_PERIOD 		0xFFC00668	// Timer6 Period register
#define TIMER6_WIDTH 		0xFFC0066C	// Timer6 Width register
#define TIMER7_CONFIG 		0xFFC00670	// Timer7 Configuration 
						// register
#define TIMER7_COUNTER 		0xFFC00674	// Timer7 Counter register
#define TIMER7_PERIOD 		0xFFC00678	// Timer7 Period register
#define TIMER7_WIDTH 		0xFFC0067C	// Timer7 Width register

#define TMRS8_ENABLE 		0xFFC00680	// Timer Enable Register
#define TMRS8_DISABLE 		0xFFC00684	// Timer Disable register
#define TMRS8_STATUS 		0xFFC00688	// Timer Status register

// Timer registers 8-11 (0xFFC0 1600-0xFFC0 16FF)
#define TIMER8_CONFIG 		0xFFC01600	// Timer8 Configuration 
						// register
#define TIMER8_COUNTER 		0xFFC01604	// Timer8 Counter register
#define TIMER8_PERIOD 		0xFFC01608	// Timer8 Period register
#define TIMER8_WIDTH 		0xFFC0160C	// Timer8 Width register
#define TIMER9_CONFIG 		0xFFC01610	// Timer9 Configuration 
						// register
#define TIMER9_COUNTER 		0xFFC01614	// Timer9 Counter register
#define TIMER9_PERIOD 		0xFFC01618	// Timer9 Period register
#define TIMER9_WIDTH 		0xFFC0161C	// Timer9 Width register
#define TIMER10_CONFIG 		0xFFC01620	// Timer10 Configuration 
						// register
#define TIMER10_COUNTER		0xFFC01624	// Timer10 Counter register
#define TIMER10_PERIOD 		0xFFC01628	// Timer10 Period register
#define TIMER10_WIDTH 		0xFFC0162C	// Timer10 Width register
#define TIMER11_CONFIG 		0xFFC01630	// Timer11 Configuration 
						// register
#define TIMER11_COUNTER		0xFFC01634	// Timer11 Counter register
#define TIMER11_PERIOD 		0xFFC01638	// Timer11 Period register
#define TIMER11_WIDTH 		0xFFC0163C	// Timer11 Width register

#define TMRS4_ENABLE 		0xFFC01640	// Timer Enable Register
#define TMRS4_DISABLE 		0xFFC01644	// Timer Disable register
#define TMRS4_STATUS 		0xFFC01648	// Timer Status register

// Programmable Flag 0 registers (0xFFC0 0700-0xFFC0 07FF)
#define FIO0_FLAG_D 		0xFFC00700	// Flag Data register
#define FIO0_FLAG_C 	        0xFFC00704	// Flag Clear register
#define FIO0_FLAG_S 	        0xFFC00708	// Flag Set register
#define FIO0_FLAG_T 	        0xFFC0070C	// Flag Toggle register
#define FIO0_MASKA_D 	        0xFFC00710	// Flag Mask Interrupt A Data
			        		// register
#define FIO0_MASKA_C 	        0xFFC00714	// Flag Mask Interrupt A Clear
			        		// register
#define FIO0_MASKA_S 	        0xFFC00718	// Flag Mask Interrupt A Set
			        		// register
#define FIO0_MASKA_T 	        0xFFC0071C	// Flag Mask Interrupt A Toggle
			        		// register
#define FIO0_MASKB_D 	        0xFFC00720	// Flag Mask Interrupt B Data
			        		// register
#define FIO0_MASKB_C 	        0xFFC00724	// Flag Mask Interrupt B Clear
			        		// register
#define FIO0_MASKB_S 	        0xFFC00728	// Flag Mask Interrupt B Set
			        		// register
#define FIO0_MASKB_T 	        0xFFC0072C	// Flag Mask Interrupt B Toggle
						// register
#define FIO0_DIR 		0xFFC00730	// Flag Direction  register
#define FIO0_POLAR 	        0xFFC00734	// Flag Polarity register
#define FIO0_EDGE 	        0xFFC00738	// Flag Interrupt Sensitivity 
			        		// register
#define FIO0_BOTH 	        0xFFC0073C	// Flag Set on Both Edges 
			        		// register
#define FIO0_INEN 	        0xFFC00740	// Flag Input Enable register

// Programmable Flag 1 registers (0xFFC0 1500-0xFFC0 15FF)
#define FIO1_FLAG_D 	        0xFFC01500	// Flag Data register
#define FIO1_FLAG_C 	        0xFFC01504	// Flag Clear register
#define FIO1_FLAG_S 	        0xFFC01508	// Flag Set register
#define FIO1_FLAG_T 	        0xFFC0150C	// Flag Toggle register
#define FIO1_MASKA_D 	        0xFFC01510	// Flag Mask Interrupt A Data
			        		// register
#define FIO1_MASKA_C 	        0xFFC01514	// Flag Mask Interrupt A Clear
			        		// register
#define FIO1_MASKA_S 	        0xFFC01518	// Flag Mask Interrupt A Set
			        		// register
#define FIO1_MASKA_T 	        0xFFC0151C	// Flag Mask Interrupt A Toggle
			        		// register
#define FIO1_MASKB_D 	        0xFFC01520	// Flag Mask Interrupt B Data
			        		// register
#define FIO1_MASKB_C 	        0xFFC01524	// Flag Mask Interrupt B Clear
			        		// register
#define FIO1_MASKB_S 	        0xFFC01528	// Flag Mask Interrupt B Set
			        		// register
#define FIO1_MASKB_T 	        0xFFC0152C	// Flag Mask Interrupt B Toggle
			        		// register
#define FIO1_DIR 	       	0xFFC01530	// Flag Direction register
#define FIO1_POLAR 	       	0xFFC01534	// Flag Polarity register
#define FIO1_EDGE 	       	0xFFC01538	// Flag  Interrupt Sensitivity 
						// register
#define FIO1_BOTH 	       	0xFFC0153C	// Flag Set on Both Edges 
						// register
#define FIO1_INEN 	       	0xFFC01540	// Flag Input Enable register

// Programmable Flag registers (0xFFC0 1700-0xFFC0 17FF)
#define FIO2_FLAG_D 	        0xFFC01700	// Flag Data register
#define FIO2_FLAG_C 	        0xFFC01704	// Flag Clear register
#define FIO2_FLAG_S 	        0xFFC01708	// Flag Set register
#define FIO2_FLAG_T 	        0xFFC0170C	// Flag Toggle register
#define FIO2_MASKA_D 	        0xFFC01710	// Flag Mask Interrupt A Data
			        		// register
#define FIO2_MASKA_C 	        0xFFC01714	// Flag Mask Interrupt A Clear
			        		// register
#define FIO2_MASKA_S 	        0xFFC01718	// Flag Mask Interrupt A Set
			        		// register
#define FIO2_MASKA_T 	        0xFFC0171C	// Flag Mask Interrupt A Toggle
			        		// register
#define FIO2_MASKB_D 	        0xFFC01720	// Flag Mask Interrupt B Data
			        		// register
#define FIO2_MASKB_C 	        0xFFC01724	// Flag Mask Interrupt B Clear
			        		// register
#define FIO2_MASKB_S 	        0xFFC01728	// Flag Mask Interrupt B Set
			        		// register
#define FIO2_MASKB_T 	        0xFFC0172C	// Flag Mask Interrupt B Toggle
			        		// register
#define FIO2_DIR 	      	0xFFC01730	// Flag Direction register
#define FIO2_POLAR 	       	0xFFC01734	// Flag Polarity register
#define FIO2_EDGE 	       	0xFFC01738	// Flag Interrupt Sensitivity 
						// register
#define FIO2_BOTH 	       	0xFFC0173C	// Flag Set on Both Edges 
						// register
#define FIO2_INEN 	       	0xFFC01740	// Flag Input Enable register

//// SPORT0 Controller (0xFFC00800 - 0xFFC008FF)
#define SPORT0_TCR1      	0xFFC00800	// SPORT0 Transmit
						// Configuration 1 Register
#define SPORT0_TCR2      	0xFFC00804	// SPORT0 Transmit
						// Configuration 2 Register
#define SPORT0_TCLKDIV  	0xFFC00808	// SPORT0 Transmit Clock Divider
#define SPORT0_TFSDIV           0xFFC0080C	// SPORT0 Transmit
			        		// Frame Sync Divider
#define SPORT0_TX	        0xFFC00810	// SPORT0 TX Data Register
#define SPORT0_RX	        0xFFC00818	// SPORT0 RX Data Register
#define SPORT0_RCR1            	0xFFC00820	// SPORT0 Transmit
						// Configuration 1 Register
#define SPORT0_RCR2            	0xFFC00824	// SPORT0 Transmit
						// Configuration 2 Register
#define SPORT0_RCLKDIV          0xFFC00828	// SPORT0 Receive Clock Divider
#define SPORT0_RFSDIV           0xFFC0082C	// SPORT0 Receive
			        		// Frame Sync Divider
#define SPORT0_STAT             0xFFC00830	// SPORT0 Status Register
#define SPORT0_CHNL             0xFFC00834	// SPORT0 Current
			        		// Channel Register
#define SPORT0_MCMC1            0xFFC00838	// SPORT0 Multi-Channel
			        		// Configuration Register 1
#define SPORT0_MCMC2            0xFFC0083C	// SPORT0 Multi-Channel
			        		// Configuration Register 2
#define SPORT0_MTCS0            0xFFC00840	// SPORT0 Multi-Channel
			        		// Transmit Select Register 0
#define SPORT0_MTCS1            0xFFC00844	// SPORT0 Multi-Channel
			        		// Transmit Select Register 1
#define SPORT0_MTCS2            0xFFC00848	// SPORT0 Multi-Channel
			        		// Transmit Select Register 2
#define SPORT0_MTCS3            0xFFC0084C	// SPORT0 Multi-Channel
			        		// Transmit Select Register 3
#define SPORT0_MRCS0            0xFFC00850	// SPORT0 Multi-Channel
			        		// Receive Select Register 0
#define SPORT0_MRCS1            0xFFC00854	// SPORT0 Multi-Channel
			        		// Receive Select Register 1
#define SPORT0_MRCS2            0xFFC00858	// SPORT0 Multi-Channel
			        		// Receive Select Register 2
#define SPORT0_MRCS3            0xFFC0085C	// SPORT0 Multi-Channel
			        		// Receive Select Register 3

//// SPORT1 Controller (0xFFC00900 - 0xFFC009FF)
#define SPORT1_TCR1             0xFFC00900	// SPORT1 Transmit
			        		// Configuration 1 Register
#define SPORT1_TCR2             0xFFC00904	// SPORT1 Transmit
			        		// Configuration 2 Register
#define SPORT1_TCLKDIV        	0xFFC00908	// SPORT1 Transmit Clock Divider
#define SPORT1_TFSDIV          	0xFFC0090C	// SPORT1 Transmit
						// Frame Sync Divider
#define SPORT1_TX	        0xFFC00910	// SPORT1 TX Data Register
#define SPORT1_RX	        0xFFC00918	// SPORT1 RX Data Register
#define SPORT1_RCR1      	0xFFC00920	// SPORT1 Transmit
						// Configuration 1 Register
#define SPORT1_RCR2   		0xFFC00924	// SPORT1 Transmit
						// Configuration 2 Register
#define SPORT1_RCLKDIV    	0xFFC00928	// SPORT1 Receive Clock Divider
#define SPORT1_RFSDIV           0xFFC0092C	// SPORT1 Receive
			        		// Frame Sync Divider
#define SPORT1_STAT             0xFFC00930	// SPORT1 Status Register
#define SPORT1_CHNL             0xFFC00934	// SPORT1 Current
			        		// Channel Register
#define SPORT1_MCMC1            0xFFC00938	// SPORT1 Multi-Channel
			        		// Configuration Register 1
#define SPORT1_MCMC2            0xFFC0093C	// SPORT1 Multi-Channel
			        		// Configuration Register 2
#define SPORT1_MTCS0            0xFFC00940	// SPORT1 Multi-Channel
			        		// Transmit Select Register 0
#define SPORT1_MTCS1            0xFFC00944	// SPORT1 Multi-Channel
			        		// Transmit Select Register 1
#define SPORT1_MTCS2            0xFFC00948	// SPORT1 Multi-Channel
			        		// Transmit Select Register 2
#define SPORT1_MTCS3            0xFFC0094C	// SPORT1 Multi-Channel
			        		// Transmit Select Register 3
#define SPORT1_MRCS0            0xFFC00950	// SPORT1 Multi-Channel
			        		// Receive Select Register 0
#define SPORT1_MRCS1            0xFFC00954	// SPORT1 Multi-Channel
			        		// Receive Select Register 1
#define SPORT1_MRCS2            0xFFC00958	// SPORT1 Multi-Channel
			        		// Receive Select Register 2
#define SPORT1_MRCS3            0xFFC0095C	// SPORT1 Multi-Channel
			        		// Receive Select Register 3

// Asynchronous Memory Controller - External Bus Interface Unit 
#define EBIU_AMGCTL		0xFFC00A00	// Asynchronous Memory 
						// Global Control Register
#define EBIU_AMBCTL0		0xFFC00A04	// Asynchronous Memory
						// Bank Control Register 0
#define EBIU_AMBCTL1		0xFFC00A08	// Asynchronous Memory
						// Bank Control Register 1

// SDRAM Controller External Bus Interface Unit (0xFFC00A00 - 0xFFC00AFF)
#define EBIU_SDGCTL		0xFFC00A10	// SDRAM Global Control 
						// Register
#define EBIU_SDBCTL		0xFFC00A14	// SDRAM Bank Control Register
#define EBIU_SDRRC 		0xFFC00A18	// SDRAM Refresh Rate Control 
						// Register
#define EBIU_SDSTAT		0xFFC00A1C	// SDRAM Status Register

// Parallel Peripheral Interface (PPI) 0 registers (0xFFC0 1000-0xFFC0 10FF)
#define PPI0_CONTROL 		0xFFC01000	// PPI0 Control register
#define PPI0_STATUS 		0xFFC01004	// PPI0 Status register
#define PPI0_COUNT 		0xFFC01008	// PPI0 Transfer Count register
#define PPI0_DELAY 		0xFFC0100C	// PPI0 Delay Count register
#define PPI0_FRAME 		0xFFC01010	// PPI0 Frame Length register

//Parallel Peripheral Interface (PPI) 1 registers (0xFFC0 1300-0xFFC0 13FF)
#define PPI1_CONTROL		0xFFC01300	// PPI1 Control register
#define PPI1_STATUS 		0xFFC01304	// PPI1 Status register
#define PPI1_COUNT 		0xFFC01308	// PPI1 Transfer Count register
#define PPI1_DELAY 		0xFFC0130C	// PPI1 Delay Count register
#define PPI1_FRAME 		0xFFC01310	// PPI1 Frame Length register

// DMA Traffic controls
#define DMA_TCPER		0xFFC00B0C	// Traffic Control Periods
						// Register
#define DMA_TCCNT		0xFFC00B10	// Traffic Control Current
						// Counts Register
#define DMA_TC_PER		0xFFC00B0C	// Traffic Control Periods
						// Register
#define DMA_TC_CNT		0xFFC00B10	// Traffic Control Current
						// Counts Register

// DMA1 Controller registers (0xFFC0 1C00-0xFFC0 1FFF)
#define DMA1_0_CONFIG		0xFFC01C08	// DMA1 Channel 0 Configuration
						// register
#define DMA1_0_NEXT_DESC_PTR	0xFFC01C00	// DMA1 Channel 0 Next
						// Descripter Ptr Reg
#define DMA1_0_START_ADDR	0xFFC01C04	// DMA1 Channel 0 Start Address
#define DMA1_0_X_COUNT		0xFFC01C10	// DMA1 Channel 0 Inner Loop
						// Count
#define DMA1_0_Y_COUNT		0xFFC01C18	// DMA1 Channel 0 Outer Loop
						// Count
#define DMA1_0_X_MODIFY		0xFFC01C14	// DMA1 Channel 0 Inner Loop
						// Addr Increment
#define DMA1_0_Y_MODIFY		0xFFC01C1C	// DMA1 Channel 0 Outer Loop
						// Addr Increment
#define DMA1_0_CURR_DESC_PTR	0xFFC01C20	// DMA1 Channel 0 Current
						// Descriptor Pointer
#define DMA1_0_CURR_ADDR	0xFFC01C24	// DMA1 Channel 0 Current 
						// Address Pointer
#define DMA1_0_CURR_X_COUNT	0xFFC01C30	// DMA1 Channel 0 Current Inner
						// Loop Count
#define DMA1_0_CURR_Y_COUNT	0xFFC01C38	// DMA1 Channel 0 Current Outer
						// Loop Count
#define DMA1_0_IRQ_STATUS	0xFFC01C28	// DMA1 Channel 0 Interrupt
						// Status Register
#define DMA1_0_PERIPHERAL_MAP	0xFFC01C2C	// DMA1 Channel 0 Peripheral
						// Map Register

#define DMA1_1_CONFIG		0xFFC01C48	// DMA1 Channel 1 Configuration
						// register
#define DMA1_1_NEXT_DESC_PTR	0xFFC01C40	// DMA1 Channel 1 Next
						// Descripter Ptr Reg
#define DMA1_1_START_ADDR	0xFFC01C44	// DMA1 Channel 1 Start Address
#define DMA1_1_X_COUNT		0xFFC01C50	// DMA1 Channel 1 Inner Loop
						// Count
#define DMA1_1_Y_COUNT		0xFFC01C58	// DMA1 Channel 1 Outer Loop
						// Count
#define DMA1_1_X_MODIFY		0xFFC01C54	// DMA1 Channel 1 Inner Loop
						// Addr Increment
#define DMA1_1_Y_MODIFY		0xFFC01C5C	// DMA1 Channel 1 Outer Loop
						// Addr Increment
#define DMA1_1_CURR_DESC_PTR	0xFFC01C60	// DMA1 Channel 1 Current
						// Descriptor Pointer
#define DMA1_1_CURR_ADDR	0xFFC01C64	// DMA1 Channel 1 Current
						// Address Pointer
#define DMA1_1_CURR_X_COUNT	0xFFC01C70	// DMA1 Channel 1 Current Inner
						// Loop Count
#define DMA1_1_CURR_Y_COUNT	0xFFC01C78	// DMA1 Channel 1 Current Outer
						// Loop Count
#define DMA1_1_IRQ_STATUS	0xFFC01C68	// DMA1 Channel 1 Interrupt
						// Status Register
#define DMA1_1_PERIPHERAL_MAP	0xFFC01C6C	// DMA1 Channel 1 Peripheral
						// Map Register

#define DMA1_2_CONFIG		0xFFC01C88	// DMA1 Channel 2 Configuration
						// register
#define DMA1_2_NEXT_DESC_PTR	0xFFC01C80	// DMA1 Channel 2 Next
						// Descripter Ptr Reg
#define DMA1_2_START_ADDR	0xFFC01C84	// DMA1 Channel 2 Start Address
#define DMA1_2_X_COUNT		0xFFC01C90	// DMA1 Channel 2 Inner Loop
						// Count
#define DMA1_2_Y_COUNT		0xFFC01C98	// DMA1 Channel 2 Outer Loop
						// Count
#define DMA1_2_X_MODIFY		0xFFC01C94	// DMA1 Channel 2 Inner Loop
						// Addr Increment
#define DMA1_2_Y_MODIFY		0xFFC01C9C	// DMA1 Channel 2 Outer Loop
						// Addr Increment
#define DMA1_2_CURR_DESC_PTR	0xFFC01CA0	// DMA1 Channel 2 Current
						// Descriptor Pointer
#define DMA1_2_CURR_ADDR	0xFFC01CA4	// DMA1 Channel 2 Current
						// Address Pointer
#define DMA1_2_CURR_X_COUNT	0xFFC01CB0	// DMA1 Channel 2 Current Inner
						// Loop Count
#define DMA1_2_CURR_Y_COUNT	0xFFC01CB8	// DMA1 Channel 2 Current Outer
						// Loop Count
#define DMA1_2_IRQ_STATUS	0xFFC01CA8	// DMA1 Channel 2 Interrupt
						// Status Register
#define DMA1_2_PERIPHERAL_MAP	0xFFC01CAC	// DMA1 Channel 2 Peripheral
						// Map Register

#define DMA1_3_CONFIG		0xFFC01CC8	// DMA1 Channel 3 Configuration
						// register
#define DMA1_3_NEXT_DESC_PTR	0xFFC01CC0	// DMA1 Channel 3 Next
						// Descripter Ptr Reg
#define DMA1_3_START_ADDR	0xFFC01CC4	// DMA1 Channel 3 Start Address
#define DMA1_3_X_COUNT		0xFFC01CD0	// DMA1 Channel 3 Inner Loop
						// Count
#define DMA1_3_Y_COUNT		0xFFC01CD8	// DMA1 Channel 3 Outer Loop
						// Count
#define DMA1_3_X_MODIFY		0xFFC01CD4	// DMA1 Channel 3 Inner Loop
						// Addr Increment
#define DMA1_3_Y_MODIFY		0xFFC01CDC	// DMA1 Channel 3 Outer Loop
						// Addr Increment
#define DMA1_3_CURR_DESC_PTR	0xFFC01CE0	// DMA1 Channel 3 Current
						// Descriptor Pointer
#define DMA1_3_CURR_ADDR	0xFFC01CE4	// DMA1 Channel 3 Current
						// Address Pointer
#define DMA1_3_CURR_X_COUNT	0xFFC01CF0	// DMA1 Channel 3 Current Inner
						// Loop Count
#define DMA1_3_CURR_Y_COUNT	0xFFC01CF8	// DMA1 Channel 3 Current Outer
						// Loop Count
#define DMA1_3_IRQ_STATUS	0xFFC01CE8	// DMA1 Channel 3 Interrupt
						// Status Register
#define DMA1_3_PERIPHERAL_MAP	0xFFC01CEC	// DMA1 Channel 3 Peripheral
						// Map Register

#define DMA1_4_CONFIG		0xFFC01D08	// DMA1 Channel 4 Configuration
						// register
#define DMA1_4_NEXT_DESC_PTR	0xFFC01D00	// DMA1 Channel 4 Next
						// Descripter Ptr Reg
#define DMA1_4_START_ADDR	0xFFC01D04	// DMA1 Channel 4 Start Address
#define DMA1_4_X_COUNT		0xFFC01D10	// DMA1 Channel 4 Inner Loop
						// Count
#define DMA1_4_Y_COUNT		0xFFC01D18	// DMA1 Channel 4 Outer Loop
						// Count
#define DMA1_4_X_MODIFY		0xFFC01D14	// DMA1 Channel 4 Inner Loop
						// Addr Increment
#define DMA1_4_Y_MODIFY		0xFFC01D1C	// DMA1 Channel 4 Outer Loop
						// Addr Increment
#define DMA1_4_CURR_DESC_PTR	0xFFC01D20	// DMA1 Channel 4 Current
						// Descriptor Pointer
#define DMA1_4_CURR_ADDR	0xFFC01D24	// DMA1 Channel 4 Current
						// Address Pointer
#define DMA1_4_CURR_X_COUNT	0xFFC01D30	// DMA1 Channel 4 Current Inner
						// Loop Count
#define DMA1_4_CURR_Y_COUNT	0xFFC01D38	// DMA1 Channel 4 Current Outer
						// Loop Count
#define DMA1_4_IRQ_STATUS	0xFFC01D28	// DMA1 Channel 4 Interrupt
						// Status Register
#define DMA1_4_PERIPHERAL_MAP	0xFFC01D2C	// DMA1 Channel 4 Peripheral
						// Map Register

#define DMA1_5_CONFIG		0xFFC01D48	// DMA1 Channel 5 Configuration
						// register
#define DMA1_5_NEXT_DESC_PTR	0xFFC01D40	// DMA1 Channel 5 Next
						// Descripter Ptr Reg
#define DMA1_5_START_ADDR	0xFFC01D44	// DMA1 Channel 5 Start Address
#define DMA1_5_X_COUNT		0xFFC01D50	// DMA1 Channel 5 Inner Loop
						// Count
#define DMA1_5_Y_COUNT		0xFFC01D58	// DMA1 Channel 5 Outer Loop
						// Count
#define DMA1_5_X_MODIFY		0xFFC01D54	// DMA1 Channel 5 Inner Loop
						// Addr Increment
#define DMA1_5_Y_MODIFY		0xFFC01D5C	// DMA1 Channel 5 Outer Loop
						// Addr Increment
#define DMA1_5_CURR_DESC_PTR	0xFFC01D60	// DMA1 Channel 5 Current
						// Descriptor Pointer
#define DMA1_5_CURR_ADDR	0xFFC01D64	// DMA1 Channel 5 Current
						// Address Pointer
#define DMA1_5_CURR_X_COUNT	0xFFC01D70	// DMA1 Channel 5 Current Inner
						// Loop Count
#define DMA1_5_CURR_Y_COUNT	0xFFC01D78	// DMA1 Channel 5 Current Outer
						// Loop Count
#define DMA1_5_IRQ_STATUS	0xFFC01D68	// DMA1 Channel 5 Interrupt
						// Status Register
#define DMA1_5_PERIPHERAL_MAP	0xFFC01D6C	// DMA1 Channel 5 Peripheral
						// Map Register

#define DMA1_6_CONFIG		0xFFC01D88	// DMA1 Channel 6 Configuration
						// register
#define DMA1_6_NEXT_DESC_PTR	0xFFC01D80	// DMA1 Channel 6 Next
						// Descripter Ptr Reg
#define DMA1_6_START_ADDR	0xFFC01D84	// DMA1 Channel 6 Start Address
#define DMA1_6_X_COUNT		0xFFC01D90	// DMA1 Channel 6 Inner Loop
						// Count
#define DMA1_6_Y_COUNT		0xFFC01D98	// DMA1 Channel 6 Outer Loop
						// Count
#define DMA1_6_X_MODIFY		0xFFC01D94	// DMA1 Channel 6 Inner Loop
						// Addr Increment
#define DMA1_6_Y_MODIFY		0xFFC01D9C	// DMA1 Channel 6 Outer Loop
						// Addr Increment
#define DMA1_6_CURR_DESC_PTR	0xFFC01DA0	// DMA1 Channel 6 Current
						// Descriptor Pointer
#define DMA1_6_CURR_ADDR	0xFFC01DA4	// DMA1 Channel 6 Current
						// Address Pointer
#define DMA1_6_CURR_X_COUNT	0xFFC01DB0	// DMA1 Channel 6 Current Inner
						// Loop Count
#define DMA1_6_CURR_Y_COUNT	0xFFC01DB8	// DMA1 Channel 6 Current Outer
						// Loop Count
#define DMA1_6_IRQ_STATUS	0xFFC01DA8	// DMA1 Channel 6 Interrupt
						// /Status Register
#define DMA1_6_PERIPHERAL_MAP	0xFFC01DAC	// DMA1 Channel 6 Peripheral
						// Map Register

#define DMA1_7_CONFIG		0xFFC01DC8	// DMA1 Channel 7 Configuration
						// register
#define DMA1_7_NEXT_DESC_PTR	0xFFC01DC0	// DMA1 Channel 7 Next
						// Descripter Ptr Reg
#define DMA1_7_START_ADDR	0xFFC01DC4	// DMA1 Channel 7 Start Address
#define DMA1_7_X_COUNT		0xFFC01DD0	// DMA1 Channel 7 Inner Loop
						// Count
#define DMA1_7_Y_COUNT		0xFFC01DD8	// DMA1 Channel 7 Outer Loop
						// Count
#define DMA1_7_X_MODIFY		0xFFC01DD4	// DMA1 Channel 7 Inner Loop
						// Addr Increment
#define DMA1_7_Y_MODIFY		0xFFC01DDC	// DMA1 Channel 7 Outer Loop
						// Addr Increment
#define DMA1_7_CURR_DESC_PTR	0xFFC01DE0	// DMA1 Channel 7 Current
						// Descriptor Pointer
#define DMA1_7_CURR_ADDR	0xFFC01DE4	// DMA1 Channel 7 Current
						// Address Pointer
#define DMA1_7_CURR_X_COUNT	0xFFC01DF0	// DMA1 Channel 7 Current Inner
						// Loop Count
#define DMA1_7_CURR_Y_COUNT	0xFFC01DF8	// DMA1 Channel 7 Current Outer
						// Loop Count
#define DMA1_7_IRQ_STATUS	0xFFC01DE8	// DMA1 Channel 7 Interrupt
						// /Status Register
#define DMA1_7_PERIPHERAL_MAP	0xFFC01DEC	// DMA1 Channel 7 Peripheral
						// Map Register

#define DMA1_8_CONFIG		0xFFC01E08	// DMA1 Channel 8 Configuration
						// register
#define DMA1_8_NEXT_DESC_PTR	0xFFC01E00	// DMA1 Channel 8 Next
						// Descripter Ptr Reg
#define DMA1_8_START_ADDR	0xFFC01E04	// DMA1 Channel 8 Start Address
#define DMA1_8_X_COUNT		0xFFC01E10	// DMA1 Channel 8 Inner Loop
						// Count
#define DMA1_8_Y_COUNT		0xFFC01E18	// DMA1 Channel 8 Outer Loop
						// Count
#define DMA1_8_X_MODIFY		0xFFC01E14	// DMA1 Channel 8 Inner Loop
						// Addr Increment
#define DMA1_8_Y_MODIFY		0xFFC01E1C	// DMA1 Channel 8 Outer Loop
						// Addr Increment
#define DMA1_8_CURR_DESC_PTR	0xFFC01E20	// DMA1 Channel 8 Current
						// Descriptor Pointer
#define DMA1_8_CURR_ADDR	0xFFC01E24	// DMA1 Channel 8 Current
						// Address Pointer
#define DMA1_8_CURR_X_COUNT	0xFFC01E30	// DMA1 Channel 8 Current Inner
						// Loop Count
#define DMA1_8_CURR_Y_COUNT	0xFFC01E38	// DMA1 Channel 8 Current Outer
						// Loop Count
#define DMA1_8_IRQ_STATUS	0xFFC01E28	// DMA1 Channel 8 Interrupt
						// /Status Register
#define DMA1_8_PERIPHERAL_MAP	0xFFC01E2C	// DMA1 Channel 8 Peripheral
						// Map Register

#define DMA1_9_CONFIG		0xFFC01E48	// DMA1 Channel 9 Configuration
						// register
#define DMA1_9_NEXT_DESC_PTR	0xFFC01E40	// DMA1 Channel 9 Next
						// Descripter Ptr Reg
#define DMA1_9_START_ADDR	0xFFC01E44	// DMA1 Channel 9 Start Address
#define DMA1_9_X_COUNT		0xFFC01E50	// DMA1 Channel 9 Inner Loop
						// Count
#define DMA1_9_Y_COUNT		0xFFC01E58	// DMA1 Channel 9 Outer Loop
						// Count
#define DMA1_9_X_MODIFY		0xFFC01E54	// DMA1 Channel 9 Inner Loop
						// Addr Increment
#define DMA1_9_Y_MODIFY		0xFFC01E5C	// DMA1 Channel 9 Outer Loop
						// Addr Increment
#define DMA1_9_CURR_DESC_PTR	0xFFC01E60	// DMA1 Channel 9 Current
						// Descriptor Pointer
#define DMA1_9_CURR_ADDR	0xFFC01E64	// DMA1 Channel 9 Current
						// Address Pointer
#define DMA1_9_CURR_X_COUNT	0xFFC01E70	// DMA1 Channel 9 Current Inner
						// Loop Count
#define DMA1_9_CURR_Y_COUNT	0xFFC01E78	// DMA1 Channel 9 Current Outer
						// Loop Count
#define DMA1_9_IRQ_STATUS	0xFFC01E68	// DMA1 Channel 9 Interrupt
						// /Status Register
#define DMA1_9_PERIPHERAL_MAP	0xFFC01E6C	// DMA1 Channel 9 Peripheral
						// Map Register

#define DMA1_10_CONFIG		0xFFC01E88	// DMA1 Channel 10 Configuration
						// register
#define DMA1_10_NEXT_DESC_PTR	0xFFC01E80	// DMA1 Channel 10 Next
						// Descripter Ptr Reg
#define DMA1_10_START_ADDR	0xFFC01E84	// DMA1 Channel 10 Start Address
#define DMA1_10_X_COUNT		0xFFC01E90	// DMA1 Channel 10 Inner Loop
						// Count
#define DMA1_10_Y_COUNT		0xFFC01E98	// DMA1 Channel 10 Outer Loop
						// Count
#define DMA1_10_X_MODIFY	0xFFC01E94	// DMA1 Channel 10 Inner Loop
						// Addr Increment
#define DMA1_10_Y_MODIFY	0xFFC01E9C	// DMA1 Channel 10 Outer Loop
						// Addr Increment
#define DMA1_10_CURR_DESC_PTR	0xFFC01EA0	// DMA1 Channel 10 Current
						// Descriptor Pointer
#define DMA1_10_CURR_ADDR	0xFFC01EA4	// DMA1 Channel 10 Current
						// Address Pointer
#define DMA1_10_CURR_X_COUNT	0xFFC01EB0	// DMA1 Channel 10 Current Inner
						// Loop Count
#define DMA1_10_CURR_Y_COUNT	0xFFC01EB8	// DMA1 Channel 10 Current Outer
						// Loop Count
#define DMA1_10_IRQ_STATUS	0xFFC01EA8	// DMA1 Channel 10 Interrupt
						// /Status Register
#define DMA1_10_PERIPHERAL_MAP	0xFFC01EAC	// DMA1 Channel 10 Peripheral 
						// Map Register

#define DMA1_11_CONFIG		0xFFC01EC8	// DMA1 Channel 11 Configuration
						// register
#define DMA1_11_NEXT_DESC_PTR	0xFFC01EC0	// DMA1 Channel 11 Next
						// Descripter Ptr Reg
#define DMA1_11_START_ADDR	0xFFC01EC4	// DMA1 Channel 11 Start Address
#define DMA1_11_X_COUNT		0xFFC01ED0	// DMA1 Channel 11 Inner Loop
						// Count
#define DMA1_11_Y_COUNT		0xFFC01ED8	// DMA1 Channel 11 Outer Loop
						// Count
#define DMA1_11_X_MODIFY	0xFFC01ED4	// DMA1 Channel 11 Inner Loop
						// Addr Increment
#define DMA1_11_Y_MODIFY	0xFFC01EDC	// DMA1 Channel 11 Outer Loop
						// Addr Increment
#define DMA1_11_CURR_DESC_PTR	0xFFC01EE0	// DMA1 Channel 11 Current
						// Descriptor Pointer
#define DMA1_11_CURR_ADDR	0xFFC01EE4	// DMA1 Channel 11 Current
						// Address Pointer
#define DMA1_11_CURR_X_COUNT	0xFFC01EF0	// DMA1 Channel 11 Current Inner
						// Loop Count
#define DMA1_11_CURR_Y_COUNT	0xFFC01EF8	// DMA1 Channel 11 Current Outer
						// Loop Count
#define DMA1_11_IRQ_STATUS	0xFFC01EE8	// DMA1 Channel 11 Interrupt
						// /Status Register
#define DMA1_11_PERIPHERAL_MAP	0xFFC01EEC	// DMA1 Channel 11 Peripheral 
						// Map Register

// Memory DMA1 Controller registers (0xFFC0 1E80-0xFFC0 1FFF)
#define MDMA1_D0_CONFIG		0xFFC01F08	// MemDMA1 Stream 0 Destination
						// Configuration
#define MDMA1_D0_NEXT_DESC_PTR	0xFFC01F00	// MemDMA1 Stream 0
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA1_D0_START_ADDR	0xFFC01F04	// MemDMA1 Stream 0 Destination
						// Start Address
#define MDMA1_D0_X_COUNT	0xFFC01F10	// MemDMA1 Stream 0 Destination
						// Inner-Loop Count
#define MDMA1_D0_Y_COUNT	0xFFC01F18	// MemDMA1 Stream 0 Destination
						// Outer-Loop Count
#define MDMA1_D0_X_MODIFY	0xFFC01F14	// MemDMA1 Stream 0 Dest
						// Inner-Loop Address-Increment
#define MDMA1_D0_Y_MODIFY	0xFFC01F1C	// MemDMA1 Stream 0 Dest
						// Outer-Loop Address-Increment
#define MDMA1_D0_CURR_DESC_PTR	0xFFC01F20	// MemDMA1 Stream 0 Dest
						// Current Descriptor Ptr reg
#define MDMA1_D0_CURR_ADDR	0xFFC01F24	// MemDMA1 Stream 0 Destination
						// Current Address
#define MDMA1_D0_CURR_X_COUNT	0xFFC01F30	// MemDMA1 Stream 0 Dest
						// Current Inner-Loop Count
#define MDMA1_D0_CURR_Y_COUNT	0xFFC01F38	// MemDMA1 Stream 0 Dest
						// Current Outer-Loop Count
#define MDMA1_D0_IRQ_STATUS	0xFFC01F28	// MemDMA1 Stream 0 Destination
						// Interrupt/Status
#define MDMA1_D0_PERIPHERAL_MAP	0xFFC01F2C	// MemDMA1 Stream 0
						// Destination Peripheral Map

#define MDMA1_S0_CONFIG		0xFFC01F48	// MemDMA1 Stream 0 Source
						// Configuration
#define MDMA1_S0_NEXT_DESC_PTR	0xFFC01F40	// MemDMA1 Stream 0 Source
						// Next Descriptor Ptr Reg
#define MDMA1_S0_START_ADDR	0xFFC01F44	// MemDMA1 Stream 0 Source
						// Start Address
#define MDMA1_S0_X_COUNT	0xFFC01F50	// MemDMA1 Stream 0 Source
						// Inner-Loop Count
#define MDMA1_S0_Y_COUNT	0xFFC01F58	// MemDMA1 Stream 0 Source
						// Outer-Loop Count
#define MDMA1_S0_X_MODIFY	0xFFC01F54	// MemDMA1 Stream 0 Source
						// Inner-Loop Address-Increment
#define MDMA1_S0_Y_MODIFY	0xFFC01F5C	// MemDMA1 Stream 0 Source
						// Outer-Loop Address-Increment
#define MDMA1_S0_CURR_DESC_PTR	0xFFC01F60	// MemDMA1 Stream 0 Source
						// Current Descriptor Ptr reg
#define MDMA1_S0_CURR_ADDR	0xFFC01F64	// MemDMA1 Stream 0 Source
						// Current Address
#define MDMA1_S0_CURR_X_COUNT	0xFFC01F70	// MemDMA1 Stream 0 Source
						// Current Inner-Loop Count
#define MDMA1_S0_CURR_Y_COUNT `	0xFFC01F78	// MemDMA1 Stream 0 Source
						// Current Outer-Loop Count
#define MDMA1_S0_IRQ_STATUS	0xFFC01F68	// MemDMA1 Stream 0 Source
						// Interrupt/Status
#define MDMA1_S0_PERIPHERAL_MAP 0xFFC01F6C	// MemDMA1 Stream 0 Source
						// Peripheral Map

#define MDMA1_D1_CONFIG		0xFFC01F88	// MemDMA1 Stream 1 Destination
						// Configuration
#define MDMA1_D1_NEXT_DESC_PTR	0xFFC01F80	// MemDMA1 Stream 1
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA1_D1_START_ADDR	0xFFC01F84	// MemDMA1 Stream 1 Destination
						// Start Address
#define MDMA1_D1_X_COUNT	0xFFC01F90	// MemDMA1 Stream 1 Destination
						// Inner-Loop Count
#define MDMA1_D1_Y_COUNT	0xFFC01F98	// MemDMA1 Stream 1 Destination
						// Outer-Loop Count
#define MDMA1_D1_X_MODIFY	0xFFC01F94	// MemDMA1 Stream 1 Dest
						// Inner-Loop Address-Increment
#define MDMA1_D1_Y_MODIFY	0xFFC01F9C	// MemDMA1 Stream 1 Dest
						// Outer-Loop Address-Increment
#define MDMA1_D1_CURR_DESC_PTR	0xFFC01FA0	// MemDMA1 Stream 1 Dest
						// Current Descriptor Ptr reg
#define MDMA1_D1_CURR_ADDR	0xFFC01FA4	// MemDMA1 Stream 1 Dest
						// Current Address
#define MDMA1_D1_CURR_X_COUNT	0xFFC01FB0	// MemDMA1 Stream 1 Dest
						// Current Inner-Loop Count
#define MDMA1_D1_CURR_Y_COUNT	0xFFC01FB8	// MemDMA1 Stream 1 Dest
						// Current Outer-Loop Count
#define MDMA1_D1_IRQ_STATUS	0xFFC01FA8	// MemDMA1 Stream 1 Dest
						// Interrupt/Status
#define MDMA1_D1_PERIPHERAL_MAP 0xFFC01FAC	// MemDMA1 Stream 1 Dest
						// Peripheral Map

#define MDMA1_S1_CONFIG		0xFFC01FC8	// MemDMA1 Stream 1 Source
						// Configuration
#define MDMA1_S1_NEXT_DESC_PTR	0xFFC01FC0	// MemDMA1 Stream 1 Source
						// Next Descriptor Ptr Reg
#define MDMA1_S1_START_ADDR	0xFFC01FC4	// MemDMA1 Stream 1 Source
						// Start Address
#define MDMA1_S1_X_COUNT	0xFFC01FD0	// MemDMA1 Stream 1 Source
						// Inner-Loop Count
#define MDMA1_S1_Y_COUNT	0xFFC01FD8	// MemDMA1 Stream 1 Source
						// Outer-Loop Count
#define MDMA1_S1_X_MODIFY	0xFFC01FD4	// MemDMA1 Stream 1 Source
						// Inner-Loop Address-Increment
#define MDMA1_S1_Y_MODIFY	0xFFC01FDC	// MemDMA1 Stream 1 Source
						// Outer-Loop Address-Increment
#define MDMA1_S1_CURR_DESC_PTR	0xFFC01FE0	// MemDMA1 Stream 1 Source
						// Current Descriptor Ptr reg
#define MDMA1_S1_CURR_ADDR	0xFFC01FE4	// MemDMA1 Stream 1 Source
						// Current Address
#define MDMA1_S1_CURR_X_COUNT	0xFFC01FF0	// MemDMA1 Stream 1 Source
						// Current Inner-Loop Count
#define MDMA1_S1_CURR_Y_COUNT	0xFFC01FF8	// MemDMA1 Stream 1 Source
						// Current Outer-Loop Count
#define MDMA1_S1_IRQ_STATUS	0xFFC01FE8	// MemDMA1 Stream 1 Source
						// Interrupt/Status
#define MDMA1_S1_PERIPHERAL_MAP 0xFFC01FEC	// MemDMA1 Stream 1 Source
						// Peripheral Map

// DMA2 Controller registers (0xFFC0 0C00-0xFFC0 0DFF)
#define DMA2_0_CONFIG		0xFFC00C08	// DMA2 Channel 0 Configuration
						// register
#define DMA2_0_NEXT_DESC_PTR	0xFFC00C00	// DMA2 Channel 0 Next
						// Descripter Ptr Reg
#define DMA2_0_START_ADDR	0xFFC00C04	// DMA2 Channel 0 Start Address
#define DMA2_0_X_COUNT		0xFFC00C10	// DMA2 Channel 0 Inner Loop
						// Count
#define DMA2_0_Y_COUNT		0xFFC00C18	// DMA2 Channel 0 Outer Loop
						// Count
#define DMA2_0_X_MODIFY		0xFFC00C14	// DMA2 Channel 0 Inner Loop
						// Addr Increment
#define DMA2_0_Y_MODIFY		0xFFC00C1C	// DMA2 Channel 0 Outer Loop
						// Addr Increment
#define DMA2_0_CURR_DESC_PTR	0xFFC00C20	// DMA2 Channel 0 Current
						// Descriptor Pointer
#define DMA2_0_CURR_ADDR	0xFFC00C24	// DMA2 Channel 0 Current
						// Address Pointer
#define DMA2_0_CURR_X_COUNT	0xFFC00C30	// DMA2 Channel 0 Current Inner
						// Loop Count
#define DMA2_0_CURR_Y_COUNT	0xFFC00C38	// DMA2 Channel 0 Current Outer
						// Loop Count
#define DMA2_0_IRQ_STATUS	0xFFC00C28	// DMA2 Channel 0 Interrupt
						// /Status Register
#define DMA2_0_PERIPHERAL_MAP	0xFFC00C2C	// DMA2 Channel 0 Peripheral
						// Map Register

#define DMA2_1_CONFIG		0xFFC00C48	// DMA2 Channel 1 Configuration
						// register
#define DMA2_1_NEXT_DESC_PTR	0xFFC00C40	// DMA2 Channel 1 Next
						// Descripter Ptr Reg
#define DMA2_1_START_ADDR	0xFFC00C44	// DMA2 Channel 1 Start Address
#define DMA2_1_X_COUNT		0xFFC00C50	// DMA2 Channel 1 Inner Loop
						// Count
#define DMA2_1_Y_COUNT		0xFFC00C58	// DMA2 Channel 1 Outer Loop
						// Count
#define DMA2_1_X_MODIFY		0xFFC00C54	// DMA2 Channel 1 Inner Loop
						// Addr Increment
#define DMA2_1_Y_MODIFY		0xFFC00C5C	// DMA2 Channel 1 Outer Loop
						// Addr Increment
#define DMA2_1_CURR_DESC_PTR	0xFFC00C60	// DMA2 Channel 1 Current
						// Descriptor Pointer
#define DMA2_1_CURR_ADDR	0xFFC00C64	// DMA2 Channel 1 Current
						// Address Pointer
#define DMA2_1_CURR_X_COUNT	0xFFC00C70	// DMA2 Channel 1 Current
						// Inner Loop Count
#define DMA2_1_CURR_Y_COUNT	0xFFC00C78	// DMA2 Channel 1 Current
						// Outer Loop Count
#define DMA2_1_IRQ_STATUS	0xFFC00C68	// DMA2 Channel 1 Interrupt
						// /Status Register
#define DMA2_1_PERIPHERAL_MAP	0xFFC00C6C	// DMA2 Channel 1 Peripheral
						// Map Register

#define DMA2_2_CONFIG		0xFFC00C88	// DMA2 Channel 2 Configuration
						// register
#define DMA2_2_NEXT_DESC_PTR	0xFFC00C80	// DMA2 Channel 2 Next
						// Descripter Ptr Reg
#define DMA2_2_START_ADDR	0xFFC00C84	// DMA2 Channel 2 Start Address
#define DMA2_2_X_COUNT		0xFFC00C90	// DMA2 Channel 2 Inner Loop
						// Count
#define DMA2_2_Y_COUNT		0xFFC00C98	// DMA2 Channel 2 Outer Loop
						// Count
#define DMA2_2_X_MODIFY		0xFFC00C94	// DMA2 Channel 2 Inner Loop
						// Addr Increment
#define DMA2_2_Y_MODIFY		0xFFC00C9C	// DMA2 Channel 2 Outer Loop
						// Addr Increment
#define DMA2_2_CURR_DESC_PTR	0xFFC00CA0	// DMA2 Channel 2 Current
						// Descriptor Pointer
#define DMA2_2_CURR_ADDR	0xFFC00CA4	// DMA2 Channel 2 Current
						// Address Pointer
#define DMA2_2_CURR_X_COUNT	0xFFC00CB0	// DMA2 Channel 2 Current Inner
						// Loop Count
#define DMA2_2_CURR_Y_COUNT	0xFFC00CB8	// DMA2 Channel 2 Current Outer
						// Loop Count
#define DMA2_2_IRQ_STATUS	0xFFC00CA8	// DMA2 Channel 2 Interrupt
						// /Status Register
#define DMA2_2_PERIPHERAL_MAP	0xFFC00CAC	// DMA2 Channel 2 Peripheral
						// Map Register

#define DMA2_3_CONFIG		0xFFC00CC8	// DMA2 Channel 3 Configuration
						// register
#define DMA2_3_NEXT_DESC_PTR	0xFFC00CC0	// DMA2 Channel 3 Next
						// Descripter Ptr Reg
#define DMA2_3_START_ADDR	0xFFC00CC4	// DMA2 Channel 3 Start Address
#define DMA2_3_X_COUNT		0xFFC00CD0	// DMA2 Channel 3 Inner Loop
						// Count
#define DMA2_3_Y_COUNT		0xFFC00CD8	// DMA2 Channel 3 Outer Loop
						// Count
#define DMA2_3_X_MODIFY		0xFFC00CD4	// DMA2 Channel 3 Inner Loop
						// Addr Increment
#define DMA2_3_Y_MODIFY		0xFFC00CDC	// DMA2 Channel 3 Outer Loop
						// Addr Increment
#define DMA2_3_CURR_DESC_PTR	0xFFC00CE0	// DMA2 Channel 3 Current
						// Descriptor Pointer
#define DMA2_3_CURR_ADDR	0xFFC00CE4	// DMA2 Channel 3 Current
						// Address Pointer
#define DMA2_3_CURR_X_COUNT	0xFFC00CF0	// DMA2 Channel 3 Current Inner
						// Loop Count
#define DMA2_3_CURR_Y_COUNT	0xFFC00CF8	// DMA2 Channel 3 Current Outer
						// Loop Count
#define DMA2_3_IRQ_STATUS	0xFFC00CE8	// DMA2 Channel 3 Interrupt
						// /Status Register
#define DMA2_3_PERIPHERAL_MAP	0xFFC00CEC	// DMA2 Channel 3 Peripheral
						// Map Register

#define DMA2_4_CONFIG		0xFFC00D08	// DMA2 Channel 4 Configuration
						// register
#define DMA2_4_NEXT_DESC_PTR	0xFFC00D00	// DMA2 Channel 4 Next
						// Descripter Ptr Reg
#define DMA2_4_START_ADDR	0xFFC00D04	// DMA2 Channel 4 Start Address
#define DMA2_4_X_COUNT		0xFFC00D10	// DMA2 Channel 4 Inner Loop
						// Count
#define DMA2_4_Y_COUNT		0xFFC00D18	// DMA2 Channel 4 Outer Loop
						// Count
#define DMA2_4_X_MODIFY		0xFFC00D14	// DMA2 Channel 4 Inner Loop
						// Addr Increment
#define DMA2_4_Y_MODIFY		0xFFC00D1C	// DMA2 Channel 4 Outer Loop
						// Addr Increment
#define DMA2_4_CURR_DESC_PTR	0xFFC00D20	// DMA2 Channel 4 Current
						// Descriptor Pointer
#define DMA2_4_CURR_ADDR	0xFFC00D24	// DMA2 Channel 4 Current
						// Address Pointer
#define DMA2_4_CURR_X_COUNT	0xFFC00D30	// DMA2 Channel 4 Current Inner
						// Loop Count
#define DMA2_4_CURR_Y_COUNT	0xFFC00D38	// DMA2 Channel 4 Current Outer
						// Loop Count
#define DMA2_4_IRQ_STATUS	0xFFC00D28	// DMA2 Channel 4 Interrupt
						// /Status Register
#define DMA2_4_PERIPHERAL_MAP	0xFFC00D2C	// DMA2 Channel 4 Peripheral
						// Map Register

#define DMA2_5_CONFIG		0xFFC00D48	// DMA2 Channel 5 Configuration
						// register
#define DMA2_5_NEXT_DESC_PTR	0xFFC00D40	// DMA2 Channel 5 Next
						// Descripter Ptr Reg
#define DMA2_5_START_ADDR	0xFFC00D44	// DMA2 Channel 5 Start Address
#define DMA2_5_X_COUNT		0xFFC00D50	// DMA2 Channel 5 Inner Loop
						// Count
#define DMA2_5_Y_COUNT		0xFFC00D58	// DMA2 Channel 5 Outer Loop
						// Count
#define DMA2_5_X_MODIFY		0xFFC00D54	// DMA2 Channel 5 Inner Loop
						// Addr Increment
#define DMA2_5_Y_MODIFY		0xFFC00D5C	// DMA2 Channel 5 Outer Loop
						// Addr Increment
#define DMA2_5_CURR_DESC_PTR	0xFFC00D60	// DMA2 Channel 5 Current
						// Descriptor Pointer
#define DMA2_5_CURR_ADDR	0xFFC00D64	// DMA2 Channel 5 Current
						// Address Pointer
#define DMA2_5_CURR_X_COUNT	0xFFC00D70	// DMA2 Channel 5 Current Inner
						// Loop Count
#define DMA2_5_CURR_Y_COUNT	0xFFC00D78	// DMA2 Channel 5 Current Outer
						// Loop Count
#define DMA2_5_IRQ_STATUS	0xFFC00D68	// DMA2 Channel 5 Interrupt
						// /Status Register
#define DMA2_5_PERIPHERAL_MAP	0xFFC00D6C	// DMA2 Channel 5 Peripheral
						// Map Register

#define DMA2_6_CONFIG		0xFFC00D88	// DMA2 Channel 6 Configuration
						// register
#define DMA2_6_NEXT_DESC_PTR	0xFFC00D80	// DMA2 Channel 6 Next
						// Descripter Ptr Reg
#define DMA2_6_START_ADDR	0xFFC00D84	// DMA2 Channel 6 Start Address
#define DMA2_6_X_COUNT		0xFFC00D90	// DMA2 Channel 6 Inner Loop
						// Count
#define DMA2_6_Y_COUNT		0xFFC00D98	// DMA2 Channel 6 Outer Loop
						// Count
#define DMA2_6_X_MODIFY		0xFFC00D94	// DMA2 Channel 6 Inner Loop
						// Addr Increment
#define DMA2_6_Y_MODIFY		0xFFC00D9C	// DMA2 Channel 6 Outer Loop
						// Addr Increment
#define DMA2_6_CURR_DESC_PTR	0xFFC00DA0	// DMA2 Channel 6 Current
						// Descriptor Pointer
#define DMA2_6_CURR_ADDR	0xFFC00DA4	// DMA2 Channel 6 Current
						// Address Pointer
#define DMA2_6_CURR_X_COUNT	0xFFC00DB0	// DMA2 Channel 6 Current Inner
						// Loop Count
#define DMA2_6_CURR_Y_COUNT	0xFFC00DB8	// DMA2 Channel 6 Current Outer
						// Loop Count
#define DMA2_6_IRQ_STATUS	0xFFC00DA8	// DMA2 Channel 6 Interrupt
						// /Status Register
#define DMA2_6_PERIPHERAL_MAP	0xFFC00DAC	// DMA2 Channel 6 Peripheral
						// Map Register

#define DMA2_7_CONFIG		0xFFC00DC8	// DMA2 Channel 7 Configuration
						// register
#define DMA2_7_NEXT_DESC_PTR	0xFFC00DC0	// DMA2 Channel 7 Next
						// Descripter Ptr Reg
#define DMA2_7_START_ADDR	0xFFC00DC4	// DMA2 Channel 7 Start Address
#define DMA2_7_X_COUNT		0xFFC00DD0	// DMA2 Channel 7 Inner Loop
						// Count
#define DMA2_7_Y_COUNT		0xFFC00DD8	// DMA2 Channel 7 Outer Loop
						// Count
#define DMA2_7_X_MODIFY		0xFFC00DD4	// DMA2 Channel 7 Inner Loop
						// Addr Increment
#define DMA2_7_Y_MODIFY		0xFFC00DDC	// DMA2 Channel 7 Outer Loop
						// Addr Increment
#define DMA2_7_CURR_DESC_PTR	0xFFC00DE0	// DMA2 Channel 7 Current
						// Descriptor Pointer
#define DMA2_7_CURR_ADDR	0xFFC00DE4	// DMA2 Channel 7 Current
						// Address Pointer
#define DMA2_7_CURR_X_COUNT	0xFFC00DF0	// DMA2 Channel 7 Current Inner
						// Loop Count
#define DMA2_7_CURR_Y_COUNT	0xFFC00DF8	// DMA2 Channel 7 Current Outer
						// Loop Count
#define DMA2_7_IRQ_STATUS	0xFFC00DE8	// DMA2 Channel 7 Interrupt
						// /Status Register
#define DMA2_7_PERIPHERAL_MAP	0xFFC00DEC	// DMA2 Channel 7 Peripheral
						// Map Register

#define DMA2_8_CONFIG		0xFFC00E08	// DMA2 Channel 8 Configuration
						// register
#define DMA2_8_NEXT_DESC_PTR	0xFFC00E00	// DMA2 Channel 8 Next
						// Descripter Ptr Reg
#define DMA2_8_START_ADDR	0xFFC00E04	// DMA2 Channel 8 Start Address
#define DMA2_8_X_COUNT		0xFFC00E10	// DMA2 Channel 8 Inner Loop
						// Count
#define DMA2_8_Y_COUNT		0xFFC00E18	// DMA2 Channel 8 Outer Loop
						// Count
#define DMA2_8_X_MODIFY		0xFFC00E14	// DMA2 Channel 8 Inner Loop
						// Addr Increment
#define DMA2_8_Y_MODIFY		0xFFC00E1C	// DMA2 Channel 8 Outer Loop
						// Addr Increment
#define DMA2_8_CURR_DESC_PTR	0xFFC00E20	// DMA2 Channel 8 Current
						// Descriptor Pointer
#define DMA2_8_CURR_ADDR	0xFFC00E24	// DMA2 Channel 8 Current
						// Address Pointer
#define DMA2_8_CURR_X_COUNT	0xFFC00E30	// DMA2 Channel 8 Current Inner
						// Loop Count
#define DMA2_8_CURR_Y_COUNT	0xFFC00E38	// DMA2 Channel 8 Current Outer
						// Loop Count
#define DMA2_8_IRQ_STATUS	0xFFC00E28	// DMA2 Channel 8 Interrupt
						// /Status Register
#define DMA2_8_PERIPHERAL_MAP	0xFFC00E2C	// DMA2 Channel 8 Peripheral
						// Map Register

#define DMA2_9_CONFIG		0xFFC00E48	// DMA2 Channel 9 Configuration
						// register
#define DMA2_9_NEXT_DESC_PTR	0xFFC00E40	// DMA2 Channel 9 Next
						// Descripter Ptr Reg
#define DMA2_9_START_ADDR	0xFFC00E44	// DMA2 Channel 9 Start Address
#define DMA2_9_X_COUNT		0xFFC00E50	// DMA2 Channel 9 Inner Loop
						// Count
#define DMA2_9_Y_COUNT		0xFFC00E58	// DMA2 Channel 9 Outer Loop
						// Count
#define DMA2_9_X_MODIFY		0xFFC00E54	// DMA2 Channel 9 Inner Loop
						// Addr Increment
#define DMA2_9_Y_MODIFY		0xFFC00E5C	// DMA2 Channel 9 Outer Loop
						// Addr Increment
#define DMA2_9_CURR_DESC_PTR	0xFFC00E60	// DMA2 Channel 9 Current
						// Descriptor Pointer
#define DMA2_9_CURR_ADDR	0xFFC00E64	// DMA2 Channel 9 Current
						// Address Pointer
#define DMA2_9_CURR_X_COUNT	0xFFC00E70	// DMA2 Channel 9 Current Inner
						// Loop Count
#define DMA2_9_CURR_Y_COUNT	0xFFC00E78	// DMA2 Channel 9 Current Outer
						// Loop Count
#define DMA2_9_IRQ_STATUS	0xFFC00E68	// DMA2 Channel 9 Interrupt
						// /Status Register
#define DMA2_9_PERIPHERAL_MAP	0xFFC00E6C	// DMA2 Channel 9 Peripheral
						// Map Register

#define DMA2_10_CONFIG		0xFFC00E88	// DMA2 Channel 10 Configuration
						// register
#define DMA2_10_NEXT_DESC_PTR	0xFFC00E80	// DMA2 Channel 10 Next
						// Descripter Ptr Reg
#define DMA2_10_START_ADDR	0xFFC00E84	// DMA2 Channel 10 Start Address
#define DMA2_10_X_COUNT		0xFFC00E90	// DMA2 Channel 10 Inner Loop
						// Count
#define DMA2_10_Y_COUNT		0xFFC00E98	// DMA2 Channel 10 Outer Loop
						// Count
#define DMA2_10_X_MODIFY	0xFFC00E94	// DMA2 Channel 10 Inner Loop
						// Addr Increment
#define DMA2_10_Y_MODIFY	0xFFC00E9C	// DMA2 Channel 10 Outer Loop
						// Addr Increment
#define DMA2_10_CURR_DESC_PTR	0xFFC00EA0	// DMA2 Channel 10 Current
						// Descriptor Pointer
#define DMA2_10_CURR_ADDR	0xFFC00EA4	// DMA2 Channel 10 Current
						// Address Pointer
#define DMA2_10_CURR_X_COUNT	0xFFC00EB0	// DMA2 Channel 10 Current Inner
						// Loop Count
#define DMA2_10_CURR_Y_COUNT	0xFFC00EB8	// DMA2 Channel 10 Current Outer
						// Loop Count
#define DMA2_10_IRQ_STATUS	0xFFC00EA8	// DMA2 Channel 10 Interrupt
						// /Status Register
#define DMA2_10_PERIPHERAL_MAP	0xFFC00EAC	// DMA2 Channel 10 Peripheral 
						// Map Register

#define DMA2_11_CONFIG		0xFFC00EC8	// DMA2 Channel 11 Configuration
						// register
#define DMA2_11_NEXT_DESC_PTR	0xFFC00EC0	// DMA2 Channel 11 Next
						// Descripter Ptr Reg
#define DMA2_11_START_ADDR	0xFFC00EC4	// DMA2 Channel 11 Start Address
#define DMA2_11_X_COUNT		0xFFC00ED0	// DMA2 Channel 11 Inner Loop
						// Count
#define DMA2_11_Y_COUNT		0xFFC00ED8	// DMA2 Channel 11 Outer Loop
						// Count
#define DMA2_11_X_MODIFY	0xFFC00ED4	// DMA2 Channel 11 Inner Loop
						// Addr Increment
#define DMA2_11_Y_MODIFY	0xFFC00EDC	// DMA2 Channel 11 Outer Loop
						// Addr Increment
#define DMA2_11_CURR_DESC_PTR	0xFFC00EE0	// DMA2 Channel 11 Current
						// Descriptor Pointer
#define DMA2_11_CURR_ADDR	0xFFC00EE4	// DMA2 Channel 11 Current
						// Address Pointer
#define DMA2_11_CURR_X_COUNT	0xFFC00EF0	// DMA2 Channel 11 Current Inner
						// Loop Count
#define DMA2_11_CURR_Y_COUNT	0xFFC00EF8	// DMA2 Channel 11 Current Outer
						// Loop Count
#define DMA2_11_IRQ_STATUS	0xFFC00EE8	// DMA2 Channel 11 Interrupt
						// /Status Register
#define DMA2_11_PERIPHERAL_MAP	0xFFC00EEC	// DMA2 Channel 11 Peripheral 
						// Map Register

// Memory DMA2 Controller registers (0xFFC0 0E80-0xFFC0 0FFF)
#define MDMA2_D0_CONFIG		0xFFC00F08	// MemDMA2 Stream 0 Destination
						// Configuration register
#define MDMA2_D0_NEXT_DESC_PTR	0xFFC00F00	// MemDMA2 Stream 0
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA2_D0_START_ADDR	0xFFC00F04	// MemDMA2 Stream 0 Destination
						// Start Address
#define MDMA2_D0_X_COUNT	0xFFC00F10	// MemDMA2 Stream 0 Dest
						// Inner-Loop Count register
#define MDMA2_D0_Y_COUNT	0xFFC00F18	// MemDMA2 Stream 0 Dest
						// Outer-Loop Count register
#define MDMA2_D0_X_MODIFY	0xFFC00F14	// MemDMA2 Stream 0 Dest
						// Inner-Loop Address-Increment
#define MDMA2_D0_Y_MODIFY	0xFFC00F1C	// MemDMA2 Stream 0 Dest
						// Outer-Loop Address-Increment
#define MDMA2_D0_CURR_DESC_PTR	0xFFC00F20	// MemDMA2 Stream 0 Dest
						// Current Descriptor Ptr reg
#define MDMA2_D0_CURR_ADDR	0xFFC00F24	// MemDMA2 Stream 0 Destination
						// Current Address
#define MDMA2_D0_CURR_X_COUNT	0xFFC00F30	// MemDMA2 Stream 0 Dest
						// Current Inner-Loop Count reg
#define MDMA2_D0_CURR_Y_COUNT	0xFFC00F38	// MemDMA2 Stream 0 Dest
						// Current Outer-Loop Count reg
#define MDMA2_D0_IRQ_STATUS	0xFFC00F28	// MemDMA2 Stream 0 Dest
						// Interrupt/Status Register
#define MDMA2_D0_PERIPHERAL_MAP 0xFFC00F2C	// MemDMA2 Stream 0
						// Destination Peripheral Map 
						// register

#define MDMA2_S0_CONFIG		0xFFC00F48	// MemDMA2 Stream 0 Source
						// Configuration register
#define MDMA2_S0_NEXT_DESC_PTR	0xFFC00F40	// MemDMA2 Stream 0 Source
						// Next Descriptor Ptr Reg
#define MDMA2_S0_START_ADDR	0xFFC00F44	// MemDMA2 Stream 0 Source
						// Start Address
#define MDMA2_S0_X_COUNT	0xFFC00F50	// MemDMA2 Stream 0 Source
						// Inner-Loop Count register
#define MDMA2_S0_Y_COUNT	0xFFC00F58	// MemDMA2 Stream 0 Source
						// Outer-Loop Count register
#define MDMA2_S0_X_MODIFY	0xFFC00F54	// MemDMA2 Stream 0 Src
						// Inner-Loop Addr-Increment reg
#define MDMA2_S0_Y_MODIFY	0xFFC00F5C	// MemDMA2 Stream 0 Src
						// Outer-Loop Addr-Increment reg
#define MDMA2_S0_CURR_DESC_PTR	0xFFC00F60	// MemDMA2 Stream 0 Source
						// Current Descriptor Ptr reg
#define MDMA2_S0_CURR_ADDR	0xFFC00F64	// MemDMA2 Stream 0 Source
						// Current Address
#define MDMA2_S0_CURR_X_COUNT	0xFFC00F70	// MemDMA2 Stream 0 Src
						// Current Inner-Loop Count reg
#define MDMA2_S0_CURR_Y_COUNT	0xFFC00F78	// MemDMA2 Stream 0 Src
						// Current Outer-Loop Count reg
#define MDMA2_S0_IRQ_STATUS	0xFFC00F68	// MemDMA2 Stream 0 Source
						// Interrupt/Status Register
#define MDMA2_S0_PERIPHERAL_MAP	0xFFC00F6C	// MemDMA2 Stream 0 Source
						// Peripheral Map register

#define MDMA2_D1_CONFIG		0xFFC00F88	// MemDMA2 Stream 1 Destination
						// Configuration register
#define MDMA2_D1_NEXT_DESC_PTR	0xFFC00F80	// MemDMA2 Stream 1
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA2_D1_START_ADDR	0xFFC00F84	// MemDMA2 Stream 1 Destination
						// Start Address
#define MDMA2_D1_X_COUNT	0xFFC00F90	// MemDMA2 Stream 1 Dest
						// Inner-Loop Count register
#define MDMA2_D1_Y_COUNT	0xFFC00F98	// MemDMA2 Stream 1 Dest
						// Outer-Loop Count register
#define MDMA2_D1_X_MODIFY	0xFFC00F94	// MemDMA2 Stream 1 Dest
						// Inner-Loop Address-Increment
#define MDMA2_D1_Y_MODIFY	0xFFC00F9C	// MemDMA2 Stream 1 Dest
						// Outer-Loop Address-Increment
#define MDMA2_D1_CURR_DESC_PTR	0xFFC00FA0	// MemDMA2 Stream 1
						// Destination Current
						// Descriptor Ptr
#define MDMA2_D1_CURR_ADDR	0xFFC00FA4	// MemDMA2 Stream 1 Destination
						// Current Address reg
#define MDMA2_D1_CURR_X_COUNT	0xFFC00FB0	// MemDMA2 Stream 1 Dest
						// Current Inner-Loop Count reg
#define MDMA2_D1_CURR_Y_COUNT	0xFFC00FB8	// MemDMA2 Stream 1 Dest
						// Current Outer-Loop Count reg
#define MDMA2_D1_IRQ_STATUS	0xFFC00FA8	// MemDMA2 Stream 1 Destination
						// Interrupt/Status Reg
#define MDMA2_D1_PERIPHERAL_MAP 0xFFC00FAC	// MemDMA2 Stream 1
						// Destination Peripheral Map 
						// register

#define MDMA2_S1_CONFIG		0xFFC00FC8	// MemDMA2 Stream 1 Source
						// Configuration register
#define MDMA2_S1_NEXT_DESC_PTR	0xFFC00FC0	// MemDMA2 Stream 1 Source
						// Next Descriptor Ptr Reg
#define MDMA2_S1_START_ADDR	0xFFC00FC4	// MemDMA2 Stream 1 Source
						// Start Address
#define MDMA2_S1_X_COUNT	0xFFC00FD0	// MemDMA2 Stream 1 Source
						// Inner-Loop Count register
#define MDMA2_S1_Y_COUNT	0xFFC00FD8	// MemDMA2 Stream 1 Source
						// Outer-Loop Count register
#define MDMA2_S1_X_MODIFY	0xFFC00FD4	// MemDMA2 Stream 1 Src
						// Inner-Loop Address-Increment
#define MDMA2_S1_Y_MODIFY	0xFFC00FDC	// MemDMA2 Stream 1 Source
						// Outer-Loop Address-Increment
#define MDMA2_S1_CURR_DESC_PTR	0xFFC00FE0	// MemDMA2 Stream 1 Source
						// Current Descriptor Ptr reg
#define MDMA2_S1_CURR_ADDR	0xFFC00FE4	// MemDMA2 Stream 1 Source
						// Current Address
#define MDMA2_S1_CURR_X_COUNT	0xFFC00FF0	// MemDMA2 Stream 1 Source
						// Current Inner-Loop Count
#define MDMA2_S1_CURR_Y_COUNT	0xFFC00FF8	// MemDMA2 Stream 1 Source
						// Current Outer-Loop Count
#define MDMA2_S1_IRQ_STATUS	0xFFC00FE8	// MemDMA2 Stream 1 Source
						// Interrupt/Status Register
#define MDMA2_S1_PERIPHERAL_MAP	0xFFC00FEC	// MemDMA2 Stream 1 Source
						// Peripheral Map register

// Internal Memory DMA Registers (0xFFC0_1800 - 0xFFC0_19FF)
#define IMDMA_D0_CONFIG		0xFFC01808	// IMDMA Stream 0 Destination
						// Configuration
#define IMDMA_D0_NEXT_DESC_PTR	0xFFC01800	// IMDMA Stream 0 Destination 
						// Next Descriptor Ptr Reg
#define IMDMA_D0_START_ADDR	0xFFC01804	// IMDMA Stream 0 Destination
						// Start Address
#define IMDMA_D0_X_COUNT	0xFFC01810	// IMDMA Stream 0 Destination
						// Inner-Loop Count
#define IMDMA_D0_Y_COUNT	0xFFC01818	// IMDMA Stream 0 Destination
						// Outer-Loop Count
#define IMDMA_D0_X_MODIFY	0xFFC01814	// IMDMA Stream 0 Dest
						// Inner-Loop Address-Increment
#define IMDMA_D0_Y_MODIFY	0xFFC0181C	// IMDMA Stream 0 Dest
						// Outer-Loop Address-Increment
#define IMDMA_D0_CURR_DESC_PTR	0xFFC01820	// IMDMA Stream 0 Destination 
						// Current Descriptor Ptr
#define IMDMA_D0_CURR_ADDR	0xFFC01824	// IMDMA Stream 0 Destination
						// Current Address
#define IMDMA_D0_CURR_X_COUNT	0xFFC01830	// IMDMA Stream 0 Destination 
						// Current Inner-Loop Count
#define IMDMA_D0_CURR_Y_COUNT	0xFFC01838	// IMDMA Stream 0 Destination 
						// Current Outer-Loop Count
#define IMDMA_D0_IRQ_STATUS	0xFFC01828	// IMDMA Stream 0 Destination
						// Interrupt/Status

#define IMDMA_S0_CONFIG		0xFFC01848	// IMDMA Stream 0 Source
						// Configuration
#define IMDMA_S0_NEXT_DESC_PTR	0xFFC01840	// IMDMA Stream 0 Source Next 
						// Descriptor Ptr Reg
#define IMDMA_S0_START_ADDR	0xFFC01844	// IMDMA Stream 0 Source Start
						// Address
#define IMDMA_S0_X_COUNT	0xFFC01850	// IMDMA Stream 0 Source
						// Inner-Loop Count
#define IMDMA_S0_Y_COUNT	0xFFC01858	// IMDMA Stream 0 Source
						// Outer-Loop Count
#define IMDMA_S0_X_MODIFY	0xFFC01854	// IMDMA Stream 0 Source
						// Inner-Loop Address-Increment
#define IMDMA_S0_Y_MODIFY	0xFFC0185C	// IMDMA Stream 0 Source
						// Outer-Loop Address-Increment
#define IMDMA_S0_CURR_DESC_PTR	0xFFC01860	// IMDMA Stream 0 Source
						// Current Descriptor Ptr reg
#define IMDMA_S0_CURR_ADDR	0xFFC01864	// IMDMA Stream 0 Source Current
						// Address
#define IMDMA_S0_CURR_X_COUNT	0xFFC01870	// IMDMA Stream 0 Source
						// Current Inner-Loop Count
#define IMDMA_S0_CURR_Y_COUNT	0xFFC01878	// IMDMA Stream 0 Source
						// Current Outer-Loop Count
#define IMDMA_S0_IRQ_STATUS	0xFFC01868	// IMDMA Stream 0 Source
						// Interrupt/Status

#define IMDMA_D1_CONFIG		0xFFC01888	// IMDMA Stream 1 Destination
						// Configuration
#define IMDMA_D1_NEXT_DESC_PTR	0xFFC01880	// IMDMA Stream 1 Destination 
						// Next Descriptor Ptr Reg
#define IMDMA_D1_START_ADDR	0xFFC01884	// IMDMA Stream 1 Destination
						// Start Address
#define IMDMA_D1_X_COUNT	0xFFC01890	// IMDMA Stream 1 Destination
						// Inner-Loop Count
#define IMDMA_D1_Y_COUNT	0xFFC01898	// IMDMA Stream 1 Destination
						// Outer-Loop Count
#define IMDMA_D1_X_MODIFY	0xFFC01894	// IMDMA Stream 1 Dest
						// Inner-Loop Address-Increment
#define IMDMA_D1_Y_MODIFY	0xFFC0189C	// IMDMA Stream 1 Dest
						// Outer-Loop Address-Increment
#define IMDMA_D1_CURR_DESC_PTR	0xFFC018A0	// IMDMA Stream 1 Destination 
						// Current Descriptor Ptr
#define IMDMA_D1_CURR_ADDR	0xFFC018A4	// IMDMA Stream 1 Destination
						// Current Address
#define IMDMA_D1_CURR_X_COUNT	0xFFC018B0	// IMDMA Stream 1 Destination 
						// Current Inner-Loop Count
#define IMDMA_D1_CURR_Y_COUNT	0xFFC018B8	// IMDMA Stream 1 Destination 
						// Current Outer-Loop Count
#define IMDMA_D1_IRQ_STATUS	0xFFC018A8	// IMDMA Stream 1 Destination
						// Interrupt/Status

#define IMDMA_S1_CONFIG		0xFFC018C8	// IMDMA Stream 1 Source
						// Configuration
#define IMDMA_S1_NEXT_DESC_PTR	0xFFC018C0	// IMDMA Stream 1 Source Next 
						// Descriptor Ptr Reg
#define IMDMA_S1_START_ADDR	0xFFC018C4	// IMDMA Stream 1 Source Start
						// Address
#define IMDMA_S1_X_COUNT	0xFFC018D0	// IMDMA Stream 1 Source
						// Inner-Loop Count
#define IMDMA_S1_Y_COUNT	0xFFC018D8	// IMDMA Stream 1 Source
						// Outer-Loop Count
#define IMDMA_S1_X_MODIFY	0xFFC018D4	// IMDMA Stream 1 Source
						// Inner-Loop Address-Increment
#define IMDMA_S1_Y_MODIFY	0xFFC018DC	// IMDMA Stream 1 Source
						// Outer-Loop Address-Increment
#define IMDMA_S1_CURR_DESC_PTR	0xFFC018E0	// IMDMA Stream 1 Source
						// Current Descriptor Ptr reg
#define IMDMA_S1_CURR_ADDR	0xFFC018E4	// IMDMA Stream 1 Source Current
						// Address
#define IMDMA_S1_CURR_X_COUNT	0xFFC018F0	// IMDMA Stream 1 Source
						// Current Inner-Loop Count
#define IMDMA_S1_CURR_Y_COUNT	0xFFC018F8	// IMDMA Stream 1 Source
						// Current Outer-Loop Count
#define IMDMA_S1_IRQ_STATUS	0xFFC018E8	// IMDMA Stream 1 Source
						// Interrupt/Status

//****************************************************************************
// System MMR Register Bits
//****************************************************************************

// ********************* PLL AND RESET MASKS ************************

//// PLL_CTL Masks
#define PLL_CLKIN              0x00000000	// Pass CLKIN to PLL
#define PLL_CLKIN_DIV2         0x00000001	// Pass CLKIN/2 to PLL
#define PLL_OFF                0x00000002	// Shut off PLL clocks
#define STOPCK_OFF             0x00000008	// Core clock off
#define PDWN                   0x00000020	// Put the PLL in a Deep
						// Sleep state
#define BYPASS                 0x00000100	// Bypass the PLL

//// PLL_DIV Masks

#define SCLK_DIV(x)  (x)	// SCLK = VCO / x

#define CCLK_DIV1              0x00000000	// CCLK = VCO / 1
#define CCLK_DIV2              0x00000010	// CCLK = VCO / 2
#define CCLK_DIV4              0x00000020	// CCLK = VCO / 4
#define CCLK_DIV8              0x00000030	// CCLK = VCO / 8

// SWRST Mask
#define SYSTEM_RESET           0x00000007	// Initiates a system
						// software reset
#define SWRST_DBL_FAULT_B      0x00000800	// SWRST Core B Double Fault
#define SWRST_DBL_FAULT_A      0x00001000	// SWRST Core A Double Fault
#define SWRST_WDT_B	       0x00002000	// SWRST Watchdog B
#define SWRST_WDT_A	       0x00004000	// SWRST Watchdog A
#define SWRST_OCCURRED         0x00008000	// SWRST Status

// *************  SYSTEM INTERRUPT CONTROLLER MASKS *****************

// SICu_IARv Masks      
// u = A or B
// v = 0 to 7
// w = 0 or 1

// Per_number = 0 to 63
// IVG_number = 7 to 15  
// Peripheral #Per_number assigned IVG #IVG_number
// Usage: 
//	r0.l = lo(Peripheral_IVG(62, 10));
//	r0.h = hi(Peripheral_IVG(62, 10));
#define Peripheral_IVG(Per_number, IVG_number)    \
				( (IVG_number) -7) << ( ((Per_number)%8) *4)

// SICx_IMASKw Masks
// masks are 32 bit wide, so two writes reguired for "64 bit" wide registers 
#define SIC_UNMASK_ALL         0x00000000	// Unmask all peripheral
						// interrupts
#define SIC_MASK_ALL           0xFFFFFFFF	// Mask all peripheral
						// interrupts
#define SIC_MASK(x)	       (1 << (x))	// Mask Peripheral #x
						// interrupt
#define SIC_UNMASK(x) (0xFFFFFFFF ^ (1 << (x)))	// Unmask Peripheral #x
						// interrupt

// SIC_IWR Masks
#define IWR_DISABLE_ALL		0x00000000	// Wakeup Disable all
						// peripherals
#define IWR_ENABLE_ALL		0xFFFFFFFF	// Wakeup Enable all
						// peripherals
// x = pos 0 to 31, for 32-63 use value-32
#define IWR_ENABLE(x)		(1 << (x))	// Wakeup Enable Peripheral
						// #x
// Wakeup Disable Peripheral #x
#define IWR_DISABLE(x)		(0xFFFFFFFF ^ (1 << (x)))

// *********  WATCHDOG TIMER MASKS  ********************8

// Watchdog Timer WDOG_CTL Register
#define	WDOGA_CTL		0xFFC00200
#define	WDOGA_CNT		0xFFC00204
#define	WDOGA_STAT		0xFFC00208
#define	WDOGB_CTL		0xFFC01200
#define	WDOGB_CNT		0xFFC01204
#define	WDOGB_STAT		0xFFC01208
#define ICTL(x)			((x<<1) & 0x0006)
#define ENABLE_RESET		0x00000000	// Set Watchdog Timer to
						// generate reset
#define ENABLE_NMI		0x00000002	// Set Watchdog Timer to
						// generate non-maskable
						// interrupt
#define ENABLE_GPI		0x00000004	// Set Watchdog Timer to
						// generate general-purpose
						// interrupt
#define DISABLE_EVT		0x00000006	// Disable Watchdog Timer
						// interrupts

#define TMR_EN			0x0000
#define TMR_DIS			0x0AD0
#define TRO			0x8000

#define ICTL_P0			0x01
#define ICTL_P1			0x02
#define TRO_P			0x0F

// ***************************** UART CONTROLLER MASKS **********************

// UART_LCR Register

#define DLAB			0x80
#define SB			0x40
#define STP			0x20
#define EPS			0x10
#define PEN			0x08
#define STB			0x04
#define WLS(x)			((x-5) & 0x03)

#define DLAB_P			0x07
#define SB_P			0x06
#define STP_P			0x05
#define EPS_P			0x04
#define PEN_P			0x03
#define STB_P			0x02
#define WLS_P1			0x01
#define WLS_P0			0x00

// UART_MCR Register
#define LOOP_ENA		0x10
#define LOOP_ENA_P		0x04

// UART_LSR Register
#define TEMT			0x40
#define THRE			0x20
#define BI			0x10
#define FE			0x08
#define PE			0x04
#define OE			0x02
#define DR			0x01

#define TEMP_P			0x06
#define THRE_P			0x05
#define BI_P			0x04
#define FE_P			0x03
#define PE_P			0x02
#define OE_P			0x01
#define DR_P			0x00

// UART_IER Register
#define ELSI			0x04
#define ETBEI			0x02
#define ERBFI			0x01

#define ELSI_P			0x02
#define ETBEI_P			0x01
#define ERBFI_P			0x00

// UART_IIR Register
#define STATUS(x)		((x << 1) & 0x06)
#define NINT			0x01
#define STATUS_P1		0x02
#define STATUS_P0		0x01
#define NINT_P			0x00

// UART_GCTL Register
#define FFE			0x20
#define FPE			0x10
#define RPOLC			0x08
#define TPOLC			0x04
#define IREN			0x02
#define UCEN			0x01

#define FFE_P			0x05
#define FPE_P			0x04
#define RPOLC_P			0x03
#define TPOLC_P			0x02
#define IREN_P			0x01
#define UCEN_P			0x00

// **********  SERIAL PORT MASKS  **********************

// SPORTx_TCR1 Masks
#define TSPEN			0x0001		// TX enable
#define ITCLK			0x0002		// Internal TX Clock Select
#define TDTYPE			0x000C		// TX Data Formatting Select
#define TLSBIT			0x0010		// TX Bit Order
#define ITFS			0x0200		// Internal TX Frame Sync Select
#define TFSR			0x0400		// TX Frame Sync Required Select
#define DITFS			0x0800		// Data Independent TX Frame Sync Select
#define LTFS			0x1000		// Low TX Frame Sync Select
#define LATFS			0x2000		// Late TX Frame Sync Select
#define TCKFE			0x4000		// TX Clock Falling Edge Select

// SPORTx_TCR2 Masks
#define SLEN			0x001F	// TX Word Length
#define TXSE			0x0100	// TX Secondary Enable
#define TSFSE			0x0200	// TX Stereo Frame Sync Enable
#define TRFST			0x0400	// TX Right-First Data Order

// SPORTx_RCR1 Masks
#define RSPEN			0x0001		// RX enable
#define IRCLK			0x0002		// Internal RX Clock Select
#define RDTYPE			0x000C		// RX Data Formatting Select
#define RULAW			0x0008		// u-Law enable
#define RALAW			0x000C		// A-Law enable
#define RLSBIT			0x0010		// RX Bit Order
#define IRFS			0x0200		// Internal RX Frame Sync Select
#define RFSR			0x0400		// RX Frame Sync Required Select
#define LRFS			0x1000		// Low RX Frame Sync Select
#define LARFS			0x2000		// Late RX Frame Sync Select
#define RCKFE			0x4000		// RX Clock Falling Edge Select

// SPORTx_RCR2 Masks
#define SLEN			0x001F	// RX Word Length
#define RXSE			0x0100	// RX Secondary Enable
#define RSFSE			0x0200	// RX Stereo Frame Sync Enable
#define RRFST			0x0400	// Right-First Data Order

//SPORTx_STAT Masks
#define RXNE			0x0001	// RX FIFO Not Empty Status
#define RUVF			0x0002	// RX Underflow Status
#define ROVF			0x0004	// RX Overflow Status
#define TXF			0x0008	// TX FIFO Full Status
#define TUVF			0x0010	// TX Underflow Status
#define TOVF			0x0020	// TX Overflow Status
#define TXHRE			0x0040	// TX Hold Register Empty

//SPORTx_MCMC1 Masks
#define WSIZE			0x0000F000	// Multichannel Window Size Field
#define WOFF			0x000003FF	// Multichannel Window Offset Field

//SPORTx_MCMC2 Masks
#define MCCRM			0x00000003	// Multichannel Clock Recovery Mode
#define MCDTXPE			0x00000004	// Multichannel DMA Transmit Packing
#define MCDRXPE			0x00000008	// Multichannel DMA Receive Packing
#define MCMEN			0x00000010	// Multichannel Frame Mode Enable
#define FSDR			0x00000080	// Multichannel Frame Sync to Data
					// Relationship
#define MFD			0x0000F000	// Multichannel Frame Delay

//  *********  PARALLEL PERIPHERAL INTERFACE (PPI) MASKS ****************  

////  PPI_CONTROL Masks        
#define PORT_EN			0x00000001	// PPI Port Enable
#define PORT_DIR		0x00000002	// PPI Port Direction
#define XFR_TYPE		0x0000000C	// PPI Transfer Type
#define PORT_CFG		0x00000030	// PPI Port Configuration
#define FLD_SEL			0x00000040	// PPI Active Field Select
#define PACK_EN			0x00000080	// PPI Packing Mode
#define DMA32			0x00000100	// PPI 32-bit DMA Enable
#define SKIP_EN			0x00000200	// PPI Skip Element Enable
#define SKIP_EO			0x00000400	// PPI Skip Even/Odd Elements
#define DLENGTH			0x00003800	// PPI Data Length
#define DLEN_8			0x0	// PPI Data Length mask for DLEN=8
#define DLEN(x)			(((x-9) & 0x07) << 11)	// PPI Data Length (only works for
					// x=10-->x=16)
#define POL			0x0000C000	// PPI Signal Polarities

//// PPI_STATUS Masks                                         
#define FLD			0x00000400	// Field Indicator
#define FT_ERR			0x00000800	// Frame Track Error
#define OVR			0x00001000	// FIFO Overflow Error
#define UNDR			0x00002000	// FIFO Underrun Error
#define ERR_DET			0x00004000	// Error Detected Indicator
#define ERR_NCOR		0x00008000	// Error Not Corrected Indicator

// **********  DMA CONTROLLER MASKS  *********************8

// DMAx_CONFIG, MDMA_yy_CONFIG, IMDMA_yy_CONFIG Masks
#define DMAEN			0x00000001	// Channel Enable
#define WNR			0x00000002	// Channel Direction (W/R*)
#define WDSIZE_8		0x00000000	// Word Size 8 bits
#define WDSIZE_16		0x00000004	// Word Size 16 bits
#define WDSIZE_32		0x00000008	// Word Size 32 bits
#define DMA2D			0x00000010	// 2D/1D* Mode
#define RESTART			0x00000020	// Restart
#define DI_SEL			0x00000040	// Data Interrupt Select
#define DI_EN			0x00000080	// Data Interrupt Enable
#define NDSIZE			0x00000900	// Next Descriptor Size
#define FLOW			0x00007000	// Flow Control

#define DMAEN_P	            	0	// Channel Enable
#define WNR_P	            	1	// Channel Direction (W/R*)
#define DMA2D_P	        	4	// 2D/1D* Mode
#define RESTART_P	      	5	// Restart
#define DI_SEL_P	     	6	// Data Interrupt Select
#define DI_EN_P	            	7	// Data Interrupt Enable

////DMAx_IRQ_STATUS, MDMA_yy_IRQ_STATUS, IMDMA_yy_IRQ_STATUS Masks

#define DMA_DONE		0x00000001	// DMA Done Indicator
#define DMA_ERR	        	0x00000002	// DMA Error Indicator
#define DFETCH	            	0x00000004	// Descriptor Fetch Indicator
#define DMA_RUN	            	0x00000008	// DMA Running Indicator

#define DMA_DONE_P	    	0	// DMA Done Indicator
#define DMA_ERR_P     		1	// DMA Error Indicator
#define DFETCH_P     		2	// Descriptor Fetch Indicator
#define DMA_RUN_P     		3	// DMA Running Indicator

////DMAx_PERIPHERAL_MAP, MDMA_yy_PERIPHERAL_MAP, IMDMA_yy_PERIPHERAL_MAP Masks

#define CTYPE			0x00000040	// DMA Channel Type Indicator
#define CTYPE_P			6	// DMA Channel Type Indicator BIT POSITION
#define PCAP8			0x00000080	// DMA 8-bit Operation Indicator
#define PCAP16			0x00000100	// DMA 16-bit Operation Indicator
#define PCAP32			0x00000200	// DMA 32-bit Operation Indicator
#define PCAPWR			0x00000400	// DMA Write Operation Indicator
#define PCAPRD			0x00000800	// DMA Read Operation Indicator
#define PMAP			0x00007000	// DMA Peripheral Map Field

//  *************  GENERAL PURPOSE TIMER MASKS  ********************

/* PWM Timer bit definitions */

// TIMER_ENABLE Register
#define TIMEN0			0x0001
#define TIMEN1			0x0002
#define TIMEN2			0x0004
#define TIMEN3			0x0008
#define TIMEN4			0x0010
#define TIMEN5			0x0020
#define TIMEN6			0x0040
#define TIMEN7			0x0080
#define TIMEN8			0x0001
#define TIMEN9			0x0002
#define TIMEN10			0x0004
#define TIMEN11			0x0008

#define TIMEN0_P		0x00
#define TIMEN1_P		0x01
#define TIMEN2_P		0x02
#define TIMEN3_P		0x03
#define TIMEN4_P		0x04
#define TIMEN5_P		0x05
#define TIMEN6_P		0x06
#define TIMEN7_P		0x07
#define TIMEN8_P		0x00
#define TIMEN9_P		0x01
#define TIMEN10_P		0x02
#define TIMEN11_P		0x03

// TIMER_DISABLE Register
#define TIMDIS0			0x0001
#define TIMDIS1			0x0002
#define TIMDIS2			0x0004
#define TIMDIS3			0x0008
#define TIMDIS4			0x0010
#define TIMDIS5			0x0020
#define TIMDIS6			0x0040
#define TIMDIS7			0x0080
#define TIMDIS8			0x0001
#define TIMDIS9			0x0002
#define TIMDIS10		0x0004
#define TIMDIS11		0x0008

#define TIMDIS0_P		0x00
#define TIMDIS1_P		0x01
#define TIMDIS2_P		0x02
#define TIMDIS3_P		0x03
#define TIMDIS4_P		0x04
#define TIMDIS5_P		0x05
#define TIMDIS6_P		0x06
#define TIMDIS7_P		0x07
#define TIMDIS8_P		0x00
#define TIMDIS9_P		0x01
#define TIMDIS10_P		0x02
#define TIMDIS11_P		0x03

// TIMER_STATUS Register
#define TIMIL0			0x00000001
#define TIMIL1			0x00000002
#define TIMIL2			0x00000004
#define TIMIL3			0x00000008
#define TIMIL4			0x00010000
#define TIMIL5			0x00020000
#define TIMIL6			0x00040000
#define TIMIL7			0x00080000
#define TIMIL8			0x0001
#define TIMIL9			0x0002
#define TIMIL10			0x0004
#define TIMIL11			0x0008
#define TOVL_ERR0		0x00000010
#define TOVL_ERR1		0x00000020
#define TOVL_ERR2		0x00000040
#define TOVL_ERR3		0x00000080
#define TOVL_ERR4		0x00100000
#define TOVL_ERR5		0x00200000
#define TOVL_ERR6		0x00400000
#define TOVL_ERR7		0x00800000
#define TOVL_ERR8		0x0010
#define TOVL_ERR9		0x0020
#define TOVL_ERR10		0x0040
#define TOVL_ERR11		0x0080
#define TRUN0			0x00001000
#define TRUN1			0x00002000
#define TRUN2			0x00004000
#define TRUN3			0x00008000
#define TRUN4			0x10000000
#define TRUN5			0x20000000
#define TRUN6			0x40000000
#define TRUN7			0x80000000
#define TRUN8			0x1000
#define TRUN9			0x2000
#define TRUN10			0x4000
#define TRUN11			0x8000

#define TIMIL0_P		0x00
#define TIMIL1_P		0x01
#define TIMIL2_P		0x02
#define TIMIL3_P		0x03
#define TIMIL4_P		0x10
#define TIMIL5_P		0x11
#define TIMIL6_P		0x12
#define TIMIL7_P		0x13
#define TIMIL8_P		0x00
#define TIMIL9_P		0x01
#define TIMIL10_P		0x02
#define TIMIL11_P		0x03
#define TOVL_ERR0_P		0x04
#define TOVL_ERR1_P		0x05
#define TOVL_ERR2_P		0x06
#define TOVL_ERR3_P		0x07
#define TOVL_ERR4_P		0x14
#define TOVL_ERR5_P		0x15
#define TOVL_ERR6_P		0x16
#define TOVL_ERR7_P		0x17
#define TOVL_ERR8_P		0x04
#define TOVL_ERR9_P		0x05
#define TOVL_ERR10_P		0x06
#define TOVL_ERR11_P		0x07
#define TRUN0_P			0x0C
#define TRUN1_P			0x0D
#define TRUN2_P			0x0E
#define TRUN3_P			0x0F
#define TRUN4_P			0x1C
#define TRUN5_P			0x1D
#define TRUN6_P			0x1E
#define TRUN7_P			0x1F
#define TRUN8_P			0x0C
#define TRUN9_P			0x0D
#define TRUN10_P		0x0E
#define TRUN11_P		0x0F

// TIMERx_CONFIG Registers
#define PWM_OUT			0x0001
#define WDTH_CAP		0x0002
#define EXT_CLK			0x0003
#define PULSE_HI		0x0004
#define PERIOD_CNT		0x0008
#define IRQ_ENA			0x0010
#define TIN_SEL			0x0020
#define OUT_DIS			0x0040
#define CLK_SEL			0x0080
#define TOGGLE_HI		0x0100
#define EMU_RUN			0x0200
#define ERR_TYP(x)		((x & 0x03) << 14)

#define TMODE_P0		0x00
#define TMODE_P1		0x01
#define PULSE_HI_P		0x02
#define PERIOD_CNT_P		0x03
#define IRQ_ENA_P		0x04
#define TIN_SEL_P		0x05
#define OUT_DIS_P		0x06
#define CLK_SEL_P		0x07
#define TOGGLE_HI_P		0x08
#define EMU_RUN_P		0x09
#define ERR_TYP_P0		0x0E
#define ERR_TYP_P1		0x0F

/// ******************   PROGRAMMABLE FLAG MASKS  *********************

//  General Purpose IO (0xFFC00700 - 0xFFC007FF)  Masks
#define PF0			0x0001
#define PF1			0x0002
#define PF2			0x0004
#define PF3			0x0008
#define PF4			0x0010
#define PF5			0x0020
#define PF6			0x0040
#define PF7			0x0080
#define PF8			0x0100
#define PF9			0x0200
#define PF10			0x0400
#define PF11			0x0800
#define PF12			0x1000
#define PF13			0x2000
#define PF14			0x4000
#define PF15			0x8000

//  General Purpose IO (0xFFC00700 - 0xFFC007FF)  BIT POSITIONS
#define PF0_P			0
#define PF1_P			1
#define PF2_P			2
#define PF3_P			3
#define PF4_P			4
#define PF5_P			5
#define PF6_P			6
#define PF7_P			7
#define PF8_P			8
#define PF9_P			9
#define PF10_P			10
#define PF11_P			11
#define PF12_P			12
#define PF13_P			13
#define PF14_P			14
#define PF15_P			15

// ***********  SERIAL PERIPHERAL INTERFACE (SPI) MASKS  ****************

//// SPI_CTL Masks
#define TIMOD			0x00000003	// Transfer initiation mode
						// and interrupt generation
#define SZ			0x00000004	// Send Zero (=0) or last
						// (=1) word when TDBR empty.
#define GM			0x00000008	// When RDBR full, get more
						// (=1) data or discard (=0)
						// incoming Data
#define PSSE			0x00000010	// Enable (=1) Slave-Select
						// input for Master.
#define EMISO			0x00000020	// Enable (=1) MISO pin as an 
						// output.
#define SIZE			0x00000100	// Word length (0 => 8 bits,
						// 1 => 16 bits)
#define LSBF			0x00000200	// Data format (0 => MSB
						// sent/received first 1 =>
						// LSB sent/received first)
#define CPHA			0x00000400	// Clock phase (0 => SPICLK
						// starts toggling in middle
						// of xfer, 1 => SPICLK
						// toggles at the beginning
						// of xfer.
#define CPOL			0x00000800	// Clock polarity (0 =>
						// active-high, 1 =>
						// active-low)
#define MSTR			0x00001000	// Configures SPI as master
						// (=1) or slave (=0)
#define WOM			0x00002000	// Open drain (=1) data
						// output enable (for MOSI
						// and MISO)
#define SPE			0x00004000	// SPI module enable (=1),
						// disable (=0)

//// SPI_FLG Masks
#define FLS1			0x00000002	// Enables (=1) SPI_FLOUT1 as 
						// flag output for SPI
						// Slave-select
#define FLS2			0x00000004	// Enables (=1) SPI_FLOUT2 as 
						// flag output for SPI
						// Slave-select
#define FLS3			0x00000008	// Enables (=1) SPI_FLOUT3 as 
						// flag output for SPI
						// Slave-select
#define FLS4			0x00000010	// Enables (=1) SPI_FLOUT4 as 
						// flag output for SPI
						// Slave-select
#define FLS5			0x00000020	// Enables (=1) SPI_FLOUT5 as 
						// flag output for SPI
						// Slave-select
#define FLS6			0x00000040	// Enables (=1) SPI_FLOUT6 as 
						// flag output for SPI
						// Slave-select
#define FLS7			0x00000080	// Enables (=1) SPI_FLOUT7 as 
						// flag output for SPI
						// Slave-select
#define FLG1			0x00000200	// Activates (=0) SPI_FLOUT1
						// as flag output for SPI
						// Slave-select
#define FLG2			0x00000400	// Activates (=0) SPI_FLOUT2
						// as flag output for SPI
						// Slave-select
#define FLG3			0x00000800	// Activates (=0) SPI_FLOUT3
						// as flag output for SPI
						// Slave-select
#define FLG4			0x00001000	// Activates (=0) SPI_FLOUT4
						// as flag output for SPI
						// Slave-select
#define FLG5			0x00002000	// Activates (=0) SPI_FLOUT5
						// as flag output for SPI
						// Slave-select
#define FLG6			0x00004000	// Activates (=0) SPI_FLOUT6
						// as flag output for SPI
						// Slave-select
#define FLG7			0x00008000	// Activates (=0) SPI_FLOUT7
						// as flag output for SPI
						// Slave-select

//// SPI_FLG Bit Positions
#define FLS1_P			0x00000001	// Enables (=1) SPI_FLOUT1 as 
						// flag output for SPI
						// Slave-select
#define FLS2_P			0x00000002	// Enables (=1) SPI_FLOUT2 as 
						// flag output for SPI
						// Slave-select
#define FLS3_P			0x00000003	// Enables (=1) SPI_FLOUT3 as 
						// flag output for SPI
						// Slave-select
#define FLS4_P			0x00000004	// Enables (=1) SPI_FLOUT4 as 
						// flag output for SPI
						// Slave-select
#define FLS5_P			0x00000005	// Enables (=1) SPI_FLOUT5 as 
						// flag output for SPI
						// Slave-select
#define FLS6_P			0x00000006	// Enables (=1) SPI_FLOUT6 as 
						// flag output for SPI
						// Slave-select
#define FLS7_P			0x00000007	// Enables (=1) SPI_FLOUT7 as 
						// flag output for SPI
						// Slave-select
#define FLG1_P			0x00000009	// Activates (=0) SPI_FLOUT1
						// as flag output for SPI
						// Slave-select
#define FLG2_P			0x0000000A	// Activates (=0) SPI_FLOUT2
						// as flag output for SPI
						// Slave-select
#define FLG3_P			0x0000000B	// Activates (=0) SPI_FLOUT3
						// as flag output for SPI
						// Slave-select
#define FLG4_P			0x0000000C	// Activates (=0) SPI_FLOUT4
						// as flag output for SPI
						// Slave-select
#define FLG5_P			0x0000000D	// Activates (=0) SPI_FLOUT5
						// as flag output for SPI
						// Slave-select
#define FLG6_P			0x0000000E	// Activates (=0) SPI_FLOUT6
						// as flag output for SPI
						// Slave-select
#define FLG7_P			0x0000000F	// Activates (=0) SPI_FLOUT7
						// as flag output for SPI
						// Slave-select

//// SPI_STAT Masks
#define SPIF			0x00000001	// Set (=1) when SPI
						// single-word transfer
						// complete
#define MODF			0x00000002	// Set (=1) in a master
						// device when some other
						// device tries to become
						// master
#define TXE			0x00000004	// Set (=1) when transmission 
						// occurs with no new data in 
						// SPI_TDBR
#define TXS			0x00000008	// SPI_TDBR Data Buffer
						// Status (0=Empty, 1=Full)
#define RBSY			0x00000010	// Set (=1) when data is
						// received with RDBR full
#define RXS			0x00000020	// SPI_RDBR Data Buffer
						// Status (0=Empty, 1=Full)
#define TXCOL			0x00000040	// When set (=1), corrupt
						// data may have been
						// transmitted

// *********************  ASYNCHRONOUS MEMORY CONTROLLER MASKS  *************

// AMGCTL Masks
#define AMCKEN			0x0001	// Enable CLKOUT
#define AMBEN_B0		0x0002	// Enable Asynchronous Memory Bank 0
					// only
#define AMBEN_B0_B1		0x0004	// Enable Asynchronous Memory Banks 0 
					// & 1 only
#define AMBEN_B0_B1_B2		0x0006	// Enable Asynchronous Memory Banks 0,
					// 1, and 2
#define AMBEN_ALL		0x0008	// Enable Asynchronous Memory Banks
					// (all) 0, 1, 2, and 3
#define B0_PEN			0x0010	// Enable 16-bit packing Bank 0
#define B1_PEN			0x0020	// Enable 16-bit packing Bank 1
#define B2_PEN			0x0040	// Enable 16-bit packing Bank 2
#define B3_PEN			0x0080	// Enable 16-bit packing Bank 3

// AMGCTL Bit Positions
#define AMCKEN_P		0x00000000	// Enable CLKOUT
#define AMBEN_P0		0x00000001	// Asynchronous Memory
						// Enable, 000 - banks 0-3
						// disabled, 001 - Bank 0
						// enabled
#define AMBEN_P1		0x00000002	// Asynchronous Memory
						// Enable, 010 - banks 0&1
						// enabled, 011 - banks 0-3
						// enabled
#define AMBEN_P2		0x00000003	// Asynchronous Memory
						// Enable, 1xx - All banks
						// (bank 0, 1, 2, and 3)
						// enabled
#define B0_PEN_P		0x004	// Enable 16-bit packing Bank 0
#define B1_PEN_P		0x005	// Enable 16-bit packing Bank 1
#define B2_PEN_P		0x006	// Enable 16-bit packing Bank 2
#define B3_PEN_P		0x007	// Enable 16-bit packing Bank 3

// AMBCTL0 Masks
#define B0RDYEN			0x00000001	// Bank 0 RDY Enable,
						// 0=disable, 1=enable
#define B0RDYPOL		0x00000002	// Bank 0 RDY Active high,
						// 0=active low, 1=active high
#define B0TT_1			0x00000004	// Bank 0 Transition Time from
						// Read to Write = 1 cycle
#define B0TT_2			0x00000008	// Bank 0 Transition Time from
						// Read to Write = 2 cycles
#define B0TT_3			0x0000000C	// Bank 0 Transition Time from
						// Read to Write = 3 cycles
#define B0TT_4			0x00000000	// Bank 0 Transition Time from
						// Read to Write = 4 cycles
#define B0ST_1			0x00000010	// Bank 0 Setup Time from AOE
						// asserted to Read/Write
						// asserted=1 cycle
#define B0ST_2			0x00000020	// Bank 0 Setup Time from AOE
						// asserted to Read/Write
						// asserted=2 cycles
#define B0ST_3			0x00000030	// Bank 0 Setup Time from AOE
						// asserted to Read/Write
						// asserted=3 cycles
#define B0ST_4			0x00000000	// Bank 0 Setup Time from AOE
						// asserted to Read/Write
						// asserted=4 cycles
#define B0HT_1			0x00000040	// Bank 0 Hold Time from
						// Read/Write deasserted to AOE
						// deasserted = 1 cycle
#define B0HT_2			0x00000080	// Bank 0 Hold Time from
						// Read/Write deasserted to AOE
						// deasserted = 2 cycles
#define B0HT_3			0x000000C0	// Bank 0 Hold Time from
						// Read/Write deasserted to AOE
						// deasserted = 3 cycles
#define B0HT_0			0x00000000	// Bank 0 Hold Time from
						// Read/Write deasserted to AOE
						// deasserted = 0 cycles
#define B0RAT_1			0x00000100	// Bank 0 Read Access Time =
						// 1 cycle
#define B0RAT_2			0x00000200	// Bank 0 Read Access Time =
						// 2 cycles
#define B0RAT_3			0x00000300	// Bank 0 Read Access Time =
						// 3 cycles
#define B0RAT_4			0x00000400	// Bank 0 Read Access Time =
						// 4 cycles
#define B0RAT_5			0x00000500	// Bank 0 Read Access Time =
						// 5 cycles
#define B0RAT_6			0x00000600	// Bank 0 Read Access Time =
						// 6 cycles
#define B0RAT_7			0x00000700	// Bank 0 Read Access Time =
						// 7 cycles
#define B0RAT_8			0x00000800	// Bank 0 Read Access Time =
						// 8 cycles
#define B0RAT_9			0x00000900	// Bank 0 Read Access Time =
						// 9 cycles
#define B0RAT_10		0x00000A00	// Bank 0 Read Access Time =
						// 10 cycles
#define B0RAT_11		0x00000B00	// Bank 0 Read Access Time =
						// 11 cycles
#define B0RAT_12		0x00000C00	// Bank 0 Read Access Time =
						// 12 cycles
#define B0RAT_13		0x00000D00	// Bank 0 Read Access Time =
						// 13 cycles
#define B0RAT_14		0x00000E00	// Bank 0 Read Access Time =
						// 14 cycles
#define B0RAT_15		0x00000F00	// Bank 0 Read Access Time =
						// 15 cycles
#define B0WAT_1			0x00001000	// Bank 0 Write Access Time = 
						// 1 cycle
#define B0WAT_2			0x00002000	// Bank 0 Write Access Time = 
						// 2 cycles
#define B0WAT_3			0x00003000	// Bank 0 Write Access Time = 
						// 3 cycles
#define B0WAT_4			0x00004000	// Bank 0 Write Access Time = 
						// 4 cycles
#define B0WAT_5			0x00005000	// Bank 0 Write Access Time = 
						// 5 cycles
#define B0WAT_6			0x00006000	// Bank 0 Write Access Time = 
						// 6 cycles
#define B0WAT_7			0x00007000	// Bank 0 Write Access Time = 
						// 7 cycles
#define B0WAT_8			0x00008000	// Bank 0 Write Access Time = 
						// 8 cycles
#define B0WAT_9			0x00009000	// Bank 0 Write Access Time = 
						// 9 cycles
#define B0WAT_10		0x0000A000	// Bank 0 Write Access Time = 
						// 10 cycles
#define B0WAT_11		0x0000B000	// Bank 0 Write Access Time = 
						// 11 cycles
#define B0WAT_12		0x0000C000	// Bank 0 Write Access Time = 
						// 12 cycles
#define B0WAT_13		0x0000D000	// Bank 0 Write Access Time = 
						// 13 cycles
#define B0WAT_14		0x0000E000	// Bank 0 Write Access Time = 
						// 14 cycles
#define B0WAT_15		0x0000F000	// Bank 0 Write Access Time = 
						// 15 cycles
#define B1RDYEN			0x00010000	// Bank 1 RDY enable,
						// 0=disable, 1=enable
#define B1RDYPOL		0x00020000	// Bank 1 RDY Active high,
						// 0=active low, 1=active
						// high
#define B1TT_1			0x00040000	// Bank 1 Transition Time
						// from Read to Write = 1
						// cycle
#define B1TT_2			0x00080000	// Bank 1 Transition Time
						// from Read to Write = 2
						// cycles
#define B1TT_3			0x000C0000	// Bank 1 Transition Time
						// from Read to Write = 3
						// cycles
#define B1TT_4			0x00000000	// Bank 1 Transition Time
						// from Read to Write = 4
						// cycles
#define B1ST_1			0x00100000	// Bank 1 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 1 cycle
#define B1ST_2			0x00200000	// Bank 1 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 2 cycles
#define B1ST_3			0x00300000	// Bank 1 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 3 cycles
#define B1ST_4			0x00000000	// Bank 1 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 4 cycles
#define B1HT_1			0x00400000	// Bank 1 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 1 cycle
#define B1HT_2			0x00800000	// Bank 1 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 2 cycles
#define B1HT_3			0x00C00000	// Bank 1 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 3 cycles
#define B1HT_0			0x00000000	// Bank 1 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 0 cycles
#define B1RAT_1			0x01000000	// Bank 1 Read Access Time =
						// 1 cycle
#define B1RAT_2			0x02000000	// Bank 1 Read Access Time =
						// 2 cycles
#define B1RAT_3			0x03000000	// Bank 1 Read Access Time =
						// 3 cycles
#define B1RAT_4			0x04000000	// Bank 1 Read Access Time =
						// 4 cycles
#define B1RAT_5			0x05000000	// Bank 1 Read Access Time =
						// 5 cycles
#define B1RAT_6			0x06000000	// Bank 1 Read Access Time =
						// 6 cycles
#define B1RAT_7			0x07000000	// Bank 1 Read Access Time =
						// 7 cycles
#define B1RAT_8			0x08000000	// Bank 1 Read Access Time =
						// 8 cycles
#define B1RAT_9			0x09000000	// Bank 1 Read Access Time =
						// 9 cycles
#define B1RAT_10		0x0A000000	// Bank 1 Read Access Time =
						// 10 cycles
#define B1RAT_11		0x0B000000	// Bank 1 Read Access Time =
						// 11 cycles
#define B1RAT_12		0x0C000000	// Bank 1 Read Access Time =
						// 12 cycles
#define B1RAT_13		0x0D000000	// Bank 1 Read Access Time =
						// 13 cycles
#define B1RAT_14		0x0E000000	// Bank 1 Read Access Time =
						// 14 cycles
#define B1RAT_15		0x0F000000	// Bank 1 Read Access Time =
						// 15 cycles
#define B1WAT_1			0x10000000	// Bank 1 Write Access Time = 
						// 1 cycle
#define B1WAT_2			0x20000000	// Bank 1 Write Access Time = 
						// 2 cycles
#define B1WAT_3			0x30000000	// Bank 1 Write Access Time = 
						// 3 cycles
#define B1WAT_4			0x40000000	// Bank 1 Write Access Time = 
						// 4 cycles
#define B1WAT_5			0x50000000	// Bank 1 Write Access Time = 
						// 5 cycles
#define B1WAT_6			0x60000000	// Bank 1 Write Access Time = 
						// 6 cycles
#define B1WAT_7			0x70000000	// Bank 1 Write Access Time = 
						// 7 cycles
#define B1WAT_8			0x80000000	// Bank 1 Write Access Time = 
						// 8 cycles
#define B1WAT_9			0x90000000	// Bank 1 Write Access Time = 
						// 9 cycles
#define B1WAT_10		0xA0000000	// Bank 1 Write Access Time = 
						// 10 cycles
#define B1WAT_11		0xB0000000	// Bank 1 Write Access Time = 
						// 11 cycles
#define B1WAT_12		0xC0000000	// Bank 1 Write Access Time = 
						// 12 cycles
#define B1WAT_13		0xD0000000	// Bank 1 Write Access Time = 
						// 13 cycles
#define B1WAT_14		0xE0000000	// Bank 1 Write Access Time = 
						// 14 cycles
#define B1WAT_15		0xF0000000	// Bank 1 Write Access Time = 
						// 15 cycles

// AMBCTL1 Masks
#define B2RDYEN			0x00000001	// Bank 2 RDY Enable,
						// 0=disable, 1=enable
#define B2RDYPOL		0x00000002	// Bank 2 RDY Active high,
						// 0=active low, 1=active
						// high
#define B2TT_1			0x00000004	// Bank 2 Transition Time
						// from Read to Write = 1
						// cycle
#define B2TT_2			0x00000008	// Bank 2 Transition Time
						// from Read to Write = 2
						// cycles
#define B2TT_3			0x0000000C	// Bank 2 Transition Time
						// from Read to Write = 3
						// cycles
#define B2TT_4			0x00000000	// Bank 2 Transition Time
						// from Read to Write = 4
						// cycles
#define B2ST_1			0x00000010	// Bank 2 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 1 cycle
#define B2ST_2			0x00000020	// Bank 2 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 2 cycles
#define B2ST_3			0x00000030	// Bank 2 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 3 cycles
#define B2ST_4			0x00000000	// Bank 2 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 4 cycles
#define B2HT_1			0x00000040	// Bank 2 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 1 cycle
#define B2HT_2			0x00000080	// Bank 2 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 2 cycles
#define B2HT_3			0x000000C0	// Bank 2 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 3 cycles
#define B2HT_0			0x00000000	// Bank 2 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 0 cycles
#define B2RAT_1			0x00000100	// Bank 2 Read Access Time =
						// 1 cycle
#define B2RAT_2			0x00000200	// Bank 2 Read Access Time =
						// 2 cycles
#define B2RAT_3			0x00000300	// Bank 2 Read Access Time =
						// 3 cycles
#define B2RAT_4			0x00000400	// Bank 2 Read Access Time =
						// 4 cycles
#define B2RAT_5			0x00000500	// Bank 2 Read Access Time =
						// 5 cycles
#define B2RAT_6			0x00000600	// Bank 2 Read Access Time =
						// 6 cycles
#define B2RAT_7			0x00000700	// Bank 2 Read Access Time =
						// 7 cycles
#define B2RAT_8			0x00000800	// Bank 2 Read Access Time =
						// 8 cycles
#define B2RAT_9			0x00000900	// Bank 2 Read Access Time =
						// 9 cycles
#define B2RAT_10		0x00000A00	// Bank 2 Read Access Time =
						// 10 cycles
#define B2RAT_11		0x00000B00	// Bank 2 Read Access Time =
						// 11 cycles
#define B2RAT_12		0x00000C00	// Bank 2 Read Access Time =
						// 12 cycles
#define B2RAT_13		0x00000D00	// Bank 2 Read Access Time =
						// 13 cycles
#define B2RAT_14		0x00000E00	// Bank 2 Read Access Time =
						// 14 cycles
#define B2RAT_15		0x00000F00	// Bank 2 Read Access Time =
						// 15 cycles
#define B2WAT_1			0x00001000	// Bank 2 Write Access Time = 
						// 1 cycle
#define B2WAT_2			0x00002000	// Bank 2 Write Access Time = 
						// 2 cycles
#define B2WAT_3			0x00003000	// Bank 2 Write Access Time = 
						// 3 cycles
#define B2WAT_4			0x00004000	// Bank 2 Write Access Time = 
						// 4 cycles
#define B2WAT_5			0x00005000	// Bank 2 Write Access Time = 
						// 5 cycles
#define B2WAT_6			0x00006000	// Bank 2 Write Access Time = 
						// 6 cycles
#define B2WAT_7			0x00007000	// Bank 2 Write Access Time = 
						// 7 cycles
#define B2WAT_8			0x00008000	// Bank 2 Write Access Time = 
						// 8 cycles
#define B2WAT_9			0x00009000	// Bank 2 Write Access Time = 
						// 9 cycles
#define B2WAT_10		0x0000A000	// Bank 2 Write Access Time = 
						// 10 cycles
#define B2WAT_11		0x0000B000	// Bank 2 Write Access Time = 
						// 11 cycles
#define B2WAT_12		0x0000C000	// Bank 2 Write Access Time = 
						// 12 cycles
#define B2WAT_13		0x0000D000	// Bank 2 Write Access Time = 
						// 13 cycles
#define B2WAT_14		0x0000E000	// Bank 2 Write Access Time = 
						// 14 cycles
#define B2WAT_15		0x0000F000	// Bank 2 Write Access Time = 
						// 15 cycles
#define B3RDYEN			0x00010000	// Bank 3 RDY enable,
						// 0=disable, 1=enable
#define B3RDYPOL		0x00020000	// Bank 3 RDY Active high,
						// 0=active low, 1=active
						// high
#define B3TT_1			0x00040000	// Bank 3 Transition Time
						// from Read to Write = 1
						// cycle
#define B3TT_2			0x00080000	// Bank 3 Transition Time
						// from Read to Write = 2
						// cycles
#define B3TT_3			0x000C0000	// Bank 3 Transition Time
						// from Read to Write = 3
						// cycles
#define B3TT_4			0x00000000	// Bank 3 Transition Time
						// from Read to Write = 4
						// cycles
#define B3ST_1			0x00100000	// Bank 3 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 1 cycle
#define B3ST_2			0x00200000	// Bank 3 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 2 cycles
#define B3ST_3			0x00300000	// Bank 3 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 3 cycles
#define B3ST_4			0x00000000	// Bank 3 Setup Time from AOE 
						// asserted to Read or Write
						// asserted = 4 cycles
#define B3HT_1			0x00400000	// Bank 3 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 1 cycle
#define B3HT_2			0x00800000	// Bank 3 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 2 cycles
#define B3HT_3			0x00C00000	// Bank 3 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 3 cycles
#define B3HT_0			0x00000000	// Bank 3 Hold Time from Read 
						// or Write deasserted to AOE 
						// deasserted = 0 cycles
#define B3RAT_1			0x01000000	// Bank 3 Read Access Time =
						// 1 cycle
#define B3RAT_2			0x02000000	// Bank 3 Read Access Time =
						// 2 cycles
#define B3RAT_3			0x03000000	// Bank 3 Read Access Time =
						// 3 cycles
#define B3RAT_4			0x04000000	// Bank 3 Read Access Time =
						// 4 cycles
#define B3RAT_5			0x05000000	// Bank 3 Read Access Time =
						// 5 cycles
#define B3RAT_6			0x06000000	// Bank 3 Read Access Time =
						// 6 cycles
#define B3RAT_7			0x07000000	// Bank 3 Read Access Time =
						// 7 cycles
#define B3RAT_8			0x08000000	// Bank 3 Read Access Time =
						// 8 cycles
#define B3RAT_9			0x09000000	// Bank 3 Read Access Time =
						// 9 cycles
#define B3RAT_10		0x0A000000	// Bank 3 Read Access Time =
						// 10 cycles
#define B3RAT_11		0x0B000000	// Bank 3 Read Access Time =
						// 11 cycles
#define B3RAT_12		0x0C000000	// Bank 3 Read Access Time =
						// 12 cycles
#define B3RAT_13		0x0D000000	// Bank 3 Read Access Time =
						// 13 cycles
#define B3RAT_14		0x0E000000	// Bank 3 Read Access Time =
						// 14 cycles
#define B3RAT_15		0x0F000000	// Bank 3 Read Access Time =
						// 15 cycles
#define B3WAT_1			0x10000000	// Bank 3 Write Access Time = 
						// 1 cycle
#define B3WAT_2			0x20000000	// Bank 3 Write Access Time = 
						// 2 cycles
#define B3WAT_3			0x30000000	// Bank 3 Write Access Time = 
						// 3 cycles
#define B3WAT_4			0x40000000	// Bank 3 Write Access Time = 
						// 4 cycles
#define B3WAT_5			0x50000000	// Bank 3 Write Access Time = 
						// 5 cycles
#define B3WAT_6			0x60000000	// Bank 3 Write Access Time = 
						// 6 cycles
#define B3WAT_7			0x70000000	// Bank 3 Write Access Time = 
						// 7 cycles
#define B3WAT_8			0x80000000	// Bank 3 Write Access Time = 
						// 8 cycles
#define B3WAT_9			0x90000000	// Bank 3 Write Access Time = 
						// 9 cycles
#define B3WAT_10		0xA0000000	// Bank 3 Write Access Time = 
						// 10 cycles
#define B3WAT_11		0xB0000000	// Bank 3 Write Access Time = 
						// 11 cycles
#define B3WAT_12		0xC0000000	// Bank 3 Write Access Time = 
						// 12 cycles
#define B3WAT_13		0xD0000000	// Bank 3 Write Access Time = 
						// 13 cycles
#define B3WAT_14		0xE0000000	// Bank 3 Write Access Time = 
						// 14 cycles
#define B3WAT_15		0xF0000000	// Bank 3 Write Access Time = 
						// 15 cycles

// **********************  SDRAM CONTROLLER MASKS  ***************************

// EBIU_SDGCTL Masks
#define SCTLE			0x00000001	// Enable SCLK[0], /SRAS,
						// /SCAS, /SWE, SDQM[3:0]
#define CL_2			0x00000008	// SDRAM CAS latency = 2
						// cycles
#define CL_3			0x0000000C	// SDRAM CAS latency = 3
						// cycles
#define PFE			0x00000010	// Enable SDRAM prefetch
#define PFP			0x00000020	// Prefetch has priority over 
						// AMC requests
#define TRAS_1			0x00000040	// SDRAM tRAS = 1 cycle
#define TRAS_2			0x00000080	// SDRAM tRAS = 2 cycles
#define TRAS_3			0x000000C0	// SDRAM tRAS = 3 cycles
#define TRAS_4			0x00000100	// SDRAM tRAS = 4 cycles
#define TRAS_5			0x00000140	// SDRAM tRAS = 5 cycles
#define TRAS_6			0x00000180	// SDRAM tRAS = 6 cycles
#define TRAS_7			0x000001C0	// SDRAM tRAS = 7 cycles
#define TRAS_8			0x00000200	// SDRAM tRAS = 8 cycles
#define TRAS_9			0x00000240	// SDRAM tRAS = 9 cycles
#define TRAS_10			0x00000280	// SDRAM tRAS = 10 cycles
#define TRAS_11			0x000002C0	// SDRAM tRAS = 11 cycles
#define TRAS_12			0x00000300	// SDRAM tRAS = 12 cycles
#define TRAS_13			0x00000340	// SDRAM tRAS = 13 cycles
#define TRAS_14			0x00000380	// SDRAM tRAS = 14 cycles
#define TRAS_15			0x000003C0	// SDRAM tRAS = 15 cycles
#define TRP_1			0x00000800	// SDRAM tRP = 1 cycle
#define TRP_2			0x00001000	// SDRAM tRP = 2 cycles
#define TRP_3			0x00001800	// SDRAM tRP = 3 cycles
#define TRP_4			0x00002000	// SDRAM tRP = 4 cycles
#define TRP_5			0x00002800	// SDRAM tRP = 5 cycles
#define TRP_6			0x00003000	// SDRAM tRP = 6 cycles
#define TRP_7			0x00003800	// SDRAM tRP = 7 cycles
#define TRCD_1			0x00008000	// SDRAM tRCD = 1 cycle
#define TRCD_2			0x00010000	// SDRAM tRCD = 2 cycles
#define TRCD_3			0x00018000	// SDRAM tRCD = 3 cycles
#define TRCD_4			0x00020000	// SDRAM tRCD = 4 cycles
#define TRCD_5			0x00028000	// SDRAM tRCD = 5 cycles
#define TRCD_6			0x00030000	// SDRAM tRCD = 6 cycles
#define TRCD_7			0x00038000	// SDRAM tRCD = 7 cycles
#define TWR_1			0x00080000	// SDRAM tWR = 1 cycle
#define TWR_2			0x00100000	// SDRAM tWR = 2 cycles
#define TWR_3			0x00180000	// SDRAM tWR = 3 cycles
#define PUPSD			0x00200000	// Power-up start delay
#define PSM			0x00400000	// SDRAM power-up sequence =
						// Precharge, mode register
						// set, 8 CBR refresh cycles
#define PSS			0x00800000	// enable SDRAM power-up
						// sequence on next SDRAM access
#define SRFS			0x01000000	// Start SDRAM self-refresh
						// mode
#define EBUFE			0x02000000	// Enable external buffering
						// timing
#define FBBRW			0x04000000	// Fast back-to-back read
						// write enable
#define EMREN			0x10000000	// Extended mode register
						// enable
#define TCSR			0x20000000	// Temp compensated self
						// refresh value 85 deg C
#define CDDBG			0x40000000	// Tristate SDRAM controls
						// during bus grant

// EBIU_SDBCTL Masks
#define EB0_E			0x00000001	// Enable SDRAM
						// external bank 0
#define EB0_SZ_16		0x00000000	// SDRAM external
						// bank size = 16MB
#define EB0_SZ_32		0x00000002	// SDRAM external
						// bank size = 32MB
#define EB0_SZ_64		0x00000004	// SDRAM external
						// bank size = 64MB
#define EB0_SZ_128		0x00000006	// SDRAM external
						// bank size = 128MB
#define EB0_CAW_8		0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EB0_CAW_9		0x00000010	// SDRAM external bank column
						// address width = 9 bits
#define EB0_CAW_10		0x00000020	// SDRAM external bank column
						// address width = 9 bits
#define EB0_CAW_11		0x00000030	// SDRAM external bank column
						// address width = 9 bits

#define EB1_E			0x00000100	// Enable SDRAM
						// external bank 1
#define EB1__SZ_16		0x00000000	// SDRAM external
						// bank size = 16MB
#define EB1__SZ_32		0x00000200	// SDRAM external
						// bank size = 32MB
#define EB1__SZ_64		0x00000400	// SDRAM external
						// bank size = 64MB
#define EB1__SZ_128		0x00000600	// SDRAM external
						// bank size = 128MB
#define EB1__CAW_8		0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EB1__CAW_9		0x00001000	// SDRAM external bank column
						// address width = 9 bits
#define EB1__CAW_10		0x00002000	// SDRAM external bank column
						// address width = 9 bits
#define EB1__CAW_11		0x00003000	// SDRAM external bank column
						// address width = 9 bits

#define EB2__E			0x00010000	// Enable SDRAM
						// external bank 2
#define EB2__SZ_16		0x00000000	// SDRAM external
						// bank size = 16MB
#define EB2__SZ_32		0x00020000	// SDRAM external
						// bank size = 32MB
#define EB2__SZ_64		0x00040000	// SDRAM external
						// bank size = 64MB
#define EB2__SZ_128		0x00060000	// SDRAM external
						// bank size = 128MB
#define EB2__CAW_8		0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EB2__CAW_9		0x00100000	// SDRAM external bank column
						// address width = 9 bits
#define EB2__CAW_10		0x00200000	// SDRAM external bank column
						// address width = 9 bits
#define EB2__CAW_11		0x00300000	// SDRAM external bank column
						// address width = 9 bits

#define EB3__E			0x01000000	// Enable SDRAM external bank 3
#define EB3__SZ_16		0x00000000	// SDRAM external
						// bank size = 16MB
#define EB3__SZ_32		0x02000000	// SDRAM external
						// bank size = 32MB
#define EB3__SZ_64		0x04000000	// SDRAM external
						// bank size = 64MB
#define EB3__SZ_128		0x06000000	// SDRAM external
						// bank size = 128MB
#define EB3__CAW_8		0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EB3__CAW_9		0x10000000	// SDRAM external bank column
						// address width = 9 bits
#define EB3__CAW_10		0x20000000	// SDRAM external bank column
						// address width = 9 bits
#define EB3__CAW_11		0x30000000	// SDRAM external bank column
						// address width = 9 bits

// EBIU_SDSTAT Masks
#define SDCI			0x00000001	// SDRAM controller is idle
#define SDSRA			0x00000002	// SDRAM SDRAM self refresh
						// is active
#define SDPUA			0x00000004	// SDRAM power up active
#define SDRS			0x00000008	// SDRAM is in reset state
#define SDEASE			0x00000010	// SDRAM EAB sticky error
						// status - W1C
#define BGSTAT			0x00000020	// Bus granted


#if 1	/* comment by mhfan */
#define COREMMR_BASE		0xFFE00000	// Core MMRs
#define SYSMMR_BASE		0xFFC00000	// System MMRs

// Watchdog Timer registers for Core A (0xFFC0 0200-0xFFC0 02FF)
#define WDOG_CTL 		0xFFC00200	// Watchdog Control register
#define WDOG_CNT 		0xFFC00204	// Watchdog Count register
#define WDOG_STAT 		0xFFC00208	// Watchdog Status register

// Programmable Flag 0 registers (0xFFC0 0700-0xFFC0 07FF)
#define FIO_FLAG_D 		0xFFC00700	// Flag Data register
#define FIO_FLAG_C 	        0xFFC00704	// Flag Clear register
#define FIO_FLAG_S 	        0xFFC00708	// Flag Set register
#define FIO_FLAG_T 	        0xFFC0070C	// Flag Toggle register
#define FIO_MASKA_D 	        0xFFC00710	// Flag Mask Interrupt A Data
						// register
#define FIO_MASKA_C 	        0xFFC00714	// Flag Mask Interrupt A Clear
						// register
#define FIO_MASKA_S 	        0xFFC00718	// Flag Mask Interrupt A Set
						// register
#define FIO_MASKA_T 	        0xFFC0071C	// Flag Mask Interrupt A Toggle
						// register
#define FIO_MASKB_D 	        0xFFC00720	// Flag Mask Interrupt B Data
						// register
#define FIO_MASKB_C 	        0xFFC00724	// Flag Mask Interrupt B Clear
						// register
#define FIO_MASKB_S 	        0xFFC00728	// Flag Mask Interrupt B Set
						// register
#define FIO_MASKB_T 	        0xFFC0072C	// Flag Mask Interrupt B Toggle
						// register
#define FIO_DIR 		0xFFC00730	// Flag Direction  register
#define FIO_POLAR 	        0xFFC00734	// Flag Polarity register
#define FIO_EDGE 	        0xFFC00738	// Flag Interrupt Sensitivity 
						// register
#define FIO_BOTH 	        0xFFC0073C	// Flag Set on Both Edges 
						// register
#define FIO_INEN 	        0xFFC00740	// Flag Input Enable register

// Parallel Peripheral Interface (PPI) 0 registers (0xFFC0 1000-0xFFC0 10FF)
#define PPI_CONTROL 		0xFFC01000	// PPI0 Control register
#define PPI_STATUS 		0xFFC01004	// PPI0 Status register
#define PPI_COUNT 		0xFFC01008	// PPI0 Transfer Count register
#define PPI_DELAY 		0xFFC0100C	// PPI0 Delay Count register
#define PPI_FRAME 		0xFFC01010	// PPI0 Frame Length register

// System Reset and Interrupt Controller registers for
// core A (0xFFC0 0100-0xFFC0 01FF)
#define SWRST			0xFFC00100	// Software Reset register
#define SYSCR			0xFFC00104	// System Reset Configuration 
						// register
#define RVECT			0xFFC00108	// SIC Reset Vector Address
						// Register
#define SIC_SWRST		0xFFC00100	// Software Reset register
#define SIC_SYSCR		0xFFC00104	// System Reset Configuration 
						// register
#define SIC_RVECT		0xFFC00108	// SIC Reset Vector Address
			    			// Register
#define SIC_IMASK		0xFFC0010C	// SIC Interrupt Mask
						// register 0 - hack to fix
						// old tests
#define SIC_IAR			0xFFC00124	// SIC Interrupt Assignment
						// Register 0
#define SIC_IAR1		0xFFC00128	// SIC Interrupt Assignment
						// Register 1
#define SIC_IAR2		0xFFC0012C	// SIC Interrupt Assignment
						// Register 2
#define SIC_ISR			0xFFC00114	// SIC Interrupt Status
						// register 0
#define SIC_IWR			0xFFC0011C	// SIC Interrupt
						// Wakeup-Enable register 0

// EBIU_SDBCTL Masks
#define EB_E			0x00000001	// Enable SDRAM
						// external bank 0
#define EB_SZ_16		0x00000000	// SDRAM external
						// bank size = 16MB
#define EB_SZ_32		0x00000002	// SDRAM external
						// bank size = 32MB
#define EB_SZ_64		0x00000004	// SDRAM external
						// bank size = 64MB
#define EB_SZ_128		0x00000006	// SDRAM external
						// bank size = 128MB
#define EB_CAW_8		0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EB_CAW_9		0x00000010	// SDRAM external bank column
						// address width = 9 bits
#define EB_CAW_10		0x00000020	// SDRAM external bank column
						// address width = 9 bits
#define EB_CAW_11		0x00000030	// SDRAM external bank column
						// address width = 9 bits

// EBIU_SDBCTL Masks
#define EBE			0x00000001	// Enable SDRAM
						// external bank 0
#define EBSZ_16			0x00000000	// SDRAM external
						// bank size = 16MB
#define EBSZ_32			0x00000002	// SDRAM external
						// bank size = 32MB
#define EBSZ_64			0x00000004	// SDRAM external
						// bank size = 64MB
#define EBSZ_128		0x00000006	// SDRAM external
						// bank size = 128MB
#define EBCAW_8			0x00000000	// SDRAM external bank column
						// address width = 8 bits
#define EBCAW_9			0x00000010	// SDRAM external bank column
						// address width = 9 bits
#define EBCAW_10		0x00000020	// SDRAM external bank column
						// address width = 9 bits
#define EBCAW_11		0x00000030	// SDRAM external bank column
						// address width = 9 bits

// Memory DMA1 Controller registers (0xFFC0 1E80-0xFFC0 1FFF)
#define MDMA_D0_CONFIG		0xFFC01F08	// MemDMA1 Stream 0 Destination
						// Configuration
#define MDMA_D0_NEXT_DESC_PTR	0xFFC01F00	// MemDMA1 Stream 0
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA_D0_START_ADDR	0xFFC01F04	// MemDMA1 Stream 0 Destination
						// Start Address
#define MDMA_D0_X_COUNT		0xFFC01F10	// MemDMA1 Stream 0 Destination
						// Inner-Loop Count
#define MDMA_D0_Y_COUNT		0xFFC01F18	// MemDMA1 Stream 0 Destination
						// Outer-Loop Count
#define MDMA_D0_X_MODIFY	0xFFC01F14	// MemDMA1 Stream 0 Dest
						// Inner-Loop Address-Increment
#define MDMA_D0_Y_MODIFY	0xFFC01F1C	// MemDMA1 Stream 0 Dest
						// Outer-Loop Address-Increment
#define MDMA_D0_CURR_DESC_PTR	0xFFC01F20	// MemDMA1 Stream 0 Dest
						// Current Descriptor Ptr reg
#define MDMA_D0_CURR_ADDR	0xFFC01F24	// MemDMA1 Stream 0 Destination
						// Current Address
#define MDMA_D0_CURR_X_COUNT	0xFFC01F30	// MemDMA1 Stream 0 Dest
						// Current Inner-Loop Count
#define MDMA_D0_CURR_Y_COUNT	0xFFC01F38	// MemDMA1 Stream 0 Dest
						// Current Outer-Loop Count
#define MDMA_D0_IRQ_STATUS	0xFFC01F28	// MemDMA1 Stream 0 Destination
						// Interrupt/Status
#define MDMA_D0_PERIPHERAL_MAP	0xFFC01F2C	// MemDMA1 Stream 0
						// Destination Peripheral Map

#define MDMA_S0_CONFIG		0xFFC01F48	// MemDMA1 Stream 0 Source
						// Configuration
#define MDMA_S0_NEXT_DESC_PTR	0xFFC01F40	// MemDMA1 Stream 0 Source
						// Next Descriptor Ptr Reg
#define MDMA_S0_START_ADDR	0xFFC01F44	// MemDMA1 Stream 0 Source
						// Start Address
#define MDMA_S0_X_COUNT		0xFFC01F50	// MemDMA1 Stream 0 Source
						// Inner-Loop Count
#define MDMA_S0_Y_COUNT		0xFFC01F58	// MemDMA1 Stream 0 Source
						// Outer-Loop Count
#define MDMA_S0_X_MODIFY	0xFFC01F54	// MemDMA1 Stream 0 Source
						// Inner-Loop Address-Increment
#define MDMA_S0_Y_MODIFY	0xFFC01F5C	// MemDMA1 Stream 0 Source
						// Outer-Loop Address-Increment
#define MDMA_S0_CURR_DESC_PTR	0xFFC01F60	// MemDMA1 Stream 0 Source
						// Current Descriptor Ptr reg
#define MDMA_S0_CURR_ADDR	0xFFC01F64	// MemDMA1 Stream 0 Source
						// Current Address
#define MDMA_S0_CURR_X_COUNT	0xFFC01F70	// MemDMA1 Stream 0 Source
						// Current Inner-Loop Count
#define MDMA_S0_CURR_Y_COUNT `	0xFFC01F78	// MemDMA1 Stream 0 Source
						// Current Outer-Loop Count
#define MDMA_S0_IRQ_STATUS	0xFFC01F68	// MemDMA1 Stream 0 Source
						// Interrupt/Status
#define MDMA_S0_PERIPHERAL_MAP	0xFFC01F6C	// MemDMA1 Stream 0 Source
						// Peripheral Map

#define MDMA_D1_CONFIG		0xFFC01F88	// MemDMA1 Stream 1 Destination
						// Configuration
#define MDMA_D1_NEXT_DESC_PTR	0xFFC01F80	// MemDMA1 Stream 1
						// Destination Next
						// Descriptor Ptr Reg
#define MDMA_D1_START_ADDR	0xFFC01F84	// MemDMA1 Stream 1 Destination
						// Start Address
#define MDMA_D1_X_COUNT		0xFFC01F90	// MemDMA1 Stream 1 Destination
						// Inner-Loop Count
#define MDMA_D1_Y_COUNT		0xFFC01F98	// MemDMA1 Stream 1 Destination
						// Outer-Loop Count
#define MDMA_D1_X_MODIFY	0xFFC01F94	// MemDMA1 Stream 1 Dest
						// Inner-Loop Address-Increment
#define MDMA_D1_Y_MODIFY	0xFFC01F9C	// MemDMA1 Stream 1 Dest
						// Outer-Loop Address-Increment
#define MDMA_D1_CURR_DESC_PTR	0xFFC01FA0	// MemDMA1 Stream 1 Dest
						// Current Descriptor Ptr reg
#define MDMA_D1_CURR_ADDR	0xFFC01FA4	// MemDMA1 Stream 1 Dest
						// Current Address
#define MDMA_D1_CURR_X_COUNT	0xFFC01FB0	// MemDMA1 Stream 1 Dest
						// Current Inner-Loop Count
#define MDMA_D1_CURR_Y_COUNT	0xFFC01FB8	// MemDMA1 Stream 1 Dest
						// Current Outer-Loop Count
#define MDMA_D1_IRQ_STATUS	0xFFC01FA8	// MemDMA1 Stream 1 Dest
						// Interrupt/Status
#define MDMA_D1_PERIPHERAL_MAP	0xFFC01FAC	// MemDMA1 Stream 1 Dest
						// Peripheral Map

#define MDMA_S1_CONFIG		0xFFC01FC8	// MemDMA1 Stream 1 Source
						// Configuration
#define MDMA_S1_NEXT_DESC_PTR	0xFFC01FC0	// MemDMA1 Stream 1 Source
						// Next Descriptor Ptr Reg
#define MDMA_S1_START_ADDR	0xFFC01FC4	// MemDMA1 Stream 1 Source
						// Start Address
#define MDMA_S1_X_COUNT		0xFFC01FD0	// MemDMA1 Stream 1 Source
						// Inner-Loop Count
#define MDMA_S1_Y_COUNT		0xFFC01FD8	// MemDMA1 Stream 1 Source
						// Outer-Loop Count
#define MDMA_S1_X_MODIFY	0xFFC01FD4	// MemDMA1 Stream 1 Source
						// Inner-Loop Address-Increment
#define MDMA_S1_Y_MODIFY	0xFFC01FDC	// MemDMA1 Stream 1 Source
						// Outer-Loop Address-Increment
#define MDMA_S1_CURR_DESC_PTR	0xFFC01FE0	// MemDMA1 Stream 1 Source
						// Current Descriptor Ptr reg
#define MDMA_S1_CURR_ADDR	0xFFC01FE4	// MemDMA1 Stream 1 Source
						// Current Address
#define MDMA_S1_CURR_X_COUNT	0xFFC01FF0	// MemDMA1 Stream 1 Source
						// Current Inner-Loop Count
#define MDMA_S1_CURR_Y_COUNT	0xFFC01FF8	// MemDMA1 Stream 1 Source
						// Current Outer-Loop Count
#define MDMA_S1_IRQ_STATUS	0xFFC01FE8	// MemDMA1 Stream 1 Source
						// Interrupt/Status
#define MDMA_S1_PERIPHERAL_MAP	0xFFC01FEC	// MemDMA1 Stream 1 Source
						// Peripheral Map

#define DMA0_CONFIG		0xFFC01C08	// DMA1 Channel 0 Configuration
						// register
#define DMA0_NEXT_DESC_PTR	0xFFC01C00	// DMA1 Channel 0 Next
						// Descripter Ptr Reg
#define DMA0_START_ADDR		0xFFC01C04	// DMA1 Channel 0 Start Address
#define DMA0_X_COUNT		0xFFC01C10	// DMA1 Channel 0 Inner Loop
						// Count
#define DMA0_Y_COUNT		0xFFC01C18	// DMA1 Channel 0 Outer Loop
						// Count
#define DMA0_X_MODIFY		0xFFC01C14	// DMA1 Channel 0 Inner Loop
						// Addr Increment
#define DMA0_Y_MODIFY		0xFFC01C1C	// DMA1 Channel 0 Outer Loop
						// Addr Increment
#define DMA0_CURR_DESC_PTR	0xFFC01C20	// DMA1 Channel 0 Current
						// Descriptor Pointer
#define DMA0_CURR_ADDR		0xFFC01C24	// DMA1 Channel 0 Current 
						// Address Pointer
#define DMA0_CURR_X_COUNT	0xFFC01C30	// DMA1 Channel 0 Current Inner
						// Loop Count
#define DMA0_CURR_Y_COUNT	0xFFC01C38	// DMA1 Channel 0 Current Outer
						// Loop Count
#define DMA0_IRQ_STATUS		0xFFC01C28	// DMA1 Channel 0 Interrupt
						// Status Register
#define DMA0_PERIPHERAL_MAP	0xFFC01C2C	// DMA1 Channel 0 Peripheral
						// Map Register

#define DMA1_CONFIG		0xFFC00C08	// DMA2 Channel 0 Configuration
						// register
#define DMA1_NEXT_DESC_PTR	0xFFC00C00	// DMA2 Channel 0 Next
						// Descripter Ptr Reg
#define DMA1_START_ADDR		0xFFC00C04	// DMA2 Channel 0 Start Address
#define DMA1_X_COUNT		0xFFC00C10	// DMA2 Channel 0 Inner Loop
						// Count
#define DMA1_Y_COUNT		0xFFC00C18	// DMA2 Channel 0 Outer Loop
						// Count
#define DMA1_X_MODIFY		0xFFC00C14	// DMA2 Channel 0 Inner Loop
						// Addr Increment
#define DMA1_Y_MODIFY		0xFFC00C1C	// DMA2 Channel 0 Outer Loop
						// Addr Increment
#define DMA1_CURR_DESC_PTR	0xFFC00C20	// DMA2 Channel 0 Current
						// Descriptor Pointer
#define DMA1_CURR_ADDR		0xFFC00C24	// DMA2 Channel 0 Current
						// Address Pointer
#define DMA1_CURR_X_COUNT	0xFFC00C30	// DMA2 Channel 0 Current Inner
						// Loop Count
#define DMA1_CURR_Y_COUNT	0xFFC00C38	// DMA2 Channel 0 Current Outer
						// Loop Count
#define DMA1_IRQ_STATUS		0xFFC00C28	// DMA2 Channel 0 Interrupt
						// /Status Register
#define DMA1_PERIPHERAL_MAP	0xFFC00C2C	// DMA2 Channel 0 Peripheral
						// Map Register

#define DMA2_CONFIG		0xFFC00C48	// DMA2 Channel 1 Configuration
						// register
#define DMA2_NEXT_DESC_PTR	0xFFC00C40	// DMA2 Channel 1 Next
						// Descripter Ptr Reg
#define DMA2_START_ADDR		0xFFC00C44	// DMA2 Channel 1 Start Address
#define DMA2_X_COUNT		0xFFC00C50	// DMA2 Channel 1 Inner Loop
						// Count
#define DMA2_Y_COUNT		0xFFC00C58	// DMA2 Channel 1 Outer Loop
						// Count
#define DMA2_X_MODIFY		0xFFC00C54	// DMA2 Channel 1 Inner Loop
						// Addr Increment
#define DMA2_Y_MODIFY		0xFFC00C5C	// DMA2 Channel 1 Outer Loop
						// Addr Increment
#define DMA2_CURR_DESC_PTR	0xFFC00C60	// DMA2 Channel 1 Current
						// Descriptor Pointer
#define DMA2_CURR_ADDR		0xFFC00C64	// DMA2 Channel 1 Current
						// Address Pointer
#define DMA2_CURR_X_COUNT	0xFFC00C70	// DMA2 Channel 1 Current
						// Inner Loop Count
#define DMA2_CURR_Y_COUNT	0xFFC00C78	// DMA2 Channel 1 Current
						// Outer Loop Count
#define DMA2_IRQ_STATUS		0xFFC00C68	// DMA2 Channel 1 Interrupt
						// /Status Register
#define DMA2_PERIPHERAL_MAP	0xFFC00C6C	// DMA2 Channel 1 Peripheral
						// Map Register

#define DMA3_CONFIG		0xFFC00C88	// DMA2 Channel 2 Configuration
						// register
#define DMA3_NEXT_DESC_PTR	0xFFC00C80	// DMA2 Channel 2 Next
						// Descripter Ptr Reg
#define DMA3_START_ADDR		0xFFC00C84	// DMA2 Channel 2 Start Address
#define DMA3_X_COUNT		0xFFC00C90	// DMA2 Channel 2 Inner Loop
						// Count
#define DMA3_Y_COUNT		0xFFC00C98	// DMA2 Channel 2 Outer Loop
						// Count
#define DMA3_X_MODIFY		0xFFC00C94	// DMA2 Channel 2 Inner Loop
						// Addr Increment
#define DMA3_Y_MODIFY		0xFFC00C9C	// DMA2 Channel 2 Outer Loop
						// Addr Increment
#define DMA3_CURR_DESC_PTR	0xFFC00CA0	// DMA2 Channel 2 Current
						// Descriptor Pointer
#define DMA3_CURR_ADDR		0xFFC00CA4	// DMA2 Channel 2 Current
						// Address Pointer
#define DMA3_CURR_X_COUNT	0xFFC00CB0	// DMA2 Channel 2 Current Inner
						// Loop Count
#define DMA3_CURR_Y_COUNT	0xFFC00CB8	// DMA2 Channel 2 Current Outer
						// Loop Count
#define DMA3_IRQ_STATUS		0xFFC00CA8	// DMA2 Channel 2 Interrupt
						// /Status Register
#define DMA3_PERIPHERAL_MAP	0xFFC00CAC	// DMA2 Channel 2 Peripheral
						// Map Register

#define DMA4_CONFIG		0xFFC00CC8	// DMA2 Channel 3 Configuration
						// register
#define DMA4_NEXT_DESC_PTR	0xFFC00CC0	// DMA2 Channel 3 Next
						// Descripter Ptr Reg
#define DMA4_START_ADDR		0xFFC00CC4	// DMA2 Channel 3 Start Address
#define DMA4_X_COUNT		0xFFC00CD0	// DMA2 Channel 3 Inner Loop
						// Count
#define DMA4_Y_COUNT		0xFFC00CD8	// DMA2 Channel 3 Outer Loop
						// Count
#define DMA4_X_MODIFY		0xFFC00CD4	// DMA2 Channel 3 Inner Loop
						// Addr Increment
#define DMA4_Y_MODIFY		0xFFC00CDC	// DMA2 Channel 3 Outer Loop
						// Addr Increment
#define DMA4_CURR_DESC_PTR	0xFFC00CE0	// DMA2 Channel 3 Current
						// Descriptor Pointer
#define DMA4_CURR_ADDR		0xFFC00CE4	// DMA2 Channel 3 Current
						// Address Pointer
#define DMA4_CURR_X_COUNT	0xFFC00CF0	// DMA2 Channel 3 Current Inner
						// Loop Count
#define DMA4_CURR_Y_COUNT	0xFFC00CF8	// DMA2 Channel 3 Current Outer
						// Loop Count
#define DMA4_IRQ_STATUS		0xFFC00CE8	// DMA2 Channel 3 Interrupt
						// /Status Register
#define DMA4_PERIPHERAL_MAP	0xFFC00CEC	// DMA2 Channel 3 Peripheral
						// Map Register

#define DMA5_CONFIG		0xFFC00D08	// DMA2 Channel 4 Configuration
						// register
#define DMA5_NEXT_DESC_PTR	0xFFC00D00	// DMA2 Channel 4 Next
						// Descripter Ptr Reg
#define DMA5_START_ADDR		0xFFC00D04	// DMA2 Channel 4 Start Address
#define DMA5_X_COUNT		0xFFC00D10	// DMA2 Channel 4 Inner Loop
						// Count
#define DMA5_Y_COUNT		0xFFC00D18	// DMA2 Channel 4 Outer Loop
						// Count
#define DMA5_X_MODIFY		0xFFC00D14	// DMA2 Channel 4 Inner Loop
						// Addr Increment
#define DMA5_Y_MODIFY		0xFFC00D1C	// DMA2 Channel 4 Outer Loop
						// Addr Increment
#define DMA5_CURR_DESC_PTR	0xFFC00D20	// DMA2 Channel 4 Current
						// Descriptor Pointer
#define DMA5_CURR_ADDR		0xFFC00D24	// DMA2 Channel 4 Current
						// Address Pointer
#define DMA5_CURR_X_COUNT	0xFFC00D30	// DMA2 Channel 4 Current Inner
						// Loop Count
#define DMA5_CURR_Y_COUNT	0xFFC00D38	// DMA2 Channel 4 Current Outer
						// Loop Count
#define DMA5_IRQ_STATUS		0xFFC00D28	// DMA2 Channel 4 Interrupt
						// /Status Register
#define DMA5_PERIPHERAL_MAP	0xFFC00D2C	// DMA2 Channel 4 Peripheral
						// Map Register

#define DMA6_CONFIG		0xFFC00D48	// DMA2 Channel 5 Configuration
						// register
#define DMA6_NEXT_DESC_PTR	0xFFC00D40	// DMA2 Channel 5 Next
						// Descripter Ptr Reg
#define DMA6_START_ADDR		0xFFC00D44	// DMA2 Channel 5 Start Address
#define DMA6_X_COUNT		0xFFC00D50	// DMA2 Channel 5 Inner Loop
						// Count
#define DMA6_Y_COUNT		0xFFC00D58	// DMA2 Channel 5 Outer Loop
						// Count
#define DMA6_X_MODIFY		0xFFC00D54	// DMA2 Channel 5 Inner Loop
						// Addr Increment
#define DMA6_Y_MODIFY		0xFFC00D5C	// DMA2 Channel 5 Outer Loop
						// Addr Increment
#define DMA6_CURR_DESC_PTR	0xFFC00D60	// DMA2 Channel 5 Current
						// Descriptor Pointer
#define DMA6_CURR_ADDR		0xFFC00D64	// DMA2 Channel 5 Current
						// Address Pointer
#define DMA6_CURR_X_COUNT	0xFFC00D70	// DMA2 Channel 5 Current Inner
						// Loop Count
#define DMA6_CURR_Y_COUNT	0xFFC00D78	// DMA2 Channel 5 Current Outer
						// Loop Count
#define DMA6_IRQ_STATUS		0xFFC00D68	// DMA2 Channel 5 Interrupt
						// /Status Register
#define DMA6_PERIPHERAL_MAP	0xFFC00D6C	// DMA2 Channel 5 Peripheral
						// Map Register

#define DMA7_CONFIG		0xFFC00D88	// DMA2 Channel 6 Configuration
						// register
#define DMA7_NEXT_DESC_PTR	0xFFC00D80	// DMA2 Channel 6 Next
						// Descripter Ptr Reg
#define DMA7_START_ADDR		0xFFC00D84	// DMA2 Channel 6 Start Address
#define DMA7_X_COUNT		0xFFC00D90	// DMA2 Channel 6 Inner Loop
						// Count
#define DMA7_Y_COUNT		0xFFC00D98	// DMA2 Channel 6 Outer Loop
						// Count
#define DMA7_X_MODIFY		0xFFC00D94	// DMA2 Channel 6 Inner Loop
						// Addr Increment
#define DMA7_Y_MODIFY		0xFFC00D9C	// DMA2 Channel 6 Outer Loop
						// Addr Increment
#define DMA7_CURR_DESC_PTR	0xFFC00DA0	// DMA2 Channel 6 Current
						// Descriptor Pointer
#define DMA7_CURR_ADDR		0xFFC00DA4	// DMA2 Channel 6 Current
						// Address Pointer
#define DMA7_CURR_X_COUNT	0xFFC00DB0	// DMA2 Channel 6 Current Inner
						// Loop Count
#define DMA7_CURR_Y_COUNT	0xFFC00DB8	// DMA2 Channel 6 Current Outer
						// Loop Count
#define DMA7_IRQ_STATUS		0xFFC00DA8	// DMA2 Channel 6 Interrupt
						// /Status Register
#define DMA7_PERIPHERAL_MAP	0xFFC00DAC	// DMA2 Channel 6 Peripheral
						// Map Register

#define TIMER_ENABLE 		0xFFC00680	// Timer Enable Register
#define TIMER_DISABLE 		0xFFC00684	// Timer Disable register
#define TIMER_STATUS 		0xFFC00688	// Timer Status register

// DMAx_CONFIG, MDMA_yy_CONFIG, IMDMA_yy_CONFIG Masks
#define WDSIZE8			0x00000000	// Word Size 8 bits
#define WDSIZE16		0x00000004	// Word Size 16 bits
#define WDSIZE32		0x00000008	// Word Size 32 bits
#endif	/* comment by mhfan */

#endif /* _DEF_BF561_H */
