Skip to content
Snippets Groups Projects
SA-1100.h 122 KiB
Newer Older
  • Learn to ignore specific revisions
  • Wolfgang Denk's avatar
    Wolfgang Denk committed
    /*
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *	FILE		SA-1100.h
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *	Version		1.2
     *	Author		Copyright (c) Marc A. Viredaz, 1998
     *			DEC Western Research Laboratory, Palo Alto, CA
     *	Date		January 1998 (April 1997)
     *	System		StrongARM SA-1100
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *	Language	C or ARM Assembly
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *	Purpose		Definition of constants related to the StrongARM
     *			SA-1100 microprocessor (Advanced RISC Machine (ARM)
     *			architecture version 4). This file is based on the
     *			StrongARM SA-1100 data sheet version 2.2.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Language-specific definitions are selected by the
     *			macro "LANGUAGE", which should be defined as either
     *			"C" (default) or "Assembly".
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     */
    
    
    #ifndef LANGUAGE
    # ifdef __ASSEMBLY__
    #  define LANGUAGE Assembly
    # else
    #  define LANGUAGE C
    # endif
    #endif
    
    #ifndef io_p2v
    #define io_p2v(PhAdd)	(PhAdd)
    #endif
    
    #include <asm/arch-sa1100/bitfield.h>
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define C		0
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Assembly	1
    
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef unsigned short	Word16 ;
    typedef unsigned int	Word32 ;
    typedef Word32		Word ;
    typedef Word		Quad [4] ;
    typedef void		*Address ;
    typedef void		(*ExcpHndlr) (void) ;
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    /*
     * Memory
     */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MemBnkSp	0x08000000	/* Memory Bank Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define StMemBnkSp	MemBnkSp	/* Static Memory Bank Space [byte] */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define StMemBnk0Sp	StMemBnkSp	/* Static Memory Bank 0 Space	   */
    					/* [byte]			   */
    #define StMemBnk1Sp	StMemBnkSp	/* Static Memory Bank 1 Space	   */
    					/* [byte]			   */
    #define StMemBnk2Sp	StMemBnkSp	/* Static Memory Bank 2 Space	   */
    					/* [byte]			   */
    #define StMemBnk3Sp	StMemBnkSp	/* Static Memory Bank 3 Space	   */
    					/* [byte]			   */
    
    #define DRAMBnkSp	MemBnkSp	/* DRAM Bank Space [byte]	   */
    #define DRAMBnk0Sp	DRAMBnkSp	/* DRAM Bank 0 Space [byte]	   */
    #define DRAMBnk1Sp	DRAMBnkSp	/* DRAM Bank 1 Space [byte]	   */
    #define DRAMBnk2Sp	DRAMBnkSp	/* DRAM Bank 2 Space [byte]	   */
    #define DRAMBnk3Sp	DRAMBnkSp	/* DRAM Bank 3 Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define ZeroMemSp	MemBnkSp	/* Zero Memory bank Space [byte]   */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _StMemBnk(Nb)			/* Static Memory Bank [0..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x00000000 + (Nb)*StMemBnkSp)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _StMemBnk0	_StMemBnk (0)	/* Static Memory Bank 0		   */
    #define _StMemBnk1	_StMemBnk (1)	/* Static Memory Bank 1		   */
    #define _StMemBnk2	_StMemBnk (2)	/* Static Memory Bank 2		   */
    #define _StMemBnk3	_StMemBnk (3)	/* Static Memory Bank 3		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef Quad		StMemBnkType [StMemBnkSp/sizeof (Quad)] ;
    #define StMemBnk			/* Static Memory Bank [0..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			((StMemBnkType *) io_p2v (_StMemBnk (0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define StMemBnk0	(StMemBnk [0])	/* Static Memory Bank 0		   */
    #define StMemBnk1	(StMemBnk [1])	/* Static Memory Bank 1		   */
    #define StMemBnk2	(StMemBnk [2])	/* Static Memory Bank 2		   */
    #define StMemBnk3	(StMemBnk [3])	/* Static Memory Bank 3		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _DRAMBnk(Nb)			/* DRAM Bank [0..3]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0xC0000000 + (Nb)*DRAMBnkSp)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _DRAMBnk0	_DRAMBnk (0)	/* DRAM Bank 0			   */
    #define _DRAMBnk1	_DRAMBnk (1)	/* DRAM Bank 1			   */
    #define _DRAMBnk2	_DRAMBnk (2)	/* DRAM Bank 2			   */
    #define _DRAMBnk3	_DRAMBnk (3)	/* DRAM Bank 3			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef Quad		DRAMBnkType [DRAMBnkSp/sizeof (Quad)] ;
    #define DRAMBnk				/* DRAM Bank [0..3]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			((DRAMBnkType *) io_p2v (_DRAMBnk (0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define DRAMBnk0	(DRAMBnk [0])	/* DRAM Bank 0			   */
    #define DRAMBnk1	(DRAMBnk [1])	/* DRAM Bank 1			   */
    #define DRAMBnk2	(DRAMBnk [2])	/* DRAM Bank 2			   */
    #define DRAMBnk3	(DRAMBnk [3])	/* DRAM Bank 3			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _ZeroMem	0xE0000000	/* Zero Memory bank		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef Quad		ZeroMemType [ZeroMemSp/sizeof (Quad)] ;
    #define ZeroMem				/* Zero Memory bank		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((ZeroMemType *) io_p2v (_ZeroMem)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    /*
     * Personal Computer Memory Card International Association (PCMCIA) sockets
     */
    
    #define PCMCIAPrtSp	0x04000000	/* PCMCIA Partition Space [byte]   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIASp	(4*PCMCIAPrtSp)	/* PCMCIA Space [byte]		   */
    #define PCMCIAIOSp	PCMCIAPrtSp	/* PCMCIA I/O Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIAAttrSp	PCMCIAPrtSp	/* PCMCIA Attribute Space [byte]   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIAMemSp	PCMCIAPrtSp	/* PCMCIA Memory Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0Sp	PCMCIASp	/* PCMCIA 0 Space [byte]	   */
    #define PCMCIA0IOSp	PCMCIAIOSp	/* PCMCIA 0 I/O Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0AttrSp	PCMCIAAttrSp	/* PCMCIA 0 Attribute Space [byte] */
    #define PCMCIA0MemSp	PCMCIAMemSp	/* PCMCIA 0 Memory Space [byte]    */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1Sp	PCMCIASp	/* PCMCIA 1 Space [byte]	   */
    #define PCMCIA1IOSp	PCMCIAIOSp	/* PCMCIA 1 I/O Space [byte]	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1AttrSp	PCMCIAAttrSp	/* PCMCIA 1 Attribute Space [byte] */
    #define PCMCIA1MemSp	PCMCIAMemSp	/* PCMCIA 1 Memory Space [byte]    */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _PCMCIA(Nb)			/* PCMCIA [0..1]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x20000000 + (Nb)*PCMCIASp)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _PCMCIAIO(Nb)	_PCMCIA (Nb)	/* PCMCIA I/O [0..1]		   */
    #define _PCMCIAAttr(Nb)			/* PCMCIA Attribute [0..1]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(_PCMCIA (Nb) + 2*PCMCIAPrtSp)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _PCMCIAMem(Nb)			/* PCMCIA Memory [0..1]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(_PCMCIA (Nb) + 3*PCMCIAPrtSp)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _PCMCIA0	_PCMCIA (0)	/* PCMCIA 0			   */
    #define _PCMCIA0IO	_PCMCIAIO (0)	/* PCMCIA 0 I/O			   */
    #define _PCMCIA0Attr	_PCMCIAAttr (0)	/* PCMCIA 0 Attribute		   */
    #define _PCMCIA0Mem	_PCMCIAMem (0)	/* PCMCIA 0 Memory		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _PCMCIA1	_PCMCIA (1)	/* PCMCIA 1			   */
    #define _PCMCIA1IO	_PCMCIAIO (1)	/* PCMCIA 1 I/O			   */
    #define _PCMCIA1Attr	_PCMCIAAttr (1)	/* PCMCIA 1 Attribute		   */
    #define _PCMCIA1Mem	_PCMCIAMem (1)	/* PCMCIA 1 Memory		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #if LANGUAGE == C
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef Quad		PCMCIAPrtType [PCMCIAPrtSp/sizeof (Quad)] ;
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    typedef PCMCIAPrtType	PCMCIAType [PCMCIASp/PCMCIAPrtSp] ;
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0				/* PCMCIA 0			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAType *) io_p2v (_PCMCIA0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0IO			/* PCMCIA 0 I/O			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0IO)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0Attr			/* PCMCIA 0 Attribute		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0Attr)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA0Mem			/* PCMCIA 0 Memory		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0Mem)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1				/* PCMCIA 1			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAType *) io_p2v (_PCMCIA1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1IO			/* PCMCIA 1 I/O			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1IO)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1Attr			/* PCMCIA 1 Attribute		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1Attr)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define PCMCIA1Mem			/* PCMCIA 1 Memory		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1Mem)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #endif /* LANGUAGE == C */
    
    
    /*
     * Universal Serial Bus (USB) Device Controller (UDC) control registers
     *
     * Registers
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCCR		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Control Register (read/write).
     *    Ser0UDCAR		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Address Register (read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCOMP	Serial port 0 Universal Serial Bus (USB) Device
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Controller (UDC) Output Maximum Packet size register
     *			(read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCIMP	Serial port 0 Universal Serial Bus (USB) Device
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Controller (UDC) Input Maximum Packet size register
     *			(read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCCS0	Serial port 0 Universal Serial Bus (USB) Device
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Controller (UDC) Control/Status register end-point 0
     *			(read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCCS1	Serial port 0 Universal Serial Bus (USB) Device
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Controller (UDC) Control/Status register end-point 1
     *			(output, read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser0UDCCS2	Serial port 0 Universal Serial Bus (USB) Device
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			Controller (UDC) Control/Status register end-point 2
     *			(input, read/write).
     *    Ser0UDCD0		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Data register end-point 0
     *			(read/write).
     *    Ser0UDCWC		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Write Count register end-point 0
     *			(read).
     *    Ser0UDCDR		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Data Register (read/write).
     *    Ser0UDCSR		Serial port 0 Universal Serial Bus (USB) Device
     *			Controller (UDC) Status Register (read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     */
    
    #define _Ser0UDCCR	0x80000000	/* Ser. port 0 UDC Control Reg.    */
    #define _Ser0UDCAR	0x80000004	/* Ser. port 0 UDC Address Reg.    */
    #define _Ser0UDCOMP	0x80000008	/* Ser. port 0 UDC Output Maximum  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Packet size reg.		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser0UDCIMP	0x8000000C	/* Ser. port 0 UDC Input Maximum   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Packet size reg.		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser0UDCCS0	0x80000010	/* Ser. port 0 UDC Control/Status  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* reg. end-point 0		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser0UDCCS1	0x80000014	/* Ser. port 0 UDC Control/Status  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* reg. end-point 1 (output)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser0UDCCS2	0x80000018	/* Ser. port 0 UDC Control/Status  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* reg. end-point 2 (input)	   */
    #define _Ser0UDCD0	0x8000001C	/* Ser. port 0 UDC Data reg.	   */
    					/* end-point 0			   */
    #define _Ser0UDCWC	0x80000020	/* Ser. port 0 UDC Write Count	   */
    					/* reg. end-point 0		   */
    #define _Ser0UDCDR	0x80000028	/* Ser. port 0 UDC Data Reg.	   */
    #define _Ser0UDCSR	0x80000030	/* Ser. port 0 UDC Status Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCCR			/* Ser. port 0 UDC Control Reg.    */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCCR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCAR			/* Ser. port 0 UDC Address Reg.    */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCAR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCOMP			/* Ser. port 0 UDC Output Maximum  */ \
    					/* Packet size reg.		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCOMP)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCIMP			/* Ser. port 0 UDC Input Maximum   */ \
    					/* Packet size reg.		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCIMP)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCCS0			/* Ser. port 0 UDC Control/Status  */ \
    					/* reg. end-point 0		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCCS0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCCS1			/* Ser. port 0 UDC Control/Status  */ \
    					/* reg. end-point 1 (output)	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCCS1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCCS2			/* Ser. port 0 UDC Control/Status  */ \
    					/* reg. end-point 2 (input)	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCCS2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCD0			/* Ser. port 0 UDC Data reg.	   */ \
    					/* end-point 0			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCD0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCWC			/* Ser. port 0 UDC Write Count	   */ \
    					/* reg. end-point 0		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCWC)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCDR			/* Ser. port 0 UDC Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser0UDCSR			/* Ser. port 0 UDC Status Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser0UDCSR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCR_UDD	0x00000001	/* UDC Disable			   */
    #define UDCCR_UDA	0x00000002	/* UDC Active (read)		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCR_RESIM	0x00000004	/* Resume Interrupt Mask, per errata */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCR_EIM	0x00000008	/* End-point 0 Interrupt Mask	   */
    					/* (disable)			   */
    #define UDCCR_RIM	0x00000010	/* Receive Interrupt Mask	   */
    					/* (disable)			   */
    #define UDCCR_TIM	0x00000020	/* Transmit Interrupt Mask	   */
    					/* (disable)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCR_SRM	0x00000040	/* Suspend/Resume interrupt Mask   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (disable)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCR_SUSIM	UDCCR_SRM	/* Per errata, SRM just masks suspend */
    #define UDCCR_REM	0x00000080	/* REset interrupt Mask (disable)  */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCAR_ADD	Fld (7, 0)	/* function ADDress		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UDCOMP_OUTMAXP	Fld (8, 0)	/* OUTput MAXimum Packet size - 1  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* [byte]			   */
    #define UDCOMP_OutMaxPkt(Size)		/* Output Maximum Packet size	   */ \
    					/* [1..256 byte]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Size) - 1) << FShft (UDCOMP_OUTMAXP))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UDCIMP_INMAXP	Fld (8, 0)	/* INput MAXimum Packet size - 1   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* [byte]			   */
    #define UDCIMP_InMaxPkt(Size)		/* Input Maximum Packet size	   */ \
    					/* [1..256 byte]		   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Size) - 1) << FShft (UDCIMP_INMAXP))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCS0_OPR	0x00000001	/* Output Packet Ready (read)	   */
    #define UDCCS0_IPR	0x00000002	/* Input Packet Ready		   */
    #define UDCCS0_SST	0x00000004	/* Sent STall			   */
    #define UDCCS0_FST	0x00000008	/* Force STall			   */
    #define UDCCS0_DE	0x00000010	/* Data End			   */
    #define UDCCS0_SE	0x00000020	/* Setup End (read)		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCS0_SO	0x00000040	/* Serviced Output packet ready    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (write)			   */
    #define UDCCS0_SSE	0x00000080	/* Serviced Setup End (write)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UDCCS1_RFS	0x00000001	/* Receive FIFO 12-bytes or more   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Service request (read)	   */
    #define UDCCS1_RPC	0x00000002	/* Receive Packet Complete	   */
    #define UDCCS1_RPE	0x00000004	/* Receive Packet Error (read)	   */
    #define UDCCS1_SST	0x00000008	/* Sent STall			   */
    #define UDCCS1_FST	0x00000010	/* Force STall			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCS1_RNE	0x00000020	/* Receive FIFO Not Empty (read)   */
    
    #define UDCCS2_TFS	0x00000001	/* Transmit FIFO 8-bytes or less   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Service request (read)	   */
    #define UDCCS2_TPC	0x00000002	/* Transmit Packet Complete	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCS2_TPE	0x00000004	/* Transmit Packet Error (read)    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCCS2_TUR	0x00000008	/* Transmit FIFO Under-Run	   */
    #define UDCCS2_SST	0x00000010	/* Sent STall			   */
    #define UDCCS2_FST	0x00000020	/* Force STall			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCD0_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCWC_WC	Fld (4, 0)	/* Write Count			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UDCSR_EIR	0x00000001	/* End-point 0 Interrupt Request   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UDCSR_RIR	0x00000002	/* Receive Interrupt Request	   */
    #define UDCSR_TIR	0x00000004	/* Transmit Interrupt Request	   */
    #define UDCSR_SUSIR	0x00000008	/* SUSpend Interrupt Request	   */
    #define UDCSR_RESIR	0x00000010	/* RESume Interrupt Request	   */
    #define UDCSR_RSTIR	0x00000020	/* ReSeT Interrupt Request	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    /*
     * Universal Asynchronous Receiver/Transmitter (UART) control registers
     *
     * Registers
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser1UTCR0		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 0
     *			(read/write).
     *    Ser1UTCR1		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 1
     *			(read/write).
     *    Ser1UTCR2		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 2
     *			(read/write).
     *    Ser1UTCR3		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 3
     *			(read/write).
     *    Ser1UTDR		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Data Register
     *			(read/write).
     *    Ser1UTSR0		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 0
     *			(read/write).
     *    Ser1UTSR1		Serial port 1 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 1 (read).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser2UTCR0		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 0
     *			(read/write).
     *    Ser2UTCR1		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 1
     *			(read/write).
     *    Ser2UTCR2		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 2
     *			(read/write).
     *    Ser2UTCR3		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 3
     *			(read/write).
     *    Ser2UTCR4		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 4
     *			(read/write).
     *    Ser2UTDR		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Data Register
     *			(read/write).
     *    Ser2UTSR0		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 0
     *			(read/write).
     *    Ser2UTSR1		Serial port 2 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 1 (read).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser3UTCR0		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 0
     *			(read/write).
     *    Ser3UTCR1		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 1
     *			(read/write).
     *    Ser3UTCR2		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 2
     *			(read/write).
     *    Ser3UTCR3		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Control Register 3
     *			(read/write).
     *    Ser3UTDR		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Data Register
     *			(read/write).
     *    Ser3UTSR0		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 0
     *			(read/write).
     *    Ser3UTSR1		Serial port 3 Universal Asynchronous
     *			Receiver/Transmitter (UART) Status Register 1 (read).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
     * Clocks
     *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			or 3.5795 MHz).
     *    fua, Tua		Frequency, period of the UART communication.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTCR0(Nb)			/* UART Control Reg. 0 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010000 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTCR1(Nb)			/* UART Control Reg. 1 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010004 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTCR2(Nb)			/* UART Control Reg. 2 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010008 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTCR3(Nb)			/* UART Control Reg. 3 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x8001000C + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTCR4(Nb)			/* UART Control Reg. 4 [2]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010010 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTDR(Nb)			/* UART Data Reg. [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010014 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTSR0(Nb)			/* UART Status Reg. 0 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x8001001C + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _UTSR1(Nb)			/* UART Status Reg. 1 [1..3]	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(0x80010020 + ((Nb) - 1)*0x00020000)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define _Ser1UTCR0	_UTCR0 (1)	/* Ser. port 1 UART Control Reg. 0 */
    #define _Ser1UTCR1	_UTCR1 (1)	/* Ser. port 1 UART Control Reg. 1 */
    #define _Ser1UTCR2	_UTCR2 (1)	/* Ser. port 1 UART Control Reg. 2 */
    #define _Ser1UTCR3	_UTCR3 (1)	/* Ser. port 1 UART Control Reg. 3 */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser1UTDR	_UTDR (1)	/* Ser. port 1 UART Data Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser1UTSR0	_UTSR0 (1)	/* Ser. port 1 UART Status Reg. 0  */
    #define _Ser1UTSR1	_UTSR1 (1)	/* Ser. port 1 UART Status Reg. 1  */
    
    #define _Ser2UTCR0	_UTCR0 (2)	/* Ser. port 2 UART Control Reg. 0 */
    #define _Ser2UTCR1	_UTCR1 (2)	/* Ser. port 2 UART Control Reg. 1 */
    #define _Ser2UTCR2	_UTCR2 (2)	/* Ser. port 2 UART Control Reg. 2 */
    #define _Ser2UTCR3	_UTCR3 (2)	/* Ser. port 2 UART Control Reg. 3 */
    #define _Ser2UTCR4	_UTCR4 (2)	/* Ser. port 2 UART Control Reg. 4 */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser2UTDR	_UTDR (2)	/* Ser. port 2 UART Data Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser2UTSR0	_UTSR0 (2)	/* Ser. port 2 UART Status Reg. 0  */
    #define _Ser2UTSR1	_UTSR1 (2)	/* Ser. port 2 UART Status Reg. 1  */
    
    #define _Ser3UTCR0	_UTCR0 (3)	/* Ser. port 3 UART Control Reg. 0 */
    #define _Ser3UTCR1	_UTCR1 (3)	/* Ser. port 3 UART Control Reg. 1 */
    #define _Ser3UTCR2	_UTCR2 (3)	/* Ser. port 3 UART Control Reg. 2 */
    #define _Ser3UTCR3	_UTCR3 (3)	/* Ser. port 3 UART Control Reg. 3 */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser3UTDR	_UTDR (3)	/* Ser. port 3 UART Data Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser3UTSR0	_UTSR0 (3)	/* Ser. port 3 UART Status Reg. 0  */
    #define _Ser3UTSR1	_UTSR1 (3)	/* Ser. port 3 UART Status Reg. 1  */
    
    #if LANGUAGE == C
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTCR0			/* Ser. port 1 UART Control Reg. 0 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTCR1			/* Ser. port 1 UART Control Reg. 1 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTCR2			/* Ser. port 1 UART Control Reg. 2 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTCR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTCR3			/* Ser. port 1 UART Control Reg. 3 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTCR3)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTDR			/* Ser. port 1 UART Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTSR0			/* Ser. port 1 UART Status Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTSR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1UTSR1			/* Ser. port 1 UART Status Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1UTSR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTCR0			/* Ser. port 2 UART Control Reg. 0 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTCR1			/* Ser. port 2 UART Control Reg. 1 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTCR2			/* Ser. port 2 UART Control Reg. 2 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTCR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTCR3			/* Ser. port 2 UART Control Reg. 3 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTCR3)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTCR4			/* Ser. port 2 UART Control Reg. 4 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTCR4)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTDR			/* Ser. port 2 UART Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTSR0			/* Ser. port 2 UART Status Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTSR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2UTSR1			/* Ser. port 2 UART Status Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2UTSR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTCR0			/* Ser. port 3 UART Control Reg. 0 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTCR1			/* Ser. port 3 UART Control Reg. 1 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTCR2			/* Ser. port 3 UART Control Reg. 2 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTCR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTCR3			/* Ser. port 3 UART Control Reg. 3 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTCR3)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTDR			/* Ser. port 3 UART Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTSR0			/* Ser. port 3 UART Status Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTSR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser3UTSR1			/* Ser. port 3 UART Status Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser3UTSR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #elif LANGUAGE == Assembly
    #define Ser1UTCR0	( io_p2v (_Ser1UTCR0))
    #define Ser1UTCR1	( io_p2v (_Ser1UTCR1))
    #define Ser1UTCR2	( io_p2v (_Ser1UTCR2))
    #define Ser1UTCR3	( io_p2v (_Ser1UTCR3))
    #define Ser1UTDR	( io_p2v (_Ser1UTDR))
    #define Ser1UTSR0	( io_p2v (_Ser1UTSR0))
    #define Ser1UTSR1	( io_p2v (_Ser1UTSR1))
    
    #define Ser2UTCR0	( io_p2v (_Ser2UTCR0))
    #define Ser2UTCR1	( io_p2v (_Ser2UTCR1))
    #define Ser2UTCR2	( io_p2v (_Ser2UTCR2))
    #define Ser2UTCR3	( io_p2v (_Ser2UTCR3))
    #define Ser2UTCR4	( io_p2v (_Ser2UTCR4))
    #define Ser2UTDR	( io_p2v (_Ser2UTDR))
    #define Ser2UTSR0	( io_p2v (_Ser2UTSR0))
    #define Ser2UTSR1	( io_p2v (_Ser2UTSR1))
    
    #define Ser3UTCR0	( io_p2v (_Ser3UTCR0))
    #define Ser3UTCR1	( io_p2v (_Ser3UTCR1))
    #define Ser3UTCR2	( io_p2v (_Ser3UTCR2))
    #define Ser3UTCR3	( io_p2v (_Ser3UTCR3))
    #define Ser3UTDR	( io_p2v (_Ser3UTDR))
    #define Ser3UTSR0	( io_p2v (_Ser3UTSR0))
    #define Ser3UTSR1	( io_p2v (_Ser3UTSR1))
    
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR0_PE	0x00000001	/* Parity Enable		   */
    #define UTCR0_OES	0x00000002	/* Odd/Even parity Select	   */
    #define UTCR0_OddPar	(UTCR0_OES*0)	/*  Odd Parity			   */
    #define UTCR0_EvenPar	(UTCR0_OES*1)	/*  Even Parity			   */
    #define UTCR0_SBS	0x00000004	/* Stop Bit Select		   */
    #define UTCR0_1StpBit	(UTCR0_SBS*0)	/*  1 Stop Bit per frame	   */
    #define UTCR0_2StpBit	(UTCR0_SBS*1)	/*  2 Stop Bits per frame	   */
    #define UTCR0_DSS	0x00000008	/* Data Size Select		   */
    #define UTCR0_7BitData	(UTCR0_DSS*0)	/*  7-Bit Data			   */
    #define UTCR0_8BitData	(UTCR0_DSS*1)	/*  8-Bit Data			   */
    #define UTCR0_SCE	0x00000010	/* Sample Clock Enable		   */
    					/* (ser. port 1: GPIO [18],	   */
    					/* ser. port 3: GPIO [20])	   */
    #define UTCR0_RCE	0x00000020	/* Receive Clock Edge select	   */
    #define UTCR0_RcRsEdg	(UTCR0_RCE*0)	/*  Receive clock Rising-Edge	   */
    #define UTCR0_RcFlEdg	(UTCR0_RCE*1)	/*  Receive clock Falling-Edge	   */
    #define UTCR0_TCE	0x00000040	/* Transmit Clock Edge select	   */
    #define UTCR0_TrRsEdg	(UTCR0_TCE*0)	/*  Transmit clock Rising-Edge	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR0_TrFlEdg	(UTCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR0_Ser2IrDA			/* Ser. port 2 IrDA settings	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(UTCR0_1StpBit + UTCR0_8BitData)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UTCR1_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
    #define UTCR2_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* fua = fxtl/(16*(BRD[11:0] + 1)) */
    					/* Tua = 16*(BRD [11:0] + 1)*Txtl  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR1_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 16)/16 >> FSize (UTCR2_BRD) << \
    			 FShft (UTCR1_BRD))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR2_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 16)/16 & FAlnMsk (UTCR2_BRD) << \
    			 FShft (UTCR2_BRD))
    					/*  fua = fxtl/(16*Floor (Div/16)) */
    					/*  Tua = 16*Floor (Div/16)*Txtl   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR1_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 1)/16 >> FSize (UTCR2_BRD) << \
    			 FShft (UTCR1_BRD))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR2_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 1)/16 & FAlnMsk (UTCR2_BRD) << \
    			 FShft (UTCR2_BRD))
    					/*  fua = fxtl/(16*Ceil (Div/16))  */
    					/*  Tua = 16*Ceil (Div/16)*Txtl    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR3_RXE	0x00000001	/* Receive Enable		   */
    #define UTCR3_TXE	0x00000002	/* Transmit Enable		   */
    #define UTCR3_BRK	0x00000004	/* BReaK mode			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR3_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR3_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Interrupt Enable		   */
    #define UTCR3_LBM	0x00000020	/* Look-Back Mode		   */
    #define UTCR3_Ser2IrDA			/* Ser. port 2 IrDA settings (RIE, */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* TIE, LBM can be set or cleared) */ \
    			(UTCR3_RXE + UTCR3_TXE)
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define UTCR4_HSE	0x00000001	/* Hewlett-Packard Serial InfraRed */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (HP-SIR) modulation Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR4_NRZ	(UTCR4_HSE*0)	/*  Non-Return to Zero modulation  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTCR4_HPSIR	(UTCR4_HSE*1)	/*  HP-SIR modulation		   */
    #define UTCR4_LPM	0x00000002	/* Low-Power Mode		   */
    #define UTCR4_Z3_16Bit	(UTCR4_LPM*0)	/*  Zero pulse = 3/16 Bit time	   */
    #define UTCR4_Z1_6us	(UTCR4_LPM*1)	/*  Zero pulse = 1.6 us		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
    #if 0					/* Hidden receive FIFO bits	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTDR_PRE	0x00000100	/*  receive PaRity Error (read)    */
    #define UTDR_FRE	0x00000200	/*  receive FRaming Error (read)   */
    #define UTDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
    #endif /* 0 */
    
    #define UTSR0_TFS	0x00000001	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Service request (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTSR0_RFS	0x00000002	/* Receive FIFO 1/3-to-2/3-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Service request (read)	   */
    #define UTSR0_RID	0x00000004	/* Receiver IDle		   */
    #define UTSR0_RBB	0x00000008	/* Receive Beginning of Break	   */
    #define UTSR0_REB	0x00000010	/* Receive End of Break		   */
    #define UTSR0_EIF	0x00000020	/* Error In FIFO (read)		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTSR1_RNE	0x00000002	/* Receive FIFO Not Empty (read)   */
    #define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTSR1_PRE	0x00000008	/* receive PaRity Error (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define UTSR1_FRE	0x00000010	/* receive FRaming Error (read)    */
    #define UTSR1_ROR	0x00000020	/* Receive FIFO Over-Run (read)    */
    
    
    /*
     * Synchronous Data Link Controller (SDLC) control registers
     *
     * Registers
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser1SDCR0		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Control Register 0 (read/write).
     *    Ser1SDCR1		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Control Register 1 (read/write).
     *    Ser1SDCR2		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Control Register 2 (read/write).
     *    Ser1SDCR3		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Control Register 3 (read/write).
     *    Ser1SDCR4		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Control Register 4 (read/write).
     *    Ser1SDDR		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Data Register (read/write).
     *    Ser1SDSR0		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Status Register 0 (read/write).
     *    Ser1SDSR1		Serial port 1 Synchronous Data Link Controller (SDLC)
     *			Status Register 1 (read/write).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
     * Clocks
     *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *			or 3.5795 MHz).
     *    fsd, Tsd		Frequency, period of the SDLC communication.
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     */
    
    #define _Ser1SDCR0	0x80020060	/* Ser. port 1 SDLC Control Reg. 0 */
    #define _Ser1SDCR1	0x80020064	/* Ser. port 1 SDLC Control Reg. 1 */
    #define _Ser1SDCR2	0x80020068	/* Ser. port 1 SDLC Control Reg. 2 */
    #define _Ser1SDCR3	0x8002006C	/* Ser. port 1 SDLC Control Reg. 3 */
    #define _Ser1SDCR4	0x80020070	/* Ser. port 1 SDLC Control Reg. 4 */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser1SDDR	0x80020078	/* Ser. port 1 SDLC Data Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser1SDSR0	0x80020080	/* Ser. port 1 SDLC Status Reg. 0  */
    #define _Ser1SDSR1	0x80020084	/* Ser. port 1 SDLC Status Reg. 1  */
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDCR0			/* Ser. port 1 SDLC Control Reg. 0 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDCR1			/* Ser. port 1 SDLC Control Reg. 1 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDCR2			/* Ser. port 1 SDLC Control Reg. 2 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDCR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDCR3			/* Ser. port 1 SDLC Control Reg. 3 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDCR3)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDCR4			/* Ser. port 1 SDLC Control Reg. 4 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDCR4)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDDR			/* Ser. port 1 SDLC Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDSR0			/* Ser. port 1 SDLC Status Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDSR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser1SDSR1			/* Ser. port 1 SDLC Status Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser1SDSR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR0_SUS	0x00000001	/* SDLC/UART Select		   */
    #define SDCR0_SDLC	(SDCR0_SUS*0)	/*  SDLC mode (TXD1 & RXD1)	   */
    #define SDCR0_UART	(SDCR0_SUS*1)	/*  UART mode (TXD1 & RXD1)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR0_SDF	0x00000002	/* Single/Double start Flag select */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR0_SglFlg	(SDCR0_SDF*0)	/*  Single start Flag		   */
    #define SDCR0_DblFlg	(SDCR0_SDF*1)	/*  Double start Flag		   */
    #define SDCR0_LBM	0x00000004	/* Look-Back Mode		   */
    #define SDCR0_BMS	0x00000008	/* Bit Modulation Select	   */
    #define SDCR0_FM0	(SDCR0_BMS*0)	/*  Freq. Modulation zero (0)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR0_NRZ	(SDCR0_BMS*1)	/*  Non-Return to Zero modulation  */
    #define SDCR0_SCE	0x00000010	/* Sample Clock Enable (GPIO [16]) */
    #define SDCR0_SCD	0x00000020	/* Sample Clock Direction select   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (GPIO [16])			   */
    #define SDCR0_SClkIn	(SDCR0_SCD*0)	/*  Sample Clock Input		   */
    #define SDCR0_SClkOut	(SDCR0_SCD*1)	/*  Sample Clock Output		   */
    #define SDCR0_RCE	0x00000040	/* Receive Clock Edge select	   */
    #define SDCR0_RcRsEdg	(SDCR0_RCE*0)	/*  Receive clock Rising-Edge	   */
    #define SDCR0_RcFlEdg	(SDCR0_RCE*1)	/*  Receive clock Falling-Edge	   */
    #define SDCR0_TCE	0x00000080	/* Transmit Clock Edge select	   */
    #define SDCR0_TrRsEdg	(SDCR0_TCE*0)	/*  Transmit clock Rising-Edge	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR0_TrFlEdg	(SDCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_AAF	0x00000001	/* Abort After Frame enable	   */
    					/* (GPIO [17])			   */
    #define SDCR1_TXE	0x00000002	/* Transmit Enable		   */
    #define SDCR1_RXE	0x00000004	/* Receive Enable		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Interrupt Enable		   */
    #define SDCR1_AME	0x00000020	/* Address Match Enable		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_TUS	0x00000040	/* Transmit FIFO Under-run Select  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_EFrmURn	(SDCR1_TUS*0)	/*  End Frame on Under-Run	   */
    #define SDCR1_AbortURn	(SDCR1_TUS*1)	/*  Abort on Under-Run		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR1_RAE	0x00000080	/* Receive Abort interrupt Enable  */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR2_AMV	Fld (8, 0)	/* Address Match Value		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define SDCR3_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
    #define SDCR4_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* fsd = fxtl/(16*(BRD[11:0] + 1)) */
    					/* Tsd = 16*(BRD[11:0] + 1)*Txtl   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR3_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 16)/16 >> FSize (SDCR4_BRD) << \
    			 FShft (SDCR3_BRD))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR4_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 16)/16 & FAlnMsk (SDCR4_BRD) << \
    			 FShft (SDCR4_BRD))
    					/*  fsd = fxtl/(16*Floor (Div/16)) */
    					/*  Tsd = 16*Floor (Div/16)*Txtl   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR3_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 1)/16 >> FSize (SDCR4_BRD) << \
    			 FShft (SDCR3_BRD))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDCR4_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 1)/16 & FAlnMsk (SDCR4_BRD) << \
    			 FShft (SDCR4_BRD))
    					/*  fsd = fxtl/(16*Ceil (Div/16))  */
    					/*  Tsd = 16*Ceil (Div/16)*Txtl    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
    #if 0					/* Hidden receive FIFO bits	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDDR_CRE	0x00000200	/*  receive CRC Error (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
    #endif /* 0 */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR0_EIF	0x00000001	/* Error In FIFO (read)		   */
    #define SDSR0_TUR	0x00000002	/* Transmit FIFO Under-Run	   */
    #define SDSR0_RAB	0x00000004	/* Receive ABort		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Service request (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR0_RFS	0x00000010	/* Receive FIFO 1/3-to-2/3-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Service request (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define SDSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR1_TBY	0x00000002	/* Transmitter BusY (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
    #define SDSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR1_RTD	0x00000010	/* Receive Transition Detected	   */
    #define SDSR1_EOF	0x00000020	/* receive End-Of-Frame (read)	   */
    #define SDSR1_CRE	0x00000040	/* receive CRC Error (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define SDSR1_ROR	0x00000080	/* Receive FIFO Over-Run (read)    */
    
    
    /*
     * High-Speed Serial to Parallel controller (HSSP) control registers
     *
     * Registers
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser2HSCR0		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Control Register 0 (read/write).
     *    Ser2HSCR1		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Control Register 1 (read/write).
     *    Ser2HSDR		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Data Register (read/write).
     *    Ser2HSSR0		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Status Register 0 (read/write).
     *    Ser2HSSR1		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Status Register 1 (read).
     *    Ser2HSCR2		Serial port 2 High-Speed Serial to Parallel
     *			controller (HSSP) Control Register 2 (read/write).
     *			[The HSCR2 register is only implemented in
     *			versions 2.0 (rev. = 8) and higher of the StrongARM
     *			SA-1100.]
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     */
    
    #define _Ser2HSCR0	0x80040060	/* Ser. port 2 HSSP Control Reg. 0 */
    #define _Ser2HSCR1	0x80040064	/* Ser. port 2 HSSP Control Reg. 1 */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser2HSDR	0x8004006C	/* Ser. port 2 HSSP Data Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser2HSSR0	0x80040074	/* Ser. port 2 HSSP Status Reg. 0  */
    #define _Ser2HSSR1	0x80040078	/* Ser. port 2 HSSP Status Reg. 1  */
    #define _Ser2HSCR2	0x90060028	/* Ser. port 2 HSSP Control Reg. 2 */
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSCR0			/* Ser. port 2 HSSP Control Reg. 0 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSCR1			/* Ser. port 2 HSSP Control Reg. 1 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSDR			/* Ser. port 2 HSSP Data Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSDR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSSR0			/* Ser. port 2 HSSP Status Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSSR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSSR1			/* Ser. port 2 HSSP Status Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSSR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser2HSCR2			/* Ser. port 2 HSSP Control Reg. 2 */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser2HSCR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_ITR	0x00000001	/* IrDA Transmission Rate	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_UART	(HSCR0_ITR*0)	/*  UART mode (115.2 kb/s if IrDA) */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_HSSP	(HSCR0_ITR*1)	/*  HSSP mode (4 Mb/s)		   */
    #define HSCR0_LBM	0x00000002	/* Look-Back Mode		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_TUS	0x00000004	/* Transmit FIFO Under-run Select  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_EFrmURn	(HSCR0_TUS*0)	/*  End Frame on Under-Run	   */
    #define HSCR0_AbortURn	(HSCR0_TUS*1)	/*  Abort on Under-Run		   */
    #define HSCR0_TXE	0x00000008	/* Transmit Enable		   */
    #define HSCR0_RXE	0x00000010	/* Receive Enable		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_RIE	0x00000020	/* Receive FIFO 2/5-to-3/5-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR0_TIE	0x00000040	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Interrupt Enable		   */
    #define HSCR0_AME	0x00000080	/* Address Match Enable		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR1_AMV	Fld (8, 0)	/* Address Match Value		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
    #if 0					/* Hidden receive FIFO bits	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSDR_CRE	0x00000200	/*  receive CRC Error (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
    #endif /* 0 */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR0_EIF	0x00000001	/* Error In FIFO (read)		   */
    #define HSSR0_TUR	0x00000002	/* Transmit FIFO Under-Run	   */
    #define HSSR0_RAB	0x00000004	/* Receive ABort		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* Service request (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR0_RFS	0x00000010	/* Receive FIFO 2/5-to-3/5-full or */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Service request (read)	   */
    #define HSSR0_FRE	0x00000020	/* receive FRaming Error	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define HSSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR1_TBY	0x00000002	/* Transmitter BusY (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
    #define HSSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR1_EOF	0x00000010	/* receive End-Of-Frame (read)	   */
    #define HSSR1_CRE	0x00000020	/* receive CRC Error (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSSR1_ROR	0x00000040	/* Receive FIFO Over-Run (read)    */
    
    #define HSCR2_TXP	0x00040000	/* Transmit data Polarity (TXD_2)  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR2_TrDataL	(HSCR2_TXP*0)	/*  Transmit Data active Low	   */
    					/*  (inverted)			   */
    #define HSCR2_TrDataH	(HSCR2_TXP*1)	/*  Transmit Data active High	   */
    					/*  (non-inverted)		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR2_RXP	0x00080000	/* Receive data Polarity (RXD_2)   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define HSCR2_RcDataL	(HSCR2_RXP*0)	/*  Receive Data active Low	   */
    					/*  (inverted)			   */
    #define HSCR2_RcDataH	(HSCR2_RXP*1)	/*  Receive Data active High	   */
    					/*  (non-inverted)		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    /*
     * Multi-media Communications Port (MCP) control registers
     *
     * Registers
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    Ser4MCCR0		Serial port 4 Multi-media Communications Port (MCP)
     *			Control Register 0 (read/write).
     *    Ser4MCDR0		Serial port 4 Multi-media Communications Port (MCP)
     *			Data Register 0 (audio, read/write).
     *    Ser4MCDR1		Serial port 4 Multi-media Communications Port (MCP)
     *			Data Register 1 (telecom, read/write).
     *    Ser4MCDR2		Serial port 4 Multi-media Communications Port (MCP)
     *			Data Register 2 (CODEC registers, read/write).
     *    Ser4MCSR		Serial port 4 Multi-media Communications Port (MCP)
     *			Status Register (read/write).
     *    Ser4MCCR1		Serial port 4 Multi-media Communications Port (MCP)
     *			Control Register 1 (read/write).
     *			[The MCCR1 register is only implemented in
     *			versions 2.0 (rev. = 8) and higher of the StrongARM
     *			SA-1100.]
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *
     * Clocks
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    fmc, Tmc		Frequency, period of the MCP communication (10 MHz,
     *			12 MHz, or GPIO [21]).
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
     *    faud, Taud	Frequency, period of the audio sampling.
     *    ftcm, Ttcm	Frequency, period of the telecom sampling.
     */
    
    #define _Ser4MCCR0	0x80060000	/* Ser. port 4 MCP Control Reg. 0  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser4MCDR0	0x80060008	/* Ser. port 4 MCP Data Reg. 0	   */
    					/* (audio)			   */
    #define _Ser4MCDR1	0x8006000C	/* Ser. port 4 MCP Data Reg. 1	   */
    					/* (telecom)			   */
    #define _Ser4MCDR2	0x80060010	/* Ser. port 4 MCP Data Reg. 2	   */
    					/* (CODEC reg.)			   */
    #define _Ser4MCSR	0x80060018	/* Ser. port 4 MCP Status Reg.	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define _Ser4MCCR1	0x90060030	/* Ser. port 4 MCP Control Reg. 1  */
    
    #if LANGUAGE == C
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCCR0			/* Ser. port 4 MCP Control Reg. 0  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCCR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCDR0			/* Ser. port 4 MCP Data Reg. 0	   */ \
    					/* (audio)			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCDR0)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCDR1			/* Ser. port 4 MCP Data Reg. 1	   */ \
    					/* (telecom)			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCDR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCDR2			/* Ser. port 4 MCP Data Reg. 2	   */ \
    					/* (CODEC reg.)			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCDR2)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCSR			/* Ser. port 4 MCP Status Reg.	   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCSR)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define Ser4MCCR1			/* Ser. port 4 MCP Control Reg. 1  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(*((volatile Word *) io_p2v (_Ser4MCCR1)))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #endif /* LANGUAGE == C */
    
    #define MCCR0_ASD	Fld (7, 0)	/* Audio Sampling rate Divisor/32  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* [6..127]			   */
    					/* faud = fmc/(32*ASD)		   */
    					/* Taud = 32*ASD*Tmc		   */
    #define MCCR0_AudSmpDiv(Div)		/*  Audio Sampling rate Divisor    */ \
    					/*  [192..4064]			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			((Div)/32 << FShft (MCCR0_ASD))
    					/*  faud = fmc/(32*Floor (Div/32)) */
    					/*  Taud = 32*Floor (Div/32)*Tmc   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_CeilAudSmpDiv(Div)	/*  Ceil. of AudSmpDiv [192..4064] */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) + 31)/32 << FShft (MCCR0_ASD))
    					/*  faud = fmc/(32*Ceil (Div/32))  */
    					/*  Taud = 32*Ceil (Div/32)*Tmc    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_TSD	Fld (7, 8)	/* Telecom Sampling rate	   */
    					/* Divisor/32 [16..127]		   */
    					/* ftcm = fmc/(32*TSD)		   */
    					/* Ttcm = 32*TSD*Tmc		   */
    #define MCCR0_TcmSmpDiv(Div)		/*  Telecom Sampling rate Divisor  */ \
    					/*  [512..4064]			   */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			((Div)/32 << FShft (MCCR0_TSD))
    					/*  ftcm = fmc/(32*Floor (Div/32)) */
    					/*  Ttcm = 32*Floor (Div/32)*Tmc   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_CeilTcmSmpDiv(Div)	/*  Ceil. of TcmSmpDiv [512..4064] */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) + 31)/32 << FShft (MCCR0_TSD))
    					/*  ftcm = fmc/(32*Ceil (Div/32))  */
    					/*  Ttcm = 32*Ceil (Div/32)*Tmc    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_MCE	0x00010000	/* MCP Enable			   */
    #define MCCR0_ECS	0x00020000	/* External Clock Select	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_IntClk	(MCCR0_ECS*0)	/*  Internal Clock (10 or 12 MHz)  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_ExtClk	(MCCR0_ECS*1)	/*  External Clock (GPIO [21])	   */
    #define MCCR0_ADM	0x00040000	/* A/D (audio/telecom) data	   */
    					/* sampling/storing Mode	   */
    #define MCCR0_VldBit	(MCCR0_ADM*0)	/*  Valid Bit storing mode	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_SmpCnt	(MCCR0_ADM*1)	/*  Sampling Counter storing mode  */
    #define MCCR0_TTE	0x00080000	/* Telecom Transmit FIFO 1/2-full  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or less interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_TRE	0x00100000	/* Telecom Receive FIFO 1/2-full   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or more interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_ATE	0x00200000	/* Audio Transmit FIFO 1/2-full    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or less interrupt Enable	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_ARE	0x00400000	/* Audio Receive FIFO 1/2-full or  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more interrupt Enable	   */
    #define MCCR0_LBM	0x00800000	/* Look-Back Mode		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_ECP	Fld (2, 24)	/* External Clock Prescaler - 1    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR0_ExtClkDiv(Div)		/*  External Clock Divisor [1..4]  */ \
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    			(((Div) - 1) << FShft (MCCR0_ECP))
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCDR0_DATA	Fld (12, 4)	/* receive/transmit audio DATA	   */
    					/* FIFOs			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define MCDR1_DATA	Fld (14, 2)	/* receive/transmit telecom DATA   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* FIFOs			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* receive/transmit CODEC reg.	   */
    					/* FIFOs:			   */
    #define MCDR2_DATA	Fld (16, 0)	/*  reg. DATA			   */
    #define MCDR2_RW	0x00010000	/*  reg. Read/Write (transmit)	   */
    #define MCDR2_Rd	(MCDR2_RW*0)	/*   reg. Read			   */
    #define MCDR2_Wr	(MCDR2_RW*1)	/*   reg. Write			   */
    #define MCDR2_ADD	Fld (4, 17)	/*  reg. ADDress		   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    
    #define MCSR_ATS	0x00000001	/* Audio Transmit FIFO 1/2-full    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or less Service request (read)  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_ARS	0x00000002	/* Audio Receive FIFO 1/2-full or  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* more Service request (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TTS	0x00000004	/* Telecom Transmit FIFO 1/2-full  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or less Service request (read)  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TRS	0x00000008	/* Telecom Receive FIFO 1/2-full   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* or more Service request (read)  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_ATU	0x00000010	/* Audio Transmit FIFO Under-run   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_ARO	0x00000020	/* Audio Receive FIFO Over-run	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TTU	0x00000040	/* Telecom Transmit FIFO Under-run */
    #define MCSR_TRO	0x00000080	/* Telecom Receive FIFO Over-run   */
    #define MCSR_ANF	0x00000100	/* Audio transmit FIFO Not Full    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_ANE	0x00000200	/* Audio receive FIFO Not Empty    */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TNF	0x00000400	/* Telecom transmit FIFO Not Full  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TNE	0x00000800	/* Telecom receive FIFO Not Empty  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_CWC	0x00001000	/* CODEC register Write Completed  */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_CRC	0x00002000	/* CODEC register Read Completed   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    					/* (read)			   */
    #define MCSR_ACE	0x00004000	/* Audio CODEC Enabled (read)	   */
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCSR_TCE	0x00008000	/* Telecom CODEC Enabled (read)    */
    
    
    Wolfgang Denk's avatar
    Wolfgang Denk committed
    #define MCCR1_CFS	0x00100000	/* Clock Freq. Select		   */
    #define MCCR1_F12MHz	(MCCR1_CFS*0)	/*  Freq. (fmc) = ~ 12 MHz	   */
    					/*  (11.981 MHz)		   */
    #define MCCR1_F10MHz	(MCCR1_CFS*1)	/*  Freq. (fmc) = ~ 10 MHz	   */
    					/*  (9.585 MHz)			   */