On 5/3/2010 6:07 AM, Tom Rix wrote: > Vipin KUMAR wrote: >> SPEAr1300 SoC support contains basic spear1300 support along with the >> usage of following drivers >> - serial driver(UART) >> - i2c driver >> - smi driver >> - nand driver(FSMC) >> - usbd driver >> >> Signed-off-by: Vipin Kumar <vipin.ku...@st.com> >> --- >> Makefile | 6 + > > Need MAINTAINERS MAKEALL > OK. Would be done in patch v3
>> arch/arm/include/asm/arch-spear13xx/hardware.h | 8 +- >> board/spear/common/Makefile | 10 +- >> board/spear/spear1300/Makefile | 51 ++++++ >> board/spear/spear1300/config.mk | 28 ++++ >> board/spear/spear1300/spear1300.c | 86 ++++++++++ >> board/spear/spear1300/spr_lowlevel_init.S | 38 +++++ >> include/configs/spear13xx.h | 199 >> ++++++++++++++++++++++++ >> 8 files changed, 420 insertions(+), 6 deletions(-) >> create mode 100644 board/spear/spear1300/Makefile >> create mode 100644 board/spear/spear1300/config.mk >> create mode 100644 board/spear/spear1300/spear1300.c >> create mode 100644 board/spear/spear1300/spr_lowlevel_init.S >> create mode 100644 include/configs/spear13xx.h >> >> diff --git a/Makefile b/Makefile >> index 7bfdfd3..0b6a151 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -3041,6 +3041,12 @@ spear320_config : unconfig >> spear600_config : unconfig >> @$(MKCONFIG) -n $@ -t $(@:_config=) spear6xx arm arm926ejs >> $(@:_config=) spear spear >> >> +spear1300_config \ >> +spear1300_nand_config \ >> +spear1300_usbtty_config \ >> +spear1300_usbtty_nand_config : unconfig >> + @$(MKCONFIG) -n $@ -t $(@:_config=) spear13xx arm arm_cortexa8 >> spear1300 spear spear13xx >> + >> suen3_config: unconfig >> @$(MKCONFIG) $(@:_config=) arm arm926ejs km_arm keymile kirkwood >> >> diff --git a/arch/arm/include/asm/arch-spear13xx/hardware.h >> b/arch/arm/include/asm/arch-spear13xx/hardware.h >> index 384260a..7a1cedb 100644 >> --- a/arch/arm/include/asm/arch-spear13xx/hardware.h >> +++ b/arch/arm/include/asm/arch-spear13xx/hardware.h >> @@ -24,10 +24,10 @@ >> #ifndef _ASM_ARCH_HARDWARE_H >> #define _ASM_ARCH_HARDWARE_H >> >> -#define CONFIG_SYS_USBD_BASE (0xE1100000) >> -#define CONFIG_SYS_PLUG_BASE (0xE1200000) >> -#define CONFIG_SYS_FIFO_BASE (0xE1000800) >> -#define CONFIG_SYS_SMI_BASE (0xFC000000) >> +#define CONFIG_SYS_USBD_BASE (0xE3800000) >> +#define CONFIG_SYS_PLUG_BASE (0xE2800000) >> +#define CONFIG_SYS_FIFO_BASE (0xE3000800) >> +#define CONFIG_SYS_SMI_BASE (0xEA000000) >> #define CONFIG_SPEAR_TIMERBASE (0xE0380000) >> #define CONFIG_SPEAR_MISCBASE (0xE0700000) >> #define CONFIG_SYS_I2C_BASE (0xE0280000) >> diff --git a/board/spear/common/Makefile b/board/spear/common/Makefile >> index 4f8959f..1ae4fd4 100644 >> --- a/board/spear/common/Makefile >> +++ b/board/spear/common/Makefile >> @@ -29,8 +29,14 @@ endif >> >> LIB = $(obj)lib$(VENDOR).a >> >> -COBJS := spr_misc.o >> -SOBJS := spr_lowlevel_init.o >> +COBJS-$(CONFIG_SPEAR3XX) += spr_misc.o >> +COBJS-$(CONFIG_SPEAR600) += spr_misc.o >> + >> +SOBJS-$(CONFIG_SPEAR3XX) += spr_lowlevel_init.o >> +SOBJS-$(CONFIG_SPEAR600) += spr_lowlevel_init.o >> + >> +COBJS := $(COBJS-y) >> +SOBJS := $(SOBJS-y) >> >> SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >> OBJS := $(addprefix $(obj),$(COBJS)) >> diff --git a/board/spear/spear1300/Makefile >> b/board/spear/spear1300/Makefile >> new file mode 100644 >> index 0000000..fb66895 >> --- /dev/null >> +++ b/board/spear/spear1300/Makefile >> @@ -0,0 +1,51 @@ >> +# >> +# (C) Copyright 2000-2004 >> +# Wolfgang Denk, DENX Software Engineering, w...@denx.de. >> +# >> +# 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 := spear1300.o >> +SOBJS := spr_lowlevel_init.o >> + >> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >> +OBJS := $(addprefix $(obj),$(COBJS)) >> +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/spear/spear1300/config.mk >> b/board/spear/spear1300/config.mk >> new file mode 100644 >> index 0000000..0bbb40f >> --- /dev/null >> +++ b/board/spear/spear1300/config.mk >> @@ -0,0 +1,28 @@ >> +# >> +# (C) Copyright 2009 >> +# Vipin Kumar, ST Microelectronics <vipin.ku...@st.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 >> +# >> + >> +######################################################################### >> >> + >> +TEXT_BASE = 0x00700000 >> + >> +ALL += $(obj)u-boot.img >> diff --git a/board/spear/spear1300/spear1300.c >> b/board/spear/spear1300/spear1300.c >> new file mode 100644 >> index 0000000..89ddc9c >> --- /dev/null >> +++ b/board/spear/spear1300/spear1300.c >> @@ -0,0 +1,86 @@ >> +/* >> + * (C) Copyright 2009 >> + * Vipin Kumar, ST Micoelectronics, vipin.ku...@st.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 <netdev.h> >> +#include <nand.h> >> +#include <asm/io.h> >> +#include <linux/mtd/fsmc_nand.h> >> +#include <asm/arch/hardware.h> >> + >> +DECLARE_GLOBAL_DATA_PTR; >> + >> +int board_init(void) >> +{ >> + gd->bd->bi_arch_number = MACH_TYPE_SPEAR1300; >> + gd->bd->bi_boot_params = CONFIG_BOOT_PARAMS_ADDR; >> + >> + return 0; >> +} >> + >> +int dram_init(void) >> +{ >> + gd->bd->bi_dram[0].start = PHYS_SDRAM_1; >> + gd->bd->bi_dram[0].size = get_ram_size(PHYS_SDRAM_1, >> + PHYS_SDRAM_1_MAXSIZE); >> + >> + return 0; >> +} >> + >> +int misc_init_r(void) >> +{ >> + setenv("verify", "n"); >> + >> +#if defined(CONFIG_SPEAR_USBTTY) >> + setenv("stdin", "usbtty"); >> + setenv("stdout", "usbtty"); >> + setenv("stderr", "usbtty"); >> +#endif >> + return 0; >> +} >> + >> +/* >> + * board_nand_init - Board specific NAND initialization >> + * @nand: mtd private chip structure >> + * >> + * Called by nand_init_chip to initialize the board specific functions >> + */ >> + >> +int board_nand_init(struct nand_chip *nand) >> +{ >> +#if defined(CONFIG_NAND_FSMC) >> + return fsmc_nand_init(nand); >> +#endif > > Broken if CONFIG_NAND_FSMC is not set. > OK. Adding a return -1 in case CONFIG_NAND_FSMC is not defined >> +} >> + >> +#if defined(CONFIG_CMD_NET) >> +int board_eth_init(bd_t *bis) >> +{ >> + /* >> + * Board specific ethernet initialization comes here. eg. gmac clock >> + * configuration etc >> + */ >> + >> + return designware_initialize(0, CONFIG_SPEAR_ETHBASE); >> +} >> +#endif >> diff --git a/board/spear/spear1300/spr_lowlevel_init.S >> b/board/spear/spear1300/spr_lowlevel_init.S >> new file mode 100644 >> index 0000000..ba93922 >> --- /dev/null >> +++ b/board/spear/spear1300/spr_lowlevel_init.S >> @@ -0,0 +1,38 @@ >> +/* >> + * (C) Copyright 2006 >> + * Vipin Kumar, ST Micoelectronics, vipin.ku...@st.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 <config.h> >> + >> +/* >> + * platform specific initializations are already done in Xloader >> + * Initializations already done include >> + * DDR, PLLs, IP's clock enable and reset release etc >> + */ >> +.globl lowlevel_init >> +lowlevel_init: >> + /* By default, U-Boot switches CPU to low-vector */ >> + /* Revert this as we work in high vector even in U-Boot */ >> + mrc p15, 0, r0, c1, c0, 0 >> + orr r0, r0, #0x00002000 >> + mcr p15, 0, r0, c1, c0, 0 >> + mov pc, lr >> diff --git a/include/configs/spear13xx.h b/include/configs/spear13xx.h >> new file mode 100644 >> index 0000000..3880e0a >> --- /dev/null >> +++ b/include/configs/spear13xx.h >> @@ -0,0 +1,199 @@ >> +/* >> + * (C) Copyright 2009 >> + * Vipin Kumar, STMicroelectronics, <vipin.ku...@st.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 >> + */ >> + >> +#ifndef __CONFIG_H >> +#define __CONFIG_H >> + >> +#if defined(CONFIG_MK_spear1300) >> +#define CONFIG_SPEAR13XX 1 >> +#define CONFIG_SPEAR1300 1 >> +#endif >> + >> +#if defined(CONFIG_MK_usbtty) >> +#define CONFIG_SPEAR_USBTTY 1 >> +#endif >> + >> +#if defined(CONFIG_MK_nand) >> +#define CONFIG_ENV_IS_IN_NAND 1 >> +#else >> +#define CONFIG_ENV_IS_IN_FLASH 1 >> +#endif >> + >> +/* Ethernet configuration */ >> +#define CONFIG_MII >> +#define CONFIG_DESIGNWARE_ETH >> +#define CONFIG_NET_MULTI >> +#define CONFIG_DW_ALTDESCRIPTOR 1 >> +#define CONFIG_PHY_RESET_DELAY (10000) /* in usec */ >> + >> +/* USBD driver configuration */ >> +#define CONFIG_DW_UDC >> +#define CONFIG_USB_DEVICE >> +#define CONFIG_USB_TTY >> + >> +#define CONFIG_USBD_PRODUCT_NAME "SPEAr SoC" >> +#define CONFIG_USBD_MANUFACTURER "ST Microelectronics" >> + >> +#define CONFIG_EXTRA_ENV_USBTTY "usbtty=cdc_acm\0" > > Should be conditional on CONFIG_SPEAR_USBTTY > Similar changes for spear3xx and spear6xxx > CONFIG_SPEAR_USBTTY is a special case where tty over usb terminal is used for downloading and flashing images. usbtty environment variable should normally also be set as cdc_acm to make sure that we can switch to tty over usb terminal directly from uboot prompt by simply running setenv stdout usbtty\; setenv stdin usbtty So, I am not making it conditional to CONFIG_EXTRA_ENV_USBTTY >> + >> +/* Timer, HZ specific defines */ >> +#define CONFIG_SYS_HZ (1000) >> + >> +/* Flash configuration */ >> +#define CONFIG_ST_SMI 1 >> +#define CONFIG_SYS_MAX_FLASH_BANKS 2 >> +#define CONFIG_SYS_FLASH_BASE (0xE6000000) >> +#define CONFIG_SYS_CS1_FLASH_BASE (0xE7000000) >> +#define CONFIG_SYS_FLASH_BANK_SIZE (0x01000000) >> +#define CONFIG_SYS_FLASH_ADDR_BASE {CONFIG_SYS_FLASH_BASE, \ >> + CONFIG_SYS_CS1_FLASH_BASE} >> +#define CONFIG_SYS_MAX_FLASH_SECT 128 >> + >> +#define CONFIG_SYS_FLASH_EMPTY_INFO 1 >> +#define CONFIG_SYS_FLASH_ERASE_TOUT (3 * CONFIG_SYS_HZ) >> +#define CONFIG_SYS_FLASH_WRITE_TOUT (3 * CONFIG_SYS_HZ) >> + >> +/* >> + * Serial Configuration (PL011) >> + */ >> +#define CONFIG_PL011_SERIAL >> +#define CONFIG_SYS_SERIAL0 0xE0000000 >> +#define CONFIG_PL011_CLOCK (48 * 1000 * 1000) >> +#define CONFIG_CONS_INDEX 0 >> +#define CONFIG_BAUDRATE 115200 >> +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, \ >> + 57600, 115200 } >> + >> +#define CONFIG_SYS_LOADS_BAUD_CHANGE >> +#define CONFIG_PL01x_PORTS {(void *)CONFIG_SYS_SERIAL0} >> + >> +/* >> + * NAND FLASH Configuration >> + */ >> +#define CONFIG_NAND_FSMC 1 >> +#define CONFIG_SYS_FSMC_NAND_LP 1 >> +#define CONFIG_SYS_FSMC_NAND_8BIT 1 >> +#define CONFIG_SYS_MAX_NAND_DEVICE 1 >> +#define CONFIG_MTD_NAND_VERIFY_WRITE 1 >> +#define CONFIG_SYS_NAND_BASE (0xA0000000) >> + >> +/* >> + * Command support defines >> + */ >> +#define CONFIG_CMD_NAND >> +#define CONFIG_CMD_MEMORY >> +#define CONFIG_CMD_RUN >> +#define CONFIG_CMD_NET >> +#define CONFIG_CMD_MII >> +#define CONFIG_CMD_PING >> +#define CONFIG_CMD_DHCP >> + >> +/* This must be included AFTER the definition of CONFIG_COMMANDS (if >> any) */ >> +#include <config_cmd_default.h> >> + >> +/* >> + * Default Environment Varible definitions >> + */ >> +#if defined(CONFIG_SPEAR_USBTTY) >> +#define CONFIG_BOOTDELAY -1 > > Add comment that this disables autoboot > OK. Would be done in patch v3 > Tom > > >> +#else >> +#define CONFIG_BOOTDELAY 1 >> +#endif >> + >> +/* >> + * Environment placing >> + */ >> +#if defined(CONFIG_ENV_IS_IN_FLASH) >> +/* >> + * Environment is in serial NOR flash >> + */ >> +#define CONFIG_SYS_MONITOR_LEN 0x00040000 >> +#define CONFIG_ENV_SECT_SIZE 0x00010000 >> +#define CONFIG_FSMTDBLK "/dev/mtdblock8 " >> + >> +#define CONFIG_BOOTCOMMAND "bootm 0xe6050000" >> + >> +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE >> +#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + \ >> + CONFIG_SYS_MONITOR_LEN) >> +#elif defined(CONFIG_ENV_IS_IN_NAND) >> +/* >> + * Environment is in NAND >> + */ >> + >> +#define CONFIG_ENV_OFFSET 0x60000 >> +#define CONFIG_ENV_RANGE 0x10000 >> +#define CONFIG_FSMTDBLK "/dev/mtdblock12 " >> + >> +#define CONFIG_BOOTCOMMAND "nand read.jffs2 0x1600000 " \ >> + "0x80000 0x4C0000; " \ >> + "bootm 0x1600000" >> +#endif >> + >> +#define CONFIG_BOOTARGS_NFS "root=/dev/nfs ip=dhcp " \ >> + "console=ttyAMA0 init=/bin/sh" >> +#define CONFIG_BOOTARGS "console=ttyAMA0 mem=128M " \ >> + "root="CONFIG_FSMTDBLK \ >> + "rootfstype=jffs2" >> + >> +#define CONFIG_ENV_SIZE 0x02000 >> + >> +/* Miscellaneous configurable options */ >> +#define CONFIG_ARCH_CPU_INIT 1 >> +#define CONFIG_DISPLAY_CPUINFO 1 >> + >> +#define CONFIG_BOOT_PARAMS_ADDR 0x00000100 >> +#define CONFIG_CMDLINE_TAG 1 >> +#define CONFIG_SETUP_MEMORY_TAGS 1 >> +#define CONFIG_MISC_INIT_R 1 >> +#define CONFIG_ZERO_BOOTDELAY_CHECK 1 >> +#define CONFIG_AUTOBOOT_KEYED 1 >> +#define CONFIG_AUTOBOOT_STOP_STR " " >> +#define CONFIG_AUTOBOOT_PROMPT \ >> + "Hit SPACE in %d seconds to stop autoboot.\n", bootdelay >> + >> +#define CONFIG_SYS_MEMTEST_START 0x00800000 >> +#define CONFIG_SYS_MEMTEST_END 0x04000000 >> +#define CONFIG_SYS_MALLOC_LEN (1024*1024) >> +#define CONFIG_SYS_GBL_DATA_SIZE 128 >> +#define CONFIG_IDENT_STRING "-SPEAr" >> +#define CONFIG_SYS_LONGHELP >> +#define CONFIG_SYS_PROMPT "u-boot> " >> +#define CONFIG_CMDLINE_EDITING >> +#define CONFIG_SYS_CBSIZE 256 >> +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ >> + sizeof(CONFIG_SYS_PROMPT) + 16) >> +#define CONFIG_SYS_MAXARGS 16 >> +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE >> +#define CONFIG_SYS_LOAD_ADDR 0x00800000 >> +#define CONFIG_SYS_CONSOLE_INFO_QUIET 1 >> +#define CONFIG_SYS_64BIT_VSPRINTF 1 >> + >> +#define CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_USBTTY >> + >> +/* Physical Memory Map */ >> +#define CONFIG_NR_DRAM_BANKS 1 >> +#define PHYS_SDRAM_1 0x00000000 >> +#define PHYS_SDRAM_1_MAXSIZE 0x40000000 >> + >> +#endif > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot