This patch adds minimum support for OMAP4. Code which can be shared
between OMAP3 and OMAP4 is placed in arch/arm/cpu/armv7/omap-common

Signed-off-by: Aneesh V <ane...@ti.com>
Signed-off-by: Steve Sakoman <st...@sakoman.com>
---
 Makefile                                           |    7 +
 arch/arm/cpu/armv7/{omap3 => omap-common}/Makefile |   19 +---
 .../{omap3/Makefile => omap-common/config.mk}      |   46 ++------
 arch/arm/cpu/armv7/{omap3 => omap-common}/reset.S  |    0
 arch/arm/cpu/armv7/{omap3 => omap-common}/timer.c  |    5 +
 arch/arm/cpu/armv7/omap3/Makefile                  |    2 -
 arch/arm/cpu/armv7/{omap3 => omap4}/Makefile       |   11 +--
 arch/arm/cpu/armv7/omap4/board.c                   |   91 +++++++++++++++
 .../armv7/{omap3/reset.S => omap4/lowlevel_init.S} |   42 +++++---
 .../cpu/armv7/{omap3/reset.S => omap4/sys_info.c}  |   52 ++++++---
 arch/arm/include/asm/arch-omap4/cpu.h              |   94 ++++++++++++++++
 arch/arm/include/asm/arch-omap4/omap4.h            |  118 ++++++++++++++++++++
 .../reset.S => include/asm/arch-omap4/sys_proto.h} |   37 +++---
 13 files changed, 414 insertions(+), 110 deletions(-)
 copy arch/arm/cpu/armv7/{omap3 => omap-common}/Makefile (81%)
 copy arch/arm/cpu/armv7/{omap3/Makefile => omap-common/config.mk} (52%)
 copy arch/arm/cpu/armv7/{omap3 => omap-common}/reset.S (100%)
 rename arch/arm/cpu/armv7/{omap3 => omap-common}/timer.c (96%)
 copy arch/arm/cpu/armv7/{omap3 => omap4}/Makefile (88%)
 create mode 100644 arch/arm/cpu/armv7/omap4/board.c
 copy arch/arm/cpu/armv7/{omap3/reset.S => omap4/lowlevel_init.S} (60%)
 copy arch/arm/cpu/armv7/{omap3/reset.S => omap4/sys_info.c} (55%)
 create mode 100644 arch/arm/include/asm/arch-omap4/cpu.h
 create mode 100644 arch/arm/include/asm/arch-omap4/omap4.h
 rename arch/arm/{cpu/armv7/omap3/reset.S => 
include/asm/arch-omap4/sys_proto.h} (58%)

diff --git a/Makefile b/Makefile
index 4006b75..513ff4a 100644
--- a/Makefile
+++ b/Makefile
@@ -244,6 +244,13 @@ LIBS += lib/libfdt/libfdt.a
 LIBS += api/libapi.a
 LIBS += post/libpost.a
 
+ifeq ($(SOC),omap3)
+LIBS += $(CPUDIR)/omap-common/libomap-common.a
+endif
+ifeq ($(SOC),omap4)
+LIBS += $(CPUDIR)/omap-common/libomap-common.a
+endif
+
 LIBS := $(addprefix $(obj),$(LIBS))
 .PHONY : $(LIBS) $(TIMESTAMP_FILE) $(VERSION_FILE)
 
diff --git a/arch/arm/cpu/armv7/omap3/Makefile 
b/arch/arm/cpu/armv7/omap-common/Makefile
similarity index 81%
copy from arch/arm/cpu/armv7/omap3/Makefile
copy to arch/arm/cpu/armv7/omap-common/Makefile
index 136b163..3a4a304 100644
--- a/arch/arm/cpu/armv7/omap3/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/Makefile
@@ -23,24 +23,15 @@
 
 include $(TOPDIR)/config.mk
 
-LIB    =  $(obj)lib$(SOC).a
+LIB    = $(obj)libomap-common.a
 
-SOBJS  := lowlevel_init.o
-SOBJS  += cache.o
-SOBJS  += reset.o
-
-COBJS  += board.o
-COBJS  += clock.o
-COBJS  += gpio.o
-COBJS  += mem.o
-COBJS  += syslib.o
-COBJS  += sys_info.o
-COBJS  += timer.o
+SOBJS  := reset.o
+COBJS  := timer.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
+OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
 
-all:    $(obj).depend $(LIB)
+all:   $(obj).depend $(LIB)
 
 $(LIB):        $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
diff --git a/arch/arm/cpu/armv7/omap3/Makefile 
b/arch/arm/cpu/armv7/omap-common/config.mk
similarity index 52%
copy from arch/arm/cpu/armv7/omap3/Makefile
copy to arch/arm/cpu/armv7/omap-common/config.mk
index 136b163..49ac9c7 100644
--- a/arch/arm/cpu/armv7/omap3/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/config.mk
@@ -1,6 +1,6 @@
 #
-# (C) Copyright 2000-2003
-# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+# (C) Copyright 2002
+# Gary Jennejohn, DENX Software Engineering, <ga...@denx.de>
 #
 # See file CREDITS for list of people who contributed to this
 # project.
@@ -20,36 +20,14 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 # MA 02111-1307 USA
 #
+PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
 
-include $(TOPDIR)/config.mk
-
-LIB    =  $(obj)lib$(SOC).a
-
-SOBJS  := lowlevel_init.o
-SOBJS  += cache.o
-SOBJS  += reset.o
-
-COBJS  += board.o
-COBJS  += clock.o
-COBJS  += gpio.o
-COBJS  += mem.o
-COBJS  += syslib.o
-COBJS  += sys_info.o
-COBJS  += 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
-
-#########################################################################
+# Make ARMv5 to allow more compilers to work, even though its v7a.
+PLATFORM_CPPFLAGS += -march=armv5
+# =========================================================================
+#
+# Supply options according to compiler version
+#
+# =========================================================================
+PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,\
+                   $(call cc-option,-malignment-traps,))
diff --git a/arch/arm/cpu/armv7/omap3/reset.S 
b/arch/arm/cpu/armv7/omap-common/reset.S
similarity index 100%
copy from arch/arm/cpu/armv7/omap3/reset.S
copy to arch/arm/cpu/armv7/omap-common/reset.S
diff --git a/arch/arm/cpu/armv7/omap3/timer.c 
b/arch/arm/cpu/armv7/omap-common/timer.c
similarity index 96%
rename from arch/arm/cpu/armv7/omap3/timer.c
rename to arch/arm/cpu/armv7/omap-common/timer.c
index 401bfe6..69e285f 100644
--- a/arch/arm/cpu/armv7/omap3/timer.c
+++ b/arch/arm/cpu/armv7/omap-common/timer.c
@@ -84,6 +84,11 @@ void set_timer(ulong t)
 /* delay x useconds */
 void __udelay(unsigned long usec)
 {
+#if defined(CONFIG_OMAP44XX)
+       /* TODO temporary hack until OMAP4 clock setup routines are present */
+       if (usec > 1000)
+               usec = usec/1000;
+#endif
        long tmo = usec * (TIMER_CLOCK / 1000) / 1000;
        unsigned long now, last = readl(&timer_base->tcrr);
 
diff --git a/arch/arm/cpu/armv7/omap3/Makefile 
b/arch/arm/cpu/armv7/omap3/Makefile
index 136b163..c23a8d7 100644
--- a/arch/arm/cpu/armv7/omap3/Makefile
+++ b/arch/arm/cpu/armv7/omap3/Makefile
@@ -27,7 +27,6 @@ LIB   =  $(obj)lib$(SOC).a
 
 SOBJS  := lowlevel_init.o
 SOBJS  += cache.o
-SOBJS  += reset.o
 
 COBJS  += board.o
 COBJS  += clock.o
@@ -35,7 +34,6 @@ COBJS += gpio.o
 COBJS  += mem.o
 COBJS  += syslib.o
 COBJS  += sys_info.o
-COBJS  += timer.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
diff --git a/arch/arm/cpu/armv7/omap3/Makefile 
b/arch/arm/cpu/armv7/omap4/Makefile
similarity index 88%
copy from arch/arm/cpu/armv7/omap3/Makefile
copy to arch/arm/cpu/armv7/omap4/Makefile
index 136b163..ecf64f9 100644
--- a/arch/arm/cpu/armv7/omap3/Makefile
+++ b/arch/arm/cpu/armv7/omap4/Makefile
@@ -1,5 +1,5 @@
 #
-# (C) Copyright 2000-2003
+# (C) Copyright 2000-2010
 # Wolfgang Denk, DENX Software Engineering, w...@denx.de.
 #
 # See file CREDITS for list of people who contributed to this
@@ -25,17 +25,10 @@ include $(TOPDIR)/config.mk
 
 LIB    =  $(obj)lib$(SOC).a
 
-SOBJS  := lowlevel_init.o
-SOBJS  += cache.o
-SOBJS  += reset.o
+SOBJS  += lowlevel_init.o
 
 COBJS  += board.o
-COBJS  += clock.o
-COBJS  += gpio.o
-COBJS  += mem.o
-COBJS  += syslib.o
 COBJS  += sys_info.o
-COBJS  += timer.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
diff --git a/arch/arm/cpu/armv7/omap4/board.c b/arch/arm/cpu/armv7/omap4/board.c
new file mode 100644
index 0000000..f840364
--- /dev/null
+++ b/arch/arm/cpu/armv7/omap4/board.c
@@ -0,0 +1,91 @@
+/*
+ *
+ * Common functions for OMAP4 based boards
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *
+ * Author :
+ *     Aneesh V        <ane...@ti.com>
+ *     Steve Sakoman   <st...@sakoman.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/sys_proto.h>
+
+/* Declare the global data pointer - gd */
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Routine: s_init
+ * Description: Does early system init of muxing and clocks.
+ *              - Called path is with SRAM stack.
+ */
+void s_init(void)
+{
+       watchdog_init();
+}
+
+/*
+ * Routine: wait_for_command_complete
+ * Description: Wait for posting to finish on watchdog
+ */
+void wait_for_command_complete(struct watchdog *wd_base)
+{
+       int pending = 1;
+       do {
+               pending = readl(&wd_base->wwps);
+       } while (pending);
+}
+
+/*
+ * Routine: watchdog_init
+ * Description: Shut down watch dogs
+ */
+void watchdog_init(void)
+{
+       struct watchdog *wd2_base = (struct watchdog *)WDT2_BASE;
+
+       writel(WD_UNLOCK1, &wd2_base->wspr);
+       wait_for_command_complete(wd2_base);
+       writel(WD_UNLOCK2, &wd2_base->wspr);
+}
+
+/*
+ * Routine: dram_init
+ * Description: sets uboots idea of sdram size
+ */
+int dram_init(void)
+{
+       gd->bd->bi_dram[0].start = 0x80000000;
+       gd->bd->bi_dram[0].size = 512 << 20;
+       return 0;
+}
+
+/*
+ * Print board information
+ */
+int checkboard(void)
+{
+       puts(sysinfo.board_string);
+       return 0;
+}
+
diff --git a/arch/arm/cpu/armv7/omap3/reset.S 
b/arch/arm/cpu/armv7/omap4/lowlevel_init.S
similarity index 60%
copy from arch/arm/cpu/armv7/omap3/reset.S
copy to arch/arm/cpu/armv7/omap4/lowlevel_init.S
index a53c408..ddc8f1a 100644
--- a/arch/arm/cpu/armv7/omap3/reset.S
+++ b/arch/arm/cpu/armv7/omap4/lowlevel_init.S
@@ -1,6 +1,11 @@
 /*
- * Copyright (c) 2009 Samsung Electronics.
- * Minkyu Kang <mk7.k...@samsung.com>
+ * Board specific setup info
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *
+ * Author :
+ *     Aneesh V        <ane...@ti.com>
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -12,7 +17,7 @@
  *
  * 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
+ * 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
@@ -21,16 +26,23 @@
  * MA 02111-1307 USA
  */
 
-#include <config.h>
+#include <asm/arch/omap4.h>
+
+.globl lowlevel_init
+lowlevel_init:
+       /*
+        * Setup a temporary stack
+        */
+       ldr     sp, =LOW_LEVEL_SRAM_STACK
+
+       /*
+        * Save the old lr(passed in ip) and the current lr to stack
+        */
+       push    {ip, lr}
+
+       /*
+        * go setup pll, mux, memory
+        */
+       bl      s_init
+       pop     {ip, pc}
 
-.global reset_cpu
-reset_cpu:
-       ldr     r1, rstctl                      @ get addr for global reset
-                                               @ reg
-       mov     r3, #0x2                        @ full reset pll + mpu
-       str     r3, [r1]                        @ force reset
-       mov     r0, r0
-_loop_forever:
-       b       _loop_forever
-rstctl:
-       .word   PRM_RSTCTRL
diff --git a/arch/arm/cpu/armv7/omap3/reset.S 
b/arch/arm/cpu/armv7/omap4/sys_info.c
similarity index 55%
copy from arch/arm/cpu/armv7/omap3/reset.S
copy to arch/arm/cpu/armv7/omap4/sys_info.c
index a53c408..bbdf48e 100644
--- a/arch/arm/cpu/armv7/omap3/reset.S
+++ b/arch/arm/cpu/armv7/omap4/sys_info.c
@@ -1,9 +1,10 @@
 /*
- * Copyright (c) 2009 Samsung Electronics.
- * Minkyu Kang <mk7.k...@samsung.com>
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
  *
- * See file CREDITS for list of people who contributed to this
- * project.
+ * Author :
+ *     Aneesh V        <ane...@ti.com>
+ *     Steve Sakoman   <st...@sakoman.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -12,7 +13,7 @@
  *
  * 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
+ * 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
@@ -21,16 +22,33 @@
  * MA 02111-1307 USA
  */
 
-#include <config.h>
+#include <common.h>
+#include <asm/arch/sys_proto.h>
+
+/*
+ *  get_device_type(): tell if GP/HS/EMU/TST
+ */
+u32 get_device_type(void)
+{
+       return 0;
+}
+
+/*
+ * get_board_rev() - get board revision
+ */
+u32 get_board_rev(void)
+{
+       return 0x20;
+}
+
+/*
+ * Print CPU information
+ */
+int print_cpuinfo(void)
+{
+
+       puts("CPU  : OMAP4430\n");
+
+       return 0;
+}
 
-.global reset_cpu
-reset_cpu:
-       ldr     r1, rstctl                      @ get addr for global reset
-                                               @ reg
-       mov     r3, #0x2                        @ full reset pll + mpu
-       str     r3, [r1]                        @ force reset
-       mov     r0, r0
-_loop_forever:
-       b       _loop_forever
-rstctl:
-       .word   PRM_RSTCTRL
diff --git a/arch/arm/include/asm/arch-omap4/cpu.h 
b/arch/arm/include/asm/arch-omap4/cpu.h
new file mode 100644
index 0000000..d278352
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap4/cpu.h
@@ -0,0 +1,94 @@
+/*
+ * (C) Copyright 2006-2010
+ * Texas Instruments, <www.ti.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 _CPU_H
+#define _CPU_H
+
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
+#include <asm/types.h>
+#endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
+
+#ifndef __KERNEL_STRICT_NAMES
+#ifndef __ASSEMBLY__
+struct gptimer {
+       u32 tidr;               /* 0x00 r */
+       u8 res[0xc];
+       u32 tiocp_cfg;          /* 0x10 rw */
+       u32 tistat;             /* 0x14 r */
+       u32 tisr;               /* 0x18 rw */
+       u32 tier;               /* 0x1c rw */
+       u32 twer;               /* 0x20 rw */
+       u32 tclr;               /* 0x24 rw */
+       u32 tcrr;               /* 0x28 rw */
+       u32 tldr;               /* 0x2c rw */
+       u32 ttgr;               /* 0x30 rw */
+       u32 twpc;               /* 0x34 r */
+       u32 tmar;               /* 0x38 rw */
+       u32 tcar1;              /* 0x3c r */
+       u32 tcicr;              /* 0x40 rw */
+       u32 tcar2;              /* 0x44 r */
+};
+#endif /* __ASSEMBLY__ */
+#endif /* __KERNEL_STRICT_NAMES */
+
+/* enable sys_clk NO-prescale /1 */
+#define GPT_EN                 ((0x0 << 2) | (0x1 << 1) | (0x1 << 0))
+
+/* Watchdog */
+#ifndef __KERNEL_STRICT_NAMES
+#ifndef __ASSEMBLY__
+struct watchdog {
+       u8 res1[0x34];
+       u32 wwps;               /* 0x34 r */
+       u8 res2[0x10];
+       u32 wspr;               /* 0x48 rw */
+};
+#endif /* __ASSEMBLY__ */
+#endif /* __KERNEL_STRICT_NAMES */
+
+#define WD_UNLOCK1             0xAAAA
+#define WD_UNLOCK2             0x5555
+
+#define SYSCLKDIV_1            (0x1 << 6)
+#define SYSCLKDIV_2            (0x1 << 7)
+
+#define CLKSEL_GPT1            (0x1 << 0)
+
+#define EN_GPT1                        (0x1 << 0)
+#define EN_32KSYNC             (0x1 << 2)
+
+#define ST_WDT2                        (0x1 << 5)
+
+#define RESETDONE              (0x1 << 0)
+
+#define TCLR_ST                        (0x1 << 0)
+#define TCLR_AR                        (0x1 << 1)
+#define TCLR_PRE               (0x1 << 5)
+
+/* I2C base */
+#define I2C_BASE1              (OMAP44XX_L4_PER_BASE + 0x70000)
+#define I2C_BASE2              (OMAP44XX_L4_PER_BASE + 0x72000)
+#define I2C_BASE3              (OMAP44XX_L4_PER_BASE + 0x60000)
+
+#endif /* _CPU_H */
diff --git a/arch/arm/include/asm/arch-omap4/omap4.h 
b/arch/arm/include/asm/arch-omap4/omap4.h
new file mode 100644
index 0000000..73eaaeb
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap4/omap4.h
@@ -0,0 +1,118 @@
+/*
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *
+ * Authors:
+ *     Aneesh V <ane...@ti.com>
+ *
+ * Derived from OMAP3 work by
+ *     Richard Woodruff <r-woodru...@ti.com>
+ *     Syed Mohammed Khasim <x0kha...@ti.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 _OMAP4_H_
+#define _OMAP4_H_
+
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
+#include <asm/types.h>
+#endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
+
+/*
+ * L4 Peripherals - L4 Wakeup and L4 Core now
+ */
+#define OMAP44XX_L4_CORE_BASE  0x4A000000
+#define OMAP44XX_L4_WKUP_BASE  0x4A300000
+#define OMAP44XX_L4_PER_BASE   0x48000000
+
+/* CONTROL */
+#define CTRL_BASE              (OMAP44XX_L4_CORE_BASE + 0x2000)
+
+/* UART */
+#define UART1_BASE             (OMAP44XX_L4_PER_BASE + 0x6a000)
+#define UART2_BASE             (OMAP44XX_L4_PER_BASE + 0x6c000)
+#define UART3_BASE             (OMAP44XX_L4_PER_BASE + 0x20000)
+
+/* General Purpose Timers */
+#define GPT1_BASE              (OMAP44XX_L4_WKUP_BASE + 0x18000)
+#define GPT2_BASE              (OMAP44XX_L4_PER_BASE  + 0x32000)
+#define GPT3_BASE              (OMAP44XX_L4_PER_BASE  + 0x34000)
+
+/* Watchdog Timer2 - MPU watchdog */
+#define WDT2_BASE              (OMAP44XX_L4_WKUP_BASE + 0x14000)
+
+/* 32KTIMER */
+#define SYNC_32KTIMER_BASE     (OMAP44XX_L4_WKUP_BASE + 0x4000)
+
+/* GPMC */
+#define GPMC_BASE      0x50000000
+
+/*
+ * Hardware Register Details
+ */
+
+/* Watchdog Timer */
+#define WD_UNLOCK1             0xAAAA
+#define WD_UNLOCK2             0x5555
+
+/* GP Timer */
+#define TCLR_ST                        (0x1 << 0)
+#define TCLR_AR                        (0x1 << 1)
+#define TCLR_PRE               (0x1 << 5)
+
+/*
+ * PRCM
+ */
+
+/* PRM */
+#define PRM_BASE               0x4A306000
+#define PRM_DEVICE_BASE                (PRM_BASE + 0x1B00)
+
+#define PRM_RSTCTRL            PRM_DEVICE_BASE
+
+#ifndef __ASSEMBLY__
+
+struct s32ktimer {
+       unsigned char res[0x10];
+       unsigned int s32k_cr;   /* 0x10 */
+};
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * Non-secure SRAM Addresses
+ * Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE
+ * at 0x40304000(EMU base) so that our code works for both EMU and GP
+ */
+#define NON_SECURE_SRAM_START  0x40304000
+#define NON_SECURE_SRAM_END    0x4030E000      /* Not inclusive */
+/* base address for indirect vectors (internal boot mode) */
+#define SRAM_ROM_VECT_BASE     0x4030D000
+/* Temporary SRAM stack used while low level init is done */
+#define LOW_LEVEL_SRAM_STACK   NON_SECURE_SRAM_END
+
+/*
+ * OMAP4 real hardware:
+ * TODO: Change this to the IDCODE in the hw regsiter
+ */
+#define CPU_OMAP4430_ES10      1
+#define CPU_OMAP4430_ES20      2
+
+#endif
diff --git a/arch/arm/cpu/armv7/omap3/reset.S 
b/arch/arm/include/asm/arch-omap4/sys_proto.h
similarity index 58%
rename from arch/arm/cpu/armv7/omap3/reset.S
rename to arch/arm/include/asm/arch-omap4/sys_proto.h
index a53c408..4adb8b6 100644
--- a/arch/arm/cpu/armv7/omap3/reset.S
+++ b/arch/arm/include/asm/arch-omap4/sys_proto.h
@@ -1,9 +1,6 @@
 /*
- * Copyright (c) 2009 Samsung Electronics.
- * Minkyu Kang <mk7.k...@samsung.com>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -12,25 +9,27 @@
  *
  * 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
+ * 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_
+#include <asm/arch/omap4.h>
+#include <asm/io.h>
+
+struct omap_sysinfo {
+       char *board_string;
+};
+
+void watchdog_init(void);
+u32 get_device_type(void);
+void invalidate_dcache(u32);
 
-#include <config.h>
+extern const struct omap_sysinfo sysinfo;
 
-.global reset_cpu
-reset_cpu:
-       ldr     r1, rstctl                      @ get addr for global reset
-                                               @ reg
-       mov     r3, #0x2                        @ full reset pll + mpu
-       str     r3, [r1]                        @ force reset
-       mov     r0, r0
-_loop_forever:
-       b       _loop_forever
-rstctl:
-       .word   PRM_RSTCTRL
+#endif
-- 
1.7.0.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to