On Wed, Oct 28, 2009 at 02:41:54PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote: > Here is the page on Atmel website: > http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4057 > > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> > Cc: Nicolas Ferre <nicolas.ferre@xxxxxxxxx> > Cc: Patrice VILCHEZ <patrice.vilchez@xxxxxxxxx> > Cc: Sedji Gaouaou <sedji.gaouaou@xxxxxxxxx> Ok, applied. Sascha > --- > arch/arm/Kconfig | 8 + > arch/arm/Makefile | 1 + > arch/arm/configs/at91sam9263ek_defconfig | 230 +++++++++++++++++++++++ > board/at91sam9263ek/Makefile | 1 + > board/at91sam9263ek/config.h | 110 +++++++++++ > board/at91sam9263ek/env/bin/_update | 36 ++++ > board/at91sam9263ek/env/bin/boot | 47 +++++ > board/at91sam9263ek/env/bin/hush_hack | 1 + > board/at91sam9263ek/env/bin/init | 38 ++++ > board/at91sam9263ek/env/bin/update_kernel | 15 ++ > board/at91sam9263ek/env/bin/update_root | 16 ++ > board/at91sam9263ek/env/bin/update_uboot_xmodem | 26 +++ > board/at91sam9263ek/env/config | 28 +++ > board/at91sam9263ek/init.c | 144 ++++++++++++++ > 14 files changed, 701 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/configs/at91sam9263ek_defconfig > create mode 100644 board/at91sam9263ek/Makefile > create mode 100644 board/at91sam9263ek/config.h > create mode 100644 board/at91sam9263ek/env/bin/_update > create mode 100644 board/at91sam9263ek/env/bin/boot > create mode 100644 board/at91sam9263ek/env/bin/hush_hack > create mode 100644 board/at91sam9263ek/env/bin/init > create mode 100644 board/at91sam9263ek/env/bin/update_kernel > create mode 100644 board/at91sam9263ek/env/bin/update_root > create mode 100644 board/at91sam9263ek/env/bin/update_uboot_xmodem > create mode 100644 board/at91sam9263ek/env/config > create mode 100644 board/at91sam9263ek/init.c > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index e859b88..9cfcb7c 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -12,6 +12,7 @@ config ARCH_TEXT_BASE > default 0xa0000000 if MACH_IMX27ADS > default 0x87f00000 if MACH_PCM037 > default 0x23f00000 if MACH_AT91SAM9260_EK > + default 0x23f00000 if MACH_AT91SAM9263_EK > default 0x23f00000 if MACH_PM9263 > default 0x87f00000 if MACH_FREESCALE_MX35_3STACK > default 0x31fc0000 if MACH_A9M2410 > @@ -30,6 +31,7 @@ config BOARDINFO > default "Freescale i.MX27 ADS" if MACH_IMX27ADS > default "Phytec phyCORE-i.MX31" if MACH_PCM037 > default "Atmel 91SAM9260-EK" if MACH_AT91SAM9260_EK > + default "Atmel at91sam9263-ek" if MACH_AT91SAM9263_EK > default "Digi A9M2440" if MACH_A9M2440 > default "Ronetix PM9263" if MACH_PM9263 > default "Freescale MX35 3Stack" if MACH_FREESCALE_MX35_3STACK > @@ -208,6 +210,12 @@ config MACH_AT91SAM9260_EK > help > Say y here if you are using Atmel's AT91SAM9260-EK Evaluation board > > +config MACH_AT91SAM9263_EK > + bool "Atmel AT91SAM9263-EK" > + select ARCH_AT91SAM9263 > + help > + Say y here if you are using Atmel's AT91SAM9263-EK Evaluation board > + > config MACH_PM9263 > bool "Ronetix PM9263" > select ARCH_AT91SAM9263 > diff --git a/arch/arm/Makefile b/arch/arm/Makefile > index 5105d63..7248e08 100644 > --- a/arch/arm/Makefile > +++ b/arch/arm/Makefile > @@ -18,6 +18,7 @@ board-$(CONFIG_MACH_NXDB500) := netx > board-$(CONFIG_MACH_PCM037) := pcm037 > board-$(CONFIG_MACH_OMAP) := omap > board-$(CONFIG_MACH_AT91SAM9260_EK):= at91sam9260ek > +board-$(CONFIG_MACH_AT91SAM9263_EK):= at91sam9263ek > board-$(CONFIG_MACH_PM9263) := pm9263 > board-$(CONFIG_MACH_FREESCALE_MX35_3STACK) := freescale-mx35-3-stack > board-$(CONFIG_MACH_FREESCALE_MX25_3STACK) := freescale-mx25-3-stack > diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig > new file mode 100644 > index 0000000..90fcd32 > --- /dev/null > +++ b/arch/arm/configs/at91sam9263ek_defconfig > @@ -0,0 +1,230 @@ > +# > +# Automatically generated make config: don't edit > +# U-Boot version: 2.0.0-rc10 > +# Sat Sep 26 18:45:28 2009 > +# > +CONFIG_ARCH_TEXT_BASE=0x23f00000 > +CONFIG_BOARDINFO="Atmel at91sam9263-ek" > +# CONFIG_BOARD_LINKER_SCRIPT is not set > +CONFIG_GENERIC_LINKER_SCRIPT=y > +CONFIG_ARM=y > +CONFIG_ARM926EJS=y > +CONFIG_ARCH_AT91=y > +CONFIG_ARCH_AT91SAM9263=y > +# CONFIG_MACH_MX1ADS is not set > +# CONFIG_MACH_SCB9328 is not set > +# CONFIG_MACH_PCM038 is not set > +# CONFIG_MACH_IMX21ADS is not set > +# CONFIG_MACH_IMX27ADS is not set > +# CONFIG_MACH_PCM043 is not set > +# CONFIG_MACH_FREESCALE_MX35_3STACK is not set > +# CONFIG_MACH_FREESCALE_MX25_3STACK is not set > +# CONFIG_MACH_ECO920 is not set > +# CONFIG_MACH_NXDB500 is not set > +# CONFIG_MACH_PCM037 is not set > +# CONFIG_MACH_OMAP is not set > +# CONFIG_MACH_AT91SAM9260_EK is not set > +CONFIG_MACH_AT91SAM9263_EK=y > +# CONFIG_MACH_PM9263 is not set > +# CONFIG_MACH_A9M2410 is not set > +# CONFIG_MACH_A9M2440 is not set > +# CONFIG_MACH_PCA100 is not set > +# CONFIG_MACH_MMCCPU is not set > +# CONFIG_MACH_EUKREA_CPUIMX27 is not set > + > +# > +# Arm specific settings > +# > +CONFIG_CMD_ARM_CPUINFO=y > +CONFIG_CMDLINE_TAG=y > +CONFIG_SETUP_MEMORY_TAGS=y > +# CONFIG_INITRD_TAG is not set > +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y > +CONFIG_GREGORIAN_CALENDER=y > +CONFIG_HAS_KALLSYMS=y > +CONFIG_HAS_MODULES=y > +CONFIG_CMD_MEMORY=y > +CONFIG_ENV_HANDLING=y > + > +# > +# General Settings > +# > +CONFIG_LOCALVERSION_AUTO=y > + > +# > +# memory layout > +# > +CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y > +CONFIG_TEXT_BASE=0x23f00000 > +CONFIG_HAVE_CONFIGURABLE_MEMORY_LAYOUT=y > +CONFIG_MEMORY_LAYOUT_DEFAULT=y > +# CONFIG_MEMORY_LAYOUT_FIXED is not set > +CONFIG_STACK_SIZE=0x8000 > +CONFIG_MALLOC_SIZE=0x400000 > +# CONFIG_BROKEN is not set > +# CONFIG_EXPERIMENTAL is not set > +CONFIG_MACH_HAS_LOWLEVEL_INIT=y > +CONFIG_MACH_DO_LOWLEVEL_INIT=y > +CONFIG_PROMPT="9263-EK:" > +CONFIG_BAUDRATE=115200 > +CONFIG_LONGHELP=y > +CONFIG_CBSIZE=1024 > +CONFIG_MAXARGS=16 > +CONFIG_SHELL_HUSH=y > +# CONFIG_SHELL_SIMPLE is not set > +CONFIG_GLOB=y > +CONFIG_PROMPT_HUSH_PS2="> " > +CONFIG_CMDLINE_EDITING=y > +CONFIG_AUTO_COMPLETE=y > +CONFIG_DYNAMIC_CRC_TABLE=y > +CONFIG_ERRNO_MESSAGES=y > +CONFIG_TIMESTAMP=y > +CONFIG_CONSOLE_FULL=y > +CONFIG_CONSOLE_ACTIVATE_FIRST=y > +# CONFIG_OF_FLAT_TREE is not set > +CONFIG_PARTITION=y > +CONFIG_DEFAULT_ENVIRONMENT=y > +CONFIG_DEFAULT_ENVIRONMENT_PATH="board/at91sam9263ek/env" > + > +# > +# Debugging > +# > +# CONFIG_DEBUG_INFO is not set > +# CONFIG_ENABLE_FLASH_NOISE is not set > +# CONFIG_ENABLE_PARTITION_NOISE is not set > +# CONFIG_ENABLE_DEVICE_NOISE is not set > + > +# > +# Commands > +# > + > +# > +# scripting > +# > +CONFIG_CMD_EDIT=y > +CONFIG_CMD_SLEEP=y > +CONFIG_CMD_SAVEENV=y > +CONFIG_CMD_LOADENV=y > +CONFIG_CMD_EXPORT=y > +CONFIG_CMD_PRINTENV=y > +CONFIG_CMD_READLINE=y > +CONFIG_CMD_TRUE=y > +CONFIG_CMD_FALSE=y > + > +# > +# file commands > +# > +CONFIG_CMD_LS=y > +CONFIG_CMD_RM=y > +CONFIG_CMD_CAT=y > +CONFIG_CMD_MKDIR=y > +CONFIG_CMD_RMDIR=y > +CONFIG_CMD_CP=y > +CONFIG_CMD_PWD=y > +CONFIG_CMD_CD=y > +CONFIG_CMD_MOUNT=y > +CONFIG_CMD_UMOUNT=y > + > +# > +# console > +# > +CONFIG_CMD_CLEAR=y > +CONFIG_CMD_ECHO=y > + > +# > +# memory > +# > +# CONFIG_CMD_LOADB is not set > +CONFIG_CMD_MEMINFO=y > +CONFIG_CMD_CRC=y > +CONFIG_CMD_MTEST=y > +# CONFIG_CMD_MTEST_ALTERNATIVE is not set > + > +# > +# flash > +# > +CONFIG_CMD_FLASH=y > + > +# > +# booting > +# > +CONFIG_CMD_BOOTM=y > +CONFIG_CMD_BOOTM_ZLIB=y > +CONFIG_CMD_BOOTM_BZLIB=y > +CONFIG_CMD_BOOTM_SHOW_TYPE=y > +CONFIG_CMD_BOOTZ=y > +CONFIG_CMD_BOOTU=y > +CONFIG_CMD_RESET=y > +CONFIG_CMD_GO=y > +CONFIG_CMD_TIMEOUT=y > +CONFIG_CMD_PARTITION=y > +CONFIG_CMD_TEST=y > +CONFIG_CMD_VERSION=y > +CONFIG_CMD_HELP=y > +CONFIG_CMD_DEVINFO=y > +CONFIG_NET=y > +CONFIG_NET_BOOTP=y > +CONFIG_NET_DHCP=y > +# CONFIG_NET_RARP is not set > +# CONFIG_NET_SNTP is not set > +CONFIG_NET_NFS=y > +CONFIG_NET_PING=y > +CONFIG_NET_TFTP=y > + > +# > +# Drivers > +# > + > +# > +# serial drivers > +# > +# CONFIG_DRIVER_SERIAL_NS16550 is not set > +CONFIG_DRIVER_SERIAL_ATMEL=y > +CONFIG_MIIPHY=y > + > +# > +# Network drivers > +# > +# CONFIG_DRIVER_NET_SMC911X is not set > +# CONFIG_DRIVER_NET_SMC91111 is not set > +CONFIG_DRIVER_NET_MACB=y > + > +# > +# SPI drivers > +# > +# CONFIG_SPI is not set > + > +# > +# flash drivers > +# > +CONFIG_DRIVER_CFI=y > +CONFIG_DRIVER_CFI_NEW=y > +CONFIG_DRIVER_CFI_INTEL=y > +CONFIG_DRIVER_CFI_AMD=y > +CONFIG_DRIVER_CFI_BANK_WIDTH_1=y > +CONFIG_DRIVER_CFI_BANK_WIDTH_2=y > +CONFIG_DRIVER_CFI_BANK_WIDTH_4=y > +# CONFIG_DRIVER_CFI_BANK_WIDTH_8 is not set > +CONFIG_CFI_BUFFER_WRITE=y > +CONFIG_NAND=y > +CONFIG_NAND_ATMEL=y > +# CONFIG_MTD_NAND_VERIFY_WRITE is not set > +# CONFIG_MTD_NAND_ECC_SMC is not set > +CONFIG_MTD_NAND_IDS=y > +# CONFIG_USB is not set > + > +# > +# Video drivers > +# > +# CONFIG_VIDEO is not set > + > +# > +# Filesystem support > +# > +# CONFIG_FS_CRAMFS is not set > +CONFIG_FS_RAMFS=y > +CONFIG_FS_DEVFS=y > +CONFIG_ZLIB=y > +CONFIG_BZLIB=y > +CONFIG_CRC32=y > +# CONFIG_GENERIC_FIND_NEXT_BIT is not set > diff --git a/board/at91sam9263ek/Makefile b/board/at91sam9263ek/Makefile > new file mode 100644 > index 0000000..eb072c0 > --- /dev/null > +++ b/board/at91sam9263ek/Makefile > @@ -0,0 +1 @@ > +obj-y += init.o > diff --git a/board/at91sam9263ek/config.h b/board/at91sam9263ek/config.h > new file mode 100644 > index 0000000..9cc8af2 > --- /dev/null > +++ b/board/at91sam9263ek/config.h > @@ -0,0 +1,110 @@ > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#define AT91_MASTER_CLOCK 100000000 /* peripheral = main / 2 */ > + > +#define MASTER_PLL_MUL 171 > +#define MASTER_PLL_DIV 14 > + > +/* clocks */ > +#define CONFIG_SYS_MOR_VAL \ > + (AT91_PMC_MOSCEN | \ > + (255 << 8)) /* Main Oscillator Start-up Time */ > +#define CONFIG_SYS_PLLAR_VAL \ > + (AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */ \ > + AT91_PMC_OUT | \ > + AT91_PMC_PLLCOUNT | /* PLL Counter */ \ > + (2 << 28) | /* PLL Clock Frequency Range */ \ > + ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV)) > + > +/* PCK/2 = MCK Master Clock from PLLA */ > +#define CONFIG_SYS_MCKR1_VAL \ > + (AT91_PMC_CSS_SLOW | \ > + AT91_PMC_PRES_1 | \ > + AT91SAM9_PMC_MDIV_2 | \ > + AT91_PMC_PDIV_1) > +/* PCK/2 = MCK Master Clock from PLLA */ > +#define CONFIG_SYS_MCKR2_VAL \ > + (AT91_PMC_CSS_PLLA | \ > + AT91_PMC_PRES_1 | \ > + AT91SAM9_PMC_MDIV_2 | \ > + AT91_PMC_PDIV_1) > + > +/* define PDC[31:16] as DATA[31:16] */ > +#define CONFIG_SYS_PIOD_PDR_VAL1 0xFFFF0000 > +/* no pull-up for D[31:16] */ > +#define CONFIG_SYS_PIOD_PPUDR_VAL 0xFFFF0000 > +/* EBI0_CSA, CS1 SDRAM, CS3 NAND Flash, 3.3V memories */ > +#define CONFIG_SYS_MATRIX_EBI0CSA_VAL \ > + (AT91_MATRIX_EBI0_DBPUC | AT91_MATRIX_EBI0_VDDIOMSEL_3_3V | \ > + AT91_MATRIX_EBI0_CS1A_SDRAMC) > + > +/* SDRAM */ > +/* SDRAMC_MR Mode register */ > +#define CONFIG_SYS_SDRC_MR_VAL1 0 > +/* SDRAMC_TR - Refresh Timer register */ > +#define CONFIG_SYS_SDRC_TR_VAL1 0x13C > +/* SDRAMC_CR - Configuration register*/ > +#define CONFIG_SYS_SDRC_CR_VAL \ > + (AT91_SDRAMC_NC_9 | \ > + AT91_SDRAMC_NR_13 | \ > + AT91_SDRAMC_NB_4 | \ > + AT91_SDRAMC_CAS_3 | \ > + AT91_SDRAMC_DBW_32 | \ > + (1 << 8) | /* Write Recovery Delay */ \ > + (7 << 12) | /* Row Cycle Delay */ \ > + (2 << 16) | /* Row Precharge Delay */ \ > + (2 << 20) | /* Row to Column Delay */ \ > + (5 << 24) | /* Active to Precharge Delay */ \ > + (1 << 28)) /* Exit Self Refresh to Active Delay */ > + > +/* Memory Device Register -> SDRAM */ > +#define CONFIG_SYS_SDRC_MDR_VAL AT91_SDRAMC_MD_SDRAM > +#define CONFIG_SYS_SDRC_MR_VAL2 AT91_SDRAMC_MODE_PRECHARGE > +#define CONFIG_SYS_SDRAM_VAL1 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRC_MR_VAL3 AT91_SDRAMC_MODE_REFRESH > +#define CONFIG_SYS_SDRAM_VAL2 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL3 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL4 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL5 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL6 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL7 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL8 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRAM_VAL9 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRC_MR_VAL4 AT91_SDRAMC_MODE_LMR > +#define CONFIG_SYS_SDRAM_VAL10 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRC_MR_VAL5 AT91_SDRAMC_MODE_NORMAL > +#define CONFIG_SYS_SDRAM_VAL11 0 /* SDRAM_BASE */ > +#define CONFIG_SYS_SDRC_TR_VAL2 1200 /* SDRAM_TR */ > +#define CONFIG_SYS_SDRAM_VAL12 0 /* SDRAM_BASE */ > + > +/* setup SMC0, CS0 (NOR Flash) - 16-bit, 15 WS */ > +#define CONFIG_SYS_SMC0_SETUP0_VAL \ > + (AT91_SMC_NWESETUP_(10) | AT91_SMC_NCS_WRSETUP_(10) | \ > + AT91_SMC_NRDSETUP_(10) | AT91_SMC_NCS_RDSETUP_(10)) > +#define CONFIG_SYS_SMC0_PULSE0_VAL \ > + (AT91_SMC_NWEPULSE_(11) | AT91_SMC_NCS_WRPULSE_(11) | \ > + AT91_SMC_NRDPULSE_(11) | AT91_SMC_NCS_RDPULSE_(11)) > +#define CONFIG_SYS_SMC0_CYCLE0_VAL \ > + (AT91_SMC_NWECYCLE_(22) | AT91_SMC_NRDCYCLE_(22)) > +#define CONFIG_SYS_SMC0_MODE0_VAL \ > + (AT91_SMC_READMODE | AT91_SMC_WRITEMODE | \ > + AT91_SMC_DBW_16 | \ > + AT91_SMC_TDFMODE | \ > + AT91_SMC_TDF_(6)) > + > +/* user reset enable */ > +#define CONFIG_SYS_RSTC_RMR_VAL \ > + (AT91_RSTC_KEY | \ > + AT91_RSTC_PROCRST | \ > + AT91_RSTC_RSTTYP_WAKEUP | \ > + AT91_RSTC_RSTTYP_WATCHDOG) > + > +/* Disable Watchdog */ > +#define CONFIG_SYS_WDTC_WDMR_VAL \ > + (AT91_WDT_WDIDLEHLT | AT91_WDT_WDDBGHLT | \ > + AT91_WDT_WDV | \ > + AT91_WDT_WDDIS | \ > + AT91_WDT_WDD) > + > +#endif /* __CONFIG_H */ > diff --git a/board/at91sam9263ek/env/bin/_update b/board/at91sam9263ek/env/bin/_update > new file mode 100644 > index 0000000..fb7cbe8 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/_update > @@ -0,0 +1,36 @@ > +#!/bin/sh > + > +if [ -z "$part" -o -z "$image" ]; then > + echo "define \$part and \$image" > + exit 1 > +fi > + > +if [ \! -e "$part" ]; then > + echo "Partition $part does not exist" > + exit 1 > +fi > + > +if [ $# = 1 ]; then > + image=$1 > +fi > + > +if [ x$ip = xdhcp ]; then > + dhcp > +fi > + > +ping $eth0.serverip > +if [ $? -ne 0 ] ; then > + echo "update aborted" > + exit 1 > +fi > + > +unprotect $part > + > +echo > +echo "erasing partition $part" > +erase $part > + > +echo > +echo "flashing $image to $part" > +echo > +tftp $image $part > diff --git a/board/at91sam9263ek/env/bin/boot b/board/at91sam9263ek/env/bin/boot > new file mode 100644 > index 0000000..533dea7 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/boot > @@ -0,0 +1,47 @@ > +#!/bin/sh > + > +. /env/config > + > +if [ x$1 = xnand ]; then > + root=nand > + kernel=nand > +fi > + > +if [ x$1 = xnet ]; then > + root=net > + kernel=net > +fi > + > +if [ x$1 = xnor ]; then > + root=nor > + kernel=nor > +fi > + > +if [ x$ip = xdhcp ]; then > + bootargs="$bootargs ip=dhcp" > +else > + bootargs="$bootargs ip=$eth0.ipaddr:$eth0.serverip:$eth0.gateway:$eth0.netmask:::" > +fi > + > +if [ x$root = xnand ]; then > + bootargs="$bootargs root=$rootpart_nand rootfstype=jffs2" > +elif [ x$root = xnor ]; then > + bootargs="$bootargs root=$rootpart_nor rootfstype=jffs2" > +else > + bootargs="$bootargs root=/dev/nfs nfsroot=$eth0.serverip:$nfsroot,v3,tcp" > +fi > + > +bootargs="$bootargs mtdparts=physmap-flash.0:$nor_parts" > + > +if [ $kernel = net ]; then > + if [ x$ip = xdhcp ]; then > + dhcp > + fi > + tftp $uimage uImage || exit 1 > + bootm uImage > +elif [ $kernel = nor ]; then > + bootm /dev/nor0.kernel > +else > + bootm /dev/nand0.kernel.bb > +fi > + > diff --git a/board/at91sam9263ek/env/bin/hush_hack b/board/at91sam9263ek/env/bin/hush_hack > new file mode 100644 > index 0000000..5fffa92 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/hush_hack > @@ -0,0 +1 @@ > +nand -a /dev/nand0.* > diff --git a/board/at91sam9263ek/env/bin/init b/board/at91sam9263ek/env/bin/init > new file mode 100644 > index 0000000..3b57482 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/init > @@ -0,0 +1,38 @@ > +#!/bin/sh > + > +PATH=/env/bin > +export PATH > + > +. /env/config > +if [ -e /dev/nor0 ]; then > + addpart /dev/nor0 $nor_parts > +fi > + > +if [ -e /dev/nand0 ]; then > + addpart /dev/nand0 $nand_parts > + > + # Uh, oh, hush first expands wildcards and then starts executing > + # commands. What a bug! > + source /env/bin/hush_hack > +fi > + > +if [ -z $eth0.ethaddr ]; then > + while [ -z $eth0.ethaddr ]; do > + readline "no MAC address set for eth0. please enter the one found on your board: " eth0.ethaddr > + done > + echo -a /env/config "eth0.ethaddr=$eth0.ethaddr" > +fi > + > +echo > +echo -n "Hit any key to stop autoboot: " > +timeout -a $autoboot_timeout > +if [ $? != 0 ]; then > + echo > + echo "type update_kernel nor [<imagename>] to update kernel into flash" > + echo "type update_root nor [<imagename>] to update rootfs into flash" > + echo "type update_uboot_xmodem nor to update uboot into flash" > + echo > + exit > +fi > + > +boot > diff --git a/board/at91sam9263ek/env/bin/update_kernel b/board/at91sam9263ek/env/bin/update_kernel > new file mode 100644 > index 0000000..05c822d > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/update_kernel > @@ -0,0 +1,15 @@ > +#!/bin/sh > + > +. /env/config > + > +image=$uimage > +if [ x$1 = xnand ]; then > + part=/dev/nand0.kernel.bb > +elif [ x$1 = xnor ]; then > + part=/dev/nor0.kernel > +else > + echo "usage: $0 nor|nand [imagename]" > + exit 1 > +fi > + > +. /env/bin/_update $2 > diff --git a/board/at91sam9263ek/env/bin/update_root b/board/at91sam9263ek/env/bin/update_root > new file mode 100644 > index 0000000..a751372 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/update_root > @@ -0,0 +1,16 @@ > +#!/bin/sh > + > +. /env/config > + > +image=$jffs2 > +if [ x$1 = xnand ]; then > + part=/dev/nand0.root.bb > +elif [ x$1 = xnor ]; then > + part=/dev/nor0.root > +else > + echo "usage: $0 nor|nand [imagename]" > + exit 1 > +fi > + > +. /env/bin/_update $2 > + > diff --git a/board/at91sam9263ek/env/bin/update_uboot_xmodem b/board/at91sam9263ek/env/bin/update_uboot_xmodem > new file mode 100644 > index 0000000..b4feb74 > --- /dev/null > +++ b/board/at91sam9263ek/env/bin/update_uboot_xmodem > @@ -0,0 +1,26 @@ > +#!/bin/sh > + > +. /env/config > + > +if [ x$1 = xnand ]; then > + part=/dev/nand0.uboot > +elif [ x$1 = xnor ]; then > + part=/dev/nor0.uboot > +else > + echo "usage: $0 nor|nand" > + exit 1 > +fi > + > +loadb -f uboot.bin -c > + > +unprotect $part > +echo > +echo "erasing partition $part" > +erase $part > + > +echo > +echo "flashing uboot.bin to $part" > +echo > +cp uboot.bin $part > +crc32 -f uboot.bin > +crc32 -f $part > diff --git a/board/at91sam9263ek/env/config b/board/at91sam9263ek/env/config > new file mode 100644 > index 0000000..5349bc3 > --- /dev/null > +++ b/board/at91sam9263ek/env/config > @@ -0,0 +1,28 @@ > +#!/bin/sh > + > +# can be either 'net', 'nor' or 'nand'' > +kernel=net > +root=net > + > +uimage=uImage > +jffs2=root.jffs2 > + > +autoboot_timeout=3 > + > +nfsroot="" > +bootargs="console=ttyS0,115200" > + > +nor_parts="256k(uboot)ro,64k(ubootenv),1536k(kernel),-(root)" > +rootpart_nor="/dev/mtdblock3" > + > +#nand_parts="256k(uboot)ro,64k(ubootenv),1536k(kernel),-(root)" > +#rootpart_nand="/dev/mtdblock7" > + > +# use 'dhcp' to do dhcp in uboot and in kernel > +ip=dhcp > + > +# or set your networking parameters here > +#eth0.ipaddr=a.b.c.d > +#eth0.netmask=a.b.c.d > +#eth0.gateway=a.b.c.d > +#eth0.serverip=192.168.23.1 > diff --git a/board/at91sam9263ek/init.c b/board/at91sam9263ek/init.c > new file mode 100644 > index 0000000..e5d7c20 > --- /dev/null > +++ b/board/at91sam9263ek/init.c > @@ -0,0 +1,144 @@ > +/* > + * Copyright (C) 2009 Jean-Christophe PLAGNIOL-VILLARD <plagnio@xxxxxxxxxxxx> > + * > + * Copyright (C) 2007 Sascha Hauer, Pengutronix > + * > + * 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 <net.h> > +#include <cfi_flash.h> > +#include <init.h> > +#include <environment.h> > +#include <asm/armlinux.h> > +#include <asm/mach-types.h> > +#include <partition.h> > +#include <fs.h> > +#include <fcntl.h> > +#include <asm/io.h> > +#include <asm/hardware.h> > +#include <nand.h> > +#include <linux/mtd/nand.h> > +#include <mach/at91_pmc.h> > +#include <mach/board.h> > +#include <mach/gpio.h> > +#include <mach/io.h> > +#include <mach/at91sam9_smc.h> > +#include <mach/sam9_smc.h> > + > +static struct atmel_nand_data nand_pdata = { > + .ale = 21, > + .cle = 22, > +/* .det_pin = ... not connected */ > + .ecc_base = (void __iomem *)(AT91_BASE_SYS + AT91_ECC0), > + .ecc_mode = NAND_ECC_HW, > + .rdy_pin = AT91_PIN_PA22, > + .enable_pin = AT91_PIN_PD15, > +#if defined(CONFIG_MTD_NAND_ATMEL_BUSWIDTH_16) > + .bus_width_16 = 1, > +#else > + .bus_width_16 = 0, > +#endif > +}; > + > +static struct sam9_smc_config ek_nand_smc_config = { > + .ncs_read_setup = 0, > + .nrd_setup = 1, > + .ncs_write_setup = 0, > + .nwe_setup = 1, > + > + .ncs_read_pulse = 3, > + .nrd_pulse = 3, > + .ncs_write_pulse = 3, > + .nwe_pulse = 3, > + > + .read_cycle = 5, > + .write_cycle = 5, > + > + .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE, > + .tdf_cycles = 2, > +}; > + > +static void ek_add_device_nand(void) > +{ > + /* setup bus-width (8 or 16) */ > + if (nand_pdata.bus_width_16) > + ek_nand_smc_config.mode |= AT91_SMC_DBW_16; > + else > + ek_nand_smc_config.mode |= AT91_SMC_DBW_8; > + > + /* configure chip-select 3 (NAND) */ > + sam9_smc_configure(3, &ek_nand_smc_config); > + > + at91_add_device_nand(&nand_pdata); > +} > + > +static struct device_d cfi_dev = { > + .name = "cfi_flash", > + .map_base = AT91_CHIPSELECT_0, > + .size = 8 * 1024 * 1024, > +}; > + > +static struct at91_ether_platform_data macb_pdata = { > + .flags = AT91SAM_ETHER_RMII, > + .phy_addr = 0, > +}; > + > +static int at91sam9263ek_devices_init(void) > +{ > + /* > + * PB27 enables the 50MHz oscillator for Ethernet PHY > + * 1 - enable > + * 0 - disable > + */ > + at91_set_gpio_output(AT91_PIN_PB27, 1); > + at91_set_gpio_value(AT91_PIN_PB27, 1); /* 1- enable, 0 - disable */ > + > + /* Enable clock */ > + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC); > + > + at91_add_device_sdram(64 * 1024 * 1024); > + ek_add_device_nand(); > + at91_add_device_eth(&macb_pdata); > + register_device(&cfi_dev); > + > +#if defined(CONFIG_DRIVER_CFI) || defined(CONFIG_DRIVER_CFI_OLD) > + devfs_add_partition("nor0", 0x00000, 0x40000, PARTITION_FIXED, "self"); > + devfs_add_partition("nor0", 0x40000, 0x20000, PARTITION_FIXED, "env0"); > +#elif defined(CONFIG_NAND_ATMEL) > + devfs_add_partition("nand0", 0x00000, 0x80000, PARTITION_FIXED, "self_raw"); > + dev_add_bb_dev("self_raw", "self0"); > + devfs_add_partition("nand0", 0x40000, 0x40000, PARTITION_FIXED, "env_raw"); > + dev_add_bb_dev("env_raw", "env0"); > +#endif > + > + armlinux_set_bootparams((void *)(AT91_CHIPSELECT_1 + 0x100)); > + armlinux_set_architecture(MACH_TYPE_AT91SAM9263EK); > + > + return 0; > +} > + > +device_initcall(at91sam9263ek_devices_init); > + > +static int at91sam9263ek_console_init(void) > +{ > + at91_register_uart(0, 0); > + return 0; > +} > + > +console_initcall(at91sam9263ek_console_init); > -- > 1.6.5 > > > _______________________________________________ > u-boot-v2 mailing list > u-boot-v2@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/u-boot-v2 > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ u-boot-v2 mailing list u-boot-v2@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/u-boot-v2