diff options
Diffstat (limited to 'target/linux/at91/image/u-boot')
-rw-r--r-- | target/linux/at91/image/u-boot/Makefile | 51 | ||||
-rw-r--r-- | target/linux/at91/image/u-boot/patches/100-netusg20.patch | 574 | ||||
-rw-r--r-- | target/linux/at91/image/u-boot/patches/200-clock.patch | 24 | ||||
-rw-r--r-- | target/linux/at91/image/u-boot/ubclient/Makefile | 15 | ||||
-rw-r--r-- | target/linux/at91/image/u-boot/ubclient/ubpar.c | 135 |
5 files changed, 799 insertions, 0 deletions
diff --git a/target/linux/at91/image/u-boot/Makefile b/target/linux/at91/image/u-boot/Makefile new file mode 100644 index 000000000..1d1b31455 --- /dev/null +++ b/target/linux/at91/image/u-boot/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2006 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=u-boot +PKG_VERSION:=2010.06 +PKG_RELEASE:=1 + +PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=ftp://ftp.denx.de/pub/u-boot +PKG_MD5SUM:= +PKG_CAT:=bzcat + +include $(INCLUDE_DIR)/package.mk + +UBOOT_CONFIG=$(call qstrip,$(CONFIG_UBOOT_TARGET)) +LAN_IP=$(call qstrip,$(CONFIG_UBOOT_IPADDR)) +LAN_SERVERIP=$(call qstrip,$(CONFIG_UBOOT_SERVERIP)) + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) $(UBOOT_CONFIG)_config + export CROSS_COMPILE=$(TARGET_CROSS); \ + export LAN_IP=$(LAN_IP); \ + export LAN_SERVERIP=$(LAN_SERVERIP); \ + $(MAKE) -C $(PKG_BUILD_DIR) + mkdir -p $(PKG_BUILD_DIR)/ubclient + $(CP) ./ubclient/* $(PKG_BUILD_DIR)/ubclient + export LAN_IP=$(LAN_IP); \ + export LAN_SERVERIP=$(LAN_SERVERIP); \ + #$(MAKE) -C $(PKG_BUILD_DIR)/ubclient \ + # $(TARGET_CONFIGURE_OPTS) \ + # CFLAGS="$(TARGET_CFLAGS) -Dtarget_$(BOARD)=1" +endef + +define Build/InstallDev + dd if=$(PKG_BUILD_DIR)/u-boot.bin of=$(PKG_BUILD_DIR)/u-boot.block bs=232k count=1 conv=sync +# $(INSTALL_DIR) $(STAGING_DIR)/ubclient/sbin +# $(INSTALL_BIN) $(PKG_BUILD_DIR)/ubclient/ubpar $(STAGING_DIR)/ubclient/sbin/ +# $(CP) $(PKG_BUILD_DIR)/ubclient/ubpar ../../base-files/sbin + mkdir -p $(BIN_DIR)/ + cp $(PKG_BUILD_DIR)/u-boot.bin $(BIN_DIR)/u-boot.$(PKG_VERSION).bin +endef + +$(eval $(call Build/DefaultTargets)) diff --git a/target/linux/at91/image/u-boot/patches/100-netusg20.patch b/target/linux/at91/image/u-boot/patches/100-netusg20.patch new file mode 100644 index 000000000..127372e8f --- /dev/null +++ b/target/linux/at91/image/u-boot/patches/100-netusg20.patch @@ -0,0 +1,574 @@ +Add support for the NetusG20 board by Acmesystems srl. +This board is based on AT91SAM9G20 SoC. + +Signed-off-by: Claudio Mignanti <c.mignanti@gmail.com> +--- + MAKEALL | 1 + + Makefile | 3 + + arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c | 5 + + board/acmesystems/netusg20/Makefile | 56 +++++++ + board/acmesystems/netusg20/config.mk | 1 + + board/acmesystems/netusg20/led.c | 40 +++++ + board/acmesystems/netusg20/netusg20.c | 152 +++++++++++++++++ + board/acmesystems/netusg20/partition.c | 39 +++++ + include/configs/netusg20.h | 181 +++++++++++++++++++++ + 9 files changed, 478 insertions(+), 0 deletions(-) + create mode 100644 board/acmesystems/netusg20/Makefile + create mode 100644 board/acmesystems/netusg20/config.mk + create mode 100644 board/acmesystems/netusg20/led.c + create mode 100644 board/acmesystems/netusg20/netusg20.c + create mode 100644 board/acmesystems/netusg20/partition.c + create mode 100644 include/configs/netusg20.h + +diff --git a/MAKEALL b/MAKEALL +index d6d5f5b..60e36e1 100755 +--- a/MAKEALL ++++ b/MAKEALL +@@ -684,6 +684,7 @@ LIST_at91=" \ + meesc \ + mp2usb \ + m501sk \ ++ netusg20 \ + otc570 \ + pm9261 \ + pm9263 \ +diff --git a/Makefile b/Makefile +index 87d5214..b73659f 100644 +--- a/Makefile ++++ b/Makefile +@@ -2867,6 +2867,9 @@ at91sam9g45ekes_config : unconfig + fi; + @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91 + ++netusg20_config: unconfig ++ @$(MKCONFIG) $(@:_config=) arm arm926ejs netusg20 acmesystems at91 ++ + otc570_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm926ejs otc570 esd at91 + +diff --git a/arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c b/arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c +index 77d49ab..87ec531 100644 +--- a/arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c ++++ b/arch/arm/cpu/arm926ejs/at91/at91sam9260_devices.c +@@ -59,7 +59,12 @@ void at91_serial3_hw_init(void) + { + at91_pmc_t *pmc = (at91_pmc_t *) AT91_PMC_BASE; + ++#ifdef CONFIG_NETUSG20 ++ /* pull-up active on DRXD*/ ++ at91_set_a_periph(AT91_PIO_PORTB, 14, 1); ++#else + at91_set_a_periph(AT91_PIO_PORTB, 14, 0); /* DRXD */ ++#endif + at91_set_a_periph(AT91_PIO_PORTB, 15, 1); /* DTXD */ + writel(1 << AT91_ID_SYS, &pmc->pcer); + } +diff --git a/board/acmesystems/netusg20/Makefile b/board/acmesystems/netusg20/Makefile +new file mode 100644 +index 0000000..31589fd +--- /dev/null ++++ b/board/acmesystems/netusg20/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 += netusg20.o ++COBJS-y += led.o ++COBJS-y += 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/acmesystems/netusg20/config.mk b/board/acmesystems/netusg20/config.mk +new file mode 100644 +index 0000000..ff2cfd1 +--- /dev/null ++++ b/board/acmesystems/netusg20/config.mk +@@ -0,0 +1 @@ ++TEXT_BASE = 0x23f00000 +diff --git a/board/acmesystems/netusg20/led.c b/board/acmesystems/netusg20/led.c +new file mode 100644 +index 0000000..1016b98 +--- /dev/null ++++ b/board/acmesystems/netusg20/led.c +@@ -0,0 +1,40 @@ ++/* ++ * (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) ++{ ++ /* Enable clock */ ++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9260_ID_PIOA); ++ ++ at91_set_gpio_output(CONFIG_RED_LED, 1); ++ ++ at91_set_gpio_value(CONFIG_RED_LED, 1); ++} +diff --git a/board/acmesystems/netusg20/netusg20.c b/board/acmesystems/netusg20/netusg20.c +new file mode 100644 +index 0000000..94b4d4c +--- /dev/null ++++ b/board/acmesystems/netusg20/netusg20.c +@@ -0,0 +1,152 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop <stelian.pop@leadtechdesign.com> ++ * Lead Tech Design <www.leadtechdesign.com> ++ * ++ * (C) Copyright 2010 ++ * Claudio Mignanti <c.mignanti@gmail.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_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 ++ * ERX3 (PA26) => PHY ADDR3 ++ * ECRS (PA28) => PHY ADDR4 => PHYADDR = 0x0 ++ * ++ * 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_mask(AT91_PIN_PA25) | ++ pin_to_mask(AT91_PIN_PA26) | ++ pin_to_mask(AT91_PIN_PA28), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUDR); ++ ++ rstc = at91_sys_read(AT91_RSTC_MR) & AT91_RSTC_ERSTL; ++ ++ 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_mask(AT91_PIN_PA25) | ++ pin_to_mask(AT91_PIN_PA26) | ++ pin_to_mask(AT91_PIN_PA28), ++ pin_to_controller(AT91_PIN_PA0) + PIO_PUER); ++ ++ at91_macb_hw_init(); ++} ++#endif ++ ++int board_init(void) ++{ ++ /* Enable Ctrlc */ ++ console_init_f(); ++ ++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G20EK; ++ ++ /* adress of boot parameters */ ++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; ++ ++ at91_serial_hw_init(); ++#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; ++} ++ ++void show_boot_progress (int val){} +diff --git a/board/acmesystems/netusg20/partition.c b/board/acmesystems/netusg20/partition.c +new file mode 100644 +index 0000000..7d79e53 +--- /dev/null ++++ b/board/acmesystems/netusg20/partition.c +@@ -0,0 +1,39 @@ ++/* ++ * (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_CS1, 1} ++}; ++ ++/*define the area offsets*/ ++dataflash_protect_t area_list[NB_DATAFLASH_AREA] = { ++ {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"}, ++ {0x00004200, 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/include/configs/netusg20.h b/include/configs/netusg20.h +new file mode 100644 +index 0000000..99b4f12 +--- /dev/null ++++ b/include/configs/netusg20.h +@@ -0,0 +1,181 @@ ++/* ++ * (C) Copyright 2007-2008 ++ * Stelian Pop <stelian.pop@leadtechdesign.com> ++ * Lead Tech Design <www.leadtechdesign.com> ++ * ++ * Configuation settings for the NetusG20 boards. ++ * ++ * 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 ++ ++#define CONFIG_AT91_LEGACY ++ ++/* ARM asynchronous clock */ ++#define CONFIG_SYS_AT91_MAIN_CLOCK 18432000 /* 18.432 MHz crystal */ ++#define CONFIG_SYS_HZ 1000 ++ ++#define CONFIG_DISPLAY_CPUINFO ++ ++#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */ ++#define CONFIG_AT91SAM9G20 1 /* It's an Atmel AT91SAM9G20 SoC*/ ++#define CONFIG_NETUSG20 1 ++ ++#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_AT91_GPIO 1 ++#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_USB 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 1 ++#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 0xD0000000 /* CS1 */ ++#define AT91_SPI_CLK 15000000 ++ ++#define DATAFLASH_TCSS (0x22 << 16) ++#define DATAFLASH_TCHS (0x1 << 24) ++ ++/* no NAND flash on this board*/ ++#define CONFIG_SYS_NO_FLASH ++ ++/* 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 ++ ++/* MMC */ ++#define CONFIG_MMC ++#define CONFIG_CMD_MMC ++#define CONFIG_ATMEL_MCI ++#define CONFIG_CMD_AUTOSCRIPT ++#define CONFIG_CMD_IMI ++#define CONFIG_CMD_SOURCE ++ ++#define MMCI_BASE 0xFFFA8000 ++ ++/* 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_SYS_LOAD_ADDR 0x22000000 /* load address */ ++ ++#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM ++#define CONFIG_SYS_MEMTEST_END 0x23e00000 ++ ++/* Filesystem */ ++#define CONFIG_CMD_FAT 1 ++#define CONFIG_CMD_EXT2 1 ++ ++/* 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 0x4200 ++#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET) ++#define CONFIG_ENV_SIZE 0x4200 ++#define CONFIG_BOOTCOMMAND "mmc init; sleep 1; " \ ++ "ext2load mmc 0 0x20000000 uImage; " \ ++ "source 0x20000000" ++#define CONFIG_BOOTARGS "mem=64M console=ttyS0,115200 " \ ++ "root=/dev/mmcblk0p1 rootwait" ++ ++#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/target/linux/at91/image/u-boot/patches/200-clock.patch b/target/linux/at91/image/u-boot/patches/200-clock.patch new file mode 100644 index 000000000..fbfb6415e --- /dev/null +++ b/target/linux/at91/image/u-boot/patches/200-clock.patch @@ -0,0 +1,24 @@ +The function get_mci_clk_rate is used inside atmel_mci driver +but never defined. Fix this typo. + +Signed-off-by: Claudio Mignanti <c.mignanti@gmail.com> +--- + drivers/mmc/atmel_mci.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/drivers/mmc/atmel_mci.c b/drivers/mmc/atmel_mci.c +index 3946ffe..628aac9 100644 +--- a/drivers/mmc/atmel_mci.c ++++ b/drivers/mmc/atmel_mci.c +@@ -67,7 +67,7 @@ static void mci_set_mode(unsigned long hz, unsigned long blklen) + unsigned long bus_hz; + unsigned long clkdiv; + +- bus_hz = get_mci_clk_rate(); ++ bus_hz = get_mck_clk_rate(); + clkdiv = (bus_hz / hz) / 2 - 1; + + pr_debug("mmc: setting clock %lu Hz, block size %lu\n", +-- +1.7.0.4 + diff --git a/target/linux/at91/image/u-boot/ubclient/Makefile b/target/linux/at91/image/u-boot/ubclient/Makefile new file mode 100644 index 000000000..f8ff67cd1 --- /dev/null +++ b/target/linux/at91/image/u-boot/ubclient/Makefile @@ -0,0 +1,15 @@ +# + +all: ubpar + +crc32.c: + ln -s ../lib_generic/crc32.c ./ + +%.o: %.c + $(CC) -I ../include $(CFLAGS) $(EXTRA_FLAGS) -DLAN_IP=$(LAN_IP) -DLAN_SERVERIP=$(LAN_SERVERIP) -c -o $@ $^ + +ubpar: ubpar.o crc32.o + $(CC) -o $@ $^ + +clean: + rm -f *.o ubpar diff --git a/target/linux/at91/image/u-boot/ubclient/ubpar.c b/target/linux/at91/image/u-boot/ubclient/ubpar.c new file mode 100644 index 000000000..edc5b2cdb --- /dev/null +++ b/target/linux/at91/image/u-boot/ubclient/ubpar.c @@ -0,0 +1,135 @@ +/* + * ubparams.c + * + * Generate a u-boot parameter block with correct crc + * + * (C) 1007 Guthrie Consulting + * hamish@prodigi.ch + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#ifndef __ASSEMBLY__ +#define __ASSEMBLY__ +#endif +#define __ASM_STUB_PROCESSOR_H__ +#include <config.h> +#undef __ASSEMBLY__ +#include <environment.h> + +#define XMK_STR(x) #x +#define MK_STR(x) XMK_STR(x) + +extern unsigned long crc32 (unsigned long, const unsigned char *, unsigned int); + +#if !defined(ENV_CRC) +#define ENV_CRC ~0 +#endif + +#ifdef LAN_IP + #warning LAN_IP +#else + #warning LAN_IP NOT DEFINED +#endif +#ifdef LAN_SERVERIP + #warning LAN_SERVERIP +#else + #warning LAN_SERVERIP NOT DEFINED +#endif + +static char *environment[] = { + "bootdelay=3\0" + "baudrate=115200\0" + "stdin=serial\0" + "stdout=serial\0" + "stderr=serial\0" + "fbargs=setenv bootargs root=/dev/mtdblock3 ro console=/dev/ttyS0,115200,mem=32M\0" + "rdba=setenv bootargs root=/dev/ram rw initrd=0x21200000,6000000 ramdisk_size=20000 console=/dev/ttyS0,115200,mem=32M\0" + "rdram=run rdba; tftp 21000000 uImage; tftp 21200000 root.squashfs; bootm 21000000\0" + "flash=run fbargs; bootm 0xc0042000\0" + "bootargs=setenv bootargs root=/dev/mtdblock3 ro console=/dev/ttyS0,115200,mem=32M\0" + "bootcmd=bootm 0xc0042000\0" + "ipaddr=" MK_STR(LAN_IP) "\0" + "serverip=" MK_STR(LAN_SERVERIP) "\0" + "\0" + }; + +int main(int argc, char *argv[]) { + env_t *envptr; + char *src, *srcptr; + char *dataptr; + FILE *params; + int argfail = 1; + char newmac[30]; + char newser[30]; + int paramlen = 0; + int progmac = 0; + int progser = 0; + + if (argc < 3) { + printf ("Invalid arguments\n"); + return 1; + } + + switch (argc) { + case 5: + if (strcmp(argv[3], "--serial") == 0) { + argfail = 0; + sprintf(newser, "serial#=%s", argv[4]); + progser = 1; + } + case 3: + if (strcmp(argv[1], "--mac") == 0) { + argfail = 0; + sprintf(newmac, "ethaddr=%s", argv[2]); + progmac = 1; + } + else + argfail = 1; + } + + if (argfail) { + printf("Invalid arguments\n"); + return 1; + } + + + src = srcptr = *environment; + envptr = (env_t *)malloc(CFG_ENV_SIZE); + dataptr = (char *)envptr + ENV_HEADER_SIZE; + + while(*srcptr) { + //printf("%d, %s\n", strlen(srcptr), srcptr); + paramlen += strlen(srcptr) + 1; + srcptr += strlen(srcptr) + 1; + } + + printf("Make u-boot params\n"); + printf("Params size is %d\n", CFG_ENV_SIZE); + + memset(envptr, 0, CFG_ENV_SIZE); + memcpy(dataptr, src, paramlen); + dataptr += paramlen; + + if (progmac) { + memcpy(dataptr, newmac, strlen(newmac)); + dataptr += strlen(newmac) + 1; + } + + if (progser) { + memcpy(dataptr, newser, strlen(newser)); + dataptr += strlen(newser) + 1; + } + + envptr->crc = crc32(0, envptr->data, ENV_SIZE); + + params = fopen("/dev/mtd1", "w"); + fwrite(envptr, CFG_ENV_SIZE, 1, params); + fclose(params); + + free(envptr); + return 0; +} |