C674x CPUs has same peripherals(uart,emac,nand contoller) like sitara 
processors (am1705/am1707/omapl137/omapl138).
In u-boot this peripheral known as davinci SOC, and placed in 
arch/arm/cpu/arm926ejs/davinci
This patch allow compile davinci SOC code whith c674x CPU.

Reset code rewritten in C for compile not only for arm.

Signed-off-by: Dmitry Bondar <b...@inmys.ru>
Cc: Tom Rini <tr...@ti.com>
---
Changes for v2:
   - reset_c.c rewritten with readl/writel.

---
 Makefile                                 |    1 +
 arch/arm/cpu/arm926ejs/davinci/Makefile  |    5 ++++
 arch/arm/cpu/arm926ejs/davinci/reset_c.c |   31 ++++++++++++++++++++++++++++++
 mkconfig                                 |    7 +++++-
 4 files changed, 43 insertions(+), 1 deletions(-)
 create mode 100644 arch/arm/cpu/arm926ejs/davinci/reset_c.c

diff --git a/Makefile b/Makefile
index 0197239..33e12cf 100644
--- a/Makefile
+++ b/Makefile
@@ -779,6 +779,7 @@ clobber:    tidy
        @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
        @rm -f $(obj)arch/powerpc/cpu/mpc83xx/ddr-gen?.c
        @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
+       @rm -f ${obj}arch/c6x/cpu/c674x/davinci
        @rm -fr $(obj)include/generated
        @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l 
-print | xargs rm -f
        @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l 
-print | xargs rm -f
diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile 
b/arch/arm/cpu/arm926ejs/davinci/Makefile
index da7efac..54f096d 100644
--- a/arch/arm/cpu/arm926ejs/davinci/Makefile
+++ b/arch/arm/cpu/arm926ejs/davinci/Makefile
@@ -42,7 +42,12 @@ COBJS-$(CONFIG_SOC_DM365)    += dm365_lowlevel.o
 COBJS-$(CONFIG_SOC_DA8XX)      += da850_lowlevel.o
 endif
 
+
+ifeq ($(CPU),c674x)
+COBJS-y        += reset_c.o
+else
 SOBJS  = reset.o
+endif
 
 ifndef CONFIG_SKIP_LOWLEVEL_INIT
 SOBJS  += lowlevel_init.o
diff --git a/arch/arm/cpu/arm926ejs/davinci/reset_c.c 
b/arch/arm/cpu/arm926ejs/davinci/reset_c.c
new file mode 100644
index 0000000..c1340e3
--- /dev/null
+++ b/arch/arm/cpu/arm926ejs/davinci/reset_c.c
@@ -0,0 +1,31 @@
+/*
+ *  Processor reset using WDT.
+ *
+ * Copyright (C) 2012 Dmitry Bondar <b...@inmys.ru>
+ * Copyright (C) 2007 Sergey Kubushyn <k...@koi8.net>
+ *
+ * This file is released under the terms of GPL v2 and any later version.
+ * See the file COPYING in the root directory of the source tree for details.
+*/
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/timer_defs.h>
+
+void reset_cpu(unsigned long a)
+{
+       struct davinci_timer * const wdttimer = 
+               (struct davinci_timer *)DAVINCI_TIMER1_BASE;
+       writel(0x08, &wdttimer->tgcr);
+       writel(readl(&wdttimer->tgcr) | 0x03, &wdttimer->tgcr);
+       writel(0, &wdttimer->tim12);
+       writel(0, &wdttimer->tim34);
+       writel(0, &wdttimer->prd12);
+       writel(0, &wdttimer->prd34);
+       writel(readl(&wdttimer->tcr) | 0x40, &wdttimer->tcr);
+       writel(readl(&wdttimer->wdtcr) | 0x4000, &wdttimer->wdtcr);
+       writel(0xa5c64000, &wdttimer->wdtcr);
+       writel(0xda7e4000, &wdttimer->wdtcr);
+       writel(0x4000, &wdttimer->wdtcr);
+       while(1);
+}
diff --git a/mkconfig b/mkconfig
index daa1810..c80625e 100755
--- a/mkconfig
+++ b/mkconfig
@@ -119,7 +119,12 @@ rm -f asm/arch
 if [ -z "${soc}" ] ; then
        ln -s ${LNPREFIX}arch-${cpu} asm/arch
 else
-       ln -s ${LNPREFIX}arch-${soc} asm/arch
+       if [ "${arch}" == "c6x" -a "$soc" == "davinci" ]; then
+               ln -s ${SRCTREE}/arch/arm/include/asm/arch-davinci asm/arch
+               ln -s ${SRCTREE}/arch/arm/cpu/arm926ejs/davinci 
${SRCTREE}/arch/c6x/cpu/c674x/davinci
+       else
+               ln -s ${LNPREFIX}arch-${soc} asm/arch
+       fi
 fi
 
 if [ "${arch}" = "arm" ] ; then
-- 
1.7.2.5

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

Reply via email to