[U-Boot] [PATCH v2 3/9] SPEAr300 SoC support added

Vipin KUMAR
2010-01-07T11:56:24Z

Signed-off-by: Vipin <vipin.kumar@st.com>
---
MAKEALL | 1 +
Makefile | 1 +
board/spear/spear300/Makefile | 52 +++++++++++++++++++++++++++++++++++
board/spear/spear300/config.mk | 38 ++++++++++++++++++++++++++
board/spear/spear300/spear300.c | 57 +++++++++++++++++++++++++++++++++++++++
include/configs/spear.h | 26 +++++++++++++++--
6 files changed, 172 insertions(+), 3 deletions(-)
create mode 100755 board/spear/spear300/Makefile
create mode 100755 board/spear/spear300/config.mk
create mode 100755 board/spear/spear300/spear300.c

diff --git a/MAKEALL b/MAKEALL
index 8eb39e5..b39a77d 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -572,6 +572,7 @@ LIST_ARM9=" \
sheevaplug \
smdk2400 \
smdk2410 \
+ spear300 \
spear600 \
trab \
VCMA9 \
diff --git a/Makefile b/Makefile
index ebe1c1b..b547426 100644
--- a/Makefile
+++ b/Makefile
@@ -3056,6 +3056,7 @@ smdk2400_config : unconfig
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0

+spear300_config \
spear600_config : unconfig
@$(MKCONFIG) -n $@ -t $(@:_config=) spear arm arm926ejs $(@:_config=) spear spear

diff --git a/board/spear/spear300/Makefile b/board/spear/spear300/Makefile
new file mode 100755
index 0000000..c3fca2d
--- /dev/null
+++ b/board/spear/spear300/Makefile
@@ -0,0 +1,52 @@
+#
+# (C) Copyright 2000-2004
+# Wolfgang Denk, DENX Software Engineering, wd at 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 := spear300.o \
+ ../common/spr_misc.o
+SOBJS := ../common/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/spear300/config.mk b/board/spear/spear300/config.mk
new file mode 100755
index 0000000..71caee3
--- /dev/null
+++ b/board/spear/spear300/config.mk
@@ -0,0 +1,38 @@
+#
+# (C) Copyright 2009
+# Vipin Kumar, ST Microelectronics <vipin.kumar@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
+
+# Environment variables in NAND
+ifeq ($(ENV),NAND)
+PLATFORM_RELFLAGS += -DENV_IN_NAND
+endif
+
+# Compile uboot as USB boot firmware
+ifeq ($(CONSOLE),USB)
+PLATFORM_RELFLAGS += -DCONFIG_SPEAR_USBTTY
+endif
diff --git a/board/spear/spear300/spear300.c b/board/spear/spear300/spear300.c
new file mode 100755
index 0000000..70c4bf1
--- /dev/null
+++ b/board/spear/spear300/spear300.c
@@ -0,0 +1,57 @@
+/*
+ * (C) Copyright 2009
+ * Vipin Kumar, ST Micoelectronics, vipin.kumar at 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 <nand.h>
+#include <asm/io.h>
+#include <asm/arch/spr_defs.h>
+#include <asm/arch/spr_misc.h>
+#include <asm/arch/spr_nand.h>
+
+int board_init(void)
+{
+ return spear_board_init(MACH_TYPE_SPEAR300);
+}
+
+/**
+ * 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)
+{
+ struct misc_regs *const misc_regs_p =
+ (struct misc_regs *)CONFIG_SPEAR_MISCBASE;
+
+ if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) ==
+ MISC_SOCCFG30) ||
+ ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) ==
+ MISC_SOCCFG31)) {
+
+ return spear_nand_init(nand);
+ }
+
+ return -1;
+}
diff --git a/include/configs/spear.h b/include/configs/spear.h
index d7acfbe..27bc845 100755
--- a/include/configs/spear.h
+++ b/include/configs/spear.h
@@ -28,7 +28,12 @@
* High Level Configuration Options
* (easy to change)
*/
+#if defined(CONFIG_MK_spear600)
#define CONFIG_SPEAR600 1
+#elif defined(CONFIG_MK_spear300)
+#define CONFIG_SPEAR3XX 1
+#define CONFIG_SPEAR300 1
+#endif

/*
* Ethernet MAC driver configuration
@@ -64,14 +69,20 @@
*/
#define CONFIG_PL011_SERIAL
#define CONFIG_PL011_CLOCK (48 * 1000 * 1000)
-#define CONFIG_PL01x_PORTS { (void *)CONFIG_SYS_SERIAL0, \
+#define CONFIG_SYS_SERIAL0 0xD0000000
+
+#if defined(CONFIG_SPEAR600)
+#define CONFIG_SYS_SERIAL1 0xD0080000
+#define CONFIG_PL01x_PORTS {(void *)CONFIG_SYS_SERIAL0, \
(void *)CONFIG_SYS_SERIAL1 }
+#elif defined(CONFIG_SPEAR300)
+#define CONFIG_PL01x_PORTS {(void *)CONFIG_SYS_SERIAL0}
+#endif
+
#define CONFIG_CONS_INDEX 0
#define CONFIG_BAUDRATE 115200
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, \
57600, 115200 }
-#define CONFIG_SYS_SERIAL0 0xD0000000
-#define CONFIG_SYS_SERIAL1 0xD0080000

#define CONFIG_SYS_LOADS_BAUD_CHANGE

@@ -87,10 +98,18 @@
#define CONFIG_SPEAR_TIMERBASE (0xFC800000)
#define CONFIG_SPEAR_MISCBASE (0xFCA80000)

+#if defined(CONFIG_SPEAR600)
#define CONFIG_SYS_I2C_BASE (0xD0200000)
#define CONFIG_SPEAR_FSMCBASE (0xD1800000)
#define CONFIG_SYS_NAND_BASE (0xD2000000)

+#elif defined(CONFIG_SPEAR300)
+#define CONFIG_SYS_I2C_BASE (0xD0180000)
+#define CONFIG_SPEAR_FSMCBASE (0x94000000)
+#define CONFIG_SYS_NAND_BASE (0x80000000)
+
+#endif
+
#define CONFIG_SYS_HZ (1000)
#define CONFIG_SYS_HZ_CLOCK (8300000)

@@ -208,6 +227,7 @@
#define CONFIG_SYS_MEMTEST_END 0x04000000
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 256*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
--
1.6.0.2