From 9e6d2be852f4a02ff7be888347eae68c3bc4baaa Mon Sep 17 00:00:00 2001 From: mlafauci Date: Mon, 24 Oct 2011 08:25:48 +0200 Subject: u-boot: Add vulcanoG20 machine Signed-off-by: Marco Cavallini --- ...ot-Add-new-board-VulcanoG20-into-Makefile.patch | 42 ++ .../0002-u-boot-Add-VulcanoG20-board-support.patch | 609 +++++++++++++++++++++ ...t-Add-dataflash-page-size-power-2-support.patch | 65 +++ recipes/u-boot/u-boot_2009.11.bb | 24 + 4 files changed, 740 insertions(+) create mode 100644 recipes/u-boot/u-boot-2009.11/at91/vG20/0001-u-boot-Add-new-board-VulcanoG20-into-Makefile.patch create mode 100644 recipes/u-boot/u-boot-2009.11/at91/vG20/0002-u-boot-Add-VulcanoG20-board-support.patch create mode 100644 recipes/u-boot/u-boot-2009.11/at91/vG20/0003-u-boot-Add-dataflash-page-size-power-2-support.patch 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 +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 +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 ++# Lead Tech Design ++# ++# 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 ++ * Lead Tech Design ++ * ++ * 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 ++#include ++#include ++#include ++#include ++ ++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 ++ * ++ * 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 ++#include ++#include ++#include ++ ++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 ++ * Lead Tech Design ++ * ++ * 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 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB) ++#include ++#endif ++#include ++ ++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 ++ * ++ * 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 ++#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 +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 -- cgit 1.2.3-korg