at91: Support for the at91sam9g20 : Atmel 400Mhz ARM 926ej-s SOC.
authorNicolas Ferre <nicolas.ferre@atmel.com>
Sun, 22 Mar 2009 13:48:16 +0000 (14:48 +0100)
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Sun, 22 Mar 2009 13:48:16 +0000 (14:48 +0100)
AT91sam9g20 is an evolution of the at91sam9260 with a faster clock speed.

The AT91SAM9G20-EK board is an updated revision of the AT91SAM9260-EK board.
It is essentially the same, with a few minor differences.

Here is the chip page on Atmel website:
http://www.atmel.com/dyn/products/product_card.asp?part_id=4337

Signed-off-by: Justin Waters <justin.waters@timesys.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
MAKEALL
Makefile
board/atmel/at91sam9260ek/at91sam9260ek.c
cpu/arm926ejs/at91/Makefile
cpu/arm926ejs/at91/usb.c
doc/README.at91
drivers/net/macb.c
include/asm-arm/arch-at91/hardware.h
include/configs/at91sam9260ek.h

diff --git a/MAKEALL b/MAKEALL
index 32d95db..9741272 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -572,6 +572,7 @@ LIST_at91="         \
        at91sam9260ek   \
        at91sam9261ek   \
        at91sam9263ek   \
+       at91sam9g20ek   \
        at91sam9rlek    \
        cmc_pu2         \
        csb637          \
index 1d67eaf..1cce381 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2653,8 +2653,18 @@ at91cap9adk_config       :       unconfig
 at91sam9260ek_nandflash_config \
 at91sam9260ek_dataflash_cs0_config \
 at91sam9260ek_dataflash_cs1_config \
-at91sam9260ek_config   :       unconfig
-       @mkdir -p $(obj)include
+at91sam9260ek_config \
+at91sam9g20ek_nandflash_config \
+at91sam9g20ek_dataflash_cs0_config \
+at91sam9g20ek_dataflash_cs1_config \
+at91sam9g20ek_config   :       unconfig
+       @mkdir -p $(obj)include
+       @if [ "$(findstring 9g20,$@)" ] ; then \
+               echo "#define CONFIG_AT91SAM9G20EK 1"   >>$(obj)include/config.h ; \
+               $(XECHO) "... 9G20 Variant" ; \
+       else \
+               echo "#define CONFIG_AT91SAM9260EK 1"   >>$(obj)include/config.h ; \
+       fi;
        @if [ "$(findstring _nandflash,$@)" ] ; then \
                echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
                $(XECHO) "... with environment variable in NAND FLASH" ; \
index ae00c53..6bd3b44 100644 (file)
@@ -141,8 +141,13 @@ int board_init(void)
        /* Enable Ctrlc */
        console_init_f();
 
+#ifdef CONFIG_AT91SAM9G20EK
+       /* arch number of AT91SAM9260EK-Board */
+       gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK;
+#else
        /* arch number of AT91SAM9260EK-Board */
        gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9260EK;
+#endif
        /* adress of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
index db79c40..f9e739c 100644 (file)
@@ -35,6 +35,11 @@ COBJS-$(CONFIG_MACB)         += at91sam9260_macb.o
 COBJS-y                                += at91sam9260_serial.o
 COBJS-$(CONFIG_HAS_DATAFLASH)  += at91sam9260_spi.o
 endif
+ifdef CONFIG_AT91SAM9G20
+COBJS-$(CONFIG_MACB)           += at91sam9260_macb.o
+COBJS-y                                += at91sam9260_serial.o
+COBJS-$(CONFIG_HAS_DATAFLASH)  += at91sam9260_spi.o
+endif
 ifdef CONFIG_AT91SAM9261
 COBJS-y                                += at91sam9261_serial.o
 COBJS-$(CONFIG_HAS_DATAFLASH)  += at91sam9261_spi.o
index a15ab16..7c44ad0 100644 (file)
@@ -33,7 +33,7 @@ int usb_cpu_init(void)
 {
 
 #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-    defined(CONFIG_AT91SAM9263)
+    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20)
        /* Enable PLLB */
        at91_sys_write(AT91_CKGR_PLLBR, CONFIG_SYS_AT91_PLLB);
        while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB)
@@ -62,7 +62,7 @@ int usb_cpu_stop(void)
 #endif
 
 #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-    defined(CONFIG_AT91SAM9263)
+    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20)
        /* Disable PLLB */
        at91_sys_write(AT91_CKGR_PLLBR, 0);
        while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != 0)
index 4e3928a..e460e66 100644 (file)
@@ -3,7 +3,7 @@ Atmel AT91 Evaluation kits
 http://atmel.com/dyn/products/tools.asp?family_id=605#1443
 
 ------------------------------------------------------------------------------
-AT91SAM9260EK & AT91SAM9XEEK
+AT91SAM9260EK, AT91SAM9G20EK & AT91SAM9XEEK
 ------------------------------------------------------------------------------
 
 Memory map
index af0409b..6de0a04 100644 (file)
@@ -447,14 +447,14 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
        /* choose RMII or MII mode. This depends on the board */
 #ifdef CONFIG_RMII
 #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-    defined(CONFIG_AT91SAM9263)
+    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20)
        macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN));
 #else
        macb_writel(macb, USRIO, 0);
 #endif
 #else
 #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-    defined(CONFIG_AT91SAM9263)
+    defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20)
        macb_writel(macb, USRIO, MACB_BIT(CLKEN));
 #else
        macb_writel(macb, USRIO, MACB_BIT(MII));
index b881e4e..4f0e1a7 100644 (file)
@@ -18,7 +18,7 @@
 
 #if defined(CONFIG_AT91RM9200)
 #include <asm/arch/at91rm9200.h>
-#elif defined(CONFIG_AT91SAM9260)
+#elif defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9G20)
 #include <asm/arch/at91sam9260.h>
 #define AT91_BASE_SPI  AT91SAM9260_BASE_SPI0
 #define AT91_ID_UHP    AT91SAM9260_ID_UHP
index 2661563..1fae3a3 100644 (file)
@@ -3,7 +3,7 @@
  * Stelian Pop <stelian.pop@leadtechdesign.com>
  * Lead Tech Design <www.leadtechdesign.com>
  *
- * Configuation settings for the AT91SAM9260EK board.
+ * Configuation settings for the AT91SAM9260EK & AT91SAM9G20EK boards.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
 #define __CONFIG_H
 
 /* ARM asynchronous clock */
-#define AT91_CPU_NAME          "AT91SAM9260"
 #define AT91_MAIN_CLOCK                18432000        /* 18.432 MHz crystal */
-#define AT91_MASTER_CLOCK      100000000       /* peripheral */
-#define AT91_CPU_CLOCK         200000000       /* cpu */
 #define CONFIG_SYS_AT91_PLLB   0x107c3e18      /* PLLB settings for USB */
 #define CONFIG_SYS_HZ          1000000         /* 1us resolution */
 
 #define AT91_SLOW_CLOCK                32768   /* slow clock */
 
 #define CONFIG_ARM926EJS       1       /* This is an ARM926EJS Core    */
+
+#ifdef CONFIG_AT91SAM9G20EK
+#define AT91_CPU_NAME          "AT91SAM9G20"
+#define AT91_MASTER_CLOCK      132000000       /* peripheral */
+#define AT91_CPU_CLOCK         396000000       /* cpu */
+#define CONFIG_AT91SAM9G20     1       /* It's an Atmel AT91SAM9G20 SoC*/
+#else
+#define AT91_CPU_NAME          "AT91SAM9260"
+#define AT91_MASTER_CLOCK      100000000       /* peripheral */
+#define AT91_CPU_CLOCK         200000000       /* cpu */
 #define CONFIG_AT91SAM9260     1       /* It's an Atmel AT91SAM9260 SoC*/
-#define CONFIG_AT91SAM9260EK   1       /* on an AT91SAM9260EK Board    */
+#endif
+
 #undef CONFIG_USE_IRQ                  /* we don't need IRQ/FIQ stuff  */
 
 #define CONFIG_CMDLINE_TAG     1       /* enable passing of ATAGs      */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0    0xC0000000      /* CS0 */
 #define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1    0xD0000000      /* CS1 */
 #define AT91_SPI_CLK                   15000000
+
+#ifdef CONFIG_AT91SAM9G20EK
+#define DATAFLASH_TCSS                 (0x22 << 16)
+#else
 #define DATAFLASH_TCSS                 (0x1a << 16)
+#endif
 #define DATAFLASH_TCHS                 (0x1 << 24)
 
 /* NAND flash */