Subject: [PATCH] ATMEL: Fix compile errors for at91sam9m10g45 Eval Kit

This patch fixes numerous compile errors for the at91sam9m10g45
Eval Kit. Also implements some dummy functions for the timer
code to allow final linking. Finally, this patch also adds this
board to the boards.cfg file.

Signed-off-by: Alex Waterman <awater...@dawning.com>
---
 .../cpu/arm926ejs/at91/at91sam9m10g45_devices.c    |   26 +++---
 arch/arm/cpu/arm926ejs/at91/clock.c                |    2 +-
 arch/arm/cpu/arm926ejs/at91/timer.c                |   13 +++
 .../arm/include/asm/arch-at91/at91sam9g45_matrix.h |   84 ++++++++++----------
 board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c    |   58 ++++++++------
 board/atmel/at91sam9m10g45ek/led.c                 |    6 +-
 boards.cfg                                         |    1 +
 include/configs/at91sam9m10g45ek.h                 |   39 ++++++---
 8 files changed, 134 insertions(+), 95 deletions(-)

It looks like recent patch submissions probably have a lot of overlapping fixes
with this patch. Those patches (Asen Chavdarov Dimov's reworks for instance) 
seem
more generic though. Since this board is scheduled or deletion I would really
like to at least get this board back to non-deletion status but ideally I would
want to wait for those generic patches to go through before I submit a real 
patch
to fix this board. If those generic patches are not committed before release, 
can
this board be put on hold for deletion?

diff --git a/arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c 
b/arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
index 4ad9b1f..08b961f 100644
--- a/arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
+++ b/arch/arm/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
@@ -26,42 +26,42 @@
 #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>
 
 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);
+       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);
+       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);
+       writel(1 << ATMEL_ID_USART2, &pmc->pcer);
 }
 
 void at91_serial3_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);
+       writel(1 << ATMEL_ID_SYS, &pmc->pcer);
 }
 
 void at91_serial_hw_init(void)
@@ -86,14 +86,14 @@ void at91_serial_hw_init(void)
 #ifdef 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 */
 
        /* 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);
@@ -123,14 +123,14 @@ void at91_spi0_hw_init(unsigned long cs_mask)
 
 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 */
 
        /* 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);
diff --git a/arch/arm/cpu/arm926ejs/at91/clock.c 
b/arch/arm/cpu/arm926ejs/at91/clock.c
index 608af2c..0081ed7 100644
--- a/arch/arm/cpu/arm926ejs/at91/clock.c
+++ b/arch/arm/cpu/arm926ejs/at91/clock.c
@@ -57,7 +57,7 @@ static unsigned long at91_css_to_rate(unsigned long css)
 {
        switch (css) {
        case AT91_PMC_MCKR_CSS_SLOW:
-               return CONFIG_SYS_AT91_SLOW_CLOCK;
+               return AT91_SLOW_CLOCK;
        case AT91_PMC_MCKR_CSS_MAIN:
                return gd->main_clk_rate_hz;
        case AT91_PMC_MCKR_CSS_PLLA:
diff --git a/arch/arm/cpu/arm926ejs/at91/timer.c 
b/arch/arm/cpu/arm926ejs/at91/timer.c
index a087687..89a01ea 100644
--- a/arch/arm/cpu/arm926ejs/at91/timer.c
+++ b/arch/arm/cpu/arm926ejs/at91/timer.c
@@ -134,3 +134,16 @@ ulong get_tbclk(void)
 {
        return gd->timer_rate_hz;
 }
+
+/*
+ * Reset the timer.
+ */
+void reset_timer(void)
+{
+       /* TODO: write this code. */
+}
+
+void reset_timer_masked(void)
+{
+       /* TODO: write this code. */
+}
diff --git a/arch/arm/include/asm/arch-at91/at91sam9g45_matrix.h 
b/arch/arm/include/asm/arch-at91/at91sam9g45_matrix.h
index 1620e1b..9808e38 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9g45_matrix.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9g45_matrix.h
@@ -15,18 +15,18 @@
 #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_MCFG0      (ATMEL_BASE_MATRIX + 0x00)      /* Master 
Configuration Register 0 */
+#define AT91_MATRIX_MCFG1      (ATMEL_BASE_MATRIX + 0x04)      /* Master 
Configuration Register 1 */
+#define AT91_MATRIX_MCFG2      (ATMEL_BASE_MATRIX + 0x08)      /* Master 
Configuration Register 2 */
+#define AT91_MATRIX_MCFG3      (ATMEL_BASE_MATRIX + 0x0C)      /* Master 
Configuration Register 3 */
+#define AT91_MATRIX_MCFG4      (ATMEL_BASE_MATRIX + 0x10)      /* Master 
Configuration Register 4 */
+#define AT91_MATRIX_MCFG5      (ATMEL_BASE_MATRIX + 0x14)      /* Master 
Configuration Register 5 */
+#define AT91_MATRIX_MCFG6      (ATMEL_BASE_MATRIX + 0x18)      /* Master 
Configuration Register 6 */
+#define AT91_MATRIX_MCFG7      (ATMEL_BASE_MATRIX + 0x1C)      /* Master 
Configuration Register 7 */
+#define AT91_MATRIX_MCFG8      (ATMEL_BASE_MATRIX + 0x20)      /* Master 
Configuration Register 8 */
+#define AT91_MATRIX_MCFG9      (ATMEL_BASE_MATRIX + 0x24)      /* Master 
Configuration Register 9 */
+#define AT91_MATRIX_MCFG10     (ATMEL_BASE_MATRIX + 0x28)      /* Master 
Configuration Register 10 */
+#define AT91_MATRIX_MCFG11     (ATMEL_BASE_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)
@@ -37,14 +37,14 @@
 #define                        AT91_MATRIX_ULBT_SIXTYFOUR      (6 << 0)
 #define                        AT91_MATRIX_ULBT_128            (7 << 0)
 
-#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_SCFG0      (ATMEL_BASE_MATRIX + 0x40)      /* Slave 
Configuration Register 0 */
+#define AT91_MATRIX_SCFG1      (ATMEL_BASE_MATRIX + 0x44)      /* Slave 
Configuration Register 1 */
+#define AT91_MATRIX_SCFG2      (ATMEL_BASE_MATRIX + 0x48)      /* Slave 
Configuration Register 2 */
+#define AT91_MATRIX_SCFG3      (ATMEL_BASE_MATRIX + 0x4C)      /* Slave 
Configuration Register 3 */
+#define AT91_MATRIX_SCFG4      (ATMEL_BASE_MATRIX + 0x50)      /* Slave 
Configuration Register 4 */
+#define AT91_MATRIX_SCFG5      (ATMEL_BASE_MATRIX + 0x54)      /* Slave 
Configuration Register 5 */
+#define AT91_MATRIX_SCFG6      (ATMEL_BASE_MATRIX + 0x58)      /* Slave 
Configuration Register 6 */
+#define AT91_MATRIX_SCFG7      (ATMEL_BASE_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)
@@ -52,22 +52,22 @@
 #define                        AT91_MATRIX_DEFMSTR_TYPE_FIXED  (2 << 16)
 #define                AT91_MATRIX_FIXED_DEFMSTR       (0xf  << 18)    /* 
Fixed Index of Default Master */
 
-#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_PRAS0      (ATMEL_BASE_MATRIX + 0x80)      /* Priority 
Register A for Slave 0 */
+#define AT91_MATRIX_PRBS0      (ATMEL_BASE_MATRIX + 0x84)      /* Priority 
Register B for Slave 0 */
+#define AT91_MATRIX_PRAS1      (ATMEL_BASE_MATRIX + 0x88)      /* Priority 
Register A for Slave 1 */
+#define AT91_MATRIX_PRBS1      (ATMEL_BASE_MATRIX + 0x8C)      /* Priority 
Register B for Slave 1 */
+#define AT91_MATRIX_PRAS2      (ATMEL_BASE_MATRIX + 0x90)      /* Priority 
Register A for Slave 2 */
+#define AT91_MATRIX_PRBS2      (ATMEL_BASE_MATRIX + 0x94)      /* Priority 
Register B for Slave 2 */
+#define AT91_MATRIX_PRAS3      (ATMEL_BASE_MATRIX + 0x98)      /* Priority 
Register A for Slave 3 */
+#define AT91_MATRIX_PRBS3      (ATMEL_BASE_MATRIX + 0x9C)      /* Priority 
Register B for Slave 3 */
+#define AT91_MATRIX_PRAS4      (ATMEL_BASE_MATRIX + 0xA0)      /* Priority 
Register A for Slave 4 */
+#define AT91_MATRIX_PRBS4      (ATMEL_BASE_MATRIX + 0xA4)      /* Priority 
Register B for Slave 4 */
+#define AT91_MATRIX_PRAS5      (ATMEL_BASE_MATRIX + 0xA8)      /* Priority 
Register A for Slave 5 */
+#define AT91_MATRIX_PRBS5      (ATMEL_BASE_MATRIX + 0xAC)      /* Priority 
Register B for Slave 5 */
+#define AT91_MATRIX_PRAS6      (ATMEL_BASE_MATRIX + 0xB0)      /* Priority 
Register A for Slave 6 */
+#define AT91_MATRIX_PRBS6      (ATMEL_BASE_MATRIX + 0xB4)      /* Priority 
Register B for Slave 6 */
+#define AT91_MATRIX_PRAS7      (ATMEL_BASE_MATRIX + 0xB8)      /* Priority 
Register A for Slave 7 */
+#define AT91_MATRIX_PRBS7      (ATMEL_BASE_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 */
@@ -81,7 +81,7 @@
 #define                AT91_MATRIX_M10PR               (3 << 8)        /* 
Master 10 Priority (in Register B) */
 #define                AT91_MATRIX_M11PR               (3 << 12)       /* 
Master 11 Priority (in Register B) */
 
-#define AT91_MATRIX_MRCR       (AT91_MATRIX + 0x100)   /* Master Remap Control 
Register */
+#define AT91_MATRIX_MRCR       (ATMEL_BASE_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)
@@ -95,7 +95,7 @@
 #define                AT91_MATRIX_RCB10               (1 << 10)
 #define                AT91_MATRIX_RCB11               (1 << 11)
 
-#define AT91_MATRIX_TCMR       (AT91_MATRIX + 0x110)   /* TCM Configuration 
Register */
+#define AT91_MATRIX_TCMR       (ATMEL_BASE_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)
@@ -107,12 +107,12 @@
 #define                        AT91_MATRIX_TCM_NO_WS           (0x0 << 11)
 #define                        AT91_MATRIX_TCM_ONE_WS          (0x1 << 11)
 
-#define AT91_MATRIX_VIDEO      (AT91_MATRIX + 0x118)   /* Video Mode 
Configuration Register */
+#define AT91_MATRIX_VIDEO      (ATMEL_BASE_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_EBICSA     (AT91_MATRIX + 0x128)   /* EBI Chip Select 
Assignment Register */
+#define AT91_MATRIX_EBICSA     (ATMEL_BASE_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)
@@ -138,13 +138,13 @@
 #define                        AT91_MATRIX_EBI_DDR_IOSR_REDUCED        (0 << 
18)
 #define                        AT91_MATRIX_EBI_DDR_IOSR_NORMAL         (1 << 
18)
 
-#define AT91_MATRIX_WPMR       (AT91_MATRIX + 0x1E4)   /* Write Protect Mode 
Register */
+#define AT91_MATRIX_WPMR       (ATMEL_BASE_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_WPSR       (AT91_MATRIX + 0x1E8)   /* Write Protect Status 
Register */
+#define AT91_MATRIX_WPSR       (ATMEL_BASE_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)
diff --git a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c 
b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
index f92b20f..6319a9b 100644
--- a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
+++ b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
@@ -23,6 +23,7 @@
  */
 
 #include <common.h>
+#include <asm/io.h>
 #include <asm/sizes.h>
 #include <asm/arch/at91sam9g45.h>
 #include <asm/arch/at91sam9_matrix.h>
@@ -32,7 +33,6 @@
 #include <asm/arch/at91_rstc.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
-#include <asm/arch/io.h>
 #include <asm/arch/hardware.h>
 #include <lcd.h>
 #include <atmel_lcdc.h>
@@ -41,6 +41,14 @@
 #endif
 #include <netdev.h>
 
+/*
+ * arch/arm/include/asm/arch-at91/at91sam9g45.h defines ATMEL_BASE_SCM;
+ * however, other code still wants AT91_SMC instead. Likewise for the AT91_PMC
+ * definition.
+ */
+#define AT91_SMC               ATMEL_BASE_SMC
+#define AT91_PMC               ATMEL_BASE_PMC
+
 DECLARE_GLOBAL_DATA_PTR;
 
 /* ------------------------------------------------------------------------- */
@@ -54,20 +62,20 @@ static void at91sam9m10g45ek_nand_hw_init(void)
        unsigned long csa;
 
        /* Enable CS3 */
-       csa = at91_sys_read(AT91_MATRIX_EBICSA);
-       at91_sys_write(AT91_MATRIX_EBICSA,
+       csa = readl(AT91_MATRIX_EBICSA);
+       writel(AT91_MATRIX_EBICSA,
                       csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA);
 
        /* Configure SMC CS3 for NAND/SmartMedia */
-       at91_sys_write(AT91_SMC_SETUP(3),
+       writel(AT91_SMC_SETUP(3),
                       AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) |
                       AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0));
-       at91_sys_write(AT91_SMC_PULSE(3),
+       writel(AT91_SMC_PULSE(3),
                       AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(3) |
                       AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(2));
-       at91_sys_write(AT91_SMC_CYCLE(3),
+       writel(AT91_SMC_CYCLE(3),
                       AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(4));
-       at91_sys_write(AT91_SMC_MODE(3),
+       writel(AT91_SMC_MODE(3),
                       AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
                       AT91_SMC_EXNWMODE_DISABLE |
 #ifdef CONFIG_SYS_NAND_DBW_16
@@ -77,7 +85,7 @@ static void at91sam9m10g45ek_nand_hw_init(void)
 #endif
                       AT91_SMC_TDF_(3));
 
-       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIOC);
+       writel(AT91_PMC_PCER, 1 << ATMEL_ID_PIOC);
 
        /* Configure RDY/BSY */
        at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -90,7 +98,7 @@ static void at91sam9m10g45ek_nand_hw_init(void)
 #ifdef CONFIG_CMD_USB
 static void at91sam9m10g45ek_usb_hw_init(void)
 {
-       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIODE);
+       writel(AT91_PMC_PCER, 1 << ATMEL_ID_PIODE);
 
        at91_set_gpio_output(AT91_PIN_PD1, 0);
        at91_set_gpio_output(AT91_PIN_PD3, 0);
@@ -100,10 +108,12 @@ static void at91sam9m10g45ek_usb_hw_init(void)
 #ifdef CONFIG_MACB
 static void at91sam9m10g45ek_macb_hw_init(void)
 {
-       unsigned long rstc;
+       unsigned long rstc_mr;
+       struct at91_rstc *volatile rstc_mem =
+               (struct at91_rstc *volatile)ATMEL_BASE_RSTC;
 
        /* Enable clock */
-       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_EMAC);
+       writel(AT91_PMC_PCER, 1 << ATMEL_ID_EMAC);
 
        /*
         * Disable pull-up on:
@@ -118,22 +128,20 @@ static void at91sam9m10g45ek_macb_hw_init(void)
               pin_to_mask(AT91_PIN_PA13),
               pin_to_controller(AT91_PIN_PA0) + PIO_PUDR);
 
-       rstc = at91_sys_read(AT91_RSTC_MR);
+       rstc_mr = rstc_mem->mr;
 
        /* Need to reset PHY -> 500ms reset */
-       at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY |
-                                    (AT91_RSTC_ERSTL & (0x0D << 8)) |
-                                    AT91_RSTC_URSTEN);
-
-       at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_EXTRST);
+       rstc_mem->mr = rstc_mr | (AT91_RSTC_KEY |
+                                 AT91_RSTC_MR_ERSTL(0x0D) |
+                                 AT91_RSTC_MR_URSTEN);
+       rstc_mem->cr = AT91_RSTC_KEY | AT91_RSTC_CR_EXTRST;
 
        /* Wait for end hardware reset */
-       while (!(at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_NRSTL));
+       while (!(rstc_mem->sr & AT91_RSTC_SR_NRSTL))
+               ;
 
        /* Restore NRST value */
-       at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY |
-                                    (rstc) |
-                                    AT91_RSTC_URSTEN);
+       rstc_mem->mr = AT91_RSTC_KEY | (rstc_mr) | AT91_RSTC_MR_URSTEN;
 
        /* Re-enable pull-up */
        writel(pin_to_mask(AT91_PIN_PA15) |
@@ -161,7 +169,7 @@ vidinfo_t panel_info = {
        vl_vsync_len:   1,
        vl_upper_margin:40,
        vl_lower_margin:1,
-       mmio:           AT91SAM9G45_LCDC_BASE,
+       mmio :           ATMEL_BASE_LCDC,
 };
 
 
@@ -208,7 +216,7 @@ static void at91sam9m10g45ek_lcd_hw_init(void)
        at91_set_A_periph(AT91_PIN_PE29, 0);    /* LCDD22 */
        at91_set_A_periph(AT91_PIN_PE30, 0);    /* LCDD23 */
 
-       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_LCDC);
+       writel(AT91_PMC_PCER, 1 << ATMEL_ID_LCDC);
 
        gd->fb_base = CONFIG_AT91SAM9G45_LCD_BASE;
 }
@@ -227,7 +235,7 @@ void lcd_show_board_info(void)
        lcd_printf ("(C) 2008 ATMEL Corp\n");
        lcd_printf ("at91supp...@atmel.com\n");
        lcd_printf ("%s CPU at %s MHz\n",
-               CONFIG_SYS_AT91_CPU_NAME,
+               ATMEL_CPU_NAME,
                strmhz(temp, get_cpu_clk_rate()));
 
        dram_size = 0;
@@ -298,7 +306,7 @@ int board_eth_init(bd_t *bis)
 {
        int rc = 0;
 #ifdef CONFIG_MACB
-       rc = macb_eth_initialize(0, (void *)AT91SAM9G45_BASE_EMAC, 0x00);
+       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC, 0x00);
 #endif
        return rc;
 }
diff --git a/board/atmel/at91sam9m10g45ek/led.c 
b/board/atmel/at91sam9m10g45ek/led.c
index ff59a2d..b939c5b 100644
--- a/board/atmel/at91sam9m10g45ek/led.c
+++ b/board/atmel/at91sam9m10g45ek/led.c
@@ -23,15 +23,17 @@
  */
 
 #include <common.h>
+#include <asm/io.h>
 #include <asm/arch/at91sam9g45.h>
 #include <asm/arch/at91_pmc.h>
 #include <asm/arch/gpio.h>
-#include <asm/arch/io.h>
+
+#define AT91_PMC               ATMEL_BASE_PMC
 
 void coloured_LED_init(void)
 {
        /* Enable clock */
-       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIODE);
+       writel(AT91_PMC_PCER, 1 << ATMEL_ID_PIODE);
 
        at91_set_gpio_output(CONFIG_RED_LED, 1);
        at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/boards.cfg b/boards.cfg
index d2cacc8..d90ac24 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -72,6 +72,7 @@ netstar                      arm         arm925t
 voiceblue                    arm         arm925t
 omap1510inn                  arm         arm925t     -                   ti
 aspenite                     arm         arm926ejs   -                   
Marvell        armada100
+at91sam9m10g45ek             arm         arm926ejs   at91sam9m10g45ek   atmel  
        at91
 afeb9260                     arm         arm926ejs   -                   -     
         at91
 at91cap9adk                  arm         arm926ejs   -                   atmel 
         at91
 snapper9260                  arm         arm926ejs   -                   
bluewater      at91        snapper9260:AT91SAM9260
diff --git a/include/configs/at91sam9m10g45ek.h 
b/include/configs/at91sam9m10g45ek.h
index de74dcf..9c1b647 100644
--- a/include/configs/at91sam9m10g45ek.h
+++ b/include/configs/at91sam9m10g45ek.h
@@ -28,17 +28,15 @@
 #define __CONFIG_H
 
 #define CONFIG_AT91_LEGACY
+#define CONFIG_ATMEL_LEGACY
 
 /* ARM asynchronous clock */
-#define CONFIG_SYS_AT91_MAIN_CLOCK     12000000        /* from 12 MHz crystal 
*/
+#define CONFIG_SYS_AT91_MAIN_CLOCK     12000000 /* from 12 MHz crystal */
+#define AT91_SLOW_CLOCK                32768
 #define CONFIG_SYS_HZ          1000
 
-#define CONFIG_ARM926EJS       1       /* This is an ARM926EJS Core    */
-#ifdef CONFIG_AT91SAM9M10G45EK
-#define CONFIG_AT91SAM9M10G45  1       /* It's an Atmel AT91SAM9M10G45 SoC*/
-#else
-#define CONFIG_AT91SAM9G45     1       /* It's an Atmel AT91SAM9G45 SoC*/
-#endif
+#define CONFIG_AT91SAM9M10G45
+#define CONFIG_AT91FAMILY
 #define CONFIG_ARCH_CPU_INIT
 #undef CONFIG_USE_IRQ                  /* we don't need IRQ/FIQ stuff  */
 
@@ -48,6 +46,9 @@
 
 #define CONFIG_SKIP_LOWLEVEL_INIT
 
+#define ATMEL_PIO_PORTS                5 /* 5 PIO ports. */
+#define CONFIG_SYS_SDRAM_BASE   0x70000000
+
 /*
  * Hardware drivers
  */
@@ -57,6 +58,19 @@
 #undef CONFIG_USART1
 #undef CONFIG_USART2
 #define CONFIG_USART3          1       /* USART 3 is DBGU */
+#define CONFIG_USART_BASE      ATMEL_BASE_USART3
+#define CONFIG_USART_ID                3
+
+/*
+ * This needs to be defined for the OHCI code to work but it is defined as
+ * ATMEL_ID_UHPHS in the CPU specific header files.
+ */
+#define ATMEL_ID_UHP           ATMEL_ID_UHPHS
+
+/*
+ * Specify the clock enable bit in the PMC_SCER register.
+ */
+#define ATMEL_PMC_UHP          AT91SAM926x_PMC_UHP
 
 /* LCD */
 #define CONFIG_LCD                     1
@@ -156,13 +170,13 @@
 #define CONFIG_USB_ATMEL
 #define CONFIG_USB_OHCI_NEW            1
 #define CONFIG_DOS_PARTITION           1
-#define CONFIG_SYS_USB_OHCI_CPU_INIT           1
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00700000      /* 
AT91SAM9G45_UHP_OHCI_BASE */
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9g45"
+#define CONFIG_SYS_USB_OHCI_CPU_INIT   1
+#define CONFIG_SYS_USB_OHCI_REGS_BASE  0x00700000
+#define CONFIG_SYS_USB_OHCI_SLOT_NAME  "at91sam9g45"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
 #define CONFIG_USB_STORAGE             1
 
-#define CONFIG_SYS_LOAD_ADDR                   0x22000000      /* load address 
*/
+#define CONFIG_SYS_LOAD_ADDR           0x22000000      /* load address */
 
 #define CONFIG_SYS_MEMTEST_START               PHYS_SDRAM
 #define CONFIG_SYS_MEMTEST_END                 0x23e00000
@@ -216,7 +230,8 @@
  * Size of malloc() pool
  */
 #define CONFIG_SYS_MALLOC_LEN          ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 
0x1000)
-
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - \
+                               GENERATED_GBL_DATA_SIZE)
 #define CONFIG_STACKSIZE       (32*1024)       /* regular stack */
 
 #ifdef CONFIG_USE_IRQ
-- 
1.7.4.4

-- 
Alex Waterman
Computer Engineer
Phone: 215-896-4920
Email: awater...@dawning.com

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to