atmel: update at91sam9m10g45 SoC support to new style
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 4 Aug 2011 08:53:29 +0000 (08:53 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Sat, 3 Sep 2011 20:40:44 +0000 (22:40 +0200)
Based on earlier work by Alex Waterman <awaterman@dawning.com>.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
arch/arm/include/asm/arch-at91/at91sam9g45.h
arch/arm/include/asm/arch-at91/at91sam9g45_matrix.h

index 4ad9b1fcc98f09078b7924710ac5ef3a744878cf..5ff32e3749e792a328da208ab80c2562856ba0cf 100644 (file)
 #include <asm/arch/at91_common.h>
 #include <asm/arch/at91_pmc.h>
 #include <asm/arch/gpio.h>
-#include <asm/arch/io.h>
+#include <asm/io.h>
+
+/*
+ * if CONFIG_AT91_GPIO_PULLUP ist set, keep pullups on on all
+ * peripheral pins. Good to have if hardware is soldered optionally
+ * or in case of SPI no slave is selected. Avoid lines to float
+ * needlessly. Use a short local PUP define.
+ *
+ * Due to errata "TXD floats when CTS is inactive" pullups are always
+ * on for TXD pins.
+ */
+#ifdef CONFIG_AT91_GPIO_PULLUP
+# define PUP CONFIG_AT91_GPIO_PULLUP
+#else
+# define PUP 0
+#endif
 
 void at91_serial0_hw_init(void)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
        at91_set_a_periph(AT91_PIO_PORTB, 19, 1);       /* TXD0 */
-       at91_set_a_periph(AT91_PIO_PORTB, 18, 0);       /* RXD0 */
-       writel(1 << AT91SAM9G45_ID_US0, &pmc->pcer);
+       at91_set_a_periph(AT91_PIO_PORTB, 18, PUP);     /* RXD0 */
+       writel(1 << ATMEL_ID_USART0, &pmc->pcer);
 }
 
 void at91_serial1_hw_init(void)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
        at91_set_a_periph(AT91_PIO_PORTB, 4, 1);                /* TXD1 */
-       at91_set_a_periph(AT91_PIO_PORTB, 5, 0);                /* RXD1 */
-       writel(1 << AT91SAM9G45_ID_US1, &pmc->pcer);
+       at91_set_a_periph(AT91_PIO_PORTB, 5, PUP);              /* RXD1 */
+       writel(1 << ATMEL_ID_USART1, &pmc->pcer);
 }
 
 void at91_serial2_hw_init(void)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
        at91_set_a_periph(AT91_PIO_PORTD, 6, 1);                /* TXD2 */
-       at91_set_a_periph(AT91_PIO_PORTD, 7, 0);                /* RXD2 */
-       writel(1 << AT91SAM9G45_ID_US2, &pmc->pcer);
+       at91_set_a_periph(AT91_PIO_PORTD, 7, PUP);              /* RXD2 */
+       writel(1 << ATMEL_ID_USART2, &pmc->pcer);
 }
 
-void at91_serial3_hw_init(void)
+void at91_seriald_hw_init(void)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
        at91_set_a_periph(AT91_PIO_PORTB, 12, 0);       /* DRXD */
        at91_set_a_periph(AT91_PIO_PORTB, 13, 1);       /* DTXD */
-       writel(1 << AT91_ID_SYS, &pmc->pcer);
-}
-
-void at91_serial_hw_init(void)
-{
-#ifdef CONFIG_USART0
-       at91_serial0_hw_init();
-#endif
-
-#ifdef CONFIG_USART1
-       at91_serial1_hw_init();
-#endif
-
-#ifdef CONFIG_USART2
-       at91_serial2_hw_init();
-#endif
-
-#ifdef CONFIG_USART3   /* DBGU */
-       at91_serial3_hw_init();
-#endif
+       writel(1 << ATMEL_ID_SYS, &pmc->pcer);
 }
 
-#ifdef CONFIG_ATMEL_SPI
+#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
 void at91_spi0_hw_init(unsigned long cs_mask)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
-       at91_set_a_periph(AT91_PIO_PORTB, 0, 0);        /* SPI0_MISO */
-       at91_set_a_periph(AT91_PIO_PORTB, 1, 0);        /* SPI0_MOSI */
-       at91_set_a_periph(AT91_PIO_PORTB, 2, 0);        /* SPI0_SPCK */
+       at91_set_a_periph(AT91_PIO_PORTB, 0, PUP);      /* SPI0_MISO */
+       at91_set_a_periph(AT91_PIO_PORTB, 1, PUP);      /* SPI0_MOSI */
+       at91_set_a_periph(AT91_PIO_PORTB, 2, PUP);      /* SPI0_SPCK */
 
        /* Enable clock */
-       writel(1 << AT91SAM9G45_ID_SPI0, &pmc->pcer);
+       writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
 
        if (cs_mask & (1 << 0)) {
-               at91_set_a_periph(AT91_PIO_PORTB, 3, 0);
+               at91_set_a_periph(AT91_PIO_PORTB, 3, 1);
        }
        if (cs_mask & (1 << 1)) {
-               at91_set_b_periph(AT91_PIO_PORTB, 18, 0);
+               at91_set_b_periph(AT91_PIO_PORTB, 18, 1);
        }
        if (cs_mask & (1 << 2)) {
-               at91_set_b_periph(AT91_PIO_PORTB, 19, 0);
+               at91_set_b_periph(AT91_PIO_PORTB, 19, 1);
        }
        if (cs_mask & (1 << 3)) {
-               at91_set_b_periph(AT91_PIO_PORTD, 27, 0);
+               at91_set_b_periph(AT91_PIO_PORTD, 27, 1);
        }
        if (cs_mask & (1 << 4)) {
-               at91_set_pio_output(AT91_PIO_PORTB, 3, 0);
+               at91_set_pio_output(AT91_PIO_PORTB, 3, 1);
        }
        if (cs_mask & (1 << 5)) {
-               at91_set_pio_output(AT91_PIO_PORTB, 18, 0);
+               at91_set_pio_output(AT91_PIO_PORTB, 18, 1);
        }
        if (cs_mask & (1 << 6)) {
-               at91_set_pio_output(AT91_PIO_PORTB, 19, 0);
+               at91_set_pio_output(AT91_PIO_PORTB, 19, 1);
        }
        if (cs_mask & (1 << 7)) {
-               at91_set_pio_output(AT91_PIO_PORTD, 27, 0);
+               at91_set_pio_output(AT91_PIO_PORTD, 27, 1);
        }
 }
 
 void at91_spi1_hw_init(unsigned long cs_mask)
 {
-       at91_pmc_t      *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
 
-       at91_set_a_periph(AT91_PIO_PORTB, 14, 0);       /* SPI1_MISO */
-       at91_set_a_periph(AT91_PIO_PORTB, 15, 0);       /* SPI1_MOSI */
-       at91_set_a_periph(AT91_PIO_PORTB, 16, 0);       /* SPI1_SPCK */
+       at91_set_a_periph(AT91_PIO_PORTB, 14, PUP);     /* SPI1_MISO */
+       at91_set_a_periph(AT91_PIO_PORTB, 15, PUP);     /* SPI1_MOSI */
+       at91_set_a_periph(AT91_PIO_PORTB, 16, PUP);     /* SPI1_SPCK */
 
        /* Enable clock */
-       writel(1 << AT91SAM9G45_ID_SPI1, &pmc->pcer);
+       writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
 
        if (cs_mask & (1 << 0)) {
-               at91_set_a_periph(AT91_PIO_PORTB, 17, 0);
+               at91_set_a_periph(AT91_PIO_PORTB, 17, 1);
        }
        if (cs_mask & (1 << 1)) {
-               at91_set_b_periph(AT91_PIO_PORTD, 28, 0);
+               at91_set_b_periph(AT91_PIO_PORTD, 28, 1);
        }
        if (cs_mask & (1 << 2)) {
-               at91_set_a_periph(AT91_PIO_PORTD, 18, 0);
+               at91_set_a_periph(AT91_PIO_PORTD, 18, 1);
        }
        if (cs_mask & (1 << 3)) {
-               at91_set_a_periph(AT91_PIO_PORTD, 19, 0);
+               at91_set_a_periph(AT91_PIO_PORTD, 19, 1);
        }
        if (cs_mask & (1 << 4)) {
-               at91_set_pio_output(AT91_PIO_PORTB, 17, 0);
+               at91_set_pio_output(AT91_PIO_PORTB, 17, 1);
        }
        if (cs_mask & (1 << 5)) {
-               at91_set_pio_output(AT91_PIO_PORTD, 28, 0);
+               at91_set_pio_output(AT91_PIO_PORTD, 28, 1);
        }
        if (cs_mask & (1 << 6)) {
-               at91_set_pio_output(AT91_PIO_PORTD, 18, 0);
+               at91_set_pio_output(AT91_PIO_PORTD, 18, 1);
        }
        if (cs_mask & (1 << 7)) {
-               at91_set_pio_output(AT91_PIO_PORTD, 19, 0);
+               at91_set_pio_output(AT91_PIO_PORTD, 19, 1);
        }
 
 }
index 364b86c88fa47af0819bb072add9c9b76c9c62f6..4df6b090b8d8dacfe85cee003fb006a62ab18790 100644 (file)
 #define ATMEL_BASE_EHCI                0x00800000      /* USB Host controller (EHCI) */
 #define ATMEL_BASE_VDEC                0x00900000      /* Video Decoder Controller */
 
+/*
+ * External memory
+ */
+#define ATMEL_BASE_CS0         0x10000000
+#define ATMEL_BASE_CS1         0x20000000
+#define ATMEL_BASE_CS2         0x30000000
+#define ATMEL_BASE_CS3         0x40000000
+#define ATMEL_BASE_CS4         0x50000000
+#define ATMEL_BASE_CS5         0x60000000
+#define ATMEL_BASE_CS6         0x70000000
+#define ATMEL_BASE_CS7         0x80000000
+
 /*
  * Other misc defines
  */
index 1620e1baffcc20924b7367d4302a56f8bfdaa3e3..01c9c636e1b4e1c39f36eb1ff51c8e73968c55bc 100644 (file)
 #ifndef AT91SAM9G45_MATRIX_H
 #define AT91SAM9G45_MATRIX_H
 
-#define AT91_MATRIX_MCFG0      (AT91_MATRIX + 0x00)    /* Master Configuration Register 0 */
-#define AT91_MATRIX_MCFG1      (AT91_MATRIX + 0x04)    /* Master Configuration Register 1 */
-#define AT91_MATRIX_MCFG2      (AT91_MATRIX + 0x08)    /* Master Configuration Register 2 */
-#define AT91_MATRIX_MCFG3      (AT91_MATRIX + 0x0C)    /* Master Configuration Register 3 */
-#define AT91_MATRIX_MCFG4      (AT91_MATRIX + 0x10)    /* Master Configuration Register 4 */
-#define AT91_MATRIX_MCFG5      (AT91_MATRIX + 0x14)    /* Master Configuration Register 5 */
-#define AT91_MATRIX_MCFG6      (AT91_MATRIX + 0x18)    /* Master Configuration Register 6 */
-#define AT91_MATRIX_MCFG7      (AT91_MATRIX + 0x1C)    /* Master Configuration Register 7 */
-#define AT91_MATRIX_MCFG8      (AT91_MATRIX + 0x20)    /* Master Configuration Register 8 */
-#define AT91_MATRIX_MCFG9      (AT91_MATRIX + 0x24)    /* Master Configuration Register 9 */
-#define AT91_MATRIX_MCFG10     (AT91_MATRIX + 0x28)    /* Master Configuration Register 10 */
-#define AT91_MATRIX_MCFG11     (AT91_MATRIX + 0x2C)    /* Master Configuration Register 11 */
-#define                AT91_MATRIX_ULBT        (7 << 0)        /* Undefined Length Burst Type */
-#define                        AT91_MATRIX_ULBT_INFINITE       (0 << 0)
-#define                        AT91_MATRIX_ULBT_SINGLE         (1 << 0)
-#define                        AT91_MATRIX_ULBT_FOUR           (2 << 0)
-#define                        AT91_MATRIX_ULBT_EIGHT          (3 << 0)
-#define                        AT91_MATRIX_ULBT_SIXTEEN        (4 << 0)
-#define                        AT91_MATRIX_ULBT_THIRTYTWO      (5 << 0)
-#define                        AT91_MATRIX_ULBT_SIXTYFOUR      (6 << 0)
-#define                        AT91_MATRIX_ULBT_128            (7 << 0)
+#ifndef __ASSEMBLY__
 
-#define AT91_MATRIX_SCFG0      (AT91_MATRIX + 0x40)    /* Slave Configuration Register 0 */
-#define AT91_MATRIX_SCFG1      (AT91_MATRIX + 0x44)    /* Slave Configuration Register 1 */
-#define AT91_MATRIX_SCFG2      (AT91_MATRIX + 0x48)    /* Slave Configuration Register 2 */
-#define AT91_MATRIX_SCFG3      (AT91_MATRIX + 0x4C)    /* Slave Configuration Register 3 */
-#define AT91_MATRIX_SCFG4      (AT91_MATRIX + 0x50)    /* Slave Configuration Register 4 */
-#define AT91_MATRIX_SCFG5      (AT91_MATRIX + 0x54)    /* Slave Configuration Register 5 */
-#define AT91_MATRIX_SCFG6      (AT91_MATRIX + 0x58)    /* Slave Configuration Register 6 */
-#define AT91_MATRIX_SCFG7      (AT91_MATRIX + 0x5C)    /* Slave Configuration Register 7 */
-#define                AT91_MATRIX_SLOT_CYCLE          (0x1ff << 0)    /* Maximum Number of Allowed Cycles for a Burst */
-#define                AT91_MATRIX_DEFMSTR_TYPE        (3    << 16)    /* Default Master Type */
-#define                        AT91_MATRIX_DEFMSTR_TYPE_NONE   (0 << 16)
-#define                        AT91_MATRIX_DEFMSTR_TYPE_LAST   (1 << 16)
-#define                        AT91_MATRIX_DEFMSTR_TYPE_FIXED  (2 << 16)
-#define                AT91_MATRIX_FIXED_DEFMSTR       (0xf  << 18)    /* Fixed Index of Default Master */
+struct at91_matrix {
+       u32     mcfg[16];
+       u32     scfg[16];
+       u32     pras[16][2];
+       u32     mrcr;           /* 0x100 Master Remap Control */
+       u32     filler[3];
+       u32     tcmr;
+       u32     filler2;
+       u32     ddrmpr;
+       u32     filler3[3];
+       u32     ebicsa;
+       u32     filler4[47];
+       u32     wpmr;
+       u32     wpsr;
+};
 
-#define AT91_MATRIX_PRAS0      (AT91_MATRIX + 0x80)    /* Priority Register A for Slave 0 */
-#define AT91_MATRIX_PRBS0      (AT91_MATRIX + 0x84)    /* Priority Register B for Slave 0 */
-#define AT91_MATRIX_PRAS1      (AT91_MATRIX + 0x88)    /* Priority Register A for Slave 1 */
-#define AT91_MATRIX_PRBS1      (AT91_MATRIX + 0x8C)    /* Priority Register B for Slave 1 */
-#define AT91_MATRIX_PRAS2      (AT91_MATRIX + 0x90)    /* Priority Register A for Slave 2 */
-#define AT91_MATRIX_PRBS2      (AT91_MATRIX + 0x94)    /* Priority Register B for Slave 2 */
-#define AT91_MATRIX_PRAS3      (AT91_MATRIX + 0x98)    /* Priority Register A for Slave 3 */
-#define AT91_MATRIX_PRBS3      (AT91_MATRIX + 0x9C)    /* Priority Register B for Slave 3 */
-#define AT91_MATRIX_PRAS4      (AT91_MATRIX + 0xA0)    /* Priority Register A for Slave 4 */
-#define AT91_MATRIX_PRBS4      (AT91_MATRIX + 0xA4)    /* Priority Register B for Slave 4 */
-#define AT91_MATRIX_PRAS5      (AT91_MATRIX + 0xA8)    /* Priority Register A for Slave 5 */
-#define AT91_MATRIX_PRBS5      (AT91_MATRIX + 0xAC)    /* Priority Register B for Slave 5 */
-#define AT91_MATRIX_PRAS6      (AT91_MATRIX + 0xB0)    /* Priority Register A for Slave 6 */
-#define AT91_MATRIX_PRBS6      (AT91_MATRIX + 0xB4)    /* Priority Register B for Slave 6 */
-#define AT91_MATRIX_PRAS7      (AT91_MATRIX + 0xB8)    /* Priority Register A for Slave 7 */
-#define AT91_MATRIX_PRBS7      (AT91_MATRIX + 0xBC)    /* Priority Register B for Slave 7 */
-#define                AT91_MATRIX_M0PR                (3 << 0)        /* Master 0 Priority */
-#define                AT91_MATRIX_M1PR                (3 << 4)        /* Master 1 Priority */
-#define                AT91_MATRIX_M2PR                (3 << 8)        /* Master 2 Priority */
-#define                AT91_MATRIX_M3PR                (3 << 12)       /* Master 3 Priority */
-#define                AT91_MATRIX_M4PR                (3 << 16)       /* Master 4 Priority */
-#define                AT91_MATRIX_M5PR                (3 << 20)       /* Master 5 Priority */
-#define                AT91_MATRIX_M6PR                (3 << 24)       /* Master 6 Priority */
-#define                AT91_MATRIX_M7PR                (3 << 28)       /* Master 7 Priority */
-#define                AT91_MATRIX_M8PR                (3 << 0)        /* Master 8 Priority (in Register B) */
-#define                AT91_MATRIX_M9PR                (3 << 4)        /* Master 9 Priority (in Register B) */
-#define                AT91_MATRIX_M10PR               (3 << 8)        /* Master 10 Priority (in Register B) */
-#define                AT91_MATRIX_M11PR               (3 << 12)       /* Master 11 Priority (in Register B) */
+#endif /* __ASSEMBLY__ */
 
-#define AT91_MATRIX_MRCR       (AT91_MATRIX + 0x100)   /* Master Remap Control Register */
-#define                AT91_MATRIX_RCB0                (1 << 0)        /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */
-#define                AT91_MATRIX_RCB1                (1 << 1)        /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */
-#define                AT91_MATRIX_RCB2                (1 << 2)
-#define                AT91_MATRIX_RCB3                (1 << 3)
-#define                AT91_MATRIX_RCB4                (1 << 4)
-#define                AT91_MATRIX_RCB5                (1 << 5)
-#define                AT91_MATRIX_RCB6                (1 << 6)
-#define                AT91_MATRIX_RCB7                (1 << 7)
-#define                AT91_MATRIX_RCB8                (1 << 8)
-#define                AT91_MATRIX_RCB9                (1 << 9)
-#define                AT91_MATRIX_RCB10               (1 << 10)
-#define                AT91_MATRIX_RCB11               (1 << 11)
+#define        AT91_MATRIX_ULBT_INFINITE       (0 << 0)
+#define        AT91_MATRIX_ULBT_SINGLE         (1 << 0)
+#define        AT91_MATRIX_ULBT_FOUR           (2 << 0)
+#define        AT91_MATRIX_ULBT_EIGHT          (3 << 0)
+#define        AT91_MATRIX_ULBT_SIXTEEN        (4 << 0)
+#define        AT91_MATRIX_ULBT_THIRTYTWO      (5 << 0)
+#define        AT91_MATRIX_ULBT_SIXTYFOUR      (6 << 0)
+#define        AT91_MATRIX_ULBT_128            (7 << 0)
 
-#define AT91_MATRIX_TCMR       (AT91_MATRIX + 0x110)   /* TCM Configuration Register */
-#define                AT91_MATRIX_ITCM_SIZE           (0xf << 0)      /* Size of ITCM enabled memory block */
-#define                        AT91_MATRIX_ITCM_0              (0 << 0)
-#define                        AT91_MATRIX_ITCM_32             (6 << 0)
-#define                AT91_MATRIX_DTCM_SIZE           (0xf << 4)      /* Size of DTCM enabled memory block */
-#define                        AT91_MATRIX_DTCM_0              (0 << 4)
-#define                        AT91_MATRIX_DTCM_32             (6 << 4)
-#define                        AT91_MATRIX_DTCM_64             (7 << 4)
-#define                AT91_MATRIX_TCM_NWS             (0x1 << 11)     /* Wait state TCM register */
-#define                        AT91_MATRIX_TCM_NO_WS           (0x0 << 11)
-#define                        AT91_MATRIX_TCM_ONE_WS          (0x1 << 11)
+#define        AT91_MATRIX_DEFMSTR_TYPE_NONE   (0 << 16)
+#define        AT91_MATRIX_DEFMSTR_TYPE_LAST   (1 << 16)
+#define        AT91_MATRIX_DEFMSTR_TYPE_FIXED  (2 << 16)
+#define AT91_MATRIX_FIXED_DEFMSTR_SHIFT 18
 
-#define AT91_MATRIX_VIDEO      (AT91_MATRIX + 0x118)   /* Video Mode Configuration Register */
-#define                AT91C_VDEC_SEL                  (0x1 <<  0) /* Video Mode Selection */
-#define                        AT91C_VDEC_SEL_OFF              (0 << 0)
-#define                        AT91C_VDEC_SEL_ON               (1 << 0)
+#define AT91_MATRIX_M0PR_SHIFT          0
+#define AT91_MATRIX_M1PR_SHIFT          4
+#define AT91_MATRIX_M2PR_SHIFT          8
+#define AT91_MATRIX_M3PR_SHIFT          12
+#define AT91_MATRIX_M4PR_SHIFT          16
+#define AT91_MATRIX_M5PR_SHIFT          20
+#define AT91_MATRIX_M6PR_SHIFT          24
+#define AT91_MATRIX_M7PR_SHIFT          28
 
-#define AT91_MATRIX_EBICSA     (AT91_MATRIX + 0x128)   /* EBI Chip Select Assignment Register */
-#define                AT91_MATRIX_EBI_CS1A            (1 << 1)        /* Chip Select 1 Assignment */
-#define                        AT91_MATRIX_EBI_CS1A_SMC                (0 << 1)
-#define                        AT91_MATRIX_EBI_CS1A_SDRAMC             (1 << 1)
-#define                AT91_MATRIX_EBI_CS3A            (1 << 3)        /* Chip Select 3 Assignment */
-#define                        AT91_MATRIX_EBI_CS3A_SMC                (0 << 3)
-#define                        AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA     (1 << 3)
-#define                AT91_MATRIX_EBI_CS4A            (1 << 4)        /* Chip Select 4 Assignment */
-#define                        AT91_MATRIX_EBI_CS4A_SMC                (0 << 4)
-#define                        AT91_MATRIX_EBI_CS4A_SMC_CF0            (1 << 4)
-#define                AT91_MATRIX_EBI_CS5A            (1 << 5)        /* Chip Select 5 Assignment */
-#define                        AT91_MATRIX_EBI_CS5A_SMC                (0 << 5)
-#define                        AT91_MATRIX_EBI_CS5A_SMC_CF1            (1 << 5)
-#define                AT91_MATRIX_EBI_DBPUC           (1 << 8)        /* Data Bus Pull-up Configuration */
-#define                        AT91_MATRIX_EBI_DBPU_ON                 (0 << 8)
-#define                        AT91_MATRIX_EBI_DBPU_OFF                (1 << 8)
-#define                AT91_MATRIX_EBI_VDDIOMSEL       (1 << 16)       /* Memory voltage selection */
-#define                        AT91_MATRIX_EBI_VDDIOMSEL_1_8V          (0 << 16)
-#define                        AT91_MATRIX_EBI_VDDIOMSEL_3_3V          (1 << 16)
-#define                AT91_MATRIX_EBI_EBI_IOSR        (1 << 17)       /* EBI I/O slew rate selection */
-#define                        AT91_MATRIX_EBI_EBI_IOSR_REDUCED        (0 << 17)
-#define                        AT91_MATRIX_EBI_EBI_IOSR_NORMAL         (1 << 17)
-#define                AT91_MATRIX_EBI_DDR_IOSR        (1 << 18)       /* DDR2 dedicated port I/O slew rate selection */
-#define                        AT91_MATRIX_EBI_DDR_IOSR_REDUCED        (0 << 18)
-#define                        AT91_MATRIX_EBI_DDR_IOSR_NORMAL         (1 << 18)
+#define AT91_MATRIX_M8PR_SHIFT          0  /* register B */
+#define AT91_MATRIX_M9PR_SHIFT          4  /* register B */
+#define AT91_MATRIX_M10PR_SHIFT         8  /* register B */
+#define AT91_MATRIX_M11PR_SHIFT         12 /* register B */
 
-#define AT91_MATRIX_WPMR       (AT91_MATRIX + 0x1E4)   /* Write Protect Mode Register */
-#define                AT91_MATRIX_WPMR_WPEN           (1 << 0)        /* Write Protect ENable */
-#define                        AT91_MATRIX_WPMR_WP_WPDIS               (0 << 0)
-#define                        AT91_MATRIX_WPMR_WP_WPEN                (1 << 0)
-#define                AT91_MATRIX_WPMR_WPKEY          (0xFFFFFF << 8) /* Write Protect KEY */
+#define AT91_MATRIX_RCB0                (1 << 0)
+#define AT91_MATRIX_RCB1                (1 << 1)
+#define AT91_MATRIX_RCB2                (1 << 2)
+#define AT91_MATRIX_RCB3                (1 << 3)
+#define AT91_MATRIX_RCB4                (1 << 4)
+#define AT91_MATRIX_RCB5                (1 << 5)
+#define AT91_MATRIX_RCB6                (1 << 6)
+#define AT91_MATRIX_RCB7                (1 << 7)
+#define AT91_MATRIX_RCB8                (1 << 8)
+#define AT91_MATRIX_RCB9                (1 << 9)
+#define AT91_MATRIX_RCB10               (1 << 10)
 
-#define AT91_MATRIX_WPSR       (AT91_MATRIX + 0x1E8)   /* Write Protect Status Register */
-#define                AT91_MATRIX_WPSR_WPVS           (1 << 0)        /* Write Protect Violation Status */
-#define                        AT91_MATRIX_WPSR_NO_WPV         (0 << 0)
-#define                        AT91_MATRIX_WPSR_WPV            (1 << 0)
-#define                AT91_MATRIX_WPSR_WPVSRC         (0xFFFF << 8)   /* Write Protect Violation Source */
+#define AT91_MATRIX_EBI_CS1A_SMC                (0 << 1)
+#define AT91_MATRIX_EBI_CS1A_SDRAMC             (1 << 1)
+#define AT91_MATRIX_EBI_CS3A_SMC                (0 << 3)
+#define AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA     (1 << 3)
+#define AT91_MATRIX_EBI_CS4A_SMC                (0 << 4)
+#define AT91_MATRIX_EBI_CS4A_SMC_CF0            (1 << 4)
+#define AT91_MATRIX_EBI_CS5A_SMC                (0 << 5)
+#define AT91_MATRIX_EBI_CS5A_SMC_CF1            (1 << 5)
+#define AT91_MATRIX_EBI_DBPU_ON                 (0 << 8)
+#define AT91_MATRIX_EBI_DBPU_OFF                (1 << 8)
+#define AT91_MATRIX_EBI_VDDIOMSEL_1_8V          (0 << 16)
+#define AT91_MATRIX_EBI_VDDIOMSEL_3_3V          (1 << 16)
+#define AT91_MATRIX_EBI_EBI_IOSR_REDUCED        (0 << 17)
+#define AT91_MATRIX_EBI_EBI_IOSR_NORMAL         (1 << 17)
+#define AT91_MATRIX_EBI_DDR_IOSR_REDUCED        (0 << 18)
+#define AT91_MATRIX_EBI_DDR_IOSR_NORMAL         (1 << 18)
 
 #endif