]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/asm-arm/arch-at91rm9200/AT91RM9200.h
imported Ka-Ro specific additions to U-Boot 2009.08 for TX28
[karo-tx-uboot.git] / include / asm-arm / arch-at91rm9200 / AT91RM9200.h
index 97d470484c3f62d79b6ff4345751d454f60e4ef8..00bae1c4d5762318ecda916dce554c5cb34542c6 100755 (executable)
 #ifndef AT91RM9200_H
 #define AT91RM9200_H
 
+#ifndef __ASSEMBLY__
 typedef volatile unsigned int AT91_REG;                /* Hardware register definition */
 
-/******************************************************************************/
-/*        SOFTWARE API DEFINITION  FOR Timer Counter Channel Interface        */
-/******************************************************************************/
+/*****************************************************************************/
+/*        SOFTWARE API DEFINITION  FOR Timer Counter Channel Interface       */
+/*****************************************************************************/
 typedef struct _AT91S_TC
 {
-       AT91_REG         TC_CCR;        /* Channel Control Register */
-       AT91_REG         TC_CMR;        /* Channel Mode Register */
-       AT91_REG         Reserved0[2];  /*  */
-       AT91_REG         TC_CV;         /* Counter Value */
-       AT91_REG         TC_RA;         /* Register A */
-       AT91_REG         TC_RB;         /* Register B */
-       AT91_REG         TC_RC;         /* Register C */
-       AT91_REG         TC_SR;         /* Status Register */
-       AT91_REG         TC_IER;        /* Interrupt Enable Register */
-       AT91_REG         TC_IDR;        /* Interrupt Disable Register */
-       AT91_REG         TC_IMR;        /* Interrupt Mask Register */
+       AT91_REG         TC_CCR;        /* Channel Control Register */
+       AT91_REG         TC_CMR;        /* Channel Mode Register */
+       AT91_REG         Reserved0[2];  /*  */
+       AT91_REG         TC_CV;         /* Counter Value */
+       AT91_REG         TC_RA;         /* Register A */
+       AT91_REG         TC_RB;         /* Register B */
+       AT91_REG         TC_RC;         /* Register C */
+       AT91_REG         TC_SR;         /* Status Register */
+       AT91_REG         TC_IER;        /* Interrupt Enable Register */
+       AT91_REG         TC_IDR;        /* Interrupt Disable Register */
+       AT91_REG         TC_IMR;        /* Interrupt Mask Register */
 } AT91S_TC, *AT91PS_TC;
 
-#define AT91C_TC_TIMER_DIV1_CLOCK      ((unsigned int) 0x0 <<  0) /* (TC) MCK/2 */
-#define AT91C_TC_TIMER_DIV2_CLOCK      ((unsigned int) 0x1 <<  0) /* (TC) MCK/8 */
-#define AT91C_TC_TIMER_DIV3_CLOCK      ((unsigned int) 0x2 <<  0) /* (TC) MCK/32 */
-#define AT91C_TC_TIMER_DIV4_CLOCK      ((unsigned int) 0x3 <<  0) /* (TC) MCK/128 */
-#define AT91C_TC_SLOW_CLOCK            ((unsigned int) 0x4 <<  0) /* (TC) SLOW CLK */
-#define AT91C_TC_XC0_CLOCK             ((unsigned int) 0x5 <<  0) /* (TC) XC0 */
-#define AT91C_TC_XC1_CLOCK             ((unsigned int) 0x6 <<  0) /* (TC) XC1 */
-#define AT91C_TC_XC2_CLOCK             ((unsigned int) 0x7 <<  0) /* (TC) XC2 */
-#define AT91C_TCB_TC0XC0S_NONE         ((unsigned int) 0x1)       /* (TCB) None signal connected to XC0 */
-#define AT91C_TCB_TC1XC1S_NONE         ((unsigned int) 0x1 <<  2) /* (TCB) None signal connected to XC1 */
-#define AT91C_TCB_TC2XC2S_NONE         ((unsigned int) 0x1 <<  4) /* (TCB) None signal connected to XC2 */
-#define AT91C_TC_CLKDIS                        ((unsigned int) 0x1 <<  1) /* (TC) Counter Clock Disable Command */
-#define AT91C_TC_SWTRG                 ((unsigned int) 0x1 <<  2) /* (TC) Software Trigger Command */
-#define AT91C_TC_CLKEN                 ((unsigned int) 0x1 <<  0) /* (TC) Counter Clock Enable Command */
-
-/******************************************************************************/
-/*                  SOFTWARE API DEFINITION  FOR Usart                        */
-/******************************************************************************/
+#define AT91C_TC_TIMER_DIV1_CLOCK ((unsigned int) 0x0 <<  0) /* (TC) MCK/2 */
+#define AT91C_TC_TIMER_DIV2_CLOCK ((unsigned int) 0x1 <<  0) /* (TC) MCK/8 */
+#define AT91C_TC_TIMER_DIV3_CLOCK ((unsigned int) 0x2 <<  0) /* (TC) MCK/32 */
+#define AT91C_TC_TIMER_DIV4_CLOCK ((unsigned int) 0x3 <<  0) /* (TC) MCK/128 */
+#define AT91C_TC_SLOW_CLOCK      ((unsigned int) 0x4 <<  0) /* (TC) SLOW CLK*/
+#define AT91C_TC_XC0_CLOCK       ((unsigned int) 0x5 <<  0) /* (TC) XC0 */
+#define AT91C_TC_XC1_CLOCK       ((unsigned int) 0x6 <<  0) /* (TC) XC1 */
+#define AT91C_TC_XC2_CLOCK       ((unsigned int) 0x7 <<  0) /* (TC) XC2 */
+#define AT91C_TCB_TC0XC0S_NONE   ((unsigned int) 0x1)       /* (TCB) None signal connected to XC0 */
+#define AT91C_TCB_TC1XC1S_NONE   ((unsigned int) 0x1 <<  2) /* (TCB) None signal connected to XC1 */
+#define AT91C_TCB_TC2XC2S_NONE   ((unsigned int) 0x1 <<  4) /* (TCB) None signal connected to XC2 */
+#define AT91C_TC_CLKDIS                  ((unsigned int) 0x1 <<  1) /* (TC) Counter Clock Disable Command */
+#define AT91C_TC_SWTRG           ((unsigned int) 0x1 <<  2) /* (TC) Software Trigger Command */
+#define AT91C_TC_CLKEN           ((unsigned int) 0x1 <<  0) /* (TC) Counter Clock Enable Command */
+
+/*****************************************************************************/
+/*                  SOFTWARE API DEFINITION  FOR Usart                       */
+/*****************************************************************************/
 typedef struct _AT91S_USART
 {
-       AT91_REG         US_CR;         /* Control Register */
-       AT91_REG         US_MR;         /* Mode Register */
-       AT91_REG         US_IER;        /* Interrupt Enable Register */
-       AT91_REG         US_IDR;        /* Interrupt Disable Register */
-       AT91_REG         US_IMR;        /* Interrupt Mask Register */
-       AT91_REG         US_CSR;        /* Channel Status Register */
-       AT91_REG         US_RHR;        /* Receiver Holding Register */
-       AT91_REG         US_THR;        /* Transmitter Holding Register */
-       AT91_REG         US_BRGR;       /* Baud Rate Generator Register */
-       AT91_REG         US_RTOR;       /* Receiver Time-out Register */
-       AT91_REG         US_TTGR;       /* Transmitter Time-guard Register */
-       AT91_REG         Reserved0[5];  /*  */
-       AT91_REG         US_FIDI;       /* FI_DI_Ratio Register */
-       AT91_REG         US_NER;        /* Nb Errors Register */
-       AT91_REG         US_XXR;        /* XON_XOFF Register */
-       AT91_REG         US_IF;         /* IRDA_FILTER Register */
+       AT91_REG         US_CR;         /* Control Register */
+       AT91_REG         US_MR;         /* Mode Register */
+       AT91_REG         US_IER;        /* Interrupt Enable Register */
+       AT91_REG         US_IDR;        /* Interrupt Disable Register */
+       AT91_REG         US_IMR;        /* Interrupt Mask Register */
+       AT91_REG         US_CSR;        /* Channel Status Register */
+       AT91_REG         US_RHR;        /* Receiver Holding Register */
+       AT91_REG         US_THR;        /* Transmitter Holding Register */
+       AT91_REG         US_BRGR;       /* Baud Rate Generator Register */
+       AT91_REG         US_RTOR;       /* Receiver Time-out Register */
+       AT91_REG         US_TTGR;       /* Transmitter Time-guard Register */
+       AT91_REG         Reserved0[5];  /*  */
+       AT91_REG         US_FIDI;       /* FI_DI_Ratio Register */
+       AT91_REG         US_NER;        /* Nb Errors Register */
+       AT91_REG         US_XXR;        /* XON_XOFF Register */
+       AT91_REG         US_IF;         /* IRDA_FILTER Register */
        AT91_REG         Reserved1[44]; /*  */
-       AT91_REG         US_RPR;        /* Receive Pointer Register */
-       AT91_REG         US_RCR;        /* Receive Counter Register */
-       AT91_REG         US_TPR;        /* Transmit Pointer Register */
-       AT91_REG         US_TCR;        /* Transmit Counter Register */
-       AT91_REG         US_RNPR;       /* Receive Next Pointer Register */
-       AT91_REG         US_RNCR;       /* Receive Next Counter Register */
-       AT91_REG         US_TNPR;       /* Transmit Next Pointer Register */
-       AT91_REG         US_TNCR;       /* Transmit Next Counter Register */
-       AT91_REG         US_PTCR;       /* PDC Transfer Control Register */
-       AT91_REG         US_PTSR;       /* PDC Transfer Status Register */
+       AT91_REG         US_RPR;        /* Receive Pointer Register */
+       AT91_REG         US_RCR;        /* Receive Counter Register */
+       AT91_REG         US_TPR;        /* Transmit Pointer Register */
+       AT91_REG         US_TCR;        /* Transmit Counter Register */
+       AT91_REG         US_RNPR;       /* Receive Next Pointer Register */
+       AT91_REG         US_RNCR;       /* Receive Next Counter Register */
+       AT91_REG         US_TNPR;       /* Transmit Next Pointer Register */
+       AT91_REG         US_TNCR;       /* Transmit Next Counter Register */
+       AT91_REG         US_PTCR;       /* PDC Transfer Control Register */
+       AT91_REG         US_PTSR;       /* PDC Transfer Status Register */
 } AT91S_USART, *AT91PS_USART;
 
-/******************************************************************************/
-/*          SOFTWARE API DEFINITION  FOR Clock Generator Controler            */
-/******************************************************************************/
+/*****************************************************************************/
+/*          SOFTWARE API DEFINITION  FOR Clock Generator Controler           */
+/*****************************************************************************/
 typedef struct _AT91S_CKGR
 {
-       AT91_REG         CKGR_MOR;      /* Main Oscillator Register */
-       AT91_REG         CKGR_MCFR;     /* Main Clock  Frequency Register */
-       AT91_REG         CKGR_PLLAR;    /* PLL A Register */
-       AT91_REG         CKGR_PLLBR;    /* PLL B Register */
+       AT91_REG         CKGR_MOR;      /* Main Oscillator Register */
+       AT91_REG         CKGR_MCFR;     /* Main Clock  Frequency Register */
+       AT91_REG         CKGR_PLLAR;    /* PLL A Register */
+       AT91_REG         CKGR_PLLBR;    /* PLL B Register */
 } AT91S_CKGR, *AT91PS_CKGR;
 
 /* -------- CKGR_MOR : (CKGR Offset: 0x0) Main Oscillator Register -------- */
@@ -141,78 +142,78 @@ typedef struct _AT91S_CKGR
 #define AT91C_CKGR_USB_96M     ((unsigned int) 0x1   << 28)    /* (CKGR) Divider for USB Ports */
 #define AT91C_CKGR_USB_PLL     ((unsigned int) 0x1   << 29)    /* (CKGR) PLL Use */
 
-/******************************************************************************/
-/*        SOFTWARE API DEFINITION  FOR Parallel Input Output Controler        */
-/******************************************************************************/
+/*****************************************************************************/
+/*        SOFTWARE API DEFINITION  FOR Parallel Input Output Controler       */
+/*****************************************************************************/
 typedef struct _AT91S_PIO
 {
-       AT91_REG         PIO_PER;       /* PIO Enable Register */
-       AT91_REG         PIO_PDR;       /* PIO Disable Register */
-       AT91_REG         PIO_PSR;       /* PIO Status Register */
-       AT91_REG         Reserved0[1];  /*  */
-       AT91_REG         PIO_OER;       /* Output Enable Register */
-       AT91_REG         PIO_ODR;       /* Output Disable Registerr */
-       AT91_REG         PIO_OSR;       /* Output Status Register */
-       AT91_REG         Reserved1[1];  /*  */
-       AT91_REG         PIO_IFER;      /* Input Filter Enable Register */
-       AT91_REG         PIO_IFDR;      /* Input Filter Disable Register */
-       AT91_REG         PIO_IFSR;      /* Input Filter Status Register */
-       AT91_REG         Reserved2[1];  /*  */
-       AT91_REG         PIO_SODR;      /* Set Output Data Register */
-       AT91_REG         PIO_CODR;      /* Clear Output Data Register */
-       AT91_REG         PIO_ODSR;      /* Output Data Status Register */
-       AT91_REG         PIO_PDSR;      /* Pin Data Status Register */
-       AT91_REG         PIO_IER;       /* Interrupt Enable Register */
-       AT91_REG         PIO_IDR;       /* Interrupt Disable Register */
-       AT91_REG         PIO_IMR;       /* Interrupt Mask Register */
-       AT91_REG         PIO_ISR;       /* Interrupt Status Register */
-       AT91_REG         PIO_MDER;      /* Multi-driver Enable Register */
-       AT91_REG         PIO_MDDR;      /* Multi-driver Disable Register */
-       AT91_REG         PIO_MDSR;      /* Multi-driver Status Register */
-       AT91_REG         Reserved3[1];  /*  */
-       AT91_REG         PIO_PPUDR;     /* Pull-up Disable Register */
-       AT91_REG         PIO_PPUER;     /* Pull-up Enable Register */
-       AT91_REG         PIO_PPUSR;     /* Pad Pull-up Status Register */
-       AT91_REG         Reserved4[1];  /*  */
-       AT91_REG         PIO_ASR;       /* Select A Register */
-       AT91_REG         PIO_BSR;       /* Select B Register */
-       AT91_REG         PIO_ABSR;      /* AB Select Status Register */
-       AT91_REG         Reserved5[9];  /*  */
-       AT91_REG         PIO_OWER;      /* Output Write Enable Register */
-       AT91_REG         PIO_OWDR;      /* Output Write Disable Register */
-       AT91_REG         PIO_OWSR;      /* Output Write Status Register */
+       AT91_REG         PIO_PER;       /* PIO Enable Register */
+       AT91_REG         PIO_PDR;       /* PIO Disable Register */
+       AT91_REG         PIO_PSR;       /* PIO Status Register */
+       AT91_REG         Reserved0[1];  /*  */
+       AT91_REG         PIO_OER;       /* Output Enable Register */
+       AT91_REG         PIO_ODR;       /* Output Disable Registerr */
+       AT91_REG         PIO_OSR;       /* Output Status Register */
+       AT91_REG         Reserved1[1];  /*  */
+       AT91_REG         PIO_IFER;      /* Input Filter Enable Register */
+       AT91_REG         PIO_IFDR;      /* Input Filter Disable Register */
+       AT91_REG         PIO_IFSR;      /* Input Filter Status Register */
+       AT91_REG         Reserved2[1];  /*  */
+       AT91_REG         PIO_SODR;      /* Set Output Data Register */
+       AT91_REG         PIO_CODR;      /* Clear Output Data Register */
+       AT91_REG         PIO_ODSR;      /* Output Data Status Register */
+       AT91_REG         PIO_PDSR;      /* Pin Data Status Register */
+       AT91_REG         PIO_IER;       /* Interrupt Enable Register */
+       AT91_REG         PIO_IDR;       /* Interrupt Disable Register */
+       AT91_REG         PIO_IMR;       /* Interrupt Mask Register */
+       AT91_REG         PIO_ISR;       /* Interrupt Status Register */
+       AT91_REG         PIO_MDER;      /* Multi-driver Enable Register */
+       AT91_REG         PIO_MDDR;      /* Multi-driver Disable Register */
+       AT91_REG         PIO_MDSR;      /* Multi-driver Status Register */
+       AT91_REG         Reserved3[1];  /*  */
+       AT91_REG         PIO_PPUDR;     /* Pull-up Disable Register */
+       AT91_REG         PIO_PPUER;     /* Pull-up Enable Register */
+       AT91_REG         PIO_PPUSR;     /* Pad Pull-up Status Register */
+       AT91_REG         Reserved4[1];  /*  */
+       AT91_REG         PIO_ASR;       /* Select A Register */
+       AT91_REG         PIO_BSR;       /* Select B Register */
+       AT91_REG         PIO_ABSR;      /* AB Select Status Register */
+       AT91_REG         Reserved5[9];  /*  */
+       AT91_REG         PIO_OWER;      /* Output Write Enable Register */
+       AT91_REG         PIO_OWDR;      /* Output Write Disable Register */
+       AT91_REG         PIO_OWSR;      /* Output Write Status Register */
 } AT91S_PIO, *AT91PS_PIO;
 
 
-/******************************************************************************/
-/*              SOFTWARE API DEFINITION  FOR Debug Unit                       */
-/******************************************************************************/
+/*****************************************************************************/
+/*              SOFTWARE API DEFINITION  FOR Debug Unit                      */
+/*****************************************************************************/
 typedef struct _AT91S_DBGU
 {
-       AT91_REG         DBGU_CR;       /* Control Register */
-       AT91_REG         DBGU_MR;       /* Mode Register */
-       AT91_REG         DBGU_IER;      /* Interrupt Enable Register */
-       AT91_REG         DBGU_IDR;      /* Interrupt Disable Register */
-       AT91_REG         DBGU_IMR;      /* Interrupt Mask Register */
-       AT91_REG         DBGU_CSR;      /* Channel Status Register */
-       AT91_REG         DBGU_RHR;      /* Receiver Holding Register */
-       AT91_REG         DBGU_THR;      /* Transmitter Holding Register */
-       AT91_REG         DBGU_BRGR;     /* Baud Rate Generator Register */
-       AT91_REG         Reserved0[7];  /*  */
-       AT91_REG         DBGU_C1R;      /* Chip ID1 Register */
-       AT91_REG         DBGU_C2R;      /* Chip ID2 Register */
-       AT91_REG         DBGU_FNTR;     /* Force NTRST Register */
-       AT91_REG         Reserved1[45];         /*  */
-       AT91_REG         DBGU_RPR;      /* Receive Pointer Register */
-       AT91_REG         DBGU_RCR;      /* Receive Counter Register */
-       AT91_REG         DBGU_TPR;      /* Transmit Pointer Register */
-       AT91_REG         DBGU_TCR;      /* Transmit Counter Register */
-       AT91_REG         DBGU_RNPR;     /* Receive Next Pointer Register */
-       AT91_REG         DBGU_RNCR;     /* Receive Next Counter Register */
-       AT91_REG         DBGU_TNPR;     /* Transmit Next Pointer Register */
-       AT91_REG         DBGU_TNCR;     /* Transmit Next Counter Register */
-       AT91_REG         DBGU_PTCR;     /* PDC Transfer Control Register */
-       AT91_REG         DBGU_PTSR;     /* PDC Transfer Status Register */
+       AT91_REG         DBGU_CR;       /* Control Register */
+       AT91_REG         DBGU_MR;       /* Mode Register */
+       AT91_REG         DBGU_IER;      /* Interrupt Enable Register */
+       AT91_REG         DBGU_IDR;      /* Interrupt Disable Register */
+       AT91_REG         DBGU_IMR;      /* Interrupt Mask Register */
+       AT91_REG         DBGU_CSR;      /* Channel Status Register */
+       AT91_REG         DBGU_RHR;      /* Receiver Holding Register */
+       AT91_REG         DBGU_THR;      /* Transmitter Holding Register */
+       AT91_REG         DBGU_BRGR;     /* Baud Rate Generator Register */
+       AT91_REG         Reserved0[7];  /*  */
+       AT91_REG         DBGU_C1R;      /* Chip ID1 Register */
+       AT91_REG         DBGU_C2R;      /* Chip ID2 Register */
+       AT91_REG         DBGU_FNTR;     /* Force NTRST Register */
+       AT91_REG         Reserved1[45]; /*  */
+       AT91_REG         DBGU_RPR;      /* Receive Pointer Register */
+       AT91_REG         DBGU_RCR;      /* Receive Counter Register */
+       AT91_REG         DBGU_TPR;      /* Transmit Pointer Register */
+       AT91_REG         DBGU_TCR;      /* Transmit Counter Register */
+       AT91_REG         DBGU_RNPR;     /* Receive Next Pointer Register */
+       AT91_REG         DBGU_RNCR;     /* Receive Next Counter Register */
+       AT91_REG         DBGU_TNPR;     /* Transmit Next Pointer Register */
+       AT91_REG         DBGU_TNCR;     /* Transmit Next Counter Register */
+       AT91_REG         DBGU_PTCR;     /* PDC Transfer Control Register */
+       AT91_REG         DBGU_PTSR;     /* PDC Transfer Status Register */
 } AT91S_DBGU, *AT91PS_DBGU;
 
 /* -------- DBGU_IER : (DBGU Offset: 0x8) Debug Unit Interrupt Enable Register --------  */
@@ -242,12 +243,12 @@ typedef struct _AT91S_DBGU
 #define AT91C_US_PAR_NONE      ((unsigned int) 0x4 <<  9) /* (DBGU) No Parity */
 #define AT91C_US_NBSTOP_1_BIT  ((unsigned int) 0x0 << 12) /* (USART) 1 stop bit */
 
-/******************************************************************************/
-/*      SOFTWARE API DEFINITION  FOR Static Memory Controller 2 Interface     */
-/******************************************************************************/
+/*****************************************************************************/
+/*      SOFTWARE API DEFINITION  FOR Static Memory Controller 2 Interface    */
+/*****************************************************************************/
 typedef struct _AT91S_SMC2
 {
-       AT91_REG         SMC2_CSR[8];   /* SMC2 Chip Select Register */
+       AT91_REG         SMC2_CSR[8];   /* SMC2 Chip Select Register */
 } AT91S_SMC2, *AT91PS_SMC2;
 
 /* -------- SMC2_CSR : (SMC2 Offset: 0x0) SMC2 Chip Select Register --------  */
@@ -267,26 +268,26 @@ typedef struct _AT91S_SMC2
 #define AT91C_SMC2_RWSETUP             ((unsigned int) 0x7 << 24) /* (SMC2) Read and Write Signal Setup Time */
 #define AT91C_SMC2_RWHOLD              ((unsigned int) 0x7 << 29) /* (SMC2) Read and Write Signal Hold Time */
 
-/******************************************************************************/
-/*           SOFTWARE API DEFINITION  FOR Power Management Controler          */
-/******************************************************************************/
+/*****************************************************************************/
+/*           SOFTWARE API DEFINITION  FOR Power Management Controler         */
+/*****************************************************************************/
 typedef struct _AT91S_PMC
 {
-       AT91_REG         PMC_SCER;      /* System Clock Enable Register */
-       AT91_REG         PMC_SCDR;      /* System Clock Disable Register */
-       AT91_REG         PMC_SCSR;      /* System Clock Status Register */
-       AT91_REG         Reserved0[1];  /* */
-       AT91_REG         PMC_PCER;      /* Peripheral Clock Enable Register */
-       AT91_REG         PMC_PCDR;      /* Peripheral Clock Disable Register */
-       AT91_REG         PMC_PCSR;      /* Peripheral Clock Status Register */
-       AT91_REG         Reserved1[5];  /* */
-       AT91_REG         PMC_MCKR;      /* Master Clock Register */
-       AT91_REG         Reserved2[3];  /* */
-       AT91_REG         PMC_PCKR[8];   /* Programmable Clock Register */
-       AT91_REG         PMC_IER;       /* Interrupt Enable Register */
-       AT91_REG         PMC_IDR;       /* Interrupt Disable Register */
-       AT91_REG         PMC_SR;        /* Status Register */
-       AT91_REG         PMC_IMR;       /* Interrupt Mask Register */
+       AT91_REG         PMC_SCER;      /* System Clock Enable Register */
+       AT91_REG         PMC_SCDR;      /* System Clock Disable Register */
+       AT91_REG         PMC_SCSR;      /* System Clock Status Register */
+       AT91_REG         Reserved0[1];  /* */
+       AT91_REG         PMC_PCER;      /* Peripheral Clock Enable Register */
+       AT91_REG         PMC_PCDR;      /* Peripheral Clock Disable Register */
+       AT91_REG         PMC_PCSR;      /* Peripheral Clock Status Register */
+       AT91_REG         Reserved1[5];  /* */
+       AT91_REG         PMC_MCKR;      /* Master Clock Register */
+       AT91_REG         Reserved2[3];  /* */
+       AT91_REG         PMC_PCKR[8];   /* Programmable Clock Register */
+       AT91_REG         PMC_IER;       /* Interrupt Enable Register */
+       AT91_REG         PMC_IDR;       /* Interrupt Disable Register */
+       AT91_REG         PMC_SR;        /* Status Register */
+       AT91_REG         PMC_IMR;       /* Interrupt Mask Register */
 } AT91S_PMC, *AT91PS_PMC;
 
 /*------- PMC_SCER : (PMC Offset: 0x0) System Clock Enable Register --------*/
@@ -341,54 +342,54 @@ typedef struct _AT91S_PMC
 /*-------- PMC_SR : (PMC Offset: 0x68) PMC Status Register --------*/
 /*-------- PMC_IMR : (PMC Offset: 0x6c) PMC Interrupt Mask Register --------*/
 
-/******************************************************************************/
-/*              SOFTWARE API DEFINITION  FOR Ethernet MAC                     */
-/******************************************************************************/
+/*****************************************************************************/
+/*              SOFTWARE API DEFINITION  FOR Ethernet MAC                    */
+/*****************************************************************************/
 typedef struct _AT91S_EMAC
 {
-       AT91_REG         EMAC_CTL;      /* Network Control Register */
-       AT91_REG         EMAC_CFG;      /* Network Configuration Register */
-       AT91_REG         EMAC_SR;       /* Network Status Register */
-       AT91_REG         EMAC_TAR;      /* Transmit Address Register */
-       AT91_REG         EMAC_TCR;      /* Transmit Control Register */
-       AT91_REG         EMAC_TSR;      /* Transmit Status Register */
-       AT91_REG         EMAC_RBQP;     /* Receive Buffer Queue Pointer */
-       AT91_REG         Reserved0[1];  /*  */
-       AT91_REG         EMAC_RSR;      /* Receive Status Register */
-       AT91_REG         EMAC_ISR;      /* Interrupt Status Register */
-       AT91_REG         EMAC_IER;      /* Interrupt Enable Register */
-       AT91_REG         EMAC_IDR;      /* Interrupt Disable Register */
-       AT91_REG         EMAC_IMR;      /* Interrupt Mask Register */
-       AT91_REG         EMAC_MAN;      /* PHY Maintenance Register */
-       AT91_REG         Reserved1[2];  /*  */
-       AT91_REG         EMAC_FRA;      /* Frames Transmitted OK Register */
-       AT91_REG         EMAC_SCOL;     /* Single Collision Frame Register */
-       AT91_REG         EMAC_MCOL;     /* Multiple Collision Frame Register */
-       AT91_REG         EMAC_OK;       /* Frames Received OK Register */
-       AT91_REG         EMAC_SEQE;     /* Frame Check Sequence Error Register */
-       AT91_REG         EMAC_ALE;      /* Alignment Error Register */
-       AT91_REG         EMAC_DTE;      /* Deferred Transmission Frame Register */
-       AT91_REG         EMAC_LCOL;     /* Late Collision Register */
-       AT91_REG         EMAC_ECOL;     /* Excessive Collision Register */
-       AT91_REG         EMAC_CSE;      /* Carrier Sense Error Register */
-       AT91_REG         EMAC_TUE;      /* Transmit Underrun Error Register */
-       AT91_REG         EMAC_CDE;      /* Code Error Register */
-       AT91_REG         EMAC_ELR;      /* Excessive Length Error Register */
-       AT91_REG         EMAC_RJB;      /* Receive Jabber Register */
-       AT91_REG         EMAC_USF;      /* Undersize Frame Register */
-       AT91_REG         EMAC_SQEE;     /* SQE Test Error Register */
-       AT91_REG         EMAC_DRFC;     /* Discarded RX Frame Register */
-       AT91_REG         Reserved2[3];  /*  */
-       AT91_REG         EMAC_HSH;      /* Hash Address High[63:32] */
-       AT91_REG         EMAC_HSL;      /* Hash Address Low[31:0] */
-       AT91_REG         EMAC_SA1L;     /* Specific Address 1 Low, First 4 bytes */
-       AT91_REG         EMAC_SA1H;     /* Specific Address 1 High, Last 2 bytes */
-       AT91_REG         EMAC_SA2L;     /* Specific Address 2 Low, First 4 bytes */
-       AT91_REG         EMAC_SA2H;     /* Specific Address 2 High, Last 2 bytes */
-       AT91_REG         EMAC_SA3L;     /* Specific Address 3 Low, First 4 bytes */
-       AT91_REG         EMAC_SA3H;     /* Specific Address 3 High, Last 2 bytes */
-       AT91_REG         EMAC_SA4L;     /* Specific Address 4 Low, First 4 bytes */
-       AT91_REG         EMAC_SA4H;     /* Specific Address 4 High, Last 2 bytesr */
+       AT91_REG         EMAC_CTL;      /* Network Control Register */
+       AT91_REG         EMAC_CFG;      /* Network Configuration Register */
+       AT91_REG         EMAC_SR;       /* Network Status Register */
+       AT91_REG         EMAC_TAR;      /* Transmit Address Register */
+       AT91_REG         EMAC_TCR;      /* Transmit Control Register */
+       AT91_REG         EMAC_TSR;      /* Transmit Status Register */
+       AT91_REG         EMAC_RBQP;     /* Receive Buffer Queue Pointer */
+       AT91_REG         Reserved0[1];  /*  */
+       AT91_REG         EMAC_RSR;      /* Receive Status Register */
+       AT91_REG         EMAC_ISR;      /* Interrupt Status Register */
+       AT91_REG         EMAC_IER;      /* Interrupt Enable Register */
+       AT91_REG         EMAC_IDR;      /* Interrupt Disable Register */
+       AT91_REG         EMAC_IMR;      /* Interrupt Mask Register */
+       AT91_REG         EMAC_MAN;      /* PHY Maintenance Register */
+       AT91_REG         Reserved1[2];  /*  */
+       AT91_REG         EMAC_FRA;      /* Frames Transmitted OK Register */
+       AT91_REG         EMAC_SCOL;     /* Single Collision Frame Register */
+       AT91_REG         EMAC_MCOL;     /* Multiple Collision Frame Register */
+       AT91_REG         EMAC_OK;       /* Frames Received OK Register */
+       AT91_REG         EMAC_SEQE;     /* Frame Check Sequence Error Register */
+       AT91_REG         EMAC_ALE;      /* Alignment Error Register */
+       AT91_REG         EMAC_DTE;      /* Deferred Transmission Frame Register */
+       AT91_REG         EMAC_LCOL;     /* Late Collision Register */
+       AT91_REG         EMAC_ECOL;     /* Excessive Collision Register */
+       AT91_REG         EMAC_CSE;      /* Carrier Sense Error Register */
+       AT91_REG         EMAC_TUE;      /* Transmit Underrun Error Register */
+       AT91_REG         EMAC_CDE;      /* Code Error Register */
+       AT91_REG         EMAC_ELR;      /* Excessive Length Error Register */
+       AT91_REG         EMAC_RJB;      /* Receive Jabber Register */
+       AT91_REG         EMAC_USF;      /* Undersize Frame Register */
+       AT91_REG         EMAC_SQEE;     /* SQE Test Error Register */
+       AT91_REG         EMAC_DRFC;     /* Discarded RX Frame Register */
+       AT91_REG         Reserved2[3];  /*  */
+       AT91_REG         EMAC_HSH;      /* Hash Address High[63:32] */
+       AT91_REG         EMAC_HSL;      /* Hash Address Low[31:0] */
+       AT91_REG         EMAC_SA1L;     /* Specific Address 1 Low, First 4 bytes */
+       AT91_REG         EMAC_SA1H;     /* Specific Address 1 High, Last 2 bytes */
+       AT91_REG         EMAC_SA2L;     /* Specific Address 2 Low, First 4 bytes */
+       AT91_REG         EMAC_SA2H;     /* Specific Address 2 High, Last 2 bytes */
+       AT91_REG         EMAC_SA3L;     /* Specific Address 3 Low, First 4 bytes */
+       AT91_REG         EMAC_SA3H;     /* Specific Address 3 High, Last 2 bytes */
+       AT91_REG         EMAC_SA4L;     /* Specific Address 4 Low, First 4 bytes */
+       AT91_REG         EMAC_SA4H;     /* Specific Address 4 High, Last 2 bytesr */
 } AT91S_EMAC, *AT91PS_EMAC;
 
 /* -------- EMAC_CTL : (EMAC Offset: 0x0)  --------  */
@@ -424,11 +425,11 @@ typedef struct _AT91S_EMAC
 #define AT91C_EMAC_MDIO                ((unsigned int) 0x1 <<  1) /* (EMAC) */
 #define AT91C_EMAC_IDLE                ((unsigned int) 0x1 <<  2) /* (EMAC) */
 
-/* -------- EMAC_TCR : (EMAC Offset: 0x10) Transmit Control Register -------- */
+/* -------- EMAC_TCR : (EMAC Offset: 0x10) Transmit Control Register ------- */
 #define AT91C_EMAC_LEN         ((unsigned int) 0x7FF <<  0) /* (EMAC) */
 #define AT91C_EMAC_NCRC                ((unsigned int) 0x1 << 15) /* (EMAC) */
 
-/* -------- EMAC_TSR : (EMAC Offset: 0x14) Transmit Control Register -------- */
+/* -------- EMAC_TSR : (EMAC Offset: 0x14) Transmit Control Register ------- */
 #define AT91C_EMAC_OVR         ((unsigned int) 0x1 <<  0) /* (EMAC) */
 #define AT91C_EMAC_COL         ((unsigned int) 0x1 <<  1) /* (EMAC) */
 #define AT91C_EMAC_RLE         ((unsigned int) 0x1 <<  2) /* (EMAC) */
@@ -442,7 +443,7 @@ typedef struct _AT91S_EMAC
 #define AT91C_EMAC_REC         ((unsigned int) 0x1 <<  1) /* (EMAC) */
 #define AT91C_EMAC_RSR_OVR     ((unsigned int) 0x1 <<  2) /* (EMAC) */
 
-/* -------- EMAC_ISR : (EMAC Offset: 0x24) Interrupt Status Register -------- */
+/* -------- EMAC_ISR : (EMAC Offset: 0x24) Interrupt Status Register ------- */
 #define AT91C_EMAC_DONE                ((unsigned int) 0x1 <<  0) /* (EMAC) */
 #define AT91C_EMAC_RCOM                ((unsigned int) 0x1 <<  1) /* (EMAC) */
 #define AT91C_EMAC_RBNA                ((unsigned int) 0x1 <<  2) /* (EMAC) */
@@ -456,8 +457,8 @@ typedef struct _AT91S_EMAC
 #define AT91C_EMAC_ROVR                ((unsigned int) 0x1 << 10) /* (EMAC) */
 #define AT91C_EMAC_HRESP       ((unsigned int) 0x1 << 11) /* (EMAC) */
 
-/* -------- EMAC_IER : (EMAC Offset: 0x28) Interrupt Enable Register -------- */
-/* -------- EMAC_IDR : (EMAC Offset: 0x2c) Interrupt Disable Register -------- */
+/* -------- EMAC_IER : (EMAC Offset: 0x28) Interrupt Enable Register ------- */
+/* -------- EMAC_IDR : (EMAC Offset: 0x2c) Interrupt Disable Register ------ */
 /* -------- EMAC_IMR : (EMAC Offset: 0x30) Interrupt Mask Register -------- */
 /* -------- EMAC_MAN : (EMAC Offset: 0x34) PHY Maintenance Register -------- */
 #define AT91C_EMAC_DATA                ((unsigned int) 0xFFFF <<  0) /* (EMAC) */
@@ -471,32 +472,32 @@ typedef struct _AT91S_EMAC
 #define AT91C_EMAC_HIGH                ((unsigned int) 0x1  << 30) /* (EMAC) */
 #define AT91C_EMAC_LOW         ((unsigned int) 0x1  << 31) /* (EMAC) */
 
-/******************************************************************************/
-/*           SOFTWARE API DEFINITION  FOR Serial Parallel Interface           */
-/******************************************************************************/
+/*****************************************************************************/
+/*           SOFTWARE API DEFINITION  FOR Serial Parallel Interface          */
+/*****************************************************************************/
 typedef struct _AT91S_SPI
 {
-       AT91_REG         SPI_CR;        /* Control Register */
-       AT91_REG         SPI_MR;        /* Mode Register */
-       AT91_REG         SPI_RDR;       /* Receive Data Register */
-       AT91_REG         SPI_TDR;       /* Transmit Data Register */
-       AT91_REG         SPI_SR;        /* Status Register */
-       AT91_REG         SPI_IER;       /* Interrupt Enable Register */
-       AT91_REG         SPI_IDR;       /* Interrupt Disable Register */
-       AT91_REG         SPI_IMR;       /* Interrupt Mask Register */
-       AT91_REG         Reserved0[4];  /* */
-       AT91_REG         SPI_CSR[4];    /* Chip Select Register */
+       AT91_REG         SPI_CR;        /* Control Register */
+       AT91_REG         SPI_MR;        /* Mode Register */
+       AT91_REG         SPI_RDR;       /* Receive Data Register */
+       AT91_REG         SPI_TDR;       /* Transmit Data Register */
+       AT91_REG         SPI_SR;        /* Status Register */
+       AT91_REG         SPI_IER;       /* Interrupt Enable Register */
+       AT91_REG         SPI_IDR;       /* Interrupt Disable Register */
+       AT91_REG         SPI_IMR;       /* Interrupt Mask Register */
+       AT91_REG         Reserved0[4];  /* */
+       AT91_REG         SPI_CSR[4];    /* Chip Select Register */
        AT91_REG         Reserved1[48]; /* */
-       AT91_REG         SPI_RPR;       /* Receive Pointer Register */
-       AT91_REG         SPI_RCR;       /* Receive Counter Register */
-       AT91_REG         SPI_TPR;       /* Transmit Pointer Register */
-       AT91_REG         SPI_TCR;       /* Transmit Counter Register */
-       AT91_REG         SPI_RNPR;      /* Receive Next Pointer Register */
-       AT91_REG         SPI_RNCR;      /* Receive Next Counter Register */
-       AT91_REG         SPI_TNPR;      /* Transmit Next Pointer Register */
-       AT91_REG         SPI_TNCR;      /* Transmit Next Counter Register */
-       AT91_REG         SPI_PTCR;      /* PDC Transfer Control Register */
-       AT91_REG         SPI_PTSR;      /* PDC Transfer Status Register */
+       AT91_REG         SPI_RPR;       /* Receive Pointer Register */
+       AT91_REG         SPI_RCR;       /* Receive Counter Register */
+       AT91_REG         SPI_TPR;       /* Transmit Pointer Register */
+       AT91_REG         SPI_TCR;       /* Transmit Counter Register */
+       AT91_REG         SPI_RNPR;      /* Receive Next Pointer Register */
+       AT91_REG         SPI_RNCR;      /* Receive Next Counter Register */
+       AT91_REG         SPI_TNPR;      /* Transmit Next Pointer Register */
+       AT91_REG         SPI_TNCR;      /* Transmit Next Counter Register */
+       AT91_REG         SPI_PTCR;      /* PDC Transfer Control Register */
+       AT91_REG         SPI_PTSR;      /* PDC Transfer Status Register */
 } AT91S_SPI, *AT91PS_SPI;
 
 /* -------- SPI_CR : (SPI Offset: 0x0) SPI Control Register -------- */
@@ -536,7 +537,7 @@ typedef struct _AT91S_SPI
 #define AT91C_SPI_SPIENS       ((unsigned int) 0x1 << 16) /* (SPI) Enable Status */
 
 /* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */
-/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */
+/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register ------- */
 /* -------- SPI_IMR : (SPI Offset: 0x1c) Interrupt Mask Register -------- */
 /* -------- SPI_CSR : (SPI Offset: 0x30) Chip Select Register -------- */
 #define AT91C_SPI_CPOL         ((unsigned int) 0x1  <<  0) /* (SPI) Clock Polarity */
@@ -555,21 +556,21 @@ typedef struct _AT91S_SPI
 #define AT91C_SPI_DLYBS                ((unsigned int) 0xFF << 16) /* (SPI) Serial Clock Baud Rate */
 #define AT91C_SPI_DLYBCT       ((unsigned int) 0xFF << 24) /* (SPI) Delay Between Consecutive Transfers */
 
-/******************************************************************************/
-/*           SOFTWARE API DEFINITION  FOR Peripheral Data Controller          */
-/******************************************************************************/
+/*****************************************************************************/
+/*           SOFTWARE API DEFINITION  FOR Peripheral Data Controller         */
+/*****************************************************************************/
 typedef struct _AT91S_PDC
 {
-       AT91_REG         PDC_RPR;       /* Receive Pointer Register */
-       AT91_REG         PDC_RCR;       /* Receive Counter Register */
-       AT91_REG         PDC_TPR;       /* Transmit Pointer Register */
-       AT91_REG         PDC_TCR;       /* Transmit Counter Register */
-       AT91_REG         PDC_RNPR;      /* Receive Next Pointer Register */
-       AT91_REG         PDC_RNCR;      /* Receive Next Counter Register */
-       AT91_REG         PDC_TNPR;      /* Transmit Next Pointer Register */
-       AT91_REG         PDC_TNCR;      /* Transmit Next Counter Register */
-       AT91_REG         PDC_PTCR;      /* PDC Transfer Control Register */
-       AT91_REG         PDC_PTSR;      /* PDC Transfer Status Register */
+       AT91_REG         PDC_RPR;       /* Receive Pointer Register */
+       AT91_REG         PDC_RCR;       /* Receive Counter Register */
+       AT91_REG         PDC_TPR;       /* Transmit Pointer Register */
+       AT91_REG         PDC_TCR;       /* Transmit Counter Register */
+       AT91_REG         PDC_RNPR;      /* Receive Next Pointer Register */
+       AT91_REG         PDC_RNCR;      /* Receive Next Counter Register */
+       AT91_REG         PDC_TNPR;      /* Transmit Next Pointer Register */
+       AT91_REG         PDC_TNCR;      /* Transmit Next Counter Register */
+       AT91_REG         PDC_PTCR;      /* PDC Transfer Control Register */
+       AT91_REG         PDC_PTSR;      /* PDC Transfer Status Register */
 } AT91S_PDC, *AT91PS_PDC;
 
 /* -------- PDC_PTCR : (PDC Offset: 0x20) PDC Transfer Control Register -------- */
@@ -692,11 +693,15 @@ typedef struct _AT91S_PDC
 #define AT91C_PIO_PA7          ((unsigned int) 1 <<  7)        /* Pin Controlled by PA7 */
 #define AT91C_PA7_ETXCK_EREFCK ((unsigned int) AT91C_PIO_PA7)  /* Ethernet MAC Transmit Clock/Reference Clock */
 
+#define AT91C_PIO_PB0          ((unsigned int) 1 <<  0)        /* Pin Controlled by PB3 */
+#define AT91C_PIO_PB1          ((unsigned int) 1 <<  1)        /* Pin Controlled by PB3 */
+#define AT91C_PIO_PB2          ((unsigned int) 1 <<  2)        /* Pin Controlled by PB3 */
 #define AT91C_PIO_PB3          ((unsigned int) 1 <<  3)        /* Pin Controlled by PB3 */
 #define AT91C_PIO_PB4          ((unsigned int) 1 <<  4)        /* Pin Controlled by PB4 */
 #define AT91C_PIO_PB5          ((unsigned int) 1 <<  5)        /* Pin Controlled by PB5 */
 #define AT91C_PIO_PB6          ((unsigned int) 1 <<  6)        /* Pin Controlled by PB6 */
 #define AT91C_PIO_PB7          ((unsigned int) 1 <<  7)        /* Pin Controlled by PB7 */
+#define AT91C_PIO_PB22         ((unsigned int) 1 << 22)        /* Pin Controlled by PB22 */
 #define AT91C_PIO_PB25         ((unsigned int) 1 << 25)        /* Pin Controlled by PB25 */
 #define AT91C_PB25_DSR1                ((unsigned int) AT91C_PIO_PB25) /* USART 1 Data Set ready */
 #define AT91C_PB25_EF100       ((unsigned int) AT91C_PIO_PB25) /* Ethernet MAC Force 100 Mbits */
@@ -737,26 +742,71 @@ typedef struct _AT91S_PDC
 #define AT91C_PIOC_CODR                ((AT91_REG *)   0xFFFFF834) /* (PIOC) Clear Output Data Register */
 #define AT91C_PIOC_PDSR                ((AT91_REG *)   0xFFFFF83C) /* (PIOC) Pin Data Status Register */
 
-#define AT91C_BASE_SPI         ((AT91PS_SPI)   0xFFFE0000) /* (SPI) Base Address */
-#define AT91C_BASE_EMAC                ((AT91PS_EMAC)  0xFFFBC000) /* (EMAC) Base Address */
+#define AT91C_BASE_AIC         ((AT91PS_AIC)   0xFFFFF000) /* (AIC) Base Address */
+#define AT91C_BASE_DBGU                ((AT91PS_DBGU)  0xFFFFF200) /* (DBGU) Base Address */
+#define AT91C_BASE_PIOA                ((AT91PS_PIO)   0xFFFFF400) /* (PIOA) Base Address */
+#define AT91C_BASE_PIOB                ((AT91PS_PIO)   0xFFFFF600) /* (PIOB) Base Address */
+#define AT91C_BASE_PIOC                ((AT91PS_PIO)   0xFFFFF800) /* (PIOC) Base Address */
+#define AT91C_BASE_PIOD                ((AT91PS_PIO)   0xFFFFFA00) /* (PIOC) Base Address */
 #define AT91C_BASE_PMC         ((AT91PS_PMC)   0xFFFFFC00) /* (PMC) Base Address */
+#if    0
+#define AT91C_BASE_ST          ((AT91PS_ST)    0xFFFFFD00) /* (PMC) Base Address */
+#define AT91C_BASE_RTC         ((AT91PS_RTC)   0xFFFFFE00) /* (PMC) Base Address */
+#define AT91C_BASE_MC          ((AT91PS_MC)    0xFFFFFF00) /* (PMC) Base Address */
+#endif
+
 #define AT91C_BASE_TC0         ((AT91PS_TC)    0xFFFA0000) /* (TC0) Base Address */
-#define AT91C_BASE_DBGU                ((AT91PS_DBGU)  0xFFFFF200) /* (DBGU) Base Address */
+#define AT91C_BASE_TC1         ((AT91PS_TC)    0xFFFA4000) /* (TC0) Base Address */
+#if    0
+#define AT91C_BASE_UDP         ((AT91PS_UDP)   0xFFFB0000) /* (TC0) Base Address */
+#define AT91C_BASE_MCI         ((AT91PS_MCI)   0xFFFB4000) /* (TC0) Base Address */
+#define AT91C_BASE_TWI         ((AT91PS_TWI)   0xFFFB8000) /* (TC0) Base Address */
+#endif
+#define AT91C_BASE_EMAC                ((AT91PS_EMAC)  0xFFFBC000) /* (EMAC) Base Address */
+#define AT91C_BASE_US0         ((AT91PS_USART) 0xFFFC0000) /* (US0) Base Address */
+#define AT91C_BASE_US1         ((AT91PS_USART) 0xFFFC4000) /* (US1) Base Address */
+#define AT91C_BASE_US2         ((AT91PS_USART) 0xFFFC8000) /* (US1) Base Address */
+#define AT91C_BASE_US3         ((AT91PS_USART) 0xFFFCC000) /* (US1) Base Address */
+#define AT91C_BASE_SPI         ((AT91PS_SPI)   0xFFFE0000) /* (SPI) Base Address */
+
 #define AT91C_BASE_CKGR                ((AT91PS_CKGR)  0xFFFFFC20) /* (CKGR) Base Address */
-#define AT91C_BASE_PIOC                ((AT91PS_PIO)   0xFFFFF800) /* (PIOC) Base Address */
-#define AT91C_BASE_PIOB                ((AT91PS_PIO)   0xFFFFF600) /* (PIOB) Base Address */
-#define AT91C_BASE_PIOA                ((AT91PS_PIO)   0xFFFFF400) /* (PIOA) Base Address */
 #define AT91C_EBI_CSA          ((AT91_REG *)   0xFFFFFF60) /* (EBI) Chip Select Assignment Register */
 #define AT91C_BASE_SMC2                ((AT91PS_SMC2)  0xFFFFFF70) /* (SMC2) Base Address */
-#define AT91C_BASE_US0         ((AT91PS_USART) 0xFFFC0000) /* (US0) Base Address */
-#define AT91C_BASE_US1         ((AT91PS_USART) 0xFFFC4000) /* (US1) Base Address */
 #define AT91C_TCB0_BMR         ((AT91_REG *)   0xFFFA00C4) /* (TCB0) TC Block Mode Register */
 #define AT91C_TCB0_BCR         ((AT91_REG *)   0xFFFA00C0) /* (TCB0) TC Block Control Register */
 #define AT91C_PIOC_PDR         ((AT91_REG *)   0xFFFFF804) /* (PIOC) PIO Disable Register */
 #define AT91C_PIOC_PER         ((AT91_REG *)   0xFFFFF800) /* (PIOC) PIO Enable Register */
-#define AT91C_PIOC_ODR         ((AT91_REG *)   0xFFFFF814) /* (PIOC) Output Disable Registerr */
+#define AT91C_PIOC_ODR         ((AT91_REG *)   0xFFFFF814) /* (PIOC) Output Disable Registerr */
 #define AT91C_PIOB_PER         ((AT91_REG *)   0xFFFFF600) /* (PIOB) PIO Enable Register */
 #define AT91C_PIOB_ODR         ((AT91_REG *)   0xFFFFF614) /* (PIOB) Output Disable Registerr */
 #define AT91C_PIOB_PDSR                ((AT91_REG *)   0xFFFFF63C) /* (PIOB) Pin Data Status Register */
 
-#endif
+#else
+/* flash */
+#define AT91C_MC_PUIA          0xFFFFFF10
+#define AT91C_MC_PUP           0xFFFFFF50
+#define AT91C_MC_PUER          0xFFFFFF54
+#define AT91C_MC_ASR           0xFFFFFF04
+#define AT91C_MC_AASR          0xFFFFFF08
+#define AT91C_EBI_CFGR         0xFFFFFF64
+#define AT91C_SMC_CSR0         0xFFFFFF70
+
+/* clocks */
+#define AT91C_PLLAR            0xFFFFFC28
+#define AT91C_PLLBR            0xFFFFFC2C
+#define AT91C_MCKR             0xFFFFFC30
+
+#define AT91C_BASE_CKGR                0xFFFFFC20
+#define AT91C_CKGR_MOR         0
+
+/* sdram */
+#define AT91C_PIOC_ASR         0xFFFFF870
+#define AT91C_PIOC_BSR         0xFFFFF874
+#define AT91C_PIOC_PDR         0xFFFFF804
+#define AT91C_EBI_CSA          0xFFFFFF60
+#define AT91C_SDRC_CR          0xFFFFFF98
+#define AT91C_SDRC_MR          0xFFFFFF90
+#define AT91C_SDRC_TR          0xFFFFFF94
+
+#endif /* __ASSEMBLY__ */
+#endif /* AT91RM9200_H */