aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormlafauci <mlafauci@metodo2.it>2011-10-24 08:25:48 +0200
committerMarco Cavallini <m.cavallini@koansoftware.com>2011-11-04 15:21:36 +0100
commitaceb87fdda970456611b88128b715d0397820e2d (patch)
treed16fd76aef4fa1b6f71e4f62f576094c983257d8
parent627e9ed13b18455fa5c99916a247c453f7a16ed0 (diff)
downloadopenembedded-aceb87fdda970456611b88128b715d0397820e2d.tar.gz
u-boot: Add vulcanoG20 machine
Signed-off-by: Marco Cavallini <m.cavallini@koansoftware.com>
-rw-r--r--recipes/u-boot/u-boot-2009.11/at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch42
-rw-r--r--recipes/u-boot/u-boot-2009.11/at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch609
-rw-r--r--recipes/u-boot/u-boot-2009.11/at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch65
-rw-r--r--recipes/u-boot/u-boot_2009.11.bb24
4 files changed, 740 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-2009.11/at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch b/recipes/u-boot/u-boot-2009.11/at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch
new file mode 100644
index 0000000000..f703191572
--- /dev/null
+++ b/recipes/u-boot/u-boot-2009.11/at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch
@@ -0,0 +1,42 @@
+From 93807a8da1720e41dfc65c934d4cb2ecf5c7acce Mon Sep 17 00:00:00 2001
+From: mlafauci <mlafauci@metodo2.it>
+Date: Mon, 3 Oct 2011 22:47:54 +0200
+Subject: [PATCH 1/3] u-boot: Add new board VulcanoG20 into Makefile
+
+---
+ Makefile | 19 +++++++++++++++++++
+ 1 files changed, 19 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 2db49be..c9179ed 100644
+--- a/Makefile
++++ b/Makefile
+@@ -2845,6 +2845,25 @@ at91sam9rlek_config : unconfig
+ fi;
+ @$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91
+
++vulcano-g20_nandflash_config \
++vulcano-g20_dataflash_cs0_config \
++vulcano-g20_dataflash_cs1_config \
++vulcano-g20_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_VULCANO_G20 1" >>$(obj)include/config.h ;
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \
++ fi;
++ @$(MKCONFIG) -a vulcano-g20 arm arm926ejs vulcano-g20 metodo2 at91
++
++
+ CPU9G20_128M_config \
+ CPU9G20_config \
+ CPU9260_128M_config \
+--
+1.7.0.4
+
diff --git a/recipes/u-boot/u-boot-2009.11/at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch b/recipes/u-boot/u-boot-2009.11/at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch
new file mode 100644
index 0000000000..9b02099a4d
--- /dev/null
+++ b/recipes/u-boot/u-boot-2009.11/at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch
@@ -0,0 +1,609 @@
+From de063552375b59c34fdaf584deba5225ebe7b136 Mon Sep 17 00:00:00 2001
+From: mlafauci <mlafauci@metodo2.it>
+Date: Mon, 3 Oct 2011 22:48:38 +0200
+Subject: [PATCH 2/3] u-boot: Add VulcanoG20 board support
+
+---
+ board/metodo2/vulcano-g20/Makefile | 56 ++++++++
+ board/metodo2/vulcano-g20/config.mk | 1 +
+ board/metodo2/vulcano-g20/led.c | 43 ++++++
+ board/metodo2/vulcano-g20/partition.c | 40 ++++++
+ board/metodo2/vulcano-g20/vulcano-g20.c | 193 +++++++++++++++++++++++++++
+ include/configs/vulcano-g20.h | 217 +++++++++++++++++++++++++++++++
+ 6 files changed, 550 insertions(+), 0 deletions(-)
+ create mode 100644 board/metodo2/vulcano-g20/Makefile
+ create mode 100644 board/metodo2/vulcano-g20/config.mk
+ create mode 100644 board/metodo2/vulcano-g20/led.c
+ create mode 100644 board/metodo2/vulcano-g20/partition.c
+ create mode 100644 board/metodo2/vulcano-g20/vulcano-g20.c
+ create mode 100644 include/configs/vulcano-g20.h
+
+diff --git a/board/metodo2/vulcano-g20/Makefile b/board/metodo2/vulcano-g20/Makefile
+new file mode 100644
+index 0000000..450c303
+--- /dev/null
++++ b/board/metodo2/vulcano-g20/Makefile
+@@ -0,0 +1,56 @@
++#
++# (C) Copyright 2003-2008
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# (C) Copyright 2008
++# Stelian Pop <stelian.pop@leadtechdesign.com>
++# Lead Tech Design <www.leadtechdesign.com>
++#
++# See file CREDITS for list of people who contributed to this
++# project.
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License as
++# published by the Free Software Foundation; either version 2 of
++# the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++# MA 02111-1307 USA
++#
++
++include $(TOPDIR)/config.mk
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS-y += vulcano-g20.o
++COBJS-y += led.o
++COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS-y))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS) $(SOBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak $(obj).depend
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff --git a/board/metodo2/vulcano-g20/config.mk b/board/metodo2/vulcano-g20/config.mk
+new file mode 100644
+index 0000000..ff2cfd1
+--- /dev/null
++++ b/board/metodo2/vulcano-g20/config.mk
+@@ -0,0 +1 @@
++TEXT_BASE = 0x23f00000
+diff --git a/board/metodo2/vulcano-g20/led.c b/board/metodo2/vulcano-g20/led.c
+new file mode 100644
+index 0000000..3ecd64a
+--- /dev/null
++++ b/board/metodo2/vulcano-g20/led.c
+@@ -0,0 +1,43 @@
++/*
++ * (C) Copyright 2007-2008
++ * Stelian Pop <stelian.pop@leadtechdesign.com>
++ * Lead Tech Design <www.leadtechdesign.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++#include <asm/arch/at91sam9260.h>
++#include <asm/arch/at91_pmc.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/io.h>
++
++void coloured_LED_init(void)
++{
++#ifdef CONFIG_AT91_LED
++ /* Enable clock */
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA);
++
++ at91_set_gpio_output(CONFIG_RED_LED, 1);
++ at91_set_gpio_output(CONFIG_GREEN_LED, 1);
++
++ at91_set_gpio_value(CONFIG_RED_LED, 0);
++ at91_set_gpio_value(CONFIG_GREEN_LED, 1);
++#endif
++}
+diff --git a/board/metodo2/vulcano-g20/partition.c b/board/metodo2/vulcano-g20/partition.c
+new file mode 100644
+index 0000000..2d1a5fd
+--- /dev/null
++++ b/board/metodo2/vulcano-g20/partition.c
+@@ -0,0 +1,40 @@
++/*
++ * (C) Copyright 2008
++ * Ulf Samuelsson <ulf@atmel.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ */
++#include <common.h>
++#include <config.h>
++#include <asm/hardware.h>
++#include <dataflash.h>
++
++AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
++
++struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
++ {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */
++ {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1, 1}
++};
++
++/*define the area offsets*/
++dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
++ {0x00000000, 0x00003FFF, FLAG_PROTECT_SET, 0, "Bootstrap"},
++ {0x00004000, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
++ {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"},
++ {0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0, "Kernel"},
++ {0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0, "FS"},
++};
+diff --git a/board/metodo2/vulcano-g20/vulcano-g20.c b/board/metodo2/vulcano-g20/vulcano-g20.c
+new file mode 100644
+index 0000000..c3f8445
+--- /dev/null
++++ b/board/metodo2/vulcano-g20/vulcano-g20.c
+@@ -0,0 +1,193 @@
++/*
++ * (C) Copyright 2007-2008
++ * Stelian Pop <stelian.pop@leadtechdesign.com>
++ * Lead Tech Design <www.leadtechdesign.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <common.h>
++#include <asm/arch/at91sam9260.h>
++#include <asm/arch/at91sam9260_matrix.h>
++#include <asm/arch/at91sam9_smc.h>
++#include <asm/arch/at91_common.h>
++#include <asm/arch/at91_pmc.h>
++#include <asm/arch/at91_rstc.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/io.h>
++#include <asm/arch/hardware.h>
++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
++#include <net.h>
++#endif
++#include <netdev.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++/* ------------------------------------------------------------------------- */
++/*
++ * Miscelaneous platform dependent initialisations
++ */
++
++#ifdef CONFIG_CMD_NAND
++static void at91sam9260ek_nand_hw_init(void)
++{
++ unsigned long csa;
++
++ /* Enable CS3 */
++ csa = at91_sys_read(AT91_MATRIX_EBICSA);
++ at91_sys_write(AT91_MATRIX_EBICSA,
++ csa | AT91_MATRIX_CS3A_SMC_SMARTMEDIA);
++
++ /* Configure SMC CS3 for NAND/SmartMedia */
++ at91_sys_write(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),
++ AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
++ AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3));
++ at91_sys_write(AT91_SMC_CYCLE(3),
++ AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5));
++ at91_sys_write(AT91_SMC_MODE(3),
++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
++ AT91_SMC_EXNWMODE_DISABLE |
++#ifdef CONFIG_SYS_NAND_DBW_16
++ AT91_SMC_DBW_16 |
++#else /* CONFIG_SYS_NAND_DBW_8 */
++ AT91_SMC_DBW_8 |
++#endif
++ AT91_SMC_TDF_(2));
++
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOC);
++
++ /* Configure RDY/BSY */
++ at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
++
++ /* Enable NandFlash */
++ at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
++}
++#endif
++
++#ifdef CONFIG_MACB
++static void at91sam9260ek_macb_hw_init(void)
++{
++ unsigned long rstc;
++
++ /* Enable clock */
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_EMAC);
++
++ /*
++ * Disable pull-up on:
++ * RXDV (PA17) => PHY normal mode (not Test mode)
++ * ERX0 (PA14) => PHY ADDR0
++ * ERX1 (PA15) => PHY ADDR1
++ * ERX2 (PA25) => PHY ADDR2 => N.C.
++ * ERX3 (PA26) => PHY ADDR3 => N.C.
++ * ECRS (PA28) => PHY ADDR4 => PHYADDR = 0x0 => N.C.
++ *
++ * PHY has internal pull-down
++ */
++ writel(pin_to_mask(AT91_PIN_PA14) |
++ pin_to_mask(AT91_PIN_PA15) |
++ pin_to_mask(AT91_PIN_PA17),
++ pin_to_controller(AT91_PIN_PA0) + PIO_PUDR);
++
++ rstc = at91_sys_read(AT91_RSTC_MR) & AT91_RSTC_ERSTL;
++
++ /* 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);
++
++ /* Wait for end hardware reset */
++ while (!(at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_NRSTL));
++
++ /* Restore NRST value */
++ at91_sys_write(AT91_RSTC_MR, AT91_RSTC_KEY |
++ (rstc) |
++ AT91_RSTC_URSTEN);
++
++ /* Re-enable pull-up */
++ writel(pin_to_mask(AT91_PIN_PA14) |
++ pin_to_mask(AT91_PIN_PA15) |
++ pin_to_mask(AT91_PIN_PA17),
++ pin_to_controller(AT91_PIN_PA0) + PIO_PUER);
++
++ at91_macb_hw_init();
++}
++#endif
++
++int board_init(void)
++{
++ /* Enable Ctrlc */
++ console_init_f();
++
++#ifdef CONFIG_VULCANO_G20
++ /* 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;
++
++ at91_serial_hw_init();
++#ifdef CONFIG_CMD_NAND
++ at91sam9260ek_nand_hw_init();
++#endif
++#ifdef CONFIG_HAS_DATAFLASH
++ at91_spi0_hw_init((1 << 0) | (1 << 1));
++#endif
++#ifdef CONFIG_MACB
++ at91sam9260ek_macb_hw_init();
++#endif
++
++ return 0;
++}
++
++int dram_init(void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
++ return 0;
++}
++
++#ifdef CONFIG_RESET_PHY_R
++void reset_phy(void)
++{
++#ifdef CONFIG_MACB
++ /*
++ * Initialize ethernet HW addr prior to starting Linux,
++ * needed for nfsroot
++ */
++ eth_init(gd->bd);
++#endif
++}
++#endif
++
++int board_eth_init(bd_t *bis)
++{
++ int rc = 0;
++#ifdef CONFIG_MACB
++ rc = macb_eth_initialize(0, (void *)AT91SAM9260_BASE_EMAC, 0x00);
++#endif
++ return rc;
++}
+diff --git a/include/configs/vulcano-g20.h b/include/configs/vulcano-g20.h
+new file mode 100644
+index 0000000..26cc867
+--- /dev/null
++++ b/include/configs/vulcano-g20.h
+@@ -0,0 +1,217 @@
++/*
++ * (C) Copyright 2007-2008
++ *
++ * Metodo2 srl <www.metodo2.it>
++ *
++ * Configuation settings for the Vulcano G20 board.
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++/* ARM asynchronous clock */
++#define AT91_MAIN_CLOCK 18432000 /* 18.432 MHz crystal */
++#define CONFIG_SYS_HZ 1000
++
++#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */
++#define CONFIG_AT91SAM9G20 1 /* It's an Atmel AT91SAM9G20 SoC*/
++
++#define CONFIG_ARCH_CPU_INIT
++#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
++
++#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_INITRD_TAG 1
++
++#define CONFIG_SKIP_LOWLEVEL_INIT
++#define CONFIG_SKIP_RELOCATE_UBOOT
++
++/*
++ * Hardware drivers
++ */
++#define CONFIG_ATMEL_USART 1
++#undef CONFIG_USART0
++#undef CONFIG_USART1
++#undef CONFIG_USART2
++#define CONFIG_USART3 1 /* USART 3 is DBGU */
++
++/* LED */
++//#define CONFIG_AT91_LED
++//#define CONFIG_RED_LED AT91_PIN_PA9 /* this is the power led */
++//#define CONFIG_GREEN_LED AT91_PIN_PA6 /* this is the user led */
++
++#define CONFIG_BOOTDELAY 3
++
++/*
++ * BOOTP options
++ */
++#define CONFIG_BOOTP_BOOTFILESIZE 1
++#define CONFIG_BOOTP_BOOTPATH 1
++#define CONFIG_BOOTP_GATEWAY 1
++#define CONFIG_BOOTP_HOSTNAME 1
++
++/*
++ * Command line configuration.
++ */
++#include <config_cmd_default.h>
++#undef CONFIG_CMD_BDI
++#undef CONFIG_CMD_FPGA
++#undef CONFIG_CMD_IMI
++#undef CONFIG_CMD_IMLS
++#undef CONFIG_CMD_LOADS
++#undef CONFIG_CMD_SOURCE
++
++#define CONFIG_CMD_PING 1
++#define CONFIG_CMD_DHCP 1
++#define CONFIG_CMD_NAND 1
++#define CONFIG_CMD_USB 1
++
++#define CONFIG_CMD_DEBUG 1
++#define CONFIG_CMD_FACTORY 1
++
++/* SDRAM */
++#define CONFIG_NR_DRAM_BANKS 1
++#define PHYS_SDRAM 0x20000000
++#define PHYS_SDRAM_SIZE 0x04000000 /* 64 megs */
++
++/* DataFlash */
++#define CONFIG_ATMEL_DATAFLASH_SPI
++#define CONFIG_HAS_DATAFLASH 1
++#define CONFIG_SYS_SPI_WRITE_TOUT (5*CONFIG_SYS_HZ)
++#define CONFIG_SYS_MAX_DATAFLASH_BANKS 2
++#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */
++#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000 /* CS1 */
++#define AT91_SPI_CLK 15000000
++
++#define DATAFLASH_TCSS (0x22 << 16)
++#define DATAFLASH_TCHS (0x1 << 24)
++
++/* NAND flash */
++#ifdef CONFIG_CMD_NAND
++#define CONFIG_NAND_ATMEL
++#define CONFIG_SYS_MAX_NAND_DEVICE 1
++#define CONFIG_SYS_NAND_BASE 0x40000000
++#define CONFIG_SYS_NAND_DBW_8 1
++/* our ALE is AD21 */
++#define CONFIG_SYS_NAND_MASK_ALE (1 << 21)
++/* our CLE is AD22 */
++#define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
++#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PC14
++#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PA28
++
++#define CONFIG_SYS_64BIT_VSPRINTF /* needed for nand_util.c */
++#endif
++
++/* NOR flash - no real flash on this board */
++#define CONFIG_SYS_NO_FLASH 1
++
++/* Ethernet */
++#define CONFIG_MACB 1
++#define CONFIG_RMII 1
++#define CONFIG_NET_MULTI 1
++#define CONFIG_NET_RETRY_COUNT 20
++#define CONFIG_RESET_PHY_R 1
++
++/* USB */
++#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 0x00500000 /* AT91SAM9260_UHP_BASE */
++#define CONFIG_SYS_USB_OHCI_SLOT_NAME "at91sam9260"
++#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
++#define CONFIG_USB_STORAGE 1
++#define CONFIG_CMD_FAT 1
++
++#define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */
++
++#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
++#define CONFIG_SYS_MEMTEST_END 0x23e00000
++
++#ifdef CONFIG_SYS_USE_DATAFLASH_CS0
++
++/* bootstrap + u-boot + env + linux in dataflash on CS0 */
++#define CONFIG_ENV_IS_IN_DATAFLASH 1
++#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
++#define CONFIG_ENV_OFFSET 0x4000
++#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
++#define CONFIG_ENV_SIZE 0x4400
++#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm"
++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
++ "root=/dev/mtdblock0 " \
++ "mtdparts=atmel_nand:-(root) " \
++ "rw rootfstype=jffs2"
++
++#elif CONFIG_SYS_USE_DATAFLASH_CS1
++
++/* bootstrap + u-boot + env + linux in dataflash on CS1 */
++#define CONFIG_ENV_IS_IN_DATAFLASH 1
++#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400)
++#define CONFIG_ENV_OFFSET 0x4000
++#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET)
++#define CONFIG_ENV_SIZE 0x4400
++#define CONFIG_BOOTCOMMAND "cp.b 0xD0042000 0x22000000 0x210000; bootm"
++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
++ "root=/dev/mtdblock1 " \
++ "mtdparts=atmel_nand:-(root) " \
++ "rw rootfstype=jffs2"
++
++#else /* CONFIG_SYS_USE_NANDFLASH */
++
++/* bootstrap + u-boot + env + linux in nandflash */
++#define CONFIG_ENV_IS_IN_NAND 1
++#define CONFIG_ENV_OFFSET 0x60000
++#define CONFIG_ENV_OFFSET_REDUND 0x80000
++#define CONFIG_ENV_SECT_SIZE 0x20000 /* 1 sector = 128 kB */
++#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
++#define CONFIG_BOOTCOMMAND "nand read 0x22000000 0xA0000 0x200000; bootm"
++#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
++ "root=/dev/mtdblock5 " \
++ "mtdparts=atmel_nand:128k(bootstrap)ro," \
++ "256k(uboot)ro,128k(env1)ro," \
++ "128k(env2)ro,2M(linux),-(root) " \
++ "rw rootfstype=jffs2"
++
++#endif
++
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 }
++
++#define CONFIG_SYS_PROMPT "U-Boot> "
++#define CONFIG_SYS_CBSIZE 256
++#define CONFIG_SYS_MAXARGS 16
++#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
++#define CONFIG_SYS_LONGHELP 1
++#define CONFIG_CMDLINE_EDITING 1
++
++/*
++ * Size of malloc() pool
++ */
++#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)
++#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */
++
++#define CONFIG_STACKSIZE (32*1024) /* regular stack */
++
++#ifdef CONFIG_USE_IRQ
++#error CONFIG_USE_IRQ not supported
++#endif
++
++#endif
+--
+1.7.0.4
+
diff --git a/recipes/u-boot/u-boot-2009.11/at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch b/recipes/u-boot/u-boot-2009.11/at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch
new file mode 100644
index 0000000000..6d3a8ca1da
--- /dev/null
+++ b/recipes/u-boot/u-boot-2009.11/at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch
@@ -0,0 +1,65 @@
+From d2562a1fa3b745e1e088ae908f4493f8f9304bad Mon Sep 17 00:00:00 2001
+From: mlafauci <mlafauci@metodo2.it>
+Date: Mon, 3 Oct 2011 22:49:31 +0200
+Subject: [PATCH 3/3] u-boot: Add dataflash page size power 2 support
+
+---
+ drivers/mtd/dataflash.c | 15 +++++++++++++--
+ include/dataflash.h | 1 +
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/dataflash.c b/drivers/mtd/dataflash.c
+index 96cd395..ab35e97 100644
+--- a/drivers/mtd/dataflash.c
++++ b/drivers/mtd/dataflash.c
+@@ -42,6 +42,7 @@ int AT91F_DataflashInit (void)
+ int last_part;
+ int found[CONFIG_SYS_MAX_DATAFLASH_BANKS];
+ unsigned char protected;
++ unsigned char powerOf2 = 0;
+
+ AT91F_SpiInit ();
+
+@@ -52,6 +53,7 @@ int AT91F_DataflashInit (void)
+ dataflash_info[i].Device.pages_number = 0;
+ dfcode = AT91F_DataflashProbe (cs[i].cs,
+ &dataflash_info[i].Desc);
++ powerOf2 = dataflash_info[i].Desc.command[1] & PAGE_SIZE_POWER2;
+
+ switch (dfcode) {
+ case AT45DB021:
+@@ -104,8 +106,17 @@ int AT91F_DataflashInit (void)
+
+ case AT45DB642:
+ dataflash_info[i].Device.pages_number = 8192;
+- dataflash_info[i].Device.pages_size = 1056;
+- dataflash_info[i].Device.page_offset = 11;
++ if (powerOf2)
++ {
++ //Binary page address
++ dataflash_info[i].Device.pages_size = 1024;
++ dataflash_info[i].Device.page_offset = 10;
++ }
++ else
++ {
++ dataflash_info[i].Device.pages_size = 1056;
++ dataflash_info[i].Device.page_offset = 11;
++ }
+ dataflash_info[i].Device.byte_mask = 0x700;
+ dataflash_info[i].Device.cs = cs[i].cs;
+ dataflash_info[i].Desc.DataFlash_state = IDLE;
+diff --git a/include/dataflash.h b/include/dataflash.h
+index 63b3bf9..2295d15 100644
+--- a/include/dataflash.h
++++ b/include/dataflash.h
+@@ -142,6 +142,7 @@ struct dataflash_addr {
+ #define AT45DB642 0x3c
+ #define AT45DB128 0x10
+ #define PAGES_PER_BLOCK 8
++#define PAGE_SIZE_POWER2 0x01
+
+ #define AT91C_DATAFLASH_TIMEOUT 10000 /* For AT91F_DataFlashWaitReady */
+
+--
+1.7.0.4
+
diff --git a/recipes/u-boot/u-boot_2009.11.bb b/recipes/u-boot/u-boot_2009.11.bb
index 3b51e3c1ca..e2a8d5af04 100644
--- a/recipes/u-boot/u-boot_2009.11.bb
+++ b/recipes/u-boot/u-boot_2009.11.bb
@@ -9,6 +9,7 @@ DEFAULT_PREFERENCE_at91sam9m10ekes = "2"
DEFAULT_PREFERENCE_at91sam9m10g45ek = "2"
DEFAULT_PREFERENCE_at91sam9g45ek = "2"
DEFAULT_PREFERENCE_adb4000 = "2"
+DEFAULT_PREFERENCE_vulcano-g20 = "2"
SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 "
@@ -37,6 +38,29 @@ SRC_URI_append_adb4000 = "\
file://at91/100-icnova.patch \
"
+SRC_URI_append_vulcano-g20 = "\
+ file://at91/0002-Support-running-ATSAM9G45-M10-from-dataflash.patch \
+ file://at91/0003-Update-SAM9M10-G45-config-for-dataflash-support.patch \
+ file://at91/0004-Support-selecting-SPI-mode-in-dataflash-driver.patch \
+ file://at91/0005-mux-replace-verbose-dataflash_mmc_mux-command.patch \
+ file://at91/0006-libarm-board.c-Gets-overwritten-workaround.patch \
+ file://at91/0007-fat.c-Add-DEBUG-currently-disabled.patch \
+ file://at91/0008-env_dataflash.c-More-robust-handling.patch \
+ file://at91/0009-cmd_debug.c-Add-a-generic-function-for-debug-vars.patch \
+ file://at91/0010-debug.h-Add-header-for-debug-variables.patch \
+ file://at91/0011-common-Makefile-Add-cmd_debug.c-to-build.patch \
+ file://at91/0012-cmd_mci.c-Support-writing-out-AT91-mci-config.patch \
+ file://at91/0013-atmel_dataflash.c-Status-printout-depend-on-DEBUG.patch \
+ file://at91/0014-AT91-MCI-Add-support-for-SD-Card.patch \
+ file://at91/0015-sam9m10g45ek-Add-configuration-file.patch \
+ file://at91/0016-SupportEnv-load-from-SD-Card.patch \
+ file://at91/0017-SD-Card-boot-patch-for-SAM9M10-G45.patch \
+ file://at91/0018-ADD-AT91-Build-script.patch \
+ file://at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch \
+ file://at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch \
+ file://at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch \
+ "
+
TARGET_LDFLAGS = ""
inherit base