All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] Add basic NVIDIA Tegra2 SoC support
@ 2011-01-11 21:06 Tom Warren
  2011-01-11 21:06 ` [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com> Tom Warren
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Tom Warren @ 2011-01-11 21:06 UTC (permalink / raw)
  To: u-boot

This series of patches adds preliminary/baseline support for NVIDIA's
Tegra2 Soc.  Basic CPU (AVP), RAM and UART init are covered so that the
system (Harmony and/or Seaboard) can boot to the U-Boot serial prompt.

Further support (for Coretex-A9 CPU(s), USB, SD/MMC, etc.) to follow.

Tom Warren (3):
  arm: Tegra2: Add generic Tegra2 SoC support
  arm: Tegra2: Add support for NVIDIA Harmony board
  arm: Tegra2: Add support for NVIDIA Seaboard board
Signed-off-by:    Tom Warren <twarren@nvidia.com>

 MAINTAINERS                                  |    5 +
 arch/arm/cpu/armv7/tegra2/Makefile           |   48 +++++
 arch/arm/cpu/armv7/tegra2/board.c            |   91 ++++++++++
 arch/arm/cpu/armv7/tegra2/config.mk          |   28 +++
 arch/arm/cpu/armv7/tegra2/lowlevel_init.S    |   66 +++++++
 arch/arm/cpu/armv7/tegra2/sys_info.c         |   35 ++++
 arch/arm/cpu/armv7/tegra2/timer.c            |  122 +++++++++++++
 arch/arm/include/asm/arch-tegra2/clk_rst.h   |  155 ++++++++++++++++
 arch/arm/include/asm/arch-tegra2/pinmux.h    |   52 ++++++
 arch/arm/include/asm/arch-tegra2/pmc.h       |  126 +++++++++++++
 arch/arm/include/asm/arch-tegra2/sys_proto.h |   33 ++++
 arch/arm/include/asm/arch-tegra2/tegra2.h    |   56 ++++++
 arch/arm/include/asm/arch-tegra2/uart.h      |   45 +++++
 arch/arm/include/asm/mach-types.h            |    1 +
 board/tegra2/common/board.c                  |  242 ++++++++++++++++++++++++++
 board/tegra2/common/board.h                  |   59 +++++++
 board/tegra2/harmony/Makefile                |   50 ++++++
 board/tegra2/seaboard/Makefile               |   50 ++++++
 boards.cfg                                   |    2 +
 common/serial.c                              |    3 +-
 include/configs/harmony.h                    |   48 +++++
 include/configs/nv-common.h                  |  166 ++++++++++++++++++
 include/configs/seaboard.h                   |   43 +++++
 include/serial.h                             |    3 +-
 24 files changed, 1527 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/tegra2/Makefile
 create mode 100644 arch/arm/cpu/armv7/tegra2/board.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/config.mk
 create mode 100644 arch/arm/cpu/armv7/tegra2/lowlevel_init.S
 create mode 100644 arch/arm/cpu/armv7/tegra2/sys_info.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/timer.c
 create mode 100644 arch/arm/include/asm/arch-tegra2/clk_rst.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/pinmux.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/pmc.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/sys_proto.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/tegra2.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/uart.h
 create mode 100644 board/tegra2/common/board.c
 create mode 100644 board/tegra2/common/board.h
 create mode 100644 board/tegra2/harmony/Makefile
 create mode 100644 board/tegra2/seaboard/Makefile
 create mode 100644 include/configs/harmony.h
 create mode 100644 include/configs/nv-common.h
 create mode 100644 include/configs/seaboard.h

-- 
1.7.3.5

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 [U-Boot] [PATCH 0/3] Add basic NVIDIA Tegra2 SoC support Tom Warren
@ 2011-01-11 21:06 ` Tom Warren
  2011-01-12 23:56   ` Peter Tyser
  2011-01-11 21:06 ` [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board " Tom Warren
  2011-01-11 21:06 ` [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard " Tom Warren
  2 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2011-01-11 21:06 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/cpu/armv7/tegra2/Makefile           |   48 +++++
 arch/arm/cpu/armv7/tegra2/board.c            |   91 ++++++++++
 arch/arm/cpu/armv7/tegra2/config.mk          |   28 +++
 arch/arm/cpu/armv7/tegra2/lowlevel_init.S    |   66 +++++++
 arch/arm/cpu/armv7/tegra2/sys_info.c         |   35 ++++
 arch/arm/cpu/armv7/tegra2/timer.c            |  122 +++++++++++++
 arch/arm/include/asm/arch-tegra2/clk_rst.h   |  155 ++++++++++++++++
 arch/arm/include/asm/arch-tegra2/pinmux.h    |   52 ++++++
 arch/arm/include/asm/arch-tegra2/pmc.h       |  126 +++++++++++++
 arch/arm/include/asm/arch-tegra2/sys_proto.h |   33 ++++
 arch/arm/include/asm/arch-tegra2/tegra2.h    |   56 ++++++
 arch/arm/include/asm/arch-tegra2/uart.h      |   45 +++++
 board/tegra2/common/board.c                  |  242 ++++++++++++++++++++++++++
 board/tegra2/common/board.h                  |   59 +++++++
 common/serial.c                              |    3 +-
 include/serial.h                             |    3 +-
 16 files changed, 1162 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/tegra2/Makefile
 create mode 100644 arch/arm/cpu/armv7/tegra2/board.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/config.mk
 create mode 100644 arch/arm/cpu/armv7/tegra2/lowlevel_init.S
 create mode 100644 arch/arm/cpu/armv7/tegra2/sys_info.c
 create mode 100644 arch/arm/cpu/armv7/tegra2/timer.c
 create mode 100644 arch/arm/include/asm/arch-tegra2/clk_rst.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/pinmux.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/pmc.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/sys_proto.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/tegra2.h
 create mode 100644 arch/arm/include/asm/arch-tegra2/uart.h
 create mode 100644 board/tegra2/common/board.c
 create mode 100644 board/tegra2/common/board.h

diff --git a/arch/arm/cpu/armv7/tegra2/Makefile b/arch/arm/cpu/armv7/tegra2/Makefile
new file mode 100644
index 0000000..75fba0b
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/Makefile
@@ -0,0 +1,48 @@
+#
+# (C) Copyright 2010,2011 Nvidia Corporation.
+#
+# (C) Copyright 2000-2003
+# 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$(SOC).o
+
+SOBJS	:= lowlevel_init.o
+COBJS	:= sys_info.o board.o timer.o
+
+SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS) $(SOBJS))
+
+all:	 $(obj).depend $(LIB)
+
+$(LIB):	$(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/arch/arm/cpu/armv7/tegra2/board.c b/arch/arm/cpu/armv7/tegra2/board.c
new file mode 100644
index 0000000..e180f05
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/board.c
@@ -0,0 +1,91 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/tegra2.h>
+#include <asm/arch/pmc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Boot ROM initializes the odmdata in APBDEV_PMC_SCRATCH20_0,
+ * so we are using this value to identify memory size.
+ */
+
+static unsigned int query_sdram_size(void)
+{
+	pmc_ctlr *const pmc = (pmc_ctlr *)NV_PA_PMC_BASE;
+	u32 reg;
+
+	reg = pmc->pmc_scratch20;
+	debug("pmc->pmc_scratch20 (ODMData) = 0x%08lX\n", reg);
+
+	/* bits 31:28 in OdmData are used for RAM size  */
+	switch ((reg) >> 28) {
+	case 1:
+		return 0x10000000;	/* 256 MB */
+	case 2:
+		return 0x20000000;	/* 512 MB */
+	case 3:
+	default:
+		return 0x40000000;	/* 1GB */
+	}
+}
+
+void s_init(void)
+{
+#ifndef CONFIG_ICACHE_OFF
+	icache_enable();
+#endif
+	invalidate_dcache();
+}
+
+int dram_init(void)
+{
+	unsigned long rs;
+
+	/* We do not initialise DRAM here. We just query the size */
+	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+	gd->bd->bi_dram[0].size = gd->ram_size = query_sdram_size();
+
+	/* Now check it dynamically */
+	rs = get_ram_size(CONFIG_SYS_SDRAM_BASE, gd->ram_size);
+	if (rs) {
+		printf("dynamic ram_size = %lu\n", rs);
+		gd->bd->bi_dram[0].size = gd->ram_size = rs;
+	}
+	return 0;
+}
+
+#ifdef CONFIG_DISPLAY_BOARDINFO
+
+extern tegra2_sysinfo sysinfo;
+
+int checkboard(void)
+{
+	printf("Board: %s\n", sysinfo.board_string);
+	return 0;
+}
+#endif	/* CONFIG_DISPLAY_BOARDINFO */
diff --git a/arch/arm/cpu/armv7/tegra2/config.mk b/arch/arm/cpu/armv7/tegra2/config.mk
new file mode 100644
index 0000000..96c0795
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/config.mk
@@ -0,0 +1,28 @@
+#
+# (C) Copyright 2010,2011
+# NVIDIA Corporation <www.nvidia.com>
+#
+# (C) Copyright 2002
+# Gary Jennejohn, DENX Software Engineering, <garyj@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
+#
+
+# Use ARMv4 for Tegra2 - initial code runs on the AVP, which is an ARM7TDI.
+PLATFORM_CPPFLAGS += -march=armv4
diff --git a/arch/arm/cpu/armv7/tegra2/lowlevel_init.S b/arch/arm/cpu/armv7/tegra2/lowlevel_init.S
new file mode 100644
index 0000000..c0e3aa1
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/lowlevel_init.S
@@ -0,0 +1,66 @@
+/*
+ * Board specific setup info
+ *
+ * (C) Copyright 2010,2011
+ * NVIDIA Corporation <www.nvidia.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>
+#include <version.h>
+
+_TEXT_BASE:
+	.word	CONFIG_SYS_TEXT_BASE	@ sdram load addr from config file
+
+.global invalidate_dcache
+invalidate_dcache:
+	mov pc, lr
+
+
+	.align	5
+.global reset_cpu
+reset_cpu:
+	ldr	r1, rstctl			@ get addr for global reset
+						@ reg
+	ldr	r3, [r1]
+	orr	r3, r3, #0x10
+	str	r3, [r1]			@ force reset
+	mov	r0, r0
+_loop_forever:
+	b	_loop_forever
+rstctl:
+	.word	PRM_RSTCTRL
+
+.globl lowlevel_init
+lowlevel_init:
+	ldr	sp, SRAM_STACK
+	str	ip, [sp]
+	mov	ip, lr
+	bl	s_init				@ go setup pll, mux & memory
+	ldr	ip, [sp]
+	mov	lr, ip
+
+	mov	pc, lr				@ back to arch calling code
+
+	@ the literal pools origin
+	.ltorg
+
+SRAM_STACK:
+	.word LOW_LEVEL_SRAM_STACK
diff --git a/arch/arm/cpu/armv7/tegra2/sys_info.c b/arch/arm/cpu/armv7/tegra2/sys_info.c
new file mode 100644
index 0000000..6d11dc1
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/sys_info.c
@@ -0,0 +1,35 @@
+/*
+ * (C) Copyright 2010,2011
+ * NVIDIA Corporation <www.nvidia.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>
+
+#ifdef CONFIG_DISPLAY_CPUINFO
+/* Print CPU information */
+int print_cpuinfo(void)
+{
+	puts("TEGRA2\n");
+
+	/* TBD: Add printf of major/minor rev info, stepping, etc. */
+	return 0;
+}
+#endif	/* CONFIG_DISPLAY_CPUINFO */
diff --git a/arch/arm/cpu/armv7/tegra2/timer.c b/arch/arm/cpu/armv7/tegra2/timer.c
new file mode 100644
index 0000000..858af0f
--- /dev/null
+++ b/arch/arm/cpu/armv7/tegra2/timer.c
@@ -0,0 +1,122 @@
+/*
+ * (C) Copyright 2010,2011
+ * NVIDIA Corporation <www.nvidia.com>
+ *
+ * (C) Copyright 2008
+ * Texas Instruments
+ *
+ * Richard Woodruff <r-woodruff2@ti.com>
+ * Syed Moahmmed Khasim <khasim@ti.com>
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ * Alex Zuepke <azu@sysgo.de>
+ *
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <garyj@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 <common.h>
+#include <asm/io.h>
+#include <asm/arch/tegra2.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static timerus_t *timer_base = (timerus_t *)NV_PA_TMRUS_BASE;
+
+/* counter runs at 1MHz */
+#define TIMER_CLK	(1000000)
+#define TIMER_LOAD_VAL	0xffffffff
+
+/* timer without interrupts */
+void reset_timer(void)
+{
+	reset_timer_masked();
+}
+
+ulong get_timer(ulong base)
+{
+	return get_timer_masked() - base;
+}
+
+void set_timer(ulong t)
+{
+	gd->tbl = t;
+}
+
+/* delay x useconds */
+void __udelay(unsigned long usec)
+{
+	long tmo = usec * (TIMER_CLK / 1000) / 1000;
+	unsigned long now, last = readl(&timer_base->cntr_1us);
+
+	while (tmo > 0) {
+		now = readl(&timer_base->cntr_1us);
+		if (last > now) /* count up timer overflow */
+			tmo -= TIMER_LOAD_VAL - last + now;
+		else
+			tmo -= now - last;
+		last = now;
+	}
+}
+
+void reset_timer_masked(void)
+{
+	/* reset time, capture current incrementer value time */
+	gd->lastinc = readl(&timer_base->cntr_1us) / (TIMER_CLK/CONFIG_SYS_HZ);
+	gd->tbl = 0;		/* start "advancing" time stamp from 0 */
+}
+
+ulong get_timer_masked(void)
+{
+	ulong now;
+
+	/* current tick value */
+	now = readl(&timer_base->cntr_1us) / (TIMER_CLK / CONFIG_SYS_HZ);
+
+	if (now >= gd->lastinc)	/* normal mode (non roll) */
+		/* move stamp forward with absolute diff ticks */
+		gd->tbl += (now - gd->lastinc);
+	else	/* we have rollover of incrementer */
+		gd->tbl += ((TIMER_LOAD_VAL / (TIMER_CLK / CONFIG_SYS_HZ))
+				- gd->lastinc) + now;
+	gd->lastinc = now;
+	return gd->tbl;
+}
+
+/*
+ * This function is derived from PowerPC code (read timebase as long long).
+ * On ARM it just returns the timer value.
+ */
+unsigned long long get_ticks(void)
+{
+	return get_timer(0);
+}
+
+/*
+ * This function is derived from PowerPC code (timebase clock frequency).
+ * On ARM it returns the number of timer ticks per second.
+ */
+ulong get_tbclk(void)
+{
+	return CONFIG_SYS_HZ;
+}
diff --git a/arch/arm/include/asm/arch-tegra2/clk_rst.h b/arch/arm/include/asm/arch-tegra2/clk_rst.h
new file mode 100644
index 0000000..c3ed30e
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/clk_rst.h
@@ -0,0 +1,155 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 _CLK_RST_H_
+#define _CLK_RST_H_
+
+/* Clock/Reset Controller (CLK_RST_CONTROLLER_) regs */
+
+typedef struct clk_rst_ctlr {
+	vol_uint crc_rst_src;		/* _RST_SOURCE_0,	0x00*/
+	vol_uint crc_rst_dev_l;		/* _RST_DEVICES_L_0,	0x04*/
+	vol_uint crc_rst_dev_h;		/* _RST_DEVICES_H_0,	0x08*/
+	vol_uint crc_rst_dev_u;		/* _RST_DEVICES_U_0,	0x0C*/
+	vol_uint crc_clk_out_enb_l;	/* _CLK_OUT_ENB_L_0,	0x10*/
+	vol_uint crc_clk_out_enb_h;	/* _CLK_OUT_ENB_H_0,	0x14*/
+	vol_uint crc_clk_out_enb_u;	/* _CLK_OUT_ENB_U_0,	0x18*/
+	vol_uint crc_reserved0;		/* reserved_0,		0x1c*/
+	vol_uint crc_cclk_brst_pol;	/* _CCLK_BURST_POLICY_0,0x20*/
+	vol_uint crc_super_cclk_div;	/* _SUPER_CCLK_DIVIDER_0,0x24*/
+	vol_uint crc_sclk_brst_pol;	/* _SCLK_BURST_POLICY_0, 0x28*/
+	vol_uint crc_super_sclk_div;	/* _SUPER_SCLK_DIVIDER_0,0x2C*/
+	vol_uint crc_clk_sys_rate;	/* _CLK_SYSTEM_RATE_0,	0x30*/
+	vol_uint crc_prog_dly_clk;	/* _PROG_DLY_CLK_0,	0x34*/
+	vol_uint crc_aud_sync_clk_rate;	/* _AUDIO_SYNC_CLK_RATE_0,0x38*/
+	vol_uint crc_reserved1;		/* reserved_1,		0x3c*/
+	vol_uint crc_cop_clk_skip_plcy;	/* _COP_CLK_SKIP_POLICY_0,0x40*/
+	vol_uint crc_clk_mask_arm;	/* _CLK_MASK_ARM_0,	0x44*/
+	vol_uint crc_misc_clk_enb;	/* _MISC_CLK_ENB_0,	0x48*/
+	vol_uint crc_clk_cpu_cmplx;	/* _CLK_CPU_CMPLX_0,	0x4C*/
+	vol_uint crc_osc_ctrl;		/* _OSC_CTRL_0,		0x50*/
+	vol_uint crc_pll_lfsr;		/* _PLL_LFSR_0,		0x54*/
+	vol_uint crc_osc_freq_det;	/* _OSC_FREQ_DET_0,	0x58*/
+	vol_uint crc_osc_freq_det_stat;	/* _OSC_FREQ_DET_STATUS_0,0x5C*/
+	vol_uint crc_reserved2[8];	/* reserved_2[8],	0x60-7C*/
+
+	vol_uint crc_pllc_base;		/* _PLLC_BASE_0,	0x80*/
+	vol_uint crc_pllc_out;		/* _PLLC_OUT_0,		0x84*/
+	vol_uint crc_reserved3;		/* reserved_3,		0x88*/
+	vol_uint crc_pllc_misc;		/* _PLLC_MISC_0,	0x8C*/
+
+	vol_uint crc_pllm_base;		/* _PLLM_BASE_0,	0x90*/
+	vol_uint crc_pllm_out;		/* _PLLM_OUT_0,		0x94*/
+	vol_uint crc_reserved4;		/* reserved_4,		0x98*/
+	vol_uint crc_pllm_misc;		/* _PLLM_MISC_0,	0x9C*/
+
+	vol_uint crc_pllp_base;		/* _PLLP_BASE_0,	0xA0*/
+	vol_uint crc_pllp_outa;		/* _PLLP_OUTA_0,	0xA4*/
+	vol_uint crc_pllp_outb;		/* _PLLP_OUTB_0,	0xA8*/
+	vol_uint crc_pllp_misc;		/* _PLLP_MISC_0,	0xAC*/
+
+	vol_uint crc_plla_base;		/* _PLLA_BASE_0,	0xB0*/
+	vol_uint crc_plla_out;		/* _PLLA_OUT_0,		0xB4*/
+	vol_uint crc_reserved5;		/* reserved_5,		0xB8*/
+	vol_uint crc_plla_misc;		/* _PLLA_MISC_0,	0xBC*/
+
+	vol_uint crc_pllu_base;		/* _PLLU_BASE_0,	0xC0*/
+	vol_uint crc_reserved6;		/* _reserved_6,		0xC4*/
+	vol_uint crc_reserved7;		/* _reserved_7,		0xC8*/
+	vol_uint crc_pllu_misc;		/* _PLLU_MISC_0,	0xCC*/
+
+	vol_uint crc_plld_base;		/* _PLLD_BASE_0,	0xD0*/
+	vol_uint crc_reserved8;		/* _reserved_8,		0xD4*/
+	vol_uint crc_reserved9;		/* _reserved_9,		0xD8*/
+	vol_uint crc_plld_misc;		/* _PLLD_MISC_0,	0xDC*/
+
+	vol_uint crc_pllx_base;		/* _PLLX_BASE_0,	0xE0*/
+	vol_uint crc_pllx_misc;		/* _PLLX_MISC_0,	0xE4*/
+
+	vol_uint crc_plle_base;		/* _PLLE_BASE_0,	0xE8*/
+	vol_uint crc_plle_misc;		/* _PLLE_MISC_0,	0xEC*/
+
+	vol_uint crc_plls_base;		/* _PLLS_BASE_0,	0xF0*/
+	vol_uint crc_plls_misc;		/* _PLLS_MISC_0,	0xF4*/
+	vol_uint crc_reserved10;	/* _reserved_10,	0xF8*/
+	vol_uint crc_reserved11;	/* _reserved_11,	0xFC*/
+
+	vol_uint crc_clk_src_i2s1;	/*_I2S1_0,		0x100*/
+	vol_uint crc_clk_src_i2s2;	/*_I2S2_0,		0x104*/
+	vol_uint crc_clk_src_spdif_out;	/*_SPDIF_OUT_0,		0x108*/
+	vol_uint crc_clk_src_spdif_in;	/*_SPDIF_IN_0,		0x10C*/
+	vol_uint crc_clk_src_pwm;	/*_PWM_0,		0x110*/
+	vol_uint crc_clk_src_spi1;	/*_SPI1_0,		0x114*/
+	vol_uint crc_clk_src_sbc2;	/*_SBC2_0,		0x118*/
+	vol_uint crc_clk_src_sbc3;	/*_SBC3_0,		0x11C*/
+	vol_uint crc_clk_src_xio;	/*_XIO_0,		0x120*/
+	vol_uint crc_clk_src_i2c1;	/*_I2C1_0,		0x124*/
+	vol_uint crc_clk_src_dvc_i2c;	/*_DVC_I2C_0,		0x128*/
+	vol_uint crc_clk_src_twc;	/*_TWC_0,		0x12C*/
+	vol_uint crc_reserved12;	/*			0x130*/
+	vol_uint crc_clk_src_sbc1;	/*_SBC1_0,		0x134*/
+	vol_uint crc_clk_src_disp1;	/*_DISP1_0,		0x138*/
+	vol_uint crc_clk_src_disp2;	/*_DISP2_0,		0x13C*/
+	vol_uint crc_clk_src_cve;	/*_CVE_0,		0x140*/
+	vol_uint crc_clk_src_ide;	/*_IDE_0,		0x144*/
+	vol_uint crc_clk_src_vi;	/*_VI_0,		0x148*/
+	vol_uint crc_reserved13;	/*			0x14c*/
+	vol_uint crc_clk_src_sdmmc1;	/*_SDMMC1_0,		0x150*/
+	vol_uint crc_clk_src_sdmmc2;	/*_SDMMC2_0,		0x154*/
+	vol_uint crc_clk_src_g3d;	/*_G3D_0,		0x158*/
+	vol_uint crc_clk_src_g2d;	/*_G2D_0,		0x15C*/
+	vol_uint crc_clk_src_ndflash;	/*_NDFLASH_0,		0x160*/
+	vol_uint crc_clk_src_sdmmc4;	/*_SDMMC4_0,		0x164*/
+	vol_uint crc_clk_src_vfir;	/*_VFIR_0,		0x168*/
+	vol_uint crc_clk_src_epp;	/*_EPP_0,		0x16C*/
+	vol_uint crc_clk_src_mp3;	/*_MPE_0,		0x170*/
+	vol_uint crc_clk_src_mipi;	/*_MIPI_0,		0x174*/
+	vol_uint crc_clk_src_uarta;	/*_UARTA_0,		0x178*/
+	vol_uint crc_clk_src_uartb;	/*_UARTB_0,		0x17C*/
+	vol_uint crc_clk_src_host1x;	/*_HOST1X_0,		0x180*/
+	vol_uint crc_reserved14;	/*			0x184*/
+	vol_uint crc_clk_src_tvo;	/*_TVO_0,		0x188*/
+	vol_uint crc_clk_src_hdmi;	/*_HDMI_0,		0x18C*/
+	vol_uint crc_reserved15;	/*			0x190*/
+	vol_uint crc_clk_src_tvdac;	/*_TVDAC_0,		0x194*/
+	vol_uint crc_clk_src_i2c2;	/*_I2C2_0,		0x198*/
+	vol_uint crc_clk_src_emc;	/*_EMC_0,		0x19C*/
+	vol_uint crc_clk_src_uartc;	/*_UARTC_0,		0x1A0*/
+	vol_uint crc_reserved16;	/*			0x1a4*/
+	vol_uint crc_clk_src_vi_sensor;	/*_VI_SENSOR_0,		0x1A8*/
+	vol_uint crc_reserved17;	/*			0x1ac*/
+	vol_uint crc_reserved18;	/*			0x1b0*/
+	vol_uint crc_clk_src_sbc4;	/*_SBC4_0,		0x1B4*/
+	vol_uint crc_clk_src_i2c3;	/*_I2C3_0,		0x1B8*/
+	vol_uint crc_clk_src_sdmmc3;	/*_SDMMC3_0,		0x1BC*/
+	vol_uint crc_clk_src_uartd;	/*_UARTD_0,		0x1C0*/
+	vol_uint crc_clk_src_uarte;	/*_UARTE_0,		0x1C4*/
+	vol_uint crc_clk_src_vde;	/*_VDE_0,		0x1C8*/
+	vol_uint crc_clk_src_owr;	/*_OWR_0,		0x1CC*/
+	vol_uint crc_clk_src_nor;	/*_NOR_0,		0x1D0*/
+	vol_uint crc_clk_src_csite;	/*_CSITE_0,		0x1D4*/
+	vol_uint crc_reserved19[9];	/*			0x1d8-1F8*/
+	vol_uint crc_clk_src_osc;	/*_OSC_0,		0x1FC*/
+} clk_rst_ctlr;
+
+#endif	/* CLK_RST_H */
diff --git a/arch/arm/include/asm/arch-tegra2/pinmux.h b/arch/arm/include/asm/arch-tegra2/pinmux.h
new file mode 100644
index 0000000..9dd009d
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/pinmux.h
@@ -0,0 +1,52 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 _PINMUX_H_
+#define _PINMUX_H_
+
+/* APB MISC Pin Mux and Tristate (APB_MISC_PP_) registers */
+
+typedef struct pinmux_tri_ctlr {
+	u32 pmt_reserved0;		/* ABP_MISC_PP_ reserved offset 00 */
+	u32 pmt_reserved1;		/* ABP_MISC_PP_ reserved offset 04 */
+	vol_uint pmt_strap_opt_a;	/* _STRAPPING_OPT_A_0, offset 08 */
+	u32 pmt_reserved2;		/* ABP_MISC_PP_ reserved offset 0C */
+	u32 pmt_reserved3;		/* ABP_MISC_PP_ reserved offset 10 */
+	vol_uint pmt_tri_a;		/* _TRI_STATE_REG_A_0, offset 14 */
+	vol_uint pmt_tri_b;		/* _TRI_STATE_REG_B_0, offset 18 */
+	vol_uint pmt_tri_c;		/* _TRI_STATE_REG_C_0, offset 1C */
+	vol_uint pmt_tri_d;		/* _TRI_STATE_REG_D_0, offset 20 */
+	vol_uint pmt_cfg_ctl;		/* _CONFIG_CTL_0, offset 24 */
+
+	u32 pmt_reserved[22];		/* ABP_MISC_PP_ reserved offs 28-7C */
+
+	vol_uint pmt_ctl_a;		/* _PIN_MUX_CTL_A_0, offset 80 */
+	vol_uint pmt_ctl_b;		/* _PIN_MUX_CTL_B_0, offset 84 */
+	vol_uint pmt_ctl_c;		/* _PIN_MUX_CTL_C_0, offset 88 */
+	vol_uint pmt_ctl_d;		/* _PIN_MUX_CTL_D_0, offset 8C */
+	vol_uint pmt_ctl_e;		/* _PIN_MUX_CTL_E_0, offset 90 */
+	vol_uint pmt_ctl_f;		/* _PIN_MUX_CTL_F_0, offset 94 */
+	vol_uint pmt_ctl_g;		/* _PIN_MUX_CTL_G_0, offset 98 */
+} pinmux_tri_ctlr;
+
+#endif	/* PINMUX_H */
diff --git a/arch/arm/include/asm/arch-tegra2/pmc.h b/arch/arm/include/asm/arch-tegra2/pmc.h
new file mode 100644
index 0000000..9f8551f
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/pmc.h
@@ -0,0 +1,126 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 _PMC_H_
+#define _PMC_H_
+typedef unsigned int volatile vol_uint;
+
+/* Power Management Controller (APBDEV_PMC_) registers */
+
+typedef struct pmc_ctlr {
+	vol_uint pmc_cntrl;		/* _CNTRL_0, offset 00 */
+	vol_uint pmc_sec_disable;	/* _SEC_DISABLE_0, offset 04 */
+	vol_uint pmc_pmc_swrst;		/* _PMC_SWRST_0, offset 08 */
+	vol_uint pmc_wake_mask;		/* _WAKE_MASK_0, offset 0C */
+	vol_uint pmc_wake_lvl;		/* _WAKE_LVL_0, offset 10 */
+	vol_uint pmc_wake_status;	/* _WAKE_STATUS_0, offset 14 */
+	vol_uint pmc_sw_wake_status;	/* _SW_WAKE_STATUS_0, offset 18 */
+	vol_uint pmc_dpd_pads_oride;	/* _DPD_PADS_ORIDE_0, offset 1C */
+	vol_uint pmc_dpd_sample;	/* _DPD_PADS_SAMPLE_0, offset 20 */
+	vol_uint pmc_dpd_enable;	/* _DPD_PADS_ENABLE_0, offset 24 */
+	vol_uint pmc_pwrgate_timer_off;	/* _PWRGATE_TIMER_OFF_0, offset 28 */
+	vol_uint pmc_pwrgate_timer_on;	/* _PWRGATE_TIMER_ON_0, offset 2C */
+	vol_uint pmc_pwrgate_toggle;	/* _PWRGATE_TOGGLE_0, offset 30 */
+	vol_uint pmc_remove_clamping;	/* _REMOVE_CLAMPING_CMD_0, offset 34 */
+	vol_uint pmc_pwrgate_status;	/* _PWRGATE_STATUS_0, offset 38 */
+	vol_uint pmc_pwrgood_timer;	/* _PWRGOOD_TIMER_0, offset 3C */
+	vol_uint pmc_blink_timer;	/* _BLINK_TIMER_0, offset 40 */
+	vol_uint pmc_no_iopower;	/* _NO_IOPOWER_0, offset 44 */
+	vol_uint pmc_pwr_det;		/* _PWR_DET_0, offset 48 */
+	vol_uint pmc_pwr_det_latch;	/* _PWR_DET_LATCH_0, offset 4C */
+
+	vol_uint pmc_scratch0;		/* _SCRATCH0_0, offset 50 */
+	vol_uint pmc_scratch1;		/* _SCRATCH1_0, offset 54 */
+	vol_uint pmc_scratch2;		/* _SCRATCH2_0, offset 58 */
+	vol_uint pmc_scratch3;		/* _SCRATCH3_0, offset 5C */
+	vol_uint pmc_scratch4;		/* _SCRATCH4_0, offset 60 */
+	vol_uint pmc_scratch5;		/* _SCRATCH5_0, offset 64 */
+	vol_uint pmc_scratch6;		/* _SCRATCH6_0, offset 68 */
+	vol_uint pmc_scratch7;		/* _SCRATCH7_0, offset 6C */
+	vol_uint pmc_scratch8;		/* _SCRATCH8_0, offset 70 */
+	vol_uint pmc_scratch9;		/* _SCRATCH9_0, offset 74 */
+	vol_uint pmc_scratch10;		/* _SCRATCH10_0, offset 78 */
+	vol_uint pmc_scratch11;		/* _SCRATCH11_0, offset 7C */
+	vol_uint pmc_scratch12;		/* _SCRATCH12_0, offset 80 */
+	vol_uint pmc_scratch13;		/* _SCRATCH13_0, offset 84 */
+	vol_uint pmc_scratch14;		/* _SCRATCH14_0, offset 88 */
+	vol_uint pmc_scratch15;		/* _SCRATCH15_0, offset 8C */
+	vol_uint pmc_scratch16;		/* _SCRATCH16_0, offset 90 */
+	vol_uint pmc_scratch17;		/* _SCRATCH17_0, offset 94 */
+	vol_uint pmc_scratch18;		/* _SCRATCH18_0, offset 98 */
+	vol_uint pmc_scratch19;		/* _SCRATCH19_0, offset 9C */
+	vol_uint pmc_scratch20;		/* _SCRATCH20_0, offset A0 */
+	vol_uint pmc_scratch21;		/* _SCRATCH21_0, offset A4 */
+	vol_uint pmc_scratch22;		/* _SCRATCH22_0, offset A8 */
+	vol_uint pmc_scratch23;		/* _SCRATCH23_0, offset AC */
+
+	vol_uint pmc_secure_scratch0;	/* _SECURE_SCRATCH0_0, offset B0 */
+	vol_uint pmc_secure_scratch1;	/* _SECURE_SCRATCH1_0, offset B4 */
+	vol_uint pmc_secure_scratch2;	/* _SECURE_SCRATCH2_0, offset B8 */
+	vol_uint pmc_secure_scratch3;	/* _SECURE_SCRATCH3_0, offset BC */
+	vol_uint pmc_secure_scratch4;	/* _SECURE_SCRATCH4_0, offset C0 */
+	vol_uint pmc_secure_scratch5;	/* _SECURE_SCRATCH5_0, offset C4 */
+
+	vol_uint pmc_cpupwrgood_timer;	/* _CPUPWRGOOD_TIMER_0, offset C8 */
+	vol_uint pmc_cpupwroff_timer;	/* _CPUPWROFF_TIMER_0, offset CC */
+	vol_uint pmc_pg_mask;		/* _PG_MASK_0, offset D0 */
+	vol_uint pmc_pg_mask_1;		/* _PG_MASK_1_0, offset D4 */
+	vol_uint pmc_auto_wake_lvl;	/* _AUTO_WAKE_LVL_0, offset D8 */
+	vol_uint pmc_auto_wake_lvl_mask; /* _AUTO_WAKE_LVL_MASK_0, offset DC */
+	vol_uint pmc_wake_delay;	/* _WAKE_DELAY_0, offset E0 */
+	vol_uint pmc_pwr_det_val;	/* _PWR_DET_VAL_0, offset E4 */
+	vol_uint pmc_ddr_pwr;		/* _DDR_PWR_0, offset E8 */
+	vol_uint pmc_usb_debounce_del;	/* _USB_DEBOUNCE_DEL_0, offset EC */
+	vol_uint pmc_usb_ao;		/* _USB_AO_0, offset F0 */
+	vol_uint pmc_crypto_op;		/* _CRYPTO_OP__0, offset F4 */
+	vol_uint pmc_pllp_wb0_override;	/* _PLLP_WB0_OVERRIDE_0, offset F8 */
+
+	vol_uint pmc_scratch24;		/* _SCRATCH24_0, offset FC */
+	vol_uint pmc_scratch25;		/* _SCRATCH24_0, offset 100 */
+	vol_uint pmc_scratch26;		/* _SCRATCH24_0, offset 104 */
+	vol_uint pmc_scratch27;		/* _SCRATCH24_0, offset 108 */
+	vol_uint pmc_scratch28;		/* _SCRATCH24_0, offset 10C */
+	vol_uint pmc_scratch29;		/* _SCRATCH24_0, offset 110 */
+	vol_uint pmc_scratch30;		/* _SCRATCH24_0, offset 114 */
+	vol_uint pmc_scratch31;		/* _SCRATCH24_0, offset 118 */
+	vol_uint pmc_scratch32;		/* _SCRATCH24_0, offset 11C */
+	vol_uint pmc_scratch33;		/* _SCRATCH24_0, offset 120 */
+	vol_uint pmc_scratch34;		/* _SCRATCH24_0, offset 124 */
+	vol_uint pmc_scratch35;		/* _SCRATCH24_0, offset 128 */
+	vol_uint pmc_scratch36;		/* _SCRATCH24_0, offset 12C */
+	vol_uint pmc_scratch37;		/* _SCRATCH24_0, offset 130 */
+	vol_uint pmc_scratch38;		/* _SCRATCH24_0, offset 134 */
+	vol_uint pmc_scratch39;		/* _SCRATCH24_0, offset 138 */
+	vol_uint pmc_scratch40;		/* _SCRATCH24_0, offset 13C */
+	vol_uint pmc_scratch41;		/* _SCRATCH24_0, offset 140 */
+	vol_uint pmc_scratch42;		/* _SCRATCH24_0, offset 144 */
+
+	vol_uint pmc_bo_mirror0;	/* _BOUNDOUT_MIRROR0_0, offset 148 */
+	vol_uint pmc_bo_mirror1;	/* _BOUNDOUT_MIRROR1_0, offset 14C */
+	vol_uint pmc_bo_mirror2;	/* _BOUNDOUT_MIRROR2_0, offset 150 */
+	vol_uint pmc_sys_33v_en;	/* _SYS_33V_EN_0, offset 154 */
+	vol_uint pmc_bo_mirror_access;	/* _BOUNDOUT_MIRROR_ACCESS_0, off158 */
+	vol_uint pmc_gate;		/* _GATE_0, offset 15C */
+} pmc_ctlr;
+
+#endif	/* PMC_H */
diff --git a/arch/arm/include/asm/arch-tegra2/sys_proto.h b/arch/arm/include/asm/arch-tegra2/sys_proto.h
new file mode 100644
index 0000000..70e63a8
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/sys_proto.h
@@ -0,0 +1,33 @@
+/*
+ * (C) Copyright 2010,2011
+ * NVIDIA Corporation <www.nvidia.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 _SYS_PROTO_H_
+#define _SYS_PROTO_H_
+
+typedef struct {
+	char *board_string;
+} tegra2_sysinfo;
+
+void invalidate_dcache(void);
+
+#endif
diff --git a/arch/arm/include/asm/arch-tegra2/tegra2.h b/arch/arm/include/asm/arch-tegra2/tegra2.h
new file mode 100644
index 0000000..ebe56f2
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/tegra2.h
@@ -0,0 +1,56 @@
+/*
+ * (C) Copyright 2010,2011
+ * NVIDIA Corporation <www.nvidia.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 _TEGRA2_H_
+#define _TEGRA2_H_
+
+#ifndef FALSE
+#define FALSE	0
+#endif
+#ifndef TRUE
+#define TRUE	1
+#endif
+
+#define NV_PA_SDRAM_BASE	0x00000000
+#define NV_PA_TMRUS_BASE	0x60005010
+#define NV_PA_CLK_RST_BASE	0x60006000
+#define NV_PA_APB_MISC_BASE	0x70000000
+#define NV_PA_APB_UARTA_BASE	(NV_PA_APB_MISC_BASE + 0x6000)
+#define NV_PA_APB_UARTB_BASE	(NV_PA_APB_MISC_BASE + 0x6040)
+#define NV_PA_APB_UARTC_BASE	(NV_PA_APB_MISC_BASE + 0x6200)
+#define NV_PA_APB_UARTD_BASE	(NV_PA_APB_MISC_BASE + 0x6300)
+#define NV_PA_APB_UARTE_BASE	(NV_PA_APB_MISC_BASE + 0x6400)
+#define NV_PA_PMC_BASE		0x7000E400
+
+#define TEGRA2_SDRC_CS0		NV_PA_SDRAM_BASE
+#define LOW_LEVEL_SRAM_STACK	0x4000FFFC
+
+#ifndef __ASSEMBLY__
+typedef volatile struct timerus {
+	unsigned int cntr_1us;
+} timerus_t;
+#else  /* __ASSEMBLY__ */
+#define PRM_RSTCTRL		NV_PA_PMC_BASE
+#endif
+
+#endif	/* TEGRA2_H */
diff --git a/arch/arm/include/asm/arch-tegra2/uart.h b/arch/arm/include/asm/arch-tegra2/uart.h
new file mode 100644
index 0000000..99f83a6
--- /dev/null
+++ b/arch/arm/include/asm/arch-tegra2/uart.h
@@ -0,0 +1,45 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 _UART_H_
+#define _UART_H_
+
+/* UART registers */
+
+typedef struct uart_ctlr {
+	vol_uint uart_thr_dlab_0;	/* UART_THR_DLAB_0_0, offset 00 */
+	vol_uint uart_ier_dlab_0;	/* UART_IER_DLAB_0_0, offset 04 */
+	vol_uint uart_iir_fcr;		/* UART_IIR_FCR_0, offset 08 */
+	vol_uint uart_lcr;		/* UART_LCR_0, offset 0C */
+	vol_uint uart_mcr;		/* UART_MCR_0, offset 10 */
+	vol_uint uart_lsr;		/* UART_LSR_0, offset 14 */
+	vol_uint uart_msr;		/* UART_MSR_0, offset 18 */
+	vol_uint uart_spr;		/* UART_SPR_0, offset 1C */
+	vol_uint uart_irda_csr;		/* UART_IRDA_CSR_0, offset 20 */
+	vol_uint uart_reserved[6];	/* Reserved, unused */
+	vol_uint uart_asr;		/* UART_ASR_0, offset 3C */
+} uart_ctlr;
+
+#define	LSR_RDR	(1 << 0)
+
+#endif	/* UART_H */
diff --git a/board/tegra2/common/board.c b/board/tegra2/common/board.c
new file mode 100644
index 0000000..1132f89
--- /dev/null
+++ b/board/tegra2/common/board.c
@@ -0,0 +1,242 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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/mach-types.h>
+#include <asm/arch/tegra2.h>
+#include <asm/arch/sys_proto.h>
+#include "board.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+const tegra2_sysinfo sysinfo = {
+	CONFIG_TEGRA2_BOARD_STRING
+};
+
+/*
+ * Routine: board_init
+ * Description: Early hardware init.
+ */
+int board_init(void)
+{
+	/* boot param addr */
+	gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100);
+	/* board id for Linux */
+	gd->bd->bi_arch_number = CONFIG_MACH_TYPE;
+
+	return 0;
+}
+
+/*
+ * Routine: timer_init
+ * Description: init the timestamp and lastinc value
+ */
+int timer_init(void)
+{
+	reset_timer();
+	return 0;
+}
+
+/*
+ * Routine: uart_clock_init
+ * Description: init the PLL and clock for the UART in uart_num
+ */
+void uart_clock_init(int uart_num)
+{
+	clk_rst_ctlr *const clkrst = (clk_rst_ctlr *)NV_PA_CLK_RST_BASE;
+	static int pllp_init_done;
+	u32 reg;
+
+	if (!pllp_init_done) {
+
+		/* Override pllp setup for 216MHz operation. */
+		reg = (PLL_BYPASS | PLL_BASE_OVRRIDE | PLL_DIVP);
+		reg |= (((NVRM_PLLP_FIXED_FREQ_KHZ/500) << 8) | PLL_DIVM);
+		clkrst->crc_pllp_base = reg;
+
+		reg |= PLL_ENABLE;
+		clkrst->crc_pllp_base = reg;
+
+		reg &= ~PLL_BYPASS;
+		clkrst->crc_pllp_base = reg;
+
+		pllp_init_done++;
+	}
+
+	/* Now do the UART reset/clock enable based on uart_num */
+
+	if (uart_num == UART_D) {
+
+		/* Assert Reset to UART */
+		reg = clkrst->crc_rst_dev_u;
+		reg |= SWR_UARTD_RST;		/* SWR_UARTD_RST = 1 */
+		clkrst->crc_rst_dev_u = reg;
+
+		/* Enable clk to UART */
+		reg = clkrst->crc_clk_out_enb_u;
+		reg |= CLK_ENB_UARTD;		/* CLK_ENB_UARTD = 1 */
+		clkrst->crc_clk_out_enb_u = reg;
+
+		/* Enable pllp_out0 to UART */
+		reg = clkrst->crc_clk_src_uartd;
+		reg &= 0x3FFFFFFF;	/* UARTD_CLK_SRC = 00, PLLP_OUT0 */
+		clkrst->crc_clk_src_uartd = reg;
+
+		/* wait for 2us */
+		udelay(2);
+
+		/* De-assert reset to UART */
+		reg = clkrst->crc_rst_dev_u;
+		reg &= ~SWR_UARTD_RST;		/* SWR_UARTD_RST = 0 */
+		clkrst->crc_rst_dev_u = reg;
+
+	} else if (uart_num == UART_A) {
+
+		/* Assert Reset to UART */
+		reg = clkrst->crc_rst_dev_l;
+		reg |= SWR_UARTA_RST;		/* SWR_UARTA_RST = 1 */
+		clkrst->crc_rst_dev_l = reg;
+
+		/* Enable clk to UART */
+		reg = clkrst->crc_clk_out_enb_l;
+		reg |= CLK_ENB_UARTA;		/* CLK_ENB_UARTA = 1 */
+		clkrst->crc_clk_out_enb_l = reg;
+
+		/* Enable pllp_out0 to UART */
+		reg = clkrst->crc_clk_src_uarta;
+		reg &= 0x3FFFFFFF;	/* UARTA_CLK_SRC = 00, PLLP_OUT0 */
+		clkrst->crc_clk_src_uarta = reg;
+
+		/* wait for 2us */
+		udelay(2);
+
+		/* De-assert reset to UART */
+		reg = clkrst->crc_rst_dev_l;
+		reg &= ~SWR_UARTA_RST;		/* SWR_UARTA_RST = 0 */
+		clkrst->crc_rst_dev_l = reg;
+
+	}
+}
+
+/*
+ * Routine: pin_mux_uart
+ * Description: setup the pin muxes/tristate values for UART based on uart_num
+ */
+void pin_mux_uart(int uart_num)
+{
+	pinmux_tri_ctlr *const pmt = (pinmux_tri_ctlr *)NV_PA_APB_MISC_BASE;
+	u32 reg;
+
+	if (uart_num == UART_D) {
+
+		reg = pmt->pmt_ctl_b;
+		reg &= 0xFFFFFFF3;	/* GMC_SEL [3:2] = 00, UARTD */
+		pmt->pmt_ctl_b = reg;
+
+		reg = pmt->pmt_tri_a;
+		reg &= ~Z_GMC;		/* Z_GMC = normal (0) */
+		pmt->pmt_tri_a = reg;
+
+	} else if (uart_num  == UART_A) {
+
+		reg = pmt->pmt_ctl_c;
+		reg &= 0xFFF0FFFF;	/* IRRX_/IRTX_SEL [19:16] = 00 UARTA */
+		pmt->pmt_ctl_c = reg;
+
+		reg = pmt->pmt_tri_a;
+		reg &= ~Z_IRRX;		/* Z_IRRX = normal (0) */
+		reg &= ~Z_IRTX;		/* Z_IRTX = normal (0) */
+		pmt->pmt_tri_a = reg;
+	}
+}
+
+void do_uart(uart_ctlr *u)
+{
+	u32 reg;
+
+	/* Prepare the divisor value */
+	reg = NVRM_PLLP_FIXED_FREQ_KHZ * 1000 / NV_DEFAULT_DEBUG_BAUD / 16;
+
+	/* Set up UART parameters */
+	u->uart_lcr = 0x80;
+	u->uart_thr_dlab_0 = reg;
+	u->uart_ier_dlab_0 = 0;
+	u->uart_lcr = 0;
+	u->uart_iir_fcr = 0x37;
+	u->uart_ier_dlab_0 = 0;
+	u->uart_lcr = 3;		/* 8N1 */
+	u->uart_mcr = 2;
+	u->uart_msr = 0;
+	u->uart_spr = 0;
+	u->uart_irda_csr = 0;
+	u->uart_asr = 0;
+	u->uart_iir_fcr = 0x31;
+
+	/* Flush any old characters out of the RX FIFO */
+	reg = u->uart_lsr;
+
+	while (reg & LSR_RDR) {
+		reg = u->uart_thr_dlab_0;
+		reg = u->uart_lsr;
+	}
+}
+
+/*
+ * Routine: init_uart
+ * Description: init the UART clocks, muxes, and baudrate/parity/etc.
+ */
+void init_uart(int uart_num)
+{
+	if (uart_num == UART_A) {
+		uart_ctlr *const uart = (uart_ctlr *)NV_PA_APB_UARTA_BASE;
+
+		uart_clock_init(UART_A);
+
+		/* Enable UARTA - uses config 0 */
+		pin_mux_uart(UART_A);
+
+		do_uart(uart);
+
+	} else if (uart_num == UART_D) {
+		uart_ctlr *const uart = (uart_ctlr *)NV_PA_APB_UARTD_BASE;
+
+		uart_clock_init(UART_D);
+
+		/* Enable UARTD - uses config 0 */
+		pin_mux_uart(UART_D);
+
+		do_uart(uart);
+	}
+}
+
+void uart_init(void)
+{
+#if (CONFIG_TEGRA2_ENABLE_UARTA)
+	init_uart(UART_A);
+#endif
+#if (CONFIG_TEGRA2_ENABLE_UARTD)
+	init_uart(UART_D);
+#endif
+}
diff --git a/board/tegra2/common/board.h b/board/tegra2/common/board.h
new file mode 100644
index 0000000..60525a8
--- /dev/null
+++ b/board/tegra2/common/board.h
@@ -0,0 +1,59 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 _COMMON_BOARD_H_
+#define _COMMON_BOARD_H_
+
+typedef unsigned int volatile vol_uint;
+
+#include <asm/arch/clk_rst.h>
+#include <asm/arch/pinmux.h>
+#include <asm/arch/uart.h>
+
+#define NVRM_PLLP_FIXED_FREQ_KHZ	216000
+#define NV_DEFAULT_DEBUG_BAUD		115200
+
+#define	PLL_BYPASS		(1 << 31)
+#define	PLL_ENABLE		(1 << 30)
+#define	PLL_BASE_OVRRIDE	(1 << 28)
+#define	PLL_DIVP		(1 << 20)	/* post divider, b22:20 */
+#define	PLL_DIVM		0x0C		/* input divider, b4:0 */
+
+#define	SWR_UARTD_RST		(1 << 2)
+#define CLK_ENB_UARTD		(1 << 2)
+#define	SWR_UARTA_RST		(1 << 6)
+#define CLK_ENB_UARTA		(1 << 6)
+
+#define	Z_GMC			(1 << 29)
+#define	Z_IRRX			(1 << 20)
+#define	Z_IRTX			(1 << 19)
+
+enum {
+	UART_A = 1,
+	UART_B,
+	UART_C,
+	UART_D,
+	UART_E
+};
+
+#endif /* _COMMON_BOARD_H_ */
diff --git a/common/serial.c b/common/serial.c
index 051ae4e..8ebf9a5 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -41,7 +41,8 @@ struct serial_device *__default_serial_console (void)
 #elif defined(CONFIG_4xx) \
    || defined(CONFIG_MB86R0x) || defined(CONFIG_MPC5xxx) \
    || defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) \
-   || defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520)
+   || defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520) \
+   || defined(CONFIG_TEGRA2)
 #if defined(CONFIG_CONS_INDEX) && defined(CONFIG_SYS_NS16550_SERIAL)
 #if (CONFIG_CONS_INDEX==1)
 	return &eserial1_device;
diff --git a/include/serial.h b/include/serial.h
index 15ab73c..f21d961 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -27,7 +27,8 @@ extern struct serial_device * default_serial_console (void);
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || defined(CONFIG_405EX) || \
     defined(CONFIG_MB86R0x) || defined(CONFIG_MPC5xxx) || \
     defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || \
-    defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520)
+    defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520) || \
+    defined(CONFIG_TEGRA2)
 extern struct serial_device serial0_device;
 extern struct serial_device serial1_device;
 #if defined(CONFIG_SYS_NS16550_SERIAL)
-- 
1.7.3.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 [U-Boot] [PATCH 0/3] Add basic NVIDIA Tegra2 SoC support Tom Warren
  2011-01-11 21:06 ` [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com> Tom Warren
@ 2011-01-11 21:06 ` Tom Warren
  2011-01-13  0:07   ` Peter Tyser
  2011-01-11 21:06 ` [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard " Tom Warren
  2 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2011-01-11 21:06 UTC (permalink / raw)
  To: u-boot

---
 MAINTAINERS                   |    4 +
 board/tegra2/harmony/Makefile |   50 ++++++++++++
 boards.cfg                    |    1 +
 include/configs/harmony.h     |   48 ++++++++++++
 include/configs/nv-common.h   |  166 +++++++++++++++++++++++++++++++++++++++++
 5 files changed, 269 insertions(+), 0 deletions(-)
 create mode 100644 board/tegra2/harmony/Makefile
 create mode 100644 include/configs/harmony.h
 create mode 100644 include/configs/nv-common.h

diff --git a/MAINTAINERS b/MAINTAINERS
index ba83f71..b5cff19 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -841,6 +841,10 @@ Prafulla Wadaskar <prafulla@marvell.com>
 	rd6281a		ARM926EJS (Kirkwood SoC)
 	sheevaplug	ARM926EJS (Kirkwood SoC)
 
+Tom Warren <twarren@nvidia.com>
+
+	harmony		Tegra2 (ARM7 & A9 Dual Core)
+
 Matthias Weisser <weisserm@arcor.de>
 
 	jadecpu		ARM926EJS (MB86R01 SoC)
diff --git a/board/tegra2/harmony/Makefile b/board/tegra2/harmony/Makefile
new file mode 100644
index 0000000..3a146cb
--- /dev/null
+++ b/board/tegra2/harmony/Makefile
@@ -0,0 +1,50 @@
+#
+#  (C) Copyright 2010,2011
+#  NVIDIA Corporation <www.nvidia.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).o
+
+COBJS	+= ../common/board.o
+
+SRCS	:= $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+	rm -f $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/boards.cfg b/boards.cfg
index 94b8745..6562bf5 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -122,6 +122,7 @@ omap4_panda                  arm         armv7       panda               ti
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 s5p_goni                     arm         armv7       goni                samsung        s5pc1xx
 smdkc100                     arm         armv7       smdkc100            samsung        s5pc1xx
+harmony                      arm         armv7       harmony             tegra2         tegra2
 actux1                       arm         ixp
 actux2                       arm         ixp
 actux3                       arm         ixp
diff --git a/include/configs/harmony.h b/include/configs/harmony.h
new file mode 100644
index 0000000..781ea45
--- /dev/null
+++ b/include/configs/harmony.h
@@ -0,0 +1,48 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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
+
+#include <asm/sizes.h>
+#include "nv-common.h"
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM		"mem=384M at 0M nvmem=128M at 384M mem=512M at 512M"
+#define V_PROMPT		"Tegra2 (Harmony) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"NVIDIA Harmony"
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA2_ENABLE_UARTD	1
+#define CONFIG_TEGRA2_ENABLE_UARTA	0
+
+/* UARTD: keyboard satellite board uart, default */
+#define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE
+/* UARTA: debug board uart */
+#define CONFIG_SYS_NS16550_COM2		NV_PA_APB_UARTA_BASE
+
+#define CONFIG_MACH_TYPE		MACH_TYPE_HARMONY
+#define CONFIG_SYS_BOARD_ODMDATA	0x300d8011 /* lp1, 1GB */
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/nv-common.h b/include/configs/nv-common.h
new file mode 100644
index 0000000..46872d3
--- /dev/null
+++ b/include/configs/nv-common.h
@@ -0,0 +1,166 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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 __TEGRA2_COMMON_H
+#define __TEGRA2_COMMON_H
+#include <asm/sizes.h>
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_ARMCORTEXA9		/* This is an ARM V7 CPU core */
+#define CONFIG_TEGRA2			/* in a NVidia Tegra2 core */
+#define CONFIG_MACH_TEGRA_GENERIC	/* which is a Tegra generic machine */
+#define CONFIG_L2_OFF			/* No L2 cache */
+
+#include <asm/arch/tegra2.h>		/* get chip and board defs */
+
+/*
+ * Display CPU and Board information
+ */
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#undef CONFIG_USE_IRQ
+
+#define CONFIG_SKIP_RELOCATE_UBOOT
+#define CONFIG_SKIP_LOWLEVEL_INIT
+
+#define CONFIG_CMDLINE_TAG		/* enable passing of ATAGs */
+
+/* Environment */
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE			0x20000	/* Total Size Environment */
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN		(4 << 20)	/* 4MB  */
+
+/*
+ * PllX Configuration
+ */
+#define CONFIG_SYS_CPU_OSC_FREQUENCY	1000000	/* Set CPU clock to 1GHz */
+
+/*
+ * NS16550 Configuration
+ */
+#define V_NS16550_CLK			216000000	/* 216MHz (pllp_out0) */
+
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
+#define CONFIG_SYS_NS16550_CLK		V_NS16550_CLK
+
+/*
+ * select serial console configuration
+ */
+#define CONFIG_CONS_INDEX	1
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_BAUDRATE			115200
+#define CONFIG_SYS_BAUDRATE_TABLE	{4800, 9600, 19200, 38400, 57600,\
+					115200}
+
+/* include default commands */
+#include <config_cmd_default.h>
+
+/* remove unused commands */
+#undef CONFIG_CMD_FLASH		/* flinfo, erase, protect */
+#undef CONFIG_CMD_FPGA		/* FPGA configuration support */
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_NFS		/* NFS support */
+#undef CONFIG_CMD_NET		/* network support */
+
+/* turn on command-line edit/hist/auto */
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_COMMAND_HISTORY
+#define CONFIG_AUTOCOMPLETE
+
+#define CONFIG_SYS_NO_FLASH
+
+/* Environment information */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+	"console=ttyS0,115200n8\0" \
+	"mem=" TEGRA2_SYSMEM "\0" \
+	"smpflag=smp\0" \
+
+#define CONFIG_LOADADDR		0x408000	/* def. location for kernel */
+#define CONFIG_BOOTDELAY	2		/* -1 to disable auto boot */
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP		/* undef to save memory */
+#define CONFIG_SYS_HUSH_PARSER		/* use "hush" command parser */
+#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
+#define CONFIG_SYS_PROMPT		V_PROMPT
+/*
+ * Increasing the size of the IO buffer as default nfsargs size is more
+ *  than 256 and so it is not possible to edit it
+ */
+#define CONFIG_SYS_CBSIZE		(256 * 2) /* Console I/O Buffer Size */
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
+					sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS		16	/* max number of command args */
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE		(CONFIG_SYS_CBSIZE)
+
+#define CONFIG_SYS_MEMTEST_START	(TEGRA2_SDRC_CS0 + 0x600000)
+#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + 0x100000)
+
+#define CONFIG_SYS_LOAD_ADDR		(0xA00800)	/* default */
+#define CONFIG_SYS_HZ			1000
+
+/*-----------------------------------------------------------------------
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKBASE	0x2800000	/* 40MB */
+#define CONFIG_STACKSIZE	0x20000		/* 128K regular stack*/
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ	0x1000		/* 4K IRQ stack */
+#define CONFIG_STACKSIZE_FIQ	0x1000		/* 4K FIQ stack */
+#endif
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS	1
+#define PHYS_SDRAM_1		TEGRA2_SDRC_CS0
+#define PHYS_SDRAM_1_SIZE	0x20000000	/* 512M */
+
+#define CONFIG_SYS_TEXT_BASE	0x00E08000
+#define CONFIG_SYS_SDRAM_BASE	PHYS_SDRAM_1
+
+#define CONFIG_SYS_INIT_RAM_ADDR	CONFIG_STACKBASE
+#define CONFIG_SYS_INIT_RAM_SIZE	CONFIG_SYS_MALLOC_LEN
+#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \
+						CONFIG_SYS_INIT_RAM_SIZE - \
+						GENERATED_GBL_DATA_SIZE)
+
+#endif /* __CONFIG_H */
-- 
1.7.3.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 [U-Boot] [PATCH 0/3] Add basic NVIDIA Tegra2 SoC support Tom Warren
  2011-01-11 21:06 ` [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com> Tom Warren
  2011-01-11 21:06 ` [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board " Tom Warren
@ 2011-01-11 21:06 ` Tom Warren
  2011-01-12  0:16   ` Paulraj, Sandeep
  2 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2011-01-11 21:06 UTC (permalink / raw)
  To: u-boot

---
 MAINTAINERS                       |    1 +
 arch/arm/include/asm/mach-types.h |    1 +
 board/tegra2/seaboard/Makefile    |   50 +++++++++++++++++++++++++++++++++++++
 boards.cfg                        |    1 +
 include/configs/seaboard.h        |   43 +++++++++++++++++++++++++++++++
 5 files changed, 96 insertions(+), 0 deletions(-)
 create mode 100644 board/tegra2/seaboard/Makefile
 create mode 100644 include/configs/seaboard.h

diff --git a/MAINTAINERS b/MAINTAINERS
index b5cff19..f4795d3 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -844,6 +844,7 @@ Prafulla Wadaskar <prafulla@marvell.com>
 Tom Warren <twarren@nvidia.com>
 
 	harmony		Tegra2 (ARM7 & A9 Dual Core)
+	seaboard	Tegra2 (ARM7 & A9 Dual Core)
 
 Matthias Weisser <weisserm@arcor.de>
 
diff --git a/arch/arm/include/asm/mach-types.h b/arch/arm/include/asm/mach-types.h
index 8b0208a..45239f3 100644
--- a/arch/arm/include/asm/mach-types.h
+++ b/arch/arm/include/asm/mach-types.h
@@ -2984,6 +2984,7 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_AWM2                 3003
 #define MACH_TYPE_TI8148EVM            3004
 #define MACH_TYPE_TEGRA_SEABOARD       3005
+#define MACH_TYPE_SEABOARD             3005
 #define MACH_TYPE_LINKSTATION_CHLV2    3006
 #define MACH_TYPE_TERA_PRO2_RACK       3007
 #define MACH_TYPE_RUBYS                3008
diff --git a/board/tegra2/seaboard/Makefile b/board/tegra2/seaboard/Makefile
new file mode 100644
index 0000000..3a146cb
--- /dev/null
+++ b/board/tegra2/seaboard/Makefile
@@ -0,0 +1,50 @@
+#
+#  (C) Copyright 2010,2011
+#  NVIDIA Corporation <www.nvidia.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).o
+
+COBJS	+= ../common/board.o
+
+SRCS	:= $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+	rm -f $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/boards.cfg b/boards.cfg
index 6562bf5..abdb06d 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -123,6 +123,7 @@ omap4_sdp4430                arm         armv7       sdp4430             ti
 s5p_goni                     arm         armv7       goni                samsung        s5pc1xx
 smdkc100                     arm         armv7       smdkc100            samsung        s5pc1xx
 harmony                      arm         armv7       harmony             tegra2         tegra2
+seaboard                     arm         armv7       seaboard            tegra2         tegra2
 actux1                       arm         ixp
 actux2                       arm         ixp
 actux3                       arm         ixp
diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h
new file mode 100644
index 0000000..f21849f
--- /dev/null
+++ b/include/configs/seaboard.h
@@ -0,0 +1,43 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.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
+
+#include <asm/sizes.h>
+#include "nv-common.h"
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM		"mem=384M at 0M nvmem=128M at 384M mem=512M at 512M"
+#define V_PROMPT		"Tegra2 (SeaBoard) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"NVIDIA Seaboard"
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA2_ENABLE_UARTD	1
+#define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE
+
+#define CONFIG_MACH_TYPE		MACH_TYPE_SEABOARD
+#define CONFIG_SYS_BOARD_ODMDATA	0x300d8011 /* lp1, 1GB */
+
+#endif /* __CONFIG_H */
-- 
1.7.3.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 ` [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard " Tom Warren
@ 2011-01-12  0:16   ` Paulraj, Sandeep
  2011-01-12  0:43     ` Tom Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Paulraj, Sandeep @ 2011-01-12  0:16 UTC (permalink / raw)
  To: u-boot

Hi Tom,

Nice to see support for this board

> #define MACH_TYPE_TI8148EVM            3004
>#define MACH_TYPE_TEGRA_SEABOARD       3005
>+#define MACH_TYPE_SEABOARD             3005


I don't think this is the way it is supposed to be done.
Patches should not contain an addition to mach-types.h.
What is generally done is you ask for an ARM sync request and in the past
Tom Rix and I have updated mach-types.h.

I did this some weeks ago.

Also i think we cannot have 2 EVMs with same MACH_TYPE_
You should probably go to ARM Linux website and register as a separate EVM.
The Number you get from there should be used. I beleive you can also change the name of the 
board there; assu,ing you intend to use MACH_TYPE_SEABOARD  instead of MACH_TYPE_TEGRA_SEABOARD.

It usually takes a little bit of time for the mach-types to be updated in the 
linux kernel. Once that is done we sync up with the kernel.

Regards,
Sandeep

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-12  0:16   ` Paulraj, Sandeep
@ 2011-01-12  0:43     ` Tom Warren
  2011-01-12  1:59       ` Paulraj, Sandeep
  0 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2011-01-12  0:43 UTC (permalink / raw)
  To: u-boot

Thanks, Sandeep.

As I understand it, one of our Tegra2 kernel jockeys (Allen Martin or similar) has already had the kernel version of mach-types.h updated for Seaboard - I was just attempting to use the correct #define (MACH_TYPE_SEABOARD - we dropped all of the MACH_TYPE_TEGRA_ names AFAIK) so my patch would build/boot. Of course this define doesn't matter until the kernel is booting w/the upstreamed U-Boot, which is a ways off (it boots fine here w/our private version of U-Boot based on V2010-09).

Assuming I'm correct about the Linux version of mach-types already having been updated, how do I get a sync request in?  And how is that phased in to match with my patches so that it all builds/boots?

Thanks,

Tom

> -----Original Message-----
> From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
> Sent: Tuesday, January 11, 2011 5:16 PM
> To: Tom Warren; u-boot at lists.denx.de
> Cc: Tom Warren
> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
> Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
> 
> Hi Tom,
> 
> Nice to see support for this board
> 
> > #define MACH_TYPE_TI8148EVM            3004
> >#define MACH_TYPE_TEGRA_SEABOARD       3005
> >+#define MACH_TYPE_SEABOARD             3005
> 
> 
> I don't think this is the way it is supposed to be done.
> Patches should not contain an addition to mach-types.h.
> What is generally done is you ask for an ARM sync request and in the past
> Tom Rix and I have updated mach-types.h.
> 
> I did this some weeks ago.
> 
> Also i think we cannot have 2 EVMs with same MACH_TYPE_
> You should probably go to ARM Linux website and register as a separate EVM.
> The Number you get from there should be used. I beleive you can also change
> the name of the
> board there; assu,ing you intend to use MACH_TYPE_SEABOARD  instead of
> MACH_TYPE_TEGRA_SEABOARD.
> 
> It usually takes a little bit of time for the mach-types to be updated in
> the
> linux kernel. Once that is done we sync up with the kernel.
> 
> Regards,
> Sandeep
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-12  0:43     ` Tom Warren
@ 2011-01-12  1:59       ` Paulraj, Sandeep
  2011-01-12 17:05         ` Tom Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Paulraj, Sandeep @ 2011-01-12  1:59 UTC (permalink / raw)
  To: u-boot

Hi Tom,

We keep the U-Boot in sync with what is at

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=history;f=arch/arm/tools/mach-types;h=2fea897ebeb12959415120a7c1cdcaf5d8ac8fee;hb=4162cf64973df51fc885825bc9ca4d055891c49f

I can see that the kernel does not have the updated name yet.

Since it is only required while booting a kernel,
i would just keep the old name for the time being. When the kernel has this update, we will 
update U-Boot and then you will have to send in a patch to reflect this change.
In any case u mention that you have follow up patches. By the time u get all the patches
accepted, the mach-types would have been updated in the kernel and in U-boot.

Also in one of ur patches you had updates to serial driver. You will have to keep that
change in a separte patch.

Regards,
Sandeep
________________________________________
From: Tom Warren [TWarren at nvidia.com]
Sent: Tuesday, January 11, 2011 7:43 PM
To: Paulraj, Sandeep; Tom Warren; u-boot at lists.denx.de
Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard  board Signed-off-by: Tom Warren <twarren@nvidia.com>

Thanks, Sandeep.

As I understand it, one of our Tegra2 kernel jockeys (Allen Martin or similar) has already had the kernel version of mach-types.h updated for Seaboard - I was just attempting to use the correct #define (MACH_TYPE_SEABOARD - we dropped all of the MACH_TYPE_TEGRA_ names AFAIK) so my patch would build/boot. Of course this define doesn't matter until the kernel is booting w/the upstreamed U-Boot, which is a ways off (it boots fine here w/our private version of U-Boot based on V2010-09).

Assuming I'm correct about the Linux version of mach-types already having been updated, how do I get a sync request in?  And how is that phased in to match with my patches so that it all builds/boots?

Thanks,

Tom

> -----Original Message-----
> From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
> Sent: Tuesday, January 11, 2011 5:16 PM
> To: Tom Warren; u-boot at lists.denx.de
> Cc: Tom Warren
> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
> Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
>
> Hi Tom,
>
> Nice to see support for this board
>
> > #define MACH_TYPE_TI8148EVM            3004
> >#define MACH_TYPE_TEGRA_SEABOARD       3005
> >+#define MACH_TYPE_SEABOARD             3005
>
>
> I don't think this is the way it is supposed to be done.
> Patches should not contain an addition to mach-types.h.
> What is generally done is you ask for an ARM sync request and in the past
> Tom Rix and I have updated mach-types.h.
>
> I did this some weeks ago.
>
> Also i think we cannot have 2 EVMs with same MACH_TYPE_
> You should probably go to ARM Linux website and register as a separate EVM.
> The Number you get from there should be used. I beleive you can also change
> the name of the
> board there; assu,ing you intend to use MACH_TYPE_SEABOARD  instead of
> MACH_TYPE_TEGRA_SEABOARD.
>
> It usually takes a little bit of time for the mach-types to be updated in
> the
> linux kernel. Once that is done we sync up with the kernel.
>
> Regards,
> Sandeep
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-12  1:59       ` Paulraj, Sandeep
@ 2011-01-12 17:05         ` Tom Warren
  2011-01-12 23:10           ` Tom Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2011-01-12 17:05 UTC (permalink / raw)
  To: u-boot

> -----Original Message-----
> From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
> Sent: Tuesday, January 11, 2011 7:00 PM
> To: Tom Warren; Tom Warren; u-boot at lists.denx.de
> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
> Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
> 
> Hi Tom,
[Tom Warren] Hi. Sorry for top-quoting before. My comments are now in-line.
Note that I've put in a request to my IT department to remove the 'confidential information'
b.s. disclaimer that is appended to all my outgoing Outlook emails. If anyone knows how to get
Gmail to use the standard ">" reply-to quoting, I can start using my Gmail account instead.

> 
> We keep the U-Boot in sync with what is at
> 
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-
> 2.6.git;a=history;f=arch/arm/tools/mach-
> types;h=2fea897ebeb12959415120a7c1cdcaf5d8ac8fee;hb=4162cf64973df51fc885825b
> c9ca4d055891c49f
> 
> I can see that the kernel does not have the updated name yet.
[Tom Warren] I'm surprised, since I was told the kernel's copy had been updated.
I'll check with the kernel guys - perhaps it only went into Android's kernel, etc.

> 
> Since it is only required while booting a kernel,
> i would just keep the old name for the time being. When the kernel has this
> update, we will
> update U-Boot and then you will have to send in a patch to reflect this
> change.
> In any case u mention that you have follow up patches. By the time u get all
> the patches
> accepted, the mach-types would have been updated in the kernel and in U-
> boot.
> 
[Tom Warren] Good idea. I'll pull out the mach-types.h change in the next (V2) patch series.

> Also in one of ur patches you had updates to serial driver. You will have to
> keep that change in a separate patch.
[Tom Warren] Why separate? It's an integral part of adding Tegra2 support, which is what the 1st patch does.
But if that's required, then I'll change that, too, in V2.
> 
> Regards,
> Sandeep
> ________________________________________
> From: Tom Warren [TWarren at nvidia.com]
> Sent: Tuesday, January 11, 2011 7:43 PM
> To: Paulraj, Sandeep; Tom Warren; u-boot at lists.denx.de
> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
> Seaboard  board Signed-off-by: Tom Warren <twarren@nvidia.com>
> 
> Thanks, Sandeep.
> 
> As I understand it, one of our Tegra2 kernel jockeys (Allen Martin or
> similar) has already had the kernel version of mach-types.h updated for
> Seaboard - I was just attempting to use the correct #define
> (MACH_TYPE_SEABOARD - we dropped all of the MACH_TYPE_TEGRA_ names AFAIK) so
> my patch would build/boot. Of course this define doesn't matter until the
> kernel is booting w/the upstreamed U-Boot, which is a ways off (it boots
> fine here w/our private version of U-Boot based on V2010-09).
> 
> Assuming I'm correct about the Linux version of mach-types already having
> been updated, how do I get a sync request in?  And how is that phased in to
> match with my patches so that it all builds/boots?
> 
> Thanks,
> 
> Tom
> 
> > -----Original Message-----
> > From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
> > Sent: Tuesday, January 11, 2011 5:16 PM
> > To: Tom Warren; u-boot at lists.denx.de
> > Cc: Tom Warren
> > Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
> > Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
> >
> > Hi Tom,
> >
> > Nice to see support for this board
> >
> > > #define MACH_TYPE_TI8148EVM            3004
> > >#define MACH_TYPE_TEGRA_SEABOARD       3005
> > >+#define MACH_TYPE_SEABOARD             3005
> >
> >
> > I don't think this is the way it is supposed to be done.
> > Patches should not contain an addition to mach-types.h.
> > What is generally done is you ask for an ARM sync request and in the past
> > Tom Rix and I have updated mach-types.h.
> >
> > I did this some weeks ago.
> >
> > Also i think we cannot have 2 EVMs with same MACH_TYPE_
> > You should probably go to ARM Linux website and register as a separate
> EVM.
> > The Number you get from there should be used. I beleive you can also
> change
> > the name of the
> > board there; assu,ing you intend to use MACH_TYPE_SEABOARD  instead of
> > MACH_TYPE_TEGRA_SEABOARD.
> >
> > It usually takes a little bit of time for the mach-types to be updated in
> > the
> > linux kernel. Once that is done we sync up with the kernel.
> >
> > Regards,
> > Sandeep
> ----------------------------------------------------------------------------
> -------
> This email message is for the sole use of the intended recipient(s) and may
> contain
> confidential information.  Any unauthorized review, use, disclosure or
> distribution
> is prohibited.  If you are not the intended recipient, please contact the
> sender by
> reply email and destroy all copies of the original message.
> ----------------------------------------------------------------------------
> -------

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-12 17:05         ` Tom Warren
@ 2011-01-12 23:10           ` Tom Warren
  0 siblings, 0 replies; 11+ messages in thread
From: Tom Warren @ 2011-01-12 23:10 UTC (permalink / raw)
  To: u-boot

Replying from my Gmail account until NVIDIA IT can remove the canned disclaimer.

Sorry for the top-quote - just wanted to see if Gmail would correctly
quote previous text.

If there are no other critiques or NAKs, etc., then I'll start working
on a V2 patch with
Sandeep's changes.

Thanks,

Tom

On Wed, Jan 12, 2011 at 10:05 AM, Tom Warren <TWarren@nvidia.com> wrote:
>> -----Original Message-----
>> From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
>> Sent: Tuesday, January 11, 2011 7:00 PM
>> To: Tom Warren; Tom Warren; u-boot at lists.denx.de
>> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
>> Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
>>
>> Hi Tom,
> [Tom Warren] Hi. Sorry for top-quoting before. My comments are now in-line.
> Note that I've put in a request to my IT department to remove the 'confidential information'
> b.s. disclaimer that is appended to all my outgoing Outlook emails. If anyone knows how to get
> Gmail to use the standard ">" reply-to quoting, I can start using my Gmail account instead.
>
>>
>> We keep the U-Boot in sync with what is at
>>
>> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-
>> 2.6.git;a=history;f=arch/arm/tools/mach-
>> types;h=2fea897ebeb12959415120a7c1cdcaf5d8ac8fee;hb=4162cf64973df51fc885825b
>> c9ca4d055891c49f
>>
>> I can see that the kernel does not have the updated name yet.
> [Tom Warren] I'm surprised, since I was told the kernel's copy had been updated.
> I'll check with the kernel guys - perhaps it only went into Android's kernel, etc.
>
>>
>> Since it is only required while booting a kernel,
>> i would just keep the old name for the time being. When the kernel has this
>> update, we will
>> update U-Boot and then you will have to send in a patch to reflect this
>> change.
>> In any case u mention that you have follow up patches. By the time u get all
>> the patches
>> accepted, the mach-types would have been updated in the kernel and in U-
>> boot.
>>
> [Tom Warren] Good idea. I'll pull out the mach-types.h change in the next (V2) patch series.
>
>> Also in one of ur patches you had updates to serial driver. You will have to
>> keep that change in a separate patch.
> [Tom Warren] Why separate? It's an integral part of adding Tegra2 support, which is what the 1st patch does.
> But if that's required, then I'll change that, too, in V2.
>>
>> Regards,
>> Sandeep
>> ________________________________________
>> From: Tom Warren [TWarren at nvidia.com]
>> Sent: Tuesday, January 11, 2011 7:43 PM
>> To: Paulraj, Sandeep; Tom Warren; u-boot at lists.denx.de
>> Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
>> Seaboard ?board Signed-off-by: Tom Warren <twarren@nvidia.com>
>>
>> Thanks, Sandeep.
>>
>> As I understand it, one of our Tegra2 kernel jockeys (Allen Martin or
>> similar) has already had the kernel version of mach-types.h updated for
>> Seaboard - I was just attempting to use the correct #define
>> (MACH_TYPE_SEABOARD - we dropped all of the MACH_TYPE_TEGRA_ names AFAIK) so
>> my patch would build/boot. Of course this define doesn't matter until the
>> kernel is booting w/the upstreamed U-Boot, which is a ways off (it boots
>> fine here w/our private version of U-Boot based on V2010-09).
>>
>> Assuming I'm correct about the Linux version of mach-types already having
>> been updated, how do I get a sync request in? ?And how is that phased in to
>> match with my patches so that it all builds/boots?
>>
>> Thanks,
>>
>> Tom
>>
>> > -----Original Message-----
>> > From: Paulraj, Sandeep [mailto:s-paulraj at ti.com]
>> > Sent: Tuesday, January 11, 2011 5:16 PM
>> > To: Tom Warren; u-boot at lists.denx.de
>> > Cc: Tom Warren
>> > Subject: RE: [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA
>> > Seaboard board Signed-off-by: Tom Warren <twarren@nvidia.com>
>> >
>> > Hi Tom,
>> >
>> > Nice to see support for this board
>> >
>> > > #define MACH_TYPE_TI8148EVM ? ? ? ? ? ?3004
>> > >#define MACH_TYPE_TEGRA_SEABOARD ? ? ? 3005
>> > >+#define MACH_TYPE_SEABOARD ? ? ? ? ? ? 3005
>> >
>> >
>> > I don't think this is the way it is supposed to be done.
>> > Patches should not contain an addition to mach-types.h.
>> > What is generally done is you ask for an ARM sync request and in the past
>> > Tom Rix and I have updated mach-types.h.
>> >
>> > I did this some weeks ago.
>> >
>> > Also i think we cannot have 2 EVMs with same MACH_TYPE_
>> > You should probably go to ARM Linux website and register as a separate
>> EVM.
>> > The Number you get from there should be used. I beleive you can also
>> change
>> > the name of the
>> > board there; assu,ing you intend to use MACH_TYPE_SEABOARD ?instead of
>> > MACH_TYPE_TEGRA_SEABOARD.
>> >
>> > It usually takes a little bit of time for the mach-types to be updated in
>> > the
>> > linux kernel. Once that is done we sync up with the kernel.
>> >
>> > Regards,
>> > Sandeep
>> ----------------------------------------------------------------------------
>> -------
>> This email message is for the sole use of the intended recipient(s) and may
>> contain
>> confidential information. ?Any unauthorized review, use, disclosure or
>> distribution
>> is prohibited. ?If you are not the intended recipient, please contact the
>> sender by
>> reply email and destroy all copies of the original message.
>> ----------------------------------------------------------------------------
>> -------
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 ` [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com> Tom Warren
@ 2011-01-12 23:56   ` Peter Tyser
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Tyser @ 2011-01-12 23:56 UTC (permalink / raw)
  To: u-boot

Hi,

Your Signed-off-by seems to have made its way into the subject line.  It
should be moved into the email contents.  A brief description of what
this patch does, what peripherals are supported, etc would be nice too.

<snip>

>  create mode 100644 board/tegra2/common/board.c
>  create mode 100644 board/tegra2/common/board.h

The format of the board directory is generally board/<vendor>/<board> or
board/<board> if the vendor only plans on maintaining 1 board.  If these
are nvidia-supported boards I'd think board/nvidia is the proper place
to add files board-specific files.

<snip>

> +/*
> + * Boot ROM initializes the odmdata in APBDEV_PMC_SCRATCH20_0,
> + * so we are using this value to identify memory size.
> + */
> +
> +static unsigned int query_sdram_size(void)
> +{
> +	pmc_ctlr *const pmc = (pmc_ctlr *)NV_PA_PMC_BASE;
> +	u32 reg;
> +
> +	reg = pmc->pmc_scratch20;

In powerpc-land we use io access functions to access registers, eg
in_be32().  I'm not familiar with ARM, but I'd guess they should be used
in general.  Someone with ARM experience feel free to chime in here.

> +	debug("pmc->pmc_scratch20 (ODMData) = 0x%08lX\n", reg);
> +
> +	/* bits 31:28 in OdmData are used for RAM size  */
> +	switch ((reg) >> 28) {
> +	case 1:
> +		return 0x10000000;	/* 256 MB */
> +	case 2:
> +		return 0x20000000;	/* 512 MB */
> +	case 3:
> +	default:
> +		return 0x40000000;	/* 1GB */
> +	}
> +}

<snip>

> +#ifndef _CLK_RST_H_
> +#define _CLK_RST_H_
> +
> +/* Clock/Reset Controller (CLK_RST_CONTROLLER_) regs */
> +

Instead of adding a new vol_uint typedef and making each field of this
struct vol_uint, you can make each one uint, then instantiate the
structure as volatile.

There are a mixture of lower and upper case hex digits in the comments
below too - it'd be good to be consistent.

> +typedef struct clk_rst_ctlr {
> +	vol_uint crc_rst_src;		/* _RST_SOURCE_0,	0x00*/
> +	vol_uint crc_rst_dev_l;		/* _RST_DEVICES_L_0,	0x04*/
> +	vol_uint crc_rst_dev_h;		/* _RST_DEVICES_H_0,	0x08*/
> +	vol_uint crc_rst_dev_u;		/* _RST_DEVICES_U_0,	0x0C*/
> +	vol_uint crc_clk_out_enb_l;	/* _CLK_OUT_ENB_L_0,	0x10*/
> +	vol_uint crc_clk_out_enb_h;	/* _CLK_OUT_ENB_H_0,	0x14*/
> +	vol_uint crc_clk_out_enb_u;	/* _CLK_OUT_ENB_U_0,	0x18*/
> +	vol_uint crc_reserved0;		/* reserved_0,		0x1c*/
> +	vol_uint crc_cclk_brst_pol;	/* _CCLK_BURST_POLICY_0,0x20*/
> +	vol_uint crc_super_cclk_div;	/* _SUPER_CCLK_DIVIDER_0,0x24*/
> +	vol_uint crc_sclk_brst_pol;	/* _SCLK_BURST_POLICY_0, 0x28*/
> +	vol_uint crc_super_sclk_div;	/* _SUPER_SCLK_DIVIDER_0,0x2C*/
> +	vol_uint crc_clk_sys_rate;	/* _CLK_SYSTEM_RATE_0,	0x30*/
> +	vol_uint crc_prog_dly_clk;	/* _PROG_DLY_CLK_0,	0x34*/
> +	vol_uint crc_aud_sync_clk_rate;	/* _AUDIO_SYNC_CLK_RATE_0,0x38*/
> +	vol_uint crc_reserved1;		/* reserved_1,		0x3c*/
> +	vol_uint crc_cop_clk_skip_plcy;	/* _COP_CLK_SKIP_POLICY_0,0x40*/
> +	vol_uint crc_clk_mask_arm;	/* _CLK_MASK_ARM_0,	0x44*/
> +	vol_uint crc_misc_clk_enb;	/* _MISC_CLK_ENB_0,	0x48*/
> +	vol_uint crc_clk_cpu_cmplx;	/* _CLK_CPU_CMPLX_0,	0x4C*/
> +	vol_uint crc_osc_ctrl;		/* _OSC_CTRL_0,		0x50*/
> +	vol_uint crc_pll_lfsr;		/* _PLL_LFSR_0,		0x54*/
> +	vol_uint crc_osc_freq_det;	/* _OSC_FREQ_DET_0,	0x58*/
> +	vol_uint crc_osc_freq_det_stat;	/* _OSC_FREQ_DET_STATUS_0,0x5C*/
> +	vol_uint crc_reserved2[8];	/* reserved_2[8],	0x60-7C*/
> +
> +	vol_uint crc_pllc_base;		/* _PLLC_BASE_0,	0x80*/
> +	vol_uint crc_pllc_out;		/* _PLLC_OUT_0,		0x84*/
> +	vol_uint crc_reserved3;		/* reserved_3,		0x88*/
> +	vol_uint crc_pllc_misc;		/* _PLLC_MISC_0,	0x8C*/
> +
> +	vol_uint crc_pllm_base;		/* _PLLM_BASE_0,	0x90*/
> +	vol_uint crc_pllm_out;		/* _PLLM_OUT_0,		0x94*/
> +	vol_uint crc_reserved4;		/* reserved_4,		0x98*/
> +	vol_uint crc_pllm_misc;		/* _PLLM_MISC_0,	0x9C*/
> +
> +	vol_uint crc_pllp_base;		/* _PLLP_BASE_0,	0xA0*/
> +	vol_uint crc_pllp_outa;		/* _PLLP_OUTA_0,	0xA4*/
> +	vol_uint crc_pllp_outb;		/* _PLLP_OUTB_0,	0xA8*/
> +	vol_uint crc_pllp_misc;		/* _PLLP_MISC_0,	0xAC*/
> +
> +	vol_uint crc_plla_base;		/* _PLLA_BASE_0,	0xB0*/
> +	vol_uint crc_plla_out;		/* _PLLA_OUT_0,		0xB4*/
> +	vol_uint crc_reserved5;		/* reserved_5,		0xB8*/
> +	vol_uint crc_plla_misc;		/* _PLLA_MISC_0,	0xBC*/
> +
> +	vol_uint crc_pllu_base;		/* _PLLU_BASE_0,	0xC0*/
> +	vol_uint crc_reserved6;		/* _reserved_6,		0xC4*/
> +	vol_uint crc_reserved7;		/* _reserved_7,		0xC8*/
> +	vol_uint crc_pllu_misc;		/* _PLLU_MISC_0,	0xCC*/
> +
> +	vol_uint crc_plld_base;		/* _PLLD_BASE_0,	0xD0*/
> +	vol_uint crc_reserved8;		/* _reserved_8,		0xD4*/
> +	vol_uint crc_reserved9;		/* _reserved_9,		0xD8*/
> +	vol_uint crc_plld_misc;		/* _PLLD_MISC_0,	0xDC*/
> +
> +	vol_uint crc_pllx_base;		/* _PLLX_BASE_0,	0xE0*/
> +	vol_uint crc_pllx_misc;		/* _PLLX_MISC_0,	0xE4*/
> +
> +	vol_uint crc_plle_base;		/* _PLLE_BASE_0,	0xE8*/
> +	vol_uint crc_plle_misc;		/* _PLLE_MISC_0,	0xEC*/
> +
> +	vol_uint crc_plls_base;		/* _PLLS_BASE_0,	0xF0*/
> +	vol_uint crc_plls_misc;		/* _PLLS_MISC_0,	0xF4*/
> +	vol_uint crc_reserved10;	/* _reserved_10,	0xF8*/
> +	vol_uint crc_reserved11;	/* _reserved_11,	0xFC*/
> +
> +	vol_uint crc_clk_src_i2s1;	/*_I2S1_0,		0x100*/
> +	vol_uint crc_clk_src_i2s2;	/*_I2S2_0,		0x104*/
> +	vol_uint crc_clk_src_spdif_out;	/*_SPDIF_OUT_0,		0x108*/
> +	vol_uint crc_clk_src_spdif_in;	/*_SPDIF_IN_0,		0x10C*/
> +	vol_uint crc_clk_src_pwm;	/*_PWM_0,		0x110*/
> +	vol_uint crc_clk_src_spi1;	/*_SPI1_0,		0x114*/
> +	vol_uint crc_clk_src_sbc2;	/*_SBC2_0,		0x118*/
> +	vol_uint crc_clk_src_sbc3;	/*_SBC3_0,		0x11C*/
> +	vol_uint crc_clk_src_xio;	/*_XIO_0,		0x120*/
> +	vol_uint crc_clk_src_i2c1;	/*_I2C1_0,		0x124*/
> +	vol_uint crc_clk_src_dvc_i2c;	/*_DVC_I2C_0,		0x128*/
> +	vol_uint crc_clk_src_twc;	/*_TWC_0,		0x12C*/
> +	vol_uint crc_reserved12;	/*			0x130*/
> +	vol_uint crc_clk_src_sbc1;	/*_SBC1_0,		0x134*/
> +	vol_uint crc_clk_src_disp1;	/*_DISP1_0,		0x138*/
> +	vol_uint crc_clk_src_disp2;	/*_DISP2_0,		0x13C*/
> +	vol_uint crc_clk_src_cve;	/*_CVE_0,		0x140*/
> +	vol_uint crc_clk_src_ide;	/*_IDE_0,		0x144*/
> +	vol_uint crc_clk_src_vi;	/*_VI_0,		0x148*/
> +	vol_uint crc_reserved13;	/*			0x14c*/
> +	vol_uint crc_clk_src_sdmmc1;	/*_SDMMC1_0,		0x150*/
> +	vol_uint crc_clk_src_sdmmc2;	/*_SDMMC2_0,		0x154*/
> +	vol_uint crc_clk_src_g3d;	/*_G3D_0,		0x158*/
> +	vol_uint crc_clk_src_g2d;	/*_G2D_0,		0x15C*/
> +	vol_uint crc_clk_src_ndflash;	/*_NDFLASH_0,		0x160*/
> +	vol_uint crc_clk_src_sdmmc4;	/*_SDMMC4_0,		0x164*/
> +	vol_uint crc_clk_src_vfir;	/*_VFIR_0,		0x168*/
> +	vol_uint crc_clk_src_epp;	/*_EPP_0,		0x16C*/
> +	vol_uint crc_clk_src_mp3;	/*_MPE_0,		0x170*/
> +	vol_uint crc_clk_src_mipi;	/*_MIPI_0,		0x174*/
> +	vol_uint crc_clk_src_uarta;	/*_UARTA_0,		0x178*/
> +	vol_uint crc_clk_src_uartb;	/*_UARTB_0,		0x17C*/
> +	vol_uint crc_clk_src_host1x;	/*_HOST1X_0,		0x180*/
> +	vol_uint crc_reserved14;	/*			0x184*/
> +	vol_uint crc_clk_src_tvo;	/*_TVO_0,		0x188*/
> +	vol_uint crc_clk_src_hdmi;	/*_HDMI_0,		0x18C*/
> +	vol_uint crc_reserved15;	/*			0x190*/
> +	vol_uint crc_clk_src_tvdac;	/*_TVDAC_0,		0x194*/
> +	vol_uint crc_clk_src_i2c2;	/*_I2C2_0,		0x198*/
> +	vol_uint crc_clk_src_emc;	/*_EMC_0,		0x19C*/
> +	vol_uint crc_clk_src_uartc;	/*_UARTC_0,		0x1A0*/
> +	vol_uint crc_reserved16;	/*			0x1a4*/
> +	vol_uint crc_clk_src_vi_sensor;	/*_VI_SENSOR_0,		0x1A8*/
> +	vol_uint crc_reserved17;	/*			0x1ac*/
> +	vol_uint crc_reserved18;	/*			0x1b0*/
> +	vol_uint crc_clk_src_sbc4;	/*_SBC4_0,		0x1B4*/
> +	vol_uint crc_clk_src_i2c3;	/*_I2C3_0,		0x1B8*/
> +	vol_uint crc_clk_src_sdmmc3;	/*_SDMMC3_0,		0x1BC*/
> +	vol_uint crc_clk_src_uartd;	/*_UARTD_0,		0x1C0*/
> +	vol_uint crc_clk_src_uarte;	/*_UARTE_0,		0x1C4*/
> +	vol_uint crc_clk_src_vde;	/*_VDE_0,		0x1C8*/
> +	vol_uint crc_clk_src_owr;	/*_OWR_0,		0x1CC*/
> +	vol_uint crc_clk_src_nor;	/*_NOR_0,		0x1D0*/
> +	vol_uint crc_clk_src_csite;	/*_CSITE_0,		0x1D4*/
> +	vol_uint crc_reserved19[9];	/*			0x1d8-1F8*/
> +	vol_uint crc_clk_src_osc;	/*_OSC_0,		0x1FC*/
> +} clk_rst_ctlr;

<snip>

> +#ifndef _PMC_H_
> +#define _PMC_H_
> +typedef unsigned int volatile vol_uint;

Same volatile comment applies here.  Probably applies to the remainder
of the patch.

> +/* Power Management Controller (APBDEV_PMC_) registers */
> +
> +typedef struct pmc_ctlr {
> +	vol_uint pmc_cntrl;		/* _CNTRL_0, offset 00 */
> +	vol_uint pmc_sec_disable;	/* _SEC_DISABLE_0, offset 04 */
> +	vol_uint pmc_pmc_swrst;		/* _PMC_SWRST_0, offset 08 */
> +	vol_uint pmc_wake_mask;		/* _WAKE_MASK_0, offset 0C */
> +	vol_uint pmc_wake_lvl;		/* _WAKE_LVL_0, offset 10 */
> +	vol_uint pmc_wake_status;	/* _WAKE_STATUS_0, offset 14 */
> +	vol_uint pmc_sw_wake_status;	/* _SW_WAKE_STATUS_0, offset 18 */
> +	vol_uint pmc_dpd_pads_oride;	/* _DPD_PADS_ORIDE_0, offset 1C */
> +	vol_uint pmc_dpd_sample;	/* _DPD_PADS_SAMPLE_0, offset 20 */
> +	vol_uint pmc_dpd_enable;	/* _DPD_PADS_ENABLE_0, offset 24 */
> +	vol_uint pmc_pwrgate_timer_off;	/* _PWRGATE_TIMER_OFF_0, offset 28 */
> +	vol_uint pmc_pwrgate_timer_on;	/* _PWRGATE_TIMER_ON_0, offset 2C */
> +	vol_uint pmc_pwrgate_toggle;	/* _PWRGATE_TOGGLE_0, offset 30 */
> +	vol_uint pmc_remove_clamping;	/* _REMOVE_CLAMPING_CMD_0, offset 34 */
> +	vol_uint pmc_pwrgate_status;	/* _PWRGATE_STATUS_0, offset 38 */
> +	vol_uint pmc_pwrgood_timer;	/* _PWRGOOD_TIMER_0, offset 3C */
> +	vol_uint pmc_blink_timer;	/* _BLINK_TIMER_0, offset 40 */
> +	vol_uint pmc_no_iopower;	/* _NO_IOPOWER_0, offset 44 */
> +	vol_uint pmc_pwr_det;		/* _PWR_DET_0, offset 48 */
> +	vol_uint pmc_pwr_det_latch;	/* _PWR_DET_LATCH_0, offset 4C */
> +
> +	vol_uint pmc_scratch0;		/* _SCRATCH0_0, offset 50 */
> +	vol_uint pmc_scratch1;		/* _SCRATCH1_0, offset 54 */
> +	vol_uint pmc_scratch2;		/* _SCRATCH2_0, offset 58 */
> +	vol_uint pmc_scratch3;		/* _SCRATCH3_0, offset 5C */
> +	vol_uint pmc_scratch4;		/* _SCRATCH4_0, offset 60 */
> +	vol_uint pmc_scratch5;		/* _SCRATCH5_0, offset 64 */
> +	vol_uint pmc_scratch6;		/* _SCRATCH6_0, offset 68 */
> +	vol_uint pmc_scratch7;		/* _SCRATCH7_0, offset 6C */
> +	vol_uint pmc_scratch8;		/* _SCRATCH8_0, offset 70 */
> +	vol_uint pmc_scratch9;		/* _SCRATCH9_0, offset 74 */
> +	vol_uint pmc_scratch10;		/* _SCRATCH10_0, offset 78 */
> +	vol_uint pmc_scratch11;		/* _SCRATCH11_0, offset 7C */
> +	vol_uint pmc_scratch12;		/* _SCRATCH12_0, offset 80 */
> +	vol_uint pmc_scratch13;		/* _SCRATCH13_0, offset 84 */
> +	vol_uint pmc_scratch14;		/* _SCRATCH14_0, offset 88 */
> +	vol_uint pmc_scratch15;		/* _SCRATCH15_0, offset 8C */
> +	vol_uint pmc_scratch16;		/* _SCRATCH16_0, offset 90 */
> +	vol_uint pmc_scratch17;		/* _SCRATCH17_0, offset 94 */
> +	vol_uint pmc_scratch18;		/* _SCRATCH18_0, offset 98 */
> +	vol_uint pmc_scratch19;		/* _SCRATCH19_0, offset 9C */
> +	vol_uint pmc_scratch20;		/* _SCRATCH20_0, offset A0 */
> +	vol_uint pmc_scratch21;		/* _SCRATCH21_0, offset A4 */
> +	vol_uint pmc_scratch22;		/* _SCRATCH22_0, offset A8 */
> +	vol_uint pmc_scratch23;		/* _SCRATCH23_0, offset AC */
> +
> +	vol_uint pmc_secure_scratch0;	/* _SECURE_SCRATCH0_0, offset B0 */
> +	vol_uint pmc_secure_scratch1;	/* _SECURE_SCRATCH1_0, offset B4 */
> +	vol_uint pmc_secure_scratch2;	/* _SECURE_SCRATCH2_0, offset B8 */
> +	vol_uint pmc_secure_scratch3;	/* _SECURE_SCRATCH3_0, offset BC */
> +	vol_uint pmc_secure_scratch4;	/* _SECURE_SCRATCH4_0, offset C0 */
> +	vol_uint pmc_secure_scratch5;	/* _SECURE_SCRATCH5_0, offset C4 */
> +
> +	vol_uint pmc_cpupwrgood_timer;	/* _CPUPWRGOOD_TIMER_0, offset C8 */
> +	vol_uint pmc_cpupwroff_timer;	/* _CPUPWROFF_TIMER_0, offset CC */
> +	vol_uint pmc_pg_mask;		/* _PG_MASK_0, offset D0 */
> +	vol_uint pmc_pg_mask_1;		/* _PG_MASK_1_0, offset D4 */
> +	vol_uint pmc_auto_wake_lvl;	/* _AUTO_WAKE_LVL_0, offset D8 */
> +	vol_uint pmc_auto_wake_lvl_mask; /* _AUTO_WAKE_LVL_MASK_0, offset DC */
> +	vol_uint pmc_wake_delay;	/* _WAKE_DELAY_0, offset E0 */
> +	vol_uint pmc_pwr_det_val;	/* _PWR_DET_VAL_0, offset E4 */
> +	vol_uint pmc_ddr_pwr;		/* _DDR_PWR_0, offset E8 */
> +	vol_uint pmc_usb_debounce_del;	/* _USB_DEBOUNCE_DEL_0, offset EC */
> +	vol_uint pmc_usb_ao;		/* _USB_AO_0, offset F0 */
> +	vol_uint pmc_crypto_op;		/* _CRYPTO_OP__0, offset F4 */
> +	vol_uint pmc_pllp_wb0_override;	/* _PLLP_WB0_OVERRIDE_0, offset F8 */
> +
> +	vol_uint pmc_scratch24;		/* _SCRATCH24_0, offset FC */
> +	vol_uint pmc_scratch25;		/* _SCRATCH24_0, offset 100 */
> +	vol_uint pmc_scratch26;		/* _SCRATCH24_0, offset 104 */
> +	vol_uint pmc_scratch27;		/* _SCRATCH24_0, offset 108 */
> +	vol_uint pmc_scratch28;		/* _SCRATCH24_0, offset 10C */
> +	vol_uint pmc_scratch29;		/* _SCRATCH24_0, offset 110 */
> +	vol_uint pmc_scratch30;		/* _SCRATCH24_0, offset 114 */
> +	vol_uint pmc_scratch31;		/* _SCRATCH24_0, offset 118 */
> +	vol_uint pmc_scratch32;		/* _SCRATCH24_0, offset 11C */
> +	vol_uint pmc_scratch33;		/* _SCRATCH24_0, offset 120 */
> +	vol_uint pmc_scratch34;		/* _SCRATCH24_0, offset 124 */
> +	vol_uint pmc_scratch35;		/* _SCRATCH24_0, offset 128 */
> +	vol_uint pmc_scratch36;		/* _SCRATCH24_0, offset 12C */
> +	vol_uint pmc_scratch37;		/* _SCRATCH24_0, offset 130 */
> +	vol_uint pmc_scratch38;		/* _SCRATCH24_0, offset 134 */
> +	vol_uint pmc_scratch39;		/* _SCRATCH24_0, offset 138 */
> +	vol_uint pmc_scratch40;		/* _SCRATCH24_0, offset 13C */
> +	vol_uint pmc_scratch41;		/* _SCRATCH24_0, offset 140 */
> +	vol_uint pmc_scratch42;		/* _SCRATCH24_0, offset 144 */
> +
> +	vol_uint pmc_bo_mirror0;	/* _BOUNDOUT_MIRROR0_0, offset 148 */
> +	vol_uint pmc_bo_mirror1;	/* _BOUNDOUT_MIRROR1_0, offset 14C */
> +	vol_uint pmc_bo_mirror2;	/* _BOUNDOUT_MIRROR2_0, offset 150 */
> +	vol_uint pmc_sys_33v_en;	/* _SYS_33V_EN_0, offset 154 */
> +	vol_uint pmc_bo_mirror_access;	/* _BOUNDOUT_MIRROR_ACCESS_0, off158 */
> +	vol_uint pmc_gate;		/* _GATE_0, offset 15C */
> +} pmc_ctlr;
> +
> +#endif	/* PMC_H */
> diff --git a/arch/arm/include/asm/arch-tegra2/sys_proto.h b/arch/arm/include/asm/arch-tegra2/sys_proto.h
> new file mode 100644
> index 0000000..70e63a8
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-tegra2/sys_proto.h
> @@ -0,0 +1,33 @@
> +/*
> + * (C) Copyright 2010,2011
> + * NVIDIA Corporation <www.nvidia.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 _SYS_PROTO_H_
> +#define _SYS_PROTO_H_
> +
> +typedef struct {
> +	char *board_string;
> +} tegra2_sysinfo;
> +
> +void invalidate_dcache(void);
> +
> +#endif
> diff --git a/arch/arm/include/asm/arch-tegra2/tegra2.h b/arch/arm/include/asm/arch-tegra2/tegra2.h
> new file mode 100644
> index 0000000..ebe56f2
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-tegra2/tegra2.h
> @@ -0,0 +1,56 @@
> +/*
> + * (C) Copyright 2010,2011
> + * NVIDIA Corporation <www.nvidia.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 _TEGRA2_H_
> +#define _TEGRA2_H_
> +
> +#ifndef FALSE
> +#define FALSE	0
> +#endif
> +#ifndef TRUE
> +#define TRUE	1
> +#endif

It'd be better to either consolidate the existing definitions of
TRUE/FALSE to some place in a common header, or just use 0 and 1.

<snip>

> +typedef struct uart_ctlr {
> +	vol_uint uart_thr_dlab_0;	/* UART_THR_DLAB_0_0, offset 00 */
> +	vol_uint uart_ier_dlab_0;	/* UART_IER_DLAB_0_0, offset 04 */
> +	vol_uint uart_iir_fcr;		/* UART_IIR_FCR_0, offset 08 */
> +	vol_uint uart_lcr;		/* UART_LCR_0, offset 0C */
> +	vol_uint uart_mcr;		/* UART_MCR_0, offset 10 */
> +	vol_uint uart_lsr;		/* UART_LSR_0, offset 14 */
> +	vol_uint uart_msr;		/* UART_MSR_0, offset 18 */
> +	vol_uint uart_spr;		/* UART_SPR_0, offset 1C */
> +	vol_uint uart_irda_csr;		/* UART_IRDA_CSR_0, offset 20 */
> +	vol_uint uart_reserved[6];	/* Reserved, unused */
> +	vol_uint uart_asr;		/* UART_ASR_0, offset 3C */
> +} uart_ctlr;
> +
> +#define	LSR_RDR	(1 << 0)

The tab after the define should be a space.  Same with defines
throughout the patch.

<snip>

> +/*
> + * Routine: uart_clock_init
> + * Description: init the PLL and clock for the UART in uart_num
> + */
> +void uart_clock_init(int uart_num)
> +{
> +	clk_rst_ctlr *const clkrst = (clk_rst_ctlr *)NV_PA_CLK_RST_BASE;
> +	static int pllp_init_done;
> +	u32 reg;
> +
> +	if (!pllp_init_done) {
> +
> +		/* Override pllp setup for 216MHz operation. */
> +		reg = (PLL_BYPASS | PLL_BASE_OVRRIDE | PLL_DIVP);
> +		reg |= (((NVRM_PLLP_FIXED_FREQ_KHZ/500) << 8) | PLL_DIVM);
> +		clkrst->crc_pllp_base = reg;
> +
> +		reg |= PLL_ENABLE;
> +		clkrst->crc_pllp_base = reg;
> +
> +		reg &= ~PLL_BYPASS;
> +		clkrst->crc_pllp_base = reg;
> +
> +		pllp_init_done++;
> +	}
> +
> +	/* Now do the UART reset/clock enable based on uart_num */
> +

Above empty newline should be removed.

> +	if (uart_num == UART_D) {
> +

Remove empty newline after if() globally.

> +		/* Assert Reset to UART */
> +		reg = clkrst->crc_rst_dev_u;
> +		reg |= SWR_UARTD_RST;		/* SWR_UARTD_RST = 1 */
> +		clkrst->crc_rst_dev_u = reg;
> +
> +		/* Enable clk to UART */
> +		reg = clkrst->crc_clk_out_enb_u;
> +		reg |= CLK_ENB_UARTD;		/* CLK_ENB_UARTD = 1 */
> +		clkrst->crc_clk_out_enb_u = reg;
> +
> +		/* Enable pllp_out0 to UART */
> +		reg = clkrst->crc_clk_src_uartd;
> +		reg &= 0x3FFFFFFF;	/* UARTD_CLK_SRC = 00, PLLP_OUT0 */
> +		clkrst->crc_clk_src_uartd = reg;
> +
> +		/* wait for 2us */
> +		udelay(2);
> +
> +		/* De-assert reset to UART */
> +		reg = clkrst->crc_rst_dev_u;
> +		reg &= ~SWR_UARTD_RST;		/* SWR_UARTD_RST = 0 */
> +		clkrst->crc_rst_dev_u = reg;
> +

Same with empty newlines before the end of an if().

> +	} else if (uart_num == UART_A) {
> +
> +		/* Assert Reset to UART */
> +		reg = clkrst->crc_rst_dev_l;
> +		reg |= SWR_UARTA_RST;		/* SWR_UARTA_RST = 1 */
> +		clkrst->crc_rst_dev_l = reg;
> +
> +		/* Enable clk to UART */
> +		reg = clkrst->crc_clk_out_enb_l;
> +		reg |= CLK_ENB_UARTA;		/* CLK_ENB_UARTA = 1 */
> +		clkrst->crc_clk_out_enb_l = reg;
> +
> +		/* Enable pllp_out0 to UART */
> +		reg = clkrst->crc_clk_src_uarta;
> +		reg &= 0x3FFFFFFF;	/* UARTA_CLK_SRC = 00, PLLP_OUT0 */
> +		clkrst->crc_clk_src_uarta = reg;
> +
> +		/* wait for 2us */
> +		udelay(2);
> +
> +		/* De-assert reset to UART */
> +		reg = clkrst->crc_rst_dev_l;
> +		reg &= ~SWR_UARTA_RST;		/* SWR_UARTA_RST = 0 */
> +		clkrst->crc_rst_dev_l = reg;
> +
> +	}
> +}
> +
> +/*
> + * Routine: pin_mux_uart
> + * Description: setup the pin muxes/tristate values for UART based on uart_num
> + */
> +void pin_mux_uart(int uart_num)
> +{
> +	pinmux_tri_ctlr *const pmt = (pinmux_tri_ctlr *)NV_PA_APB_MISC_BASE;
> +	u32 reg;
> +
> +	if (uart_num == UART_D) {
> +
> +		reg = pmt->pmt_ctl_b;
> +		reg &= 0xFFFFFFF3;	/* GMC_SEL [3:2] = 00, UARTD */
> +		pmt->pmt_ctl_b = reg;
> +
> +		reg = pmt->pmt_tri_a;
> +		reg &= ~Z_GMC;		/* Z_GMC = normal (0) */
> +		pmt->pmt_tri_a = reg;
> +
> +	} else if (uart_num  == UART_A) {
> +
> +		reg = pmt->pmt_ctl_c;
> +		reg &= 0xFFF0FFFF;	/* IRRX_/IRTX_SEL [19:16] = 00 UARTA */
> +		pmt->pmt_ctl_c = reg;
> +
> +		reg = pmt->pmt_tri_a;
> +		reg &= ~Z_IRRX;		/* Z_IRRX = normal (0) */
> +		reg &= ~Z_IRTX;		/* Z_IRTX = normal (0) */
> +		pmt->pmt_tri_a = reg;
> +	}
> +}
> +
> +void do_uart(uart_ctlr *u)
> +{

U-Boot command implementations are generally are prefixed with do_ (eg
do_md5sum).  It'd be nice to pick a more descriptive function name that
doesn't start with do_.

> +	u32 reg;
> +
> +	/* Prepare the divisor value */
> +	reg = NVRM_PLLP_FIXED_FREQ_KHZ * 1000 / NV_DEFAULT_DEBUG_BAUD / 16;
> +
> +	/* Set up UART parameters */
> +	u->uart_lcr = 0x80;
> +	u->uart_thr_dlab_0 = reg;
> +	u->uart_ier_dlab_0 = 0;
> +	u->uart_lcr = 0;
> +	u->uart_iir_fcr = 0x37;
> +	u->uart_ier_dlab_0 = 0;
> +	u->uart_lcr = 3;		/* 8N1 */
> +	u->uart_mcr = 2;
> +	u->uart_msr = 0;
> +	u->uart_spr = 0;
> +	u->uart_irda_csr = 0;
> +	u->uart_asr = 0;
> +	u->uart_iir_fcr = 0x31;

There should be defines for the serial port registers in ns16550.  Using
them would make it more clear what is being set up.

> +	/* Flush any old characters out of the RX FIFO */
> +	reg = u->uart_lsr;
> +
> +	while (reg & LSR_RDR) {
> +		reg = u->uart_thr_dlab_0;
> +		reg = u->uart_lsr;
> +	}
> +}
> +
> +/*
> + * Routine: init_uart
> + * Description: init the UART clocks, muxes, and baudrate/parity/etc.
> + */
> +void init_uart(int uart_num)
> +{
> +	if (uart_num == UART_A) {
> +		uart_ctlr *const uart = (uart_ctlr *)NV_PA_APB_UARTA_BASE;
> +
> +		uart_clock_init(UART_A);
> +
> +		/* Enable UARTA - uses config 0 */
> +		pin_mux_uart(UART_A);
> +
> +		do_uart(uart);
> +
> +	} else if (uart_num == UART_D) {
> +		uart_ctlr *const uart = (uart_ctlr *)NV_PA_APB_UARTD_BASE;
> +
> +		uart_clock_init(UART_D);
> +
> +		/* Enable UARTD - uses config 0 */
> +		pin_mux_uart(UART_D);
> +
> +		do_uart(uart);
> +	}

This block could be surrounded by #ifdef CONFIG_TEGRA2_ENABLE_UARTD to
save some space.  Same with UARTA if its ever disabled.  Same comment
with other areas that choose between UART A/D.

> +}
> +
> +void uart_init(void)
> +{
> +#if (CONFIG_TEGRA2_ENABLE_UARTA)
> +	init_uart(UART_A);
> +#endif
> +#if (CONFIG_TEGRA2_ENABLE_UARTD)
> +	init_uart(UART_D);
> +#endif
> +}
> diff --git a/board/tegra2/common/board.h b/board/tegra2/common/board.h
> new file mode 100644
> index 0000000..60525a8
> --- /dev/null
> +++ b/board/tegra2/common/board.h
> @@ -0,0 +1,59 @@
> +/*
> + *  (C) Copyright 2010,2011
> + *  NVIDIA Corporation <www.nvidia.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 _COMMON_BOARD_H_
> +#define _COMMON_BOARD_H_
> +
> +typedef unsigned int volatile vol_uint;

If you do need to add this typedef (which hopefully you don't), it'd
probably be better somewhere global so every board vendor doesn't have
the same chunk of code.  Eg along with vu_long.

> +#include <asm/arch/clk_rst.h>
> +#include <asm/arch/pinmux.h>
> +#include <asm/arch/uart.h>
> +
> +#define NVRM_PLLP_FIXED_FREQ_KHZ	216000
> +#define NV_DEFAULT_DEBUG_BAUD		115200
> +
> +#define	PLL_BYPASS		(1 << 31)
> +#define	PLL_ENABLE		(1 << 30)
> +#define	PLL_BASE_OVRRIDE	(1 << 28)
> +#define	PLL_DIVP		(1 << 20)	/* post divider, b22:20 */
> +#define	PLL_DIVM		0x0C		/* input divider, b4:0 */
> +
> +#define	SWR_UARTD_RST		(1 << 2)
> +#define CLK_ENB_UARTD		(1 << 2)
> +#define	SWR_UARTA_RST		(1 << 6)
> +#define CLK_ENB_UARTA		(1 << 6)

Tabs should be removed.  Are the above CPU-specifc defines?  If so, they
should be moved somewhere cpu-specific so other board vendors don't need
to define them too.  Actually, looking over it again, perhaps the entire
contents of board/tegra2/ should be moved somewhere in arch/arm?

Regards,
Peter

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board Signed-off-by: Tom Warren <twarren@nvidia.com>
  2011-01-11 21:06 ` [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board " Tom Warren
@ 2011-01-13  0:07   ` Peter Tyser
  0 siblings, 0 replies; 11+ messages in thread
From: Peter Tyser @ 2011-01-13  0:07 UTC (permalink / raw)
  To: u-boot

<snip>

> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -122,6 +122,7 @@ omap4_panda                  arm         armv7       panda               ti
>  omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
>  s5p_goni                     arm         armv7       goni                samsung        s5pc1xx
>  smdkc100                     arm         armv7       smdkc100            samsung        s5pc1xx
> +harmony                      arm         armv7       harmony             tegra2         tegra2

I think 1st "tegra2" above should be changed to "nvidia".

>  actux1                       arm         ixp
>  actux2                       arm         ixp
>  actux3                       arm         ixp

<snip>

> diff --git a/include/configs/nv-common.h b/include/configs/nv-common.h

Perhaps a more descriptive name could be used?  NV == non-volatile to me
at first glance, and if this is tegra2-specific maybe tegra2-common.h
would be more appropriate?

> new file mode 100644
> index 0000000..46872d3
> --- /dev/null
> +++ b/include/configs/nv-common.h
> @@ -0,0 +1,166 @@
> +/*
> + *  (C) Copyright 2010,2011
> + *  NVIDIA Corporation <www.nvidia.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 __TEGRA2_COMMON_H
> +#define __TEGRA2_COMMON_H

This define should match the name of the file.

> +#include <asm/sizes.h>
> +
> +/*
> + * High Level Configuration Options
> + */
> +#define CONFIG_ARMCORTEXA9		/* This is an ARM V7 CPU core */
> +#define CONFIG_TEGRA2			/* in a NVidia Tegra2 core */
> +#define CONFIG_MACH_TEGRA_GENERIC	/* which is a Tegra generic machine */
> +#define CONFIG_L2_OFF			/* No L2 cache */
> +
> +#include <asm/arch/tegra2.h>		/* get chip and board defs */
> +
> +/*
> + * Display CPU and Board information
> + */
> +#define CONFIG_DISPLAY_CPUINFO
> +#define CONFIG_DISPLAY_BOARDINFO
> +
> +#undef CONFIG_USE_IRQ

The general policy is not to undef things unless its necessary.
Assuming CONFIG_USE_IRQ isn't defined elsewhere I'd remove the above
line.

> +
> +#define CONFIG_SKIP_RELOCATE_UBOOT
> +#define CONFIG_SKIP_LOWLEVEL_INIT
> +
> +#define CONFIG_CMDLINE_TAG		/* enable passing of ATAGs */
> +
> +/* Environment */
> +#define CONFIG_ENV_IS_NOWHERE
> +#define CONFIG_ENV_SIZE			0x20000	/* Total Size Environment */
> +
> +/*
> + * Size of malloc() pool
> + */
> +#define CONFIG_SYS_MALLOC_LEN		(4 << 20)	/* 4MB  */
> +
> +/*
> + * PllX Configuration
> + */
> +#define CONFIG_SYS_CPU_OSC_FREQUENCY	1000000	/* Set CPU clock to 1GHz */
> +
> +/*
> + * NS16550 Configuration
> + */
> +#define V_NS16550_CLK			216000000	/* 216MHz (pllp_out0) */
> +
> +#define CONFIG_SYS_NS16550
> +#define CONFIG_SYS_NS16550_SERIAL
> +#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
> +#define CONFIG_SYS_NS16550_CLK		V_NS16550_CLK
> +
> +/*
> + * select serial console configuration
> + */
> +#define CONFIG_CONS_INDEX	1
> +
> +/* allow to overwrite serial and ethaddr */
> +#define CONFIG_ENV_OVERWRITE
> +#define CONFIG_BAUDRATE			115200
> +#define CONFIG_SYS_BAUDRATE_TABLE	{4800, 9600, 19200, 38400, 57600,\
> +					115200}
> +
> +/* include default commands */
> +#include <config_cmd_default.h>
> +
> +/* remove unused commands */
> +#undef CONFIG_CMD_FLASH		/* flinfo, erase, protect */
> +#undef CONFIG_CMD_FPGA		/* FPGA configuration support */
> +#undef CONFIG_CMD_IMI
> +#undef CONFIG_CMD_IMLS
> +#undef CONFIG_CMD_NFS		/* NFS support */
> +#undef CONFIG_CMD_NET		/* network support */
> +
> +/* turn on command-line edit/hist/auto */
> +#define CONFIG_CMDLINE_EDITING
> +#define CONFIG_COMMAND_HISTORY
> +#define CONFIG_AUTOCOMPLETE
> +
> +#define CONFIG_SYS_NO_FLASH
> +
> +/* Environment information */
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +	"console=ttyS0,115200n8\0" \
> +	"mem=" TEGRA2_SYSMEM "\0" \
> +	"smpflag=smp\0" \
> +
> +#define CONFIG_LOADADDR		0x408000	/* def. location for kernel */
> +#define CONFIG_BOOTDELAY	2		/* -1 to disable auto boot */
> +
> +/*
> + * Miscellaneous configurable options
> + */
> +#define CONFIG_SYS_LONGHELP		/* undef to save memory */
> +#define CONFIG_SYS_HUSH_PARSER		/* use "hush" command parser */
> +#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
> +#define CONFIG_SYS_PROMPT		V_PROMPT
> +/*
> + * Increasing the size of the IO buffer as default nfsargs size is more
> + *  than 256 and so it is not possible to edit it
> + */
> +#define CONFIG_SYS_CBSIZE		(256 * 2) /* Console I/O Buffer Size */
> +/* Print Buffer Size */
> +#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
> +					sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_MAXARGS		16	/* max number of command args */
> +/* Boot Argument Buffer Size */
> +#define CONFIG_SYS_BARGSIZE		(CONFIG_SYS_CBSIZE)
> +
> +#define CONFIG_SYS_MEMTEST_START	(TEGRA2_SDRC_CS0 + 0x600000)
> +#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + 0x100000)
> +
> +#define CONFIG_SYS_LOAD_ADDR		(0xA00800)	/* default */
> +#define CONFIG_SYS_HZ			1000
> +
> +/*-----------------------------------------------------------------------
> + * Stack sizes
> + *
> + * The stack sizes are set up in start.S using the settings below
> + */
> +#define CONFIG_STACKBASE	0x2800000	/* 40MB */
> +#define CONFIG_STACKSIZE	0x20000		/* 128K regular stack*/
> +#ifdef CONFIG_USE_IRQ
> +#define CONFIG_STACKSIZE_IRQ	0x1000		/* 4K IRQ stack */
> +#define CONFIG_STACKSIZE_FIQ	0x1000		/* 4K FIQ stack */
> +#endif
> +
> +/*-----------------------------------------------------------------------
> + * Physical Memory Map
> + */
> +#define CONFIG_NR_DRAM_BANKS	1
> +#define PHYS_SDRAM_1		TEGRA2_SDRC_CS0
> +#define PHYS_SDRAM_1_SIZE	0x20000000	/* 512M */
> +
> +#define CONFIG_SYS_TEXT_BASE	0x00E08000
> +#define CONFIG_SYS_SDRAM_BASE	PHYS_SDRAM_1
> +
> +#define CONFIG_SYS_INIT_RAM_ADDR	CONFIG_STACKBASE
> +#define CONFIG_SYS_INIT_RAM_SIZE	CONFIG_SYS_MALLOC_LEN
> +#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \
> +						CONFIG_SYS_INIT_RAM_SIZE - \
> +						GENERATED_GBL_DATA_SIZE)
> +
> +#endif /* __CONFIG_H */

The endif comment should be changed to match the define at the top of
the file.

Regards,
Peter

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2011-01-13  0:07 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-11 21:06 [U-Boot] [PATCH 0/3] Add basic NVIDIA Tegra2 SoC support Tom Warren
2011-01-11 21:06 ` [U-Boot] [PATCH 1/3] arm: Tegra2: Add generic Tegra2 SoC support Signed-off-by: Tom Warren <twarren@nvidia.com> Tom Warren
2011-01-12 23:56   ` Peter Tyser
2011-01-11 21:06 ` [U-Boot] [PATCH 2/3] arm: Tegra2: Add support for NVIDIA Harmony board " Tom Warren
2011-01-13  0:07   ` Peter Tyser
2011-01-11 21:06 ` [U-Boot] [PATCH 3/3] arm: Tegra2: Add support for NVIDIA Seaboard " Tom Warren
2011-01-12  0:16   ` Paulraj, Sandeep
2011-01-12  0:43     ` Tom Warren
2011-01-12  1:59       ` Paulraj, Sandeep
2011-01-12 17:05         ` Tom Warren
2011-01-12 23:10           ` Tom Warren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.