public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:02   ` Peter Korsgaard
  2013-03-28 21:50   ` Tom Rini
  2013-03-28 17:14 ` [U-Boot] [PATCH 2/8] Add TI816X mux definitions TENART Antoine
                   ` (6 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

Rename some CONFIG_TI814X to a more generic CONFIG_81XX
---
 Makefile                                |    2 +-
 arch/arm/cpu/armv7/Makefile             |    2 +-
 arch/arm/cpu/armv7/omap-common/Makefile |    2 +-
 arch/arm/include/asm/arch-am33xx/cpu.h  |    2 +-
 arch/arm/include/asm/arch-am33xx/omap.h |    2 +-
 drivers/serial/ns16550.c                |    4 ++--
 spl/Makefile                            |    2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 7273fa4..811e7b6 100644
--- a/Makefile
+++ b/Makefile
@@ -330,7 +330,7 @@ LIBS-y += api/libapi.o
 LIBS-y += post/libpost.o
 LIBS-y += test/libtest.o
 
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI81XX),)
 LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
 endif
 
diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile
index c961247..9bb2837 100644
--- a/arch/arm/cpu/armv7/Makefile
+++ b/arch/arm/cpu/armv7/Makefile
@@ -32,7 +32,7 @@ COBJS	+= cache_v7.o
 COBJS	+= cpu.o
 COBJS	+= syslib.o
 
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_TI814X),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_TI81XX),)
 SOBJS	+= lowlevel_init.o
 endif
 
diff --git a/arch/arm/cpu/armv7/omap-common/Makefile b/arch/arm/cpu/armv7/omap-common/Makefile
index 55e82ba..8da8f91 100644
--- a/arch/arm/cpu/armv7/omap-common/Makefile
+++ b/arch/arm/cpu/armv7/omap-common/Makefile
@@ -36,7 +36,7 @@ COBJS	+= emif-common.o
 COBJS	+= vc.o
 endif
 
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI81XX),)
 COBJS	+= boot-common.o
 SOBJS	+= lowlevel_init.o
 endif
diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h
index 3d3a7c8..13c0667 100644
--- a/arch/arm/include/asm/arch-am33xx/cpu.h
+++ b/arch/arm/include/asm/arch-am33xx/cpu.h
@@ -54,7 +54,7 @@
 /* Reset control */
 #ifdef CONFIG_AM33XX
 #define PRM_RSTCTRL			(PRCM_BASE + 0x0F00)
-#elif defined(CONFIG_TI814X)
+#elif defined(CONFIG_TI81XX)
 #define PRM_RSTCTRL			(PRCM_BASE + 0x00A0)
 #endif
 #define PRM_RSTST			(PRM_RSTCTRL + 8)
diff --git a/arch/arm/include/asm/arch-am33xx/omap.h b/arch/arm/include/asm/arch-am33xx/omap.h
index d28f9a8..1a1cc18 100644
--- a/arch/arm/include/asm/arch-am33xx/omap.h
+++ b/arch/arm/include/asm/arch-am33xx/omap.h
@@ -31,7 +31,7 @@
 #ifdef CONFIG_AM33XX
 #define NON_SECURE_SRAM_START	0x40304000
 #define NON_SECURE_SRAM_END	0x4030E000
-#elif defined(CONFIG_TI814X)
+#elif defined(CONFIG_TI81XX)
 #define NON_SECURE_SRAM_START	0x40300000
 #define NON_SECURE_SRAM_END	0x40320000
 #endif
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 02bc85b..c949423 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -43,7 +43,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
 
 	serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
 #if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
-			defined(CONFIG_AM33XX) || defined(CONFIG_TI814X)
+			defined(CONFIG_AM33XX) || defined(CONFIG_TI81XX)
 	serial_out(0x7, &com_port->mdr1);	/* mode select reset TL16C750*/
 #endif
 	serial_out(UART_LCR_BKSE | UART_LCRVAL, (ulong)&com_port->lcr);
@@ -58,7 +58,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
 	serial_out(UART_LCRVAL, &com_port->lcr);
 #if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
 	defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX) || \
-	defined(CONFIG_TI814X)
+	defined(CONFIG_TI81XX)
 
 #if defined(CONFIG_APTIX)
 	/* /13 mode so Aptix 6MHz can hit 115200 */
diff --git a/spl/Makefile b/spl/Makefile
index c398a5f..8692f30 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -82,7 +82,7 @@ LIBS-$(CONFIG_SPL_NET_SUPPORT) += net/libnet.o
 LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/libnet.o
 LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/libphy.o
 
-ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI81XX),)
 LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
 endif
 
-- 
1.7.10.4

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

* [U-Boot] [PATCH 2/8] Add TI816X mux definitions.
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
  2013-03-28 17:14 ` [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:04   ` Peter Korsgaard
  2013-03-28 17:14 ` [U-Boot] [PATCH 3/8] Add TI816X clocks definitions TENART Antoine
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/include/asm/arch-am33xx/mux.h        |    2 +
 arch/arm/include/asm/arch-am33xx/mux_ti816x.h |  363 +++++++++++++++++++++++++
 2 files changed, 365 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-am33xx/mux_ti816x.h

diff --git a/arch/arm/include/asm/arch-am33xx/mux.h b/arch/arm/include/asm/arch-am33xx/mux.h
index 1c6b65f..4caa4d8 100644
--- a/arch/arm/include/asm/arch-am33xx/mux.h
+++ b/arch/arm/include/asm/arch-am33xx/mux.h
@@ -23,6 +23,8 @@
 #include <asm/arch/mux_am33xx.h>
 #elif defined(CONFIG_TI814X)
 #include <asm/arch/mux_ti814x.h>
+#elif defined(CONFIG_TI816X)
+#include <asm/arch/mux_ti816x.h>
 #endif
 
 struct module_pin_mux {
diff --git a/arch/arm/include/asm/arch-am33xx/mux_ti816x.h b/arch/arm/include/asm/arch-am33xx/mux_ti816x.h
new file mode 100644
index 0000000..0fcd49e
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/mux_ti816x.h
@@ -0,0 +1,363 @@
+/*
+ * mux_ti816x.h
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _MUX_TI816X_H_
+#define _MUX_TI816X_H_
+
+#include <common.h>
+#include <asm/io.h>
+
+#define MUX_CFG(value, offset)  \
+	__raw_writel(value, (CTRL_BASE + offset));
+
+#define PULLDOWN_EN (0x0 << 4)	/* Pull Down Selection */
+#define PULLUP_EN   (0x1 << 4)	/* Pull Up Selection */
+#define PULLUDEN    (0x0 << 3)	/* Pull up enabled */
+#define PULLUDDIS   (0x1 << 3)	/* Pull up disabled */
+#define MODE(val)		val /* used for Readability */
+
+
+/*
+ * PAD CONTROL OFFSETS
+ * Field names corresponds to the pad signal name
+ */
+struct pad_signals {
+	int pincntl1;
+	int pincntl2;
+	int pincntl3;
+	int pincntl4;
+	int pincntl5;
+	int pincntl6;
+	int pincntl7;
+	int pincntl8;
+	int pincntl9;
+	int pincntl10;
+	int pincntl11;
+	int pincntl12;
+	int pincntl13;
+	int pincntl14;
+	int pincntl15;
+	int pincntl16;
+	int pincntl17;
+	int pincntl18;
+	int pincntl19;
+	int pincntl20;
+	int pincntl21;
+	int pincntl22;
+	int pincntl23;
+	int pincntl24;
+	int pincntl25;
+	int pincntl26;
+	int pincntl27;
+	int pincntl28;
+	int pincntl29;
+	int pincntl30;
+	int pincntl31;
+	int pincntl32;
+	int pincntl33;
+	int pincntl34;
+	int pincntl35;
+	int pincntl36;
+	int pincntl37;
+	int pincntl38;
+	int pincntl39;
+	int pincntl40;
+	int pincntl41;
+	int pincntl42;
+	int pincntl43;
+	int pincntl44;
+	int pincntl45;
+	int pincntl46;
+	int pincntl47;
+	int pincntl48;
+	int pincntl49;
+	int pincntl50;
+	int pincntl51;
+	int pincntl52;
+	int pincntl53;
+	int pincntl54;
+	int pincntl55;
+	int pincntl56;
+	int pincntl57;
+	int pincntl58;
+	int pincntl59;
+	int pincntl60;
+	int pincntl61;
+	int pincntl62;
+	int pincntl63;
+	int pincntl64;
+	int pincntl65;
+	int pincntl66;
+	int pincntl67;
+	int pincntl68;
+	int pincntl69;
+	int pincntl70;
+	int pincntl71;
+	int pincntl72;
+	int pincntl73;
+	int pincntl74;
+	int pincntl75;
+	int pincntl76;
+	int pincntl77;
+	int pincntl78;
+	int pincntl79;
+	int pincntl80;
+	int pincntl81;
+	int pincntl82;
+	int pincntl83;
+	int pincntl84;
+	int pincntl85;
+	int pincntl86;
+	int pincntl87;
+	int pincntl88;
+	int pincntl89;
+	int pincntl90;
+	int pincntl91;
+	int pincntl92;
+	int pincntl93;
+	int pincntl94;
+	int pincntl95;
+	int pincntl96;
+	int pincntl97;
+	int pincntl98;
+	int pincntl99;
+	int pincntl100;
+	int pincntl101;
+	int pincntl102;
+	int pincntl103;
+	int pincntl104;
+	int pincntl105;
+	int pincntl106;
+	int pincntl107;
+	int pincntl108;
+	int pincntl109;
+	int pincntl110;
+	int pincntl111;
+	int pincntl112;
+	int pincntl113;
+	int pincntl114;
+	int pincntl115;
+	int pincntl116;
+	int pincntl117;
+	int pincntl118;
+	int pincntl119;
+	int pincntl120;
+	int pincntl121;
+	int pincntl122;
+	int pincntl123;
+	int pincntl124;
+	int pincntl125;
+	int pincntl126;
+	int pincntl127;
+	int pincntl128;
+	int pincntl129;
+	int pincntl130;
+	int pincntl131;
+	int pincntl132;
+	int pincntl133;
+	int pincntl134;
+	int pincntl135;
+	int pincntl136;
+	int pincntl137;
+	int pincntl138;
+	int pincntl139;
+	int pincntl140;
+	int pincntl141;
+	int pincntl142;
+	int pincntl143;
+	int pincntl144;
+	int pincntl145;
+	int pincntl146;
+	int pincntl147;
+	int pincntl148;
+	int pincntl149;
+	int pincntl150;
+	int pincntl151;
+	int pincntl152;
+	int pincntl153;
+	int pincntl154;
+	int pincntl155;
+	int pincntl156;
+	int pincntl157;
+	int pincntl158;
+	int pincntl159;
+	int pincntl160;
+	int pincntl161;
+	int pincntl162;
+	int pincntl163;
+	int pincntl164;
+	int pincntl165;
+	int pincntl166;
+	int pincntl167;
+	int pincntl168;
+	int pincntl169;
+	int pincntl170;
+	int pincntl171;
+	int pincntl172;
+	int pincntl173;
+	int pincntl174;
+	int pincntl175;
+	int pincntl176;
+	int pincntl177;
+	int pincntl178;
+	int pincntl179;
+	int pincntl180;
+	int pincntl181;
+	int pincntl182;
+	int pincntl183;
+	int pincntl184;
+	int pincntl185;
+	int pincntl186;
+	int pincntl187;
+	int pincntl188;
+	int pincntl189;
+	int pincntl190;
+	int pincntl191;
+	int pincntl192;
+	int pincntl193;
+	int pincntl194;
+	int pincntl195;
+	int pincntl196;
+	int pincntl197;
+	int pincntl198;
+	int pincntl199;
+	int pincntl200;
+	int pincntl201;
+	int pincntl202;
+	int pincntl203;
+	int pincntl204;
+	int pincntl205;
+	int pincntl206;
+	int pincntl207;
+	int pincntl208;
+	int pincntl209;
+	int pincntl210;
+	int pincntl211;
+	int pincntl212;
+	int pincntl213;
+	int pincntl214;
+	int pincntl215;
+	int pincntl216;
+	int pincntl217;
+	int pincntl218;
+	int pincntl219;
+	int pincntl220;
+	int pincntl221;
+	int pincntl222;
+	int pincntl223;
+	int pincntl224;
+	int pincntl225;
+	int pincntl226;
+	int pincntl227;
+	int pincntl228;
+	int pincntl229;
+	int pincntl230;
+	int pincntl231;
+	int pincntl232;
+	int pincntl233;
+	int pincntl234;
+	int pincntl235;
+	int pincntl236;
+	int pincntl237;
+	int pincntl238;
+	int pincntl239;
+	int pincntl240;
+	int pincntl241;
+	int pincntl242;
+	int pincntl243;
+	int pincntl244;
+	int pincntl245;
+	int pincntl246;
+	int pincntl247;
+	int pincntl248;
+	int pincntl249;
+	int pincntl250;
+	int pincntl251;
+	int pincntl252;
+	int pincntl253;
+	int pincntl254;
+	int pincntl255;
+	int pincntl256;
+	int pincntl257;
+	int pincntl258;
+	int pincntl259;
+	int pincntl260;
+	int pincntl261;
+	int pincntl262;
+	int pincntl263;
+	int pincntl264;
+	int pincntl265;
+	int pincntl266;
+	int pincntl267;
+	int pincntl268;
+	int pincntl269;
+	int pincntl270;
+	int pincntl271;
+	int pincntl272;
+	int pincntl273;
+	int pincntl274;
+	int pincntl275;
+	int pincntl276;
+	int pincntl277;
+	int pincntl278;
+	int pincntl279;
+	int pincntl280;
+	int pincntl281;
+	int pincntl282;
+	int pincntl283;
+	int pincntl284;
+	int pincntl285;
+	int pincntl286;
+	int pincntl287;
+	int pincntl288;
+	int pincntl289;
+	int pincntl290;
+	int pincntl291;
+	int pincntl292;
+	int pincntl293;
+	int pincntl294;
+	int pincntl295;
+	int pincntl296;
+	int pincntl297;
+	int pincntl298;
+	int pincntl299;
+	int pincntl300;
+	int pincntl301;
+	int pincntl302;
+	int pincntl303;
+	int pincntl304;
+	int pincntl305;
+	int pincntl306;
+	int pincntl307;
+	int pincntl308;
+	int pincntl309;
+	int pincntl310;
+	int pincntl311;
+	int pincntl312;
+	int pincntl313;
+	int pincntl314;
+	int pincntl315;
+	int pincntl316;
+	int pincntl317;
+	int pincntl318;
+	int pincntl319;
+	int pincntl320;
+	int pincntl321;
+	int pincntl322;
+	int pincntl323;
+};
+
+#endif /* endif _MUX_TI816X_H_ */
-- 
1.7.10.4

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

* [U-Boot] [PATCH 3/8] Add TI816X clocks definitions
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
  2013-03-28 17:14 ` [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X TENART Antoine
  2013-03-28 17:14 ` [U-Boot] [PATCH 2/8] Add TI816X mux definitions TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:52   ` Tom Rini
  2013-03-28 17:14 ` [U-Boot] [PATCH 4/8] Add TI816X ddr definitions TENART Antoine
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/include/asm/arch-am33xx/clock.h         |    4 +
 arch/arm/include/asm/arch-am33xx/clocks_ti816x.h |  173 ++++++++++++++++++++++
 2 files changed, 177 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti816x.h

diff --git a/arch/arm/include/asm/arch-am33xx/clock.h b/arch/arm/include/asm/arch-am33xx/clock.h
index ecb5901..123cc61 100644
--- a/arch/arm/include/asm/arch-am33xx/clock.h
+++ b/arch/arm/include/asm/arch-am33xx/clock.h
@@ -19,6 +19,10 @@
 #ifndef _CLOCKS_H_
 #define _CLOCKS_H_
 
+#if defined(CONFIG_TI816X)
+#include <asm/arch/clocks_ti816x.h>
+#else
 #include <asm/arch/clocks_am33xx.h>
+#endif
 
 #endif
diff --git a/arch/arm/include/asm/arch-am33xx/clocks_ti816x.h b/arch/arm/include/asm/arch-am33xx/clocks_ti816x.h
new file mode 100644
index 0000000..bcc035a
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/clocks_ti816x.h
@@ -0,0 +1,173 @@
+/*
+ * clocks_ti816x.h
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * Based on TI-PSP-04.00.02.14 :
+ *
+ * (C) Copyright 2006-2008
+ * Texas Instruments, <www.ti.com>
+ * Richard Woodruff <r-woodruff2@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
+ * 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 _CLOCKS_TI816X_H_
+#define _CLOCKS_TI816X_H_
+
+/*
+ * In TI816x the 27MHz crystal generates various root clks (main pll, audio pll, video pll and ddr pll)
+ * From these root clks the SYSCLKs are generated by making use of dividers and multipliers
+ */
+
+#define FAPLL_K			8
+#define SYSCLK_2_DIV		1
+#define OSC_FREQ		27
+/*
+ * Values supported 400,531,675,796
+ *
+ * On TI8168 rev C, use 400 or 531 MHz !
+ */
+#define DDR_PLL_400
+
+/* Main PLL */
+#define MAIN_N			64
+#define MAIN_P			0x1
+#define MAIN_INTFREQ1		0x8
+#define MAIN_FRACFREQ1		0x800000
+#define MAIN_MDIV1		0x2
+#define MAIN_INTFREQ2		0xE
+#define MAIN_FRACFREQ2		0x0
+#define MAIN_MDIV2		0x1
+#define MAIN_INTFREQ3		0x8
+#define MAIN_FRACFREQ3		0xAAAAB0
+#define MAIN_MDIV3		0x3
+#define MAIN_INTFREQ4		0x9
+#define MAIN_FRACFREQ4		0x55554F
+#define MAIN_MDIV4		0x3
+#define MAIN_INTFREQ5		0x9
+#define MAIN_FRACFREQ5		0x374BC6
+#define MAIN_MDIV5		0xC
+#define MAIN_MDIV6		0x48
+#define MAIN_MDIV7		0x4
+
+/* DDR PLL */
+/* For 400 MHz */
+#if defined(DDR_PLL_400)
+#define DDR_N			59
+#define DDR_P			0x1
+#define DDR_MDIV1		0x4
+#define DDR_INTFREQ2		0x8
+#define DDR_FRACFREQ2		0xD99999
+#define DDR_MDIV2		0x1E
+#define DDR_INTFREQ3		0x8
+#define DDR_FRACFREQ3		0x0
+#define DDR_MDIV3		0x4
+#define DDR_INTFREQ4		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ4		0x0
+#define DDR_MDIV4		0x4
+#define DDR_INTFREQ5		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ5		0x0
+#define DDR_MDIV5		0x4
+#endif
+
+/* For 531 MHz */
+#if defined(DDR_PLL_531)
+#define DDR_N			59
+#define DDR_P			0x1
+#define DDR_MDIV1		0x3
+#define DDR_INTFREQ2		0x8
+#define DDR_FRACFREQ2		0xD99999
+#define DDR_MDIV2		0x1E
+#define DDR_INTFREQ3		0x8
+#define DDR_FRACFREQ3		0x0
+#define DDR_MDIV3		0x4
+#define DDR_INTFREQ4		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ4		0x0
+#define DDR_MDIV4		0x4
+#define DDR_INTFREQ5		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ5		0x0
+#define DDR_MDIV5		0x4
+#endif
+
+/* For 675 MHz */
+#if defined(DDR_PLL_675)
+#define DDR_N			50
+#define DDR_P			0x1
+#define DDR_MDIV1		0x2
+#define DDR_INTFREQ2		0x9
+#define DDR_FRACFREQ2		0x0
+#define DDR_MDIV2		0x19
+#define DDR_INTFREQ3		0x13
+#define DDR_FRACFREQ3		0x800000
+#define DDR_MDIV3		0x2
+#define DDR_INTFREQ4		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ4		0x0
+#define DDR_MDIV4		0x4
+#define DDR_INTFREQ5		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ5		0x0
+#define DDR_MDIV5		0x4
+#endif
+
+/* For 796 MHz */
+#if defined(DDR_PLL_796)
+#define DDR_N			59
+#define DDR_P			0x1
+#define DDR_MDIV1		0x2
+#define DDR_INTFREQ2		0x8
+#define DDR_FRACFREQ2		0xD99999
+#define DDR_MDIV2		0x1E
+#define DDR_INTFREQ3		0x8
+#define DDR_FRACFREQ3		0x0
+#define DDR_MDIV3		0x4
+#define DDR_INTFREQ4		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ4		0x0
+#define DDR_MDIV4		0x4
+#define DDR_INTFREQ5		0xE /* Expansion DDR clk */
+#define DDR_FRACFREQ5		0x0
+#define DDR_MDIV5		0x4
+#endif
+
+/* Video PLL */
+#define VIDEO_N			110
+#define VIDEO_P			0x2
+#define VIDEO_INTFREQ1		0xB
+#define VIDEO_FRACFREQ1		0x0
+#define VIDEO_MDIV1		0x5
+#define VIDEO_INTFREQ2		0xA
+#define VIDEO_FRACFREQ2		0x0
+#define VIDEO_MDIV2		0x2
+#define VIDEO_INTFREQ3		0xA
+#define VIDEO_FRACFREQ3		0x0
+#define VIDEO_MDIV3		0x2
+
+/* Audio PLL */
+#define AUDIO_N			64
+#define AUDIO_P			0x19
+#define AUDIO_INTFREQ2		0xE
+#define AUDIO_FRACFREQ2		0x0
+#define AUDIO_MDIV2		0x4
+#define AUDIO_INTFREQ3		0x9
+#define AUDIO_FRACFREQ3		0x0
+#define AUDIO_MDIV3		0x5
+#define AUDIO_INTFREQ4		0x9
+#define AUDIO_FRACFREQ4		0xCBC148
+#define AUDIO_MDIV4		0x14
+#define AUDIO_INTFREQ5		0xD
+#define AUDIO_FRACFREQ5		0x800000
+#define AUDIO_MDIV5		0x14
+
+#endif	/* endif _CLOCKS_TI816X_H_ */
-- 
1.7.10.4

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

* [U-Boot] [PATCH 4/8] Add TI816X ddr definitions
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
                   ` (2 preceding siblings ...)
  2013-03-28 17:14 ` [U-Boot] [PATCH 3/8] Add TI816X clocks definitions TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:52   ` Tom Rini
  2013-03-28 17:14 ` [U-Boot] [PATCH 5/8] Add TI816X cpu definitions TENART Antoine
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/include/asm/arch-am33xx/ddr_defs.h        |    4 +
 arch/arm/include/asm/arch-am33xx/ddr_defs_ti816x.h |  250 ++++++++++++++++++++
 2 files changed, 254 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-am33xx/ddr_defs_ti816x.h

diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
index 15ca4c1..b959ba8 100644
--- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
@@ -22,6 +22,10 @@
 #include <asm/arch/hardware.h>
 #include <asm/emif.h>
 
+#if defined(CONFIG_TI816X)
+#include <asm/arch/ddr_defs_ti816x.h>
+#endif
+
 /* AM335X EMIF Register values */
 #define VTP_CTRL_READY		(0x1 << 5)
 #define VTP_CTRL_ENABLE		(0x1 << 6)
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs_ti816x.h b/arch/arm/include/asm/arch-am33xx/ddr_defs_ti816x.h
new file mode 100644
index 0000000..0853d7f
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs_ti816x.h
@@ -0,0 +1,250 @@
+/*
+ * ddr_defs_ti816x.h
+ *
+ * ddr specific header for TI816X
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * Based on TI-PSP-04.00.02.14 :
+ *
+ * Copyright (C) 2010 Texas Instruments
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#ifndef _DDR_DEFS_TI816X_H
+#define _DDR_DEFS_TI816X_H
+
+#include <asm/arch/hardware.h>
+
+#ifdef CONFIG_TI816X_EVM_DDR3
+
+#define CONFIG_TI816X_DDR3_796			/* Values supported 400,531,675,796 */
+#define CONFIG_TI816X_DDR3_SW_LEVELING	/* Enable software leveling as part of DDR3 init*/
+
+/*
+ * DDR3 force values.  These are board dependent
+ */
+
+/* EVM 400 MHz clock Settings
+ * EVM has only a single RANK (chip select) */
+#define N_RANK			1
+
+/*
+ * Invert clock adds an additional half cycle delay on the command
+ * interface.  The additional half cycle, is usually meant to enable
+ * leveling in the situation that DQS is later than CK on the board.  It
+ * also helps provide some additional margin for leveling.
+ *
+ * For the EVM this is helping us with additional room for the write
+ * leveling.  Since the dqs delays are very small.
+ */
+#define INVERT_CLOCK		1
+
+/*
+ * CMD_SLAVE_RATIO determines where is the command placed with respect
+ * to the clock edge.  This is a ratio, implying 0x100 is one cycle.
+ * Ideally the command is centered so - this should be half cycle
+ * delay (0x80).  But if invert clock is in use, an additional half
+ * cycle must be added
+ */
+#define CMD_SLAVE_FROM_INV_CLOCK(i) (((i) == 0) ? 0x80 : 0x100)
+#define CMD_SLAVE_RATIO		CMD_SLAVE_FROM_INV_CLOCK(INVERT_CLOCK)
+
+/*
+ * This represents the initial value for the leveling process.  The
+ * value is a ratio - so 0x100 represents one cycle.  The real delay
+ * is determined through the leveling process.
+ *
+ * During the leveling process, 0x20 is subtracted from the value, so
+ * we have added that to the value we want to set.  We also set the
+ * values such that byte3 completes leveling after byte2 and byte1
+ * after byte0.
+ */
+#define WR_DQS_RATIO_0		0x20
+#define WR_DQS_RATIO_1		0x20
+#define WR_DQS_RATIO_2		0x20
+#define WR_DQS_RATIO_3		0x20
+
+/*
+ * This represents the initial value for the leveling process.  The
+ * value is a ratio - so 0x100 represents one cycle.  The real delay
+ * is determined through the leveling process.
+ *
+ * During the leveling process, 0x20 is subtracted from the value, so
+ * we have added that to the value we want to set.  We also set the
+ * values such that byte3 completes leveling after byte2 and byte1
+ * after byte0.
+ */
+#define RD_GATE_RATIO_0	0x20
+#define RD_GATE_RATIO_1	0x20
+#define RD_GATE_RATIO_2	0x20
+#define RD_GATE_RATIO_3	0x20
+
+/*
+ * data rate in MHz.  The DDR clock will be 1/2 of this value
+ */
+#define DDR_DATA_RATE	800
+
+#define USE_EMIF0		1
+#define USE_EMIF1		1
+
+/*
+ * EMIF Paramters.  Refer the EMIF register documentation and the
+ * memory datasheet for details
+ */
+/* For 400 MHz */
+#if defined(CONFIG_TI816X_DDR3_400)
+#define EMIF_TIM1    0x0CCCE524
+#define EMIF_TIM2    0x30308023
+#define EMIF_TIM3    0x009F82CF
+#define EMIF_SDREF   0x10000C30
+#define EMIF_SDCFG   0x62A41032
+#define EMIF_PHYCFG  0x0000010B
+
+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
+/* These values are obtained from the CCS app */
+#define RD_DQS_GATE		0x12A
+#define RD_DQS			0x3B
+#define WR_DQS			0xA6
+#endif
+
+#endif	/* CONFIG_TI816X_DDR3_400 */
+
+/* For 531 MHz */
+#if defined(CONFIG_TI816X_DDR3_531)
+#define EMIF_TIM1    0x0EF136AC
+#define EMIF_TIM2    0x30408063
+#define EMIF_TIM3    0x009F83AF
+#define EMIF_SDREF   0x1000102E
+#define EMIF_SDCFG   0x62A51832
+#define EMIF_PHYCFG  0x0000010C
+
+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
+/* These values are obtained from the CCS app */
+#define RD_DQS_GATE		0x13D
+#define RD_DQS			0x39
+#define WR_DQS			0xB4
+#endif
+
+#endif /* CONFIG_TI816X_DDR_531 */
+
+/* For 675 MHz */
+#if defined(CONFIG_TI816X_DDR3_675)
+#define EMIF_TIM1    0x13358875
+#define EMIF_TIM2    0x5051806C
+#define EMIF_TIM3    0x009F84AF
+#define EMIF_SDREF   0x10001491
+#define EMIF_SDCFG   0x62A63032
+#define EMIF_PHYCFG  0x0000010F
+
+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
+/* These values are obtained from the CCS app */
+#define RD_DQS_GATE		0x196
+#define RD_DQS			0x39
+#define WR_DQS			0x91
+
+#endif
+
+#endif /* CONFIG_TI816X_DDR3_675 */
+
+/* For 796 MHz */
+#if defined(CONFIG_TI816X_DDR3_796)
+#define EMIF_TIM1   0x1779C9FE
+#define EMIF_TIM2   0x50608074
+#define EMIF_TIM3   0x009F857F
+#define EMIF_SDREF  0x10001841
+#define EMIF_SDCFG  0x62A73832
+#define EMIF_PHYCFG 0x00000110
+
+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
+/* These values are obtained from the CCS app */
+#define RD_DQS_GATE		0x1B3
+#define RD_DQS			0x35
+#define WR_DQS			0x93
+
+#endif
+
+#endif /* CONFIG_TI816X_DDR_796 */
+
+
+#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)
+#define WR_DQS_RATIO_BYTE_LANE3	((WR_DQS << 10) | WR_DQS)
+#define WR_DQS_RATIO_BYTE_LANE2	((WR_DQS << 10) | WR_DQS)
+#define WR_DQS_RATIO_BYTE_LANE1	((WR_DQS << 10) | WR_DQS)
+#define WR_DQS_RATIO_BYTE_LANE0	((WR_DQS << 10) | WR_DQS)
+
+#define WR_DATA_RATIO_BYTE_LANE3	(((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE2	(((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE1	(((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE0	(((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))
+
+#define RD_DQS_RATIO			((RD_DQS << 10) | RD_DQS)
+
+#define DQS_GATE_BYTE_LANE0		((RD_DQS_GATE << 10) | RD_DQS_GATE)
+#define DQS_GATE_BYTE_LANE1		((RD_DQS_GATE << 10) | RD_DQS_GATE)
+#define DQS_GATE_BYTE_LANE2		((RD_DQS_GATE << 10) | RD_DQS_GATE)
+#define DQS_GATE_BYTE_LANE3		((RD_DQS_GATE << 10) | RD_DQS_GATE)
+
+#endif	/* CONFIG_TI816X_DDR3_SW_LEVELING */
+
+#endif	/* CONFIG_TI816X_EVM_DDR3 */
+
+#ifdef CONFIG_TI816X_EVM_DDR2
+
+#define INVERT_CLK_OUT		0x0
+#define CMD_SLAVE_RATIO		0x80
+/*
+ * DDR2 ratio values.  These are board dependent
+ * obtained from sweep experiments
+ */
+
+/* EVM 400 MHz clock Settings */
+
+#define WR_DQS_RATIO_BYTE_LANE3	((0x4a << 10) | 0x4a)
+#define WR_DQS_RATIO_BYTE_LANE2	((0x4a << 10) | 0x4a)
+#define WR_DQS_RATIO_BYTE_LANE1	((0x4a << 10) | 0x4a)
+#define WR_DQS_RATIO_BYTE_LANE0	((0x4a << 10) | 0x4a)
+
+#define WR_DATA_RATIO_BYTE_LANE3	(((0x4a + 0x40) << 10) | (0x4a + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE2	(((0x4a + 0x40) << 10) | (0x4a + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE1	(((0x4a + 0x40) << 10) | (0x4a + 0x40))
+#define WR_DATA_RATIO_BYTE_LANE0	(((0x4a + 0x40) << 10) | (0x4a + 0x40))
+
+#define RD_DQS_RATIO			((0x40 << 10) | 0x40)
+
+#define DQS_GATE_BYTE_LANE0		((0x13a << 10) | 0x13a)
+#define DQS_GATE_BYTE_LANE1		((0x13a << 10) | 0x13a)
+#define DQS_GATE_BYTE_LANE2		((0x13a << 10) | 0x13a)
+#define DQS_GATE_BYTE_LANE3		((0x13a << 10) | 0x13a)
+
+/*
+ * EMIF Paramters
+ */
+#define EMIF_TIM1    0xAAB15E2
+#define EMIF_TIM2    0x423631D2
+#define EMIF_TIM3    0x80032F
+#define EMIF_SDREF   0x10000C30
+#define EMIF_SDCFG   0x43801A3A  /* 32 bit ddr2, CL=6, CWL=5, 13 rows, 8 banks, 10 bit column, 2 CS */
+/*
+ * TI816x PG1.0 EMIF_PHYCFG 0x0000030B   local odt = 3, read latency = 11
+ * TI816x PG1.1 EMIF_PHYCFG 0x0000010B   local odt = 1, read latency = 11
+ */
+#define EMIF_PHYCFG  (pg_val_ti816x(0x0000030B, 0x0000010B))
+
+#endif	/* CONFIG_TI816X_EVM_DDR2 */
+#endif  /* _DDR_DEFS_TI816X_H */
-- 
1.7.10.4

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

* [U-Boot] [PATCH 5/8] Add TI816X cpu definitions
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
                   ` (3 preceding siblings ...)
  2013-03-28 17:14 ` [U-Boot] [PATCH 4/8] Add TI816X ddr definitions TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:24   ` Peter Korsgaard
  2013-03-28 17:14 ` [U-Boot] [PATCH 6/8] Add TI816X specific register definitions TENART Antoine
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/include/asm/arch-am33xx/cpu.h        |    4 +
 arch/arm/include/asm/arch-am33xx/cpu_ti816x.h |  269 +++++++++++++++++++++++++
 arch/arm/include/asm/emif.h                   |    4 +
 3 files changed, 277 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-am33xx/cpu_ti816x.h

diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h
index 13c0667..34b3aa9 100644
--- a/arch/arm/include/asm/arch-am33xx/cpu.h
+++ b/arch/arm/include/asm/arch-am33xx/cpu.h
@@ -25,6 +25,10 @@
 
 #include <asm/arch/hardware.h>
 
+#if defined(CONFIG_TI816X)
+#include <asm/arch/cpu_ti816x.h>
+#endif
+
 #define BIT(x)				(1 << x)
 #define CL_BIT(x)			(0 << x)
 
diff --git a/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h b/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h
new file mode 100644
index 0000000..b4a13a8
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h
@@ -0,0 +1,269 @@
+/*
+ * cpu_ti816x.h
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * Based on TI-PSP-04.00.02.14 :
+ *
+ * (C) Copyright 2006
+ * 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 _TI816X_CPU_H
+#define _TI816X_CPU_H
+
+#include <asm/arch/hardware.h>
+
+/* Timer registers */
+#define TIMER_TCLR			0x38		/* Timer control register */
+#define TIMER_TCRR			0x3C		/* Timer counter register */
+#define TIMER_TLDR			0x40		/* Timer load value register*/
+
+/* Control */
+#define CONTROL_STATUS		(CTRL_BASE + 0x40)
+
+/* device type */
+#define DEVICE_MASK			(BIT(8) | BIT(9) | BIT(10))
+#define TST_DEVICE			0x0
+#define EMU_DEVICE			0x1
+#define HS_DEVICE			0x2
+#define GP_DEVICE			0x3
+
+/* This gives the buswidth of the booting device */
+#define SYSBOOT_BW_POS		(16)
+#define SYSBOOT_BW_MASK		(BIT(SYSBOOT_BW_POS))
+
+/* Reset control */
+#define PRM_DEVICE_RSTCTRL	(PRCM_BASE + 0x00A0)
+
+/* TI816X specific bits for PRM_DEVICE module */
+#define GLOBAL_RST_COLD		BIT(1)
+
+/* PLL related registers */
+#define MAINPLL_CTRL		(CTRL_BASE + 0x0400)
+#define MAINPLL_PWD			(CTRL_BASE + 0x0404)
+#define MAINPLL_FREQ1		(CTRL_BASE + 0x0408)
+#define MAINPLL_DIV1		(CTRL_BASE + 0x040C)
+#define MAINPLL_FREQ2		(CTRL_BASE + 0x0410)
+#define MAINPLL_DIV2		(CTRL_BASE + 0x0414)
+#define MAINPLL_FREQ3		(CTRL_BASE + 0x0418)
+#define MAINPLL_DIV3		(CTRL_BASE + 0x041C)
+#define MAINPLL_FREQ4		(CTRL_BASE + 0x0420)
+#define MAINPLL_DIV4		(CTRL_BASE + 0x0424)
+#define MAINPLL_FREQ5		(CTRL_BASE + 0x0428)
+#define MAINPLL_DIV5		(CTRL_BASE + 0x042C)
+#define MAINPLL_DIV6		(CTRL_BASE + 0x0434)
+#define MAINPLL_DIV7		(CTRL_BASE + 0x043C)
+
+#define DDRPLL_CTRL			(CTRL_BASE + 0x0440)
+#define DDRPLL_PWD			(CTRL_BASE + 0x0444)
+#define DDRPLL_DIV1			(CTRL_BASE + 0x044C)
+#define DDRPLL_FREQ2		(CTRL_BASE + 0x0450)
+#define DDRPLL_DIV2			(CTRL_BASE + 0x0454)
+#define DDRPLL_FREQ3		(CTRL_BASE + 0x0458)
+#define DDRPLL_DIV3			(CTRL_BASE + 0x045C)
+#define DDRPLL_FREQ4		(CTRL_BASE + 0x0460)
+#define DDRPLL_DIV4			(CTRL_BASE + 0x0464)
+#define DDRPLL_FREQ5		(CTRL_BASE + 0x0468)
+#define DDRPLL_DIV5			(CTRL_BASE + 0x046C)
+
+#define DDR_RCD				(CTRL_BASE + 0x070C)
+
+#define VIDEOPLL_CTRL		(CTRL_BASE + 0x0470)
+#define VIDEOPLL_PWD		(CTRL_BASE + 0x0474)
+#define VIDEOPLL_FREQ1		(CTRL_BASE + 0x0478)
+#define VIDEOPLL_DIV1		(CTRL_BASE + 0x047C)
+#define VIDEOPLL_FREQ2		(CTRL_BASE + 0x0480)
+#define VIDEOPLL_DIV2		(CTRL_BASE + 0x0484)
+#define VIDEOPLL_FREQ3		(CTRL_BASE + 0x0488)
+#define VIDEOPLL_DIV3		(CTRL_BASE + 0x048C)
+
+#define AUDIOPLL_CTRL		(CTRL_BASE + 0x04A0)
+#define AUDIOPLL_PWD		(CTRL_BASE + 0x04A4)
+#define AUDIOPLL_FREQ2		(CTRL_BASE + 0x04B0)
+#define AUDIOPLL_DIV2		(CTRL_BASE + 0x04B4)
+#define AUDIOPLL_FREQ3		(CTRL_BASE + 0x04B8)
+#define AUDIOPLL_DIV3		(CTRL_BASE + 0x04BC)
+#define AUDIOPLL_FREQ4		(CTRL_BASE + 0x04C0)
+#define AUDIOPLL_DIV4		(CTRL_BASE + 0x04C4)
+#define AUDIOPLL_FREQ5		(CTRL_BASE + 0x04C8)
+#define AUDIOPLL_DIV5		(CTRL_BASE + 0x04CC)
+
+/* PRCM */
+#define CM_DPLL_OFFSET		(PRCM_BASE + 0x0300)
+
+#ifdef CONFIG_TI816X
+#define CM_TIMER1_CLKSEL	(CM_DPLL_OFFSET + 0x90)
+
+/* Timers */
+#define CM_ALWON_TIMER_0_CLKCTRL	(PRCM_BASE + 0x156C)
+#define CM_ALWON_TIMER_1_CLKCTRL	(PRCM_BASE + 0x1570)
+#define CM_ALWON_TIMER_2_CLKCTRL	(PRCM_BASE + 0x1574)
+#define CM_ALWON_TIMER_3_CLKCTRL	(PRCM_BASE + 0x1578)
+#define CM_ALWON_TIMER_4_CLKCTRL	(PRCM_BASE + 0x157C)
+#define CM_ALWON_TIMER_5_CLKCTRL	(PRCM_BASE + 0x1580)
+#define CM_ALWON_TIMER_6_CLKCTRL	(PRCM_BASE + 0x1584)
+#define CM_ALWON_TIMER_7_CLKCTRL	(PRCM_BASE + 0x1588)
+#endif
+
+#define CM_ALWON_WDTIMER_CLKCTRL	(PRCM_BASE + 0x158C)
+#define CM_ALWON_SPI_CLKCTRL		(PRCM_BASE + 0x1590)
+#define CM_ALWON_CONTROL_CLKCTRL	(PRCM_BASE + 0x15C4)
+
+#define CM_ALWON_L3_SLOW_CLKSTCTRL	(PRCM_BASE + 0x1400)
+
+#ifdef CONFIG_TI816X
+#define CM_ALWON_CUST_EFUSE_CLKCTRL	(PRCM_BASE + 0x1628)
+#endif
+
+#define CM_ALWON_GPIO_0_CLKCTRL		(PRCM_BASE + 0x155c)
+#define CM_ALWON_GPIO_0_OPTFCLKEN_DBCLK (PRCM_BASE + 0x155c)
+
+#define CM_ALWON_GPIO_1_CLKCTRL		(PRCM_BASE + 0x1560)
+/* Ethernet */
+#define CM_ETHERNET_CLKSTCTRL		(PRCM_BASE + 0x1404)
+#define CM_ALWON_ETHERNET_0_CLKCTRL	(PRCM_BASE + 0x15D4)
+#define CM_ALWON_ETHERNET_1_CLKCTRL	(PRCM_BASE + 0x15D8)
+
+/* UARTs */
+#define CM_ALWON_UART_0_CLKCTRL		(PRCM_BASE + 0x1550)
+#define CM_ALWON_UART_1_CLKCTRL		(PRCM_BASE + 0x1554)
+#define CM_ALWON_UART_2_CLKCTRL		(PRCM_BASE + 0x1558)
+
+/* I2C */
+/* Note: In ti814x I2C0 and I2C2 have common clk control */
+#define CM_ALWON_I2C_0_CLKCTRL		(PRCM_BASE + 0x1564)
+
+/* HSMMC */
+#ifdef CONFIG_TI816X
+#define CM_ALWON_HSMMC_CLKCTRL		(PRCM_BASE + 0x15B0)
+#endif
+
+/* UART registers */
+#define UART_SYSCFG			(DEFAULT_UART_BASE + 0x54)
+#define UART_SYSSTS			(DEFAULT_UART_BASE + 0x58)
+#define UART_LCR			(DEFAULT_UART_BASE + 0x0C)
+#define UART_EFR			(DEFAULT_UART_BASE + 0x08)
+#define UART_MCR			(DEFAULT_UART_BASE + 0x10)
+#define UART_SCR			(DEFAULT_UART_BASE + 0x40)
+#define UART_TCR			(DEFAULT_UART_BASE + 0x18)
+#define UART_FCR			(DEFAULT_UART_BASE + 0x08)
+#define UART_DLL			(DEFAULT_UART_BASE + 0x00)
+#define UART_DLH			(DEFAULT_UART_BASE + 0x04)
+#define UART_MDR			(DEFAULT_UART_BASE + 0x20)
+
+/*DMM & EMIF4 MMR Declaration*/
+#define DMM_LISA_MAP__0			(DMM_BASE + 0x40)
+#define DMM_LISA_MAP__1			(DMM_BASE + 0x44)
+#define DMM_LISA_MAP__2			(DMM_BASE + 0x48)
+#define DMM_LISA_MAP__3			(DMM_BASE + 0x4C)
+#define DMM_PAT_BASE_ADDR		(DMM_BASE + 0x460)
+
+#define EMIF4_0_SDRAM_ZQCR				(EMIF4_0_CFG_BASE + 0xC8)
+#define EMIF4_0_SDRAM_CONFIG			(EMIF4_0_CFG_BASE + 0x08)
+#define EMIF4_0_SDRAM_CONFIG2			(EMIF4_0_CFG_BASE + 0x0C)
+#define EMIF4_0_SDRAM_REF_CTRL			(EMIF4_0_CFG_BASE + 0x10)
+#define EMIF4_0_SDRAM_REF_CTRL_SHADOW	(EMIF4_0_CFG_BASE + 0x14)
+#define EMIF4_0_SDRAM_TIM_1				(EMIF4_0_CFG_BASE + 0x18)
+#define EMIF4_0_SDRAM_TIM_1_SHADOW		(EMIF4_0_CFG_BASE + 0x1C)
+#define EMIF4_0_SDRAM_TIM_2				(EMIF4_0_CFG_BASE + 0x20)
+#define EMIF4_0_SDRAM_TIM_2_SHADOW		(EMIF4_0_CFG_BASE + 0x24)
+#define EMIF4_0_SDRAM_TIM_3				(EMIF4_0_CFG_BASE + 0x28)
+#define EMIF4_0_SDRAM_TIM_3_SHADOW		(EMIF4_0_CFG_BASE + 0x2C)
+#define EMIF4_0_DDR_PHY_CTRL_1			(EMIF4_0_CFG_BASE + 0xE4)
+#define EMIF4_0_DDR_PHY_CTRL_1_SHADOW	(EMIF4_0_CFG_BASE + 0xE8)
+#define EMIF4_0_IODFT_TLGC				(EMIF4_0_CFG_BASE + 0x60)
+
+#define EMIF4_1_SDRAM_ZQCR				(EMIF4_1_CFG_BASE + 0xC8)
+#define EMIF4_1_SDRAM_CONFIG			(EMIF4_1_CFG_BASE + 0x08)
+#define EMIF4_1_SDRAM_CONFIG2			(EMIF4_1_CFG_BASE + 0x0C)
+#define EMIF4_1_SDRAM_REF_CTRL			(EMIF4_1_CFG_BASE + 0x10)
+#define EMIF4_1_SDRAM_REF_CTRL_SHADOW	(EMIF4_1_CFG_BASE + 0x14)
+#define EMIF4_1_SDRAM_TIM_1				(EMIF4_1_CFG_BASE + 0x18)
+#define EMIF4_1_SDRAM_TIM_1_SHADOW		(EMIF4_1_CFG_BASE + 0x1C)
+#define EMIF4_1_SDRAM_TIM_2				(EMIF4_1_CFG_BASE + 0x20)
+#define EMIF4_1_SDRAM_TIM_2_SHADOW		(EMIF4_1_CFG_BASE + 0x24)
+#define EMIF4_1_SDRAM_TIM_3				(EMIF4_1_CFG_BASE + 0x28)
+#define EMIF4_1_SDRAM_TIM_3_SHADOW		(EMIF4_1_CFG_BASE + 0x2C)
+#define EMIF4_1_DDR_PHY_CTRL_1			(EMIF4_1_CFG_BASE + 0xE4)
+#define EMIF4_1_DDR_PHY_CTRL_1_SHADOW	(EMIF4_1_CFG_BASE + 0xE8)
+#define EMIF4_1_IODFT_TLGC				(EMIF4_1_CFG_BASE + 0x60)
+
+/*EMIF4 PRCM Defintion*/
+#define CM_DEFAULT_L3_FAST_CLKSTCTRL	(PRCM_BASE + 0x0508)
+#define CM_DEFAULT_EMIF_0_CLKCTRL		(PRCM_BASE + 0x0520)
+#define CM_DEFAULT_EMIF_1_CLKCTRL		(PRCM_BASE + 0x0524)
+#define CM_DEFAULT_DMM_CLKCTRL			(PRCM_BASE + 0x0528)
+#define CM_DEFAULT_FW_CLKCTRL			(PRCM_BASE + 0x052C)
+
+/* Smartreflex Registers */
+#define TI816X_SMRT_SCALE_ADDR		(CTRL_BASE + 0x06A0)
+#define TI816X_SMRT_OPP_SVT_ADDR	(CTRL_BASE + 0x06A8)
+#define TI816X_SMRT_OPP_HVT_ADDR	(CTRL_BASE + 0x06AC)
+
+
+/* ALWON PRCM */
+#define CM_ALWON_OCMC_0_CLKSTCTRL	(PRCM_BASE + 0x1414)
+#define CM_ALWON_OCMC_0_CLKCTRL		(PRCM_BASE + 0x15B4)
+#define CM_ALWON_OCMC_1_CLKSTCTRL	(PRCM_BASE + 0x1418)
+#define CM_ALWON_OCMC_1_CLKCTRL		(PRCM_BASE + 0x15B8)
+
+#define CM_ALWON_GPMC_CLKCTRL		(PRCM_BASE + 0x15D0)
+
+/* OCMC */
+#define SRAM0_SIZE				(0x40000)
+#define SRAM_GPMC_STACK_SIZE	(0x40)
+
+/* GPMC related */
+#define GPMC_CONFIG_CS0			(0x60)
+#define GPMC_CONFIG_CS0_BAS		(GPMC_BASE + GPMC_CONFIG_CS0)
+#define GPMC_CONFIG1			(0x00)
+#define GPMC_CONFIG2			(0x04)
+#define GPMC_CONFIG3			(0x08)
+#define GPMC_CONFIG4			(0x0C)
+#define GPMC_CONFIG5			(0x10)
+#define GPMC_CONFIG6			(0x14)
+#define GPMC_CONFIG7			(0x18)
+
+/* WDT related */
+#define WDT_WDSC		(WDT_BASE + 0x010)
+#define WDT_WDST		(WDT_BASE + 0x014)
+#define WDT_WISR		(WDT_BASE + 0x018)
+#define WDT_WIER		(WDT_BASE + 0x01C)
+#define WDT_WWER		(WDT_BASE + 0x020)
+#define WDT_WCLR		(WDT_BASE + 0x024)
+#define WDT_WCRR		(WDT_BASE + 0x028)
+#define WDT_WLDR		(WDT_BASE + 0x02C)
+#define WDT_WTGR		(WDT_BASE + 0x030)
+#define WDT_WWPS		(WDT_BASE + 0x034)
+#define WDT_WDLY		(WDT_BASE + 0x044)
+#define WDT_WSPR		(WDT_BASE + 0x048)
+#define WDT_WIRQEOI		(WDT_BASE + 0x050)
+#define WDT_WIRQSTATRAW	(WDT_BASE + 0x054)
+#define WDT_WIRQSTAT	(WDT_BASE + 0x058)
+#define WDT_WIRQENSET	(WDT_BASE + 0x05C)
+#define WDT_WIRQENCLR	(WDT_BASE + 0x060)
+
+#define WDT_UNFREEZE	(CTRL_BASE + 0x100)
+
+#endif /* _TI816X_CPU_H */
diff --git a/arch/arm/include/asm/emif.h b/arch/arm/include/asm/emif.h
index ed251ec..a7b938c 100644
--- a/arch/arm/include/asm/emif.h
+++ b/arch/arm/include/asm/emif.h
@@ -521,7 +521,11 @@
 #define SDRAM_CONFIG_EXT_RD_LVL_4_SAMPLES	0x000001A7
 
 /* DMM */
+#if defined(CONFIG_TI816X)
+#define DMM_BASE			0x4E000000
+#else
 #define DMM_BASE			0x4E000040
+#endif
 
 /* Memory Adapter */
 #define MA_BASE				0x482AF040
-- 
1.7.10.4

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

* [U-Boot] [PATCH 6/8] Add TI816X specific register definitions
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
                   ` (4 preceding siblings ...)
  2013-03-28 17:14 ` [U-Boot] [PATCH 5/8] Add TI816X cpu definitions TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:37   ` Peter Korsgaard
  2013-03-28 17:14 ` [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference TENART Antoine
  2013-03-28 17:14 ` [U-Boot] [PATCH 8/8] Add TI816X evm board support TENART Antoine
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

Also move some non common defintions from hardware.h
---
 arch/arm/include/asm/arch-am33xx/hardware.h        |    7 +--
 arch/arm/include/asm/arch-am33xx/hardware_am33xx.h |    5 ++
 arch/arm/include/asm/arch-am33xx/hardware_ti814x.h |    5 ++
 arch/arm/include/asm/arch-am33xx/hardware_ti816x.h |   58 ++++++++++++++++++++
 4 files changed, 70 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-am33xx/hardware_ti816x.h

diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h
index 5a27f9c..7f3b555 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware.h
@@ -23,6 +23,8 @@
 #include <asm/arch/omap.h>
 #ifdef CONFIG_AM33XX
 #include <asm/arch/hardware_am33xx.h>
+#elif defined(CONFIG_TI816X)
+#include <asm/arch/hardware_ti816x.h>
 #elif defined(CONFIG_TI814X)
 #include <asm/arch/hardware_ti814x.h>
 #endif
@@ -67,15 +69,10 @@
 /* DDR Base address */
 #define DDR_CTRL_ADDR			0x44E10E04
 #define DDR_CONTROL_BASE_ADDR		0x44E11404
-#define DDR_PHY_CMD_ADDR2		0x47C0C800
-#define DDR_PHY_DATA_ADDR2		0x47C0C8C8
 
 /* UART */
 #define DEFAULT_UART_BASE		UART0_BASE
 
-#define DDRPHY_0_CONFIG_BASE		(CTRL_BASE + 0x1400)
-#define DDRPHY_CONFIG_BASE		DDRPHY_0_CONFIG_BASE
-
 /* GPMC Base address */
 #define GPMC_BASE			0x50000000
 
diff --git a/arch/arm/include/asm/arch-am33xx/hardware_am33xx.h b/arch/arm/include/asm/arch-am33xx/hardware_am33xx.h
index fa02f19..49a4392 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware_am33xx.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware_am33xx.h
@@ -43,8 +43,13 @@
 /* DDR Base address */
 #define DDR_PHY_CMD_ADDR		0x44E12000
 #define DDR_PHY_DATA_ADDR		0x44E120C8
+#define DDR_PHY_CMD_ADDR2		0x47C0C800
+#define DDR_PHY_DATA_ADDR2		0x47C0C8C8
 #define DDR_DATA_REGS_NR		2
 
+#define DDRPHY_0_CONFIG_BASE    (CTRL_BASE + 0x1400)
+#define DDRPHY_CONFIG_BASE      DDRPHY_0_CONFIG_BASE
+
 /* CPSW Config space */
 #define CPSW_MDIO_BASE			0x4A101000
 
diff --git a/arch/arm/include/asm/arch-am33xx/hardware_ti814x.h b/arch/arm/include/asm/arch-am33xx/hardware_ti814x.h
index a950ac3..ae0f370 100644
--- a/arch/arm/include/asm/arch-am33xx/hardware_ti814x.h
+++ b/arch/arm/include/asm/arch-am33xx/hardware_ti814x.h
@@ -42,8 +42,13 @@
 /* DDR Base address */
 #define DDR_PHY_CMD_ADDR		0x47C0C400
 #define DDR_PHY_DATA_ADDR		0x47C0C4C8
+#define DDR_PHY_CMD_ADDR2		0x47C0C800
+#define DDR_PHY_DATA_ADDR2		0x47C0C8C8
 #define DDR_DATA_REGS_NR		4
 
+#define DDRPHY_0_CONFIG_BASE	(CTRL_BASE + 0x1400)
+#define DDRPHY_CONFIG_BASE		DDRPHY_0_CONFIG_BASE
+
 /* CPSW Config space */
 #define CPSW_MDIO_BASE			0x4A100800
 
diff --git a/arch/arm/include/asm/arch-am33xx/hardware_ti816x.h b/arch/arm/include/asm/arch-am33xx/hardware_ti816x.h
new file mode 100644
index 0000000..cb75d09
--- /dev/null
+++ b/arch/arm/include/asm/arch-am33xx/hardware_ti816x.h
@@ -0,0 +1,58 @@
+/*
+ * hardware_ti816x.h
+ *
+ * TI816x hardware specific header
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ * Based on TI-PSP-04.00.02.14
+ *
+ * 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.
+ */
+
+#ifndef __AM33XX_HARDWARE_TI816X_H
+#define __AM33XX_HARDWARE_TI816X_H
+
+/* Watchdog Timer */
+#define WDT_BASE				0x480C2000
+
+/* Control Module Base Address */
+#define CTRL_BASE				0x48140000
+
+/* PRCM Base Address */
+#define PRCM_BASE				0x48180000
+
+/* VTP Base address */
+#define VTP0_CTRL_ADDR			0x48198358
+
+/* DDR Base address */
+#define DDR_PHY_CMD_ADDR		0x48198000
+#define DDR_PHY_DATA_ADDR		0x481980C8
+#define DDR_PHY_CMD_ADDR2		0x4819A000
+#define DDR_PHY_DATA_ADDR2		0x4819A0C8
+#define DDR_DATA_REGS_NR		4
+
+/* UART */
+#define UART0_BASE				0x48020000
+#define UART1_BASE				0x48022000
+#define UART2_BASE				0x48024000
+
+#define DDRPHY_0_CONFIG_BASE	0x48198000
+#define DDRPHY_1_CONFIG_BASE	0x4819a000
+#define DDRPHY_CONFIG_BASE		((emif == 0) ? DDRPHY_0_CONFIG_BASE:DDRPHY_1_CONFIG_BASE)
+
+/* CPSW Config space */
+#define CPSW_MDIO_BASE			0x4A100800
+
+/* RTC base address */
+#define RTC_BASE				0x480C0000
+
+#endif /* __AM33XX_HARDWARE_TI816X_H */
-- 
1.7.10.4

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

* [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
                   ` (5 preceding siblings ...)
  2013-03-28 17:14 ` [U-Boot] [PATCH 6/8] Add TI816X specific register definitions TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:14   ` Peter Korsgaard
  2013-03-28 17:14 ` [U-Boot] [PATCH 8/8] Add TI816X evm board support TENART Antoine
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 arch/arm/include/asm/arch-am33xx/mmc_host_def.h |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/include/asm/arch-am33xx/mmc_host_def.h b/arch/arm/include/asm/arch-am33xx/mmc_host_def.h
index e0a3b8b..09d7a77 100644
--- a/arch/arm/include/asm/arch-am33xx/mmc_host_def.h
+++ b/arch/arm/include/asm/arch-am33xx/mmc_host_def.h
@@ -155,6 +155,8 @@ typedef struct hsmmc {
 /* Clock Configurations and Macros */
 #ifdef CONFIG_AM33XX
 #define MMC_CLOCK_REFERENCE	96 /* MHz */
+#elif defined(CONFIG_TI816X)
+#define MMC_CLOCK_REFERENCE	48 /* MHz */
 #elif defined(CONFIG_TI814X)
 #define MMC_CLOCK_REFERENCE	192 /* MHz */
 #endif
-- 
1.7.10.4

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

* [U-Boot] [PATCH 8/8] Add TI816X evm board support
       [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
                   ` (6 preceding siblings ...)
  2013-03-28 17:14 ` [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference TENART Antoine
@ 2013-03-28 17:14 ` TENART Antoine
  2013-03-28 21:49   ` Tom Rini
  7 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-28 17:14 UTC (permalink / raw)
  To: u-boot

---
 MAINTAINERS                            |    4 +
 arch/arm/include/asm/arch-am33xx/spl.h |    9 +
 board/ti/ti816x/Makefile               |   48 ++
 board/ti/ti816x/evm.c                  |  753 ++++++++++++++++++++++++++++++++
 boards.cfg                             |    1 +
 include/configs/ti816x_evm.h           |  172 ++++++++
 6 files changed, 987 insertions(+)
 create mode 100644 board/ti/ti816x/Makefile
 create mode 100644 board/ti/ti816x/evm.c
 create mode 100644 include/configs/ti816x_evm.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 6b2202c..3aaac7f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -922,6 +922,10 @@ Lucas Stach <dev@lynxeye.de>
 
 	colibri_t20_iris	Tegra20 (ARM7 & A9 Dual Core)
 
+Antoine Tenart <atenart@adeneo-embedded.com>
+
+	TI816X		ARM ARMV7 (TI816x Soc)
+
 Nick Thompson <nick.thompson@gefanuc.com>
 
 	da830evm	ARM926EJS (DA830/OMAP-L137)
diff --git a/arch/arm/include/asm/arch-am33xx/spl.h b/arch/arm/include/asm/arch-am33xx/spl.h
index 9b5fe9e..d0c1ec9 100644
--- a/arch/arm/include/asm/arch-am33xx/spl.h
+++ b/arch/arm/include/asm/arch-am33xx/spl.h
@@ -23,6 +23,14 @@
 #ifndef	_ASM_ARCH_SPL_H_
 #define	_ASM_SPL_H_
 
+#if defined(CONFIG_TI816X)
+#define BOOT_DEVICE_XIP		2
+#define BOOT_DEVICE_NAND	3
+#define BOOT_DEVICE_MMC1	6
+#define BOOT_DEVICE_MMC2	5
+#define BOOT_DEVICE_UART	0x43
+#define BOOT_DEVICE_MMC2_2	0xFF
+#else
 #define BOOT_DEVICE_XIP       	2
 #define BOOT_DEVICE_NAND	5
 #ifdef CONFIG_AM33XX
@@ -37,3 +45,4 @@
 #define BOOT_DEVICE_CPGMAC	70
 #define BOOT_DEVICE_MMC2_2      0xFF
 #endif
+#endif
diff --git a/board/ti/ti816x/Makefile b/board/ti/ti816x/Makefile
new file mode 100644
index 0000000..59128ee
--- /dev/null
+++ b/board/ti/ti816x/Makefile
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+# Antoine Tenart, <atenart@adeneo-embedded.com>
+#
+# Based on TI-PSP-04.00.02.14 :
+#
+# Copyright (C) 2009, Texas Instruments, Incorporated
+#
+# 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 version 2.
+#
+# This program is distributed "as is" WITHOUT ANY WARRANTY of any
+# kind, whether express or implied; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS	:= evm.o
+
+SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(call cmd_link_o_target, $(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/board/ti/ti816x/evm.c b/board/ti/ti816x/evm.c
new file mode 100644
index 0000000..cb809e9
--- /dev/null
+++ b/board/ti/ti816x/evm.c
@@ -0,0 +1,753 @@
+/*
+ * evm.c
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * Based on TI-PSP-04.00.02.14 :
+ *
+ * Copyright (C) 2009, Texas Instruments, Incorporated
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <asm/cache.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/ddr_defs.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/mux.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_TI816X_DDR3_SW_LEVELING
+static void ddr3_sw_levelling(int emif);
+#endif
+
+int board_init(void)
+{
+    gd->bd->bi_boot_params = PHYS_DRAM_1 + 0x100;
+    return 0;
+}
+
+#if defined(CONFIG_SPL_BUILD)
+
+static struct module_pin_mux mmc_pin_mux[] = {
+	{ OFFSET(pincntl157), PULLDOWN_EN | PULLUDDIS | MODE(0x0) },
+	{ OFFSET(pincntl158), PULLDOWN_EN | PULLUDEN | MODE(0x0) },
+	{ OFFSET(pincntl159), PULLUP_EN | PULLUDDIS | MODE(0x0) },
+	{ OFFSET(pincntl160), PULLUP_EN | PULLUDDIS | MODE(0x0) },
+	{ OFFSET(pincntl161), PULLUP_EN | PULLUDDIS | MODE(0x0) },
+	{ OFFSET(pincntl162), PULLUP_EN | PULLUDDIS | MODE(0x0) },
+	{ OFFSET(pincntl163), PULLUP_EN | PULLUDDIS | MODE(0x0) },
+	{ -1 },
+};
+
+/*
+ * Routine: delay
+ * Description: spinning delay to use before udelay works
+ */
+static inline void delay(unsigned long loops)
+{
+	__asm__ volatile ("1:\n" "subs %0, %1, #1\n"
+			  "bne 1b" : "=r" (loops) : "0"(loops));
+}
+
+/* assume delay is aprox at least 1us */
+void ddr_delay(int d)
+{
+  int i;
+
+  /*
+   * read a control module register.
+   * this is a bit more delay and cannot be optimized by the compiler
+   * assuming one read takes 200 cycles and A8 is runing 1 GHz
+   * somewhat conservative setting
+   */
+  for(i=0; i<50*d; i++)
+    readl(CONTROL_STATUS);
+}
+
+#ifdef CONFIG_TI816X_EVM_DDR3
+/*
+ * Init DDR3 on TI816X EVM
+ */
+static void ddr_init_settings(int emif)
+{
+	/*
+	 * DLL Lockdiff DLL_Lockdiff determines effectively is the
+	 * threshold internal to the DLL to indicate that the DLL has
+	 * lost lock.  When this happens the PHY currently issues an
+	 * internal reset.  The reset value for this is 0x4, which is
+	 * insufficient.  Set this to 15 (maximum possible - to
+	 * prevent this reset.  If the reset happens it would cause
+	 * the data to be corrupted.
+	 */
+	if(0 == get_cpu_rev())
+	{
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x028);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x05C);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x090);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x138);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x1DC);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x280);
+		writel(0xF, DDRPHY_CONFIG_BASE + 0x324);
+	}
+
+	/*
+	 * setup use_rank_delays to 1.  This is only necessary when
+	 * multiple ranks are in use.  Though the EVM does not have
+	 * multiple ranks, this is a good value to set.
+	 */
+	writel(1, DDRPHY_CONFIG_BASE + 0x134);
+	writel(1, DDRPHY_CONFIG_BASE + 0x1d8);
+	writel(1, DDRPHY_CONFIG_BASE + 0x27c);
+	writel(1, DDRPHY_CONFIG_BASE + 0x320);
+
+	/* see ddr_defs.h for invert clock setting and details */
+	writel(INVERT_CLOCK, DDRPHY_CONFIG_BASE + 0x02C); /* invert_clk_out cmd0 */
+	writel(INVERT_CLOCK, DDRPHY_CONFIG_BASE + 0x060); /* invert_clk_out cmd0 */
+	writel(INVERT_CLOCK, DDRPHY_CONFIG_BASE + 0x094); /* invert_clk_out cmd0 */
+
+	/* with inv clkout: 0x100. no inv clkout: 0x80.  See ddr_defs.h */
+	writel(CMD_SLAVE_RATIO, DDRPHY_CONFIG_BASE + 0x01C); /* cmd0 slave ratio */
+	writel(CMD_SLAVE_RATIO, DDRPHY_CONFIG_BASE + 0x050); /* cmd1 slave ratio */
+	writel(CMD_SLAVE_RATIO, DDRPHY_CONFIG_BASE + 0x084); /* cmd2 slave ratio */
+
+	/* for ddr3 this needs to be set to 1 */
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x0F8); /* init mode */
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x104);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x19C);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x1A8);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x240);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x24C);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x2E4);
+	writel(0x1, DDRPHY_CONFIG_BASE + 0x2F0);
+
+	/****  setup the initial levelinihg ratios ****/
+	/* these are derived from board delays and may be different for different boards
+	 * see ddr_defs.h
+	 * we are setting the values here for both the ranks, though only one is in use
+	 */
+	writel((WR_DQS_RATIO_3 << 10) | WR_DQS_RATIO_3, DDRPHY_CONFIG_BASE + 0x0F0); /*  data0 writelvl init ratio */
+	writel(0x00000, DDRPHY_CONFIG_BASE + 0x0F4);   /*   */
+	writel((WR_DQS_RATIO_2 << 10) | WR_DQS_RATIO_2, DDRPHY_CONFIG_BASE + 0x194); /*  data1 writelvl init ratio */
+	writel(0x00000, DDRPHY_CONFIG_BASE + 0x198);   /*   */
+	writel((WR_DQS_RATIO_1 << 10) | WR_DQS_RATIO_1, DDRPHY_CONFIG_BASE + 0x238); /*  data2 writelvl init ratio */
+	writel(0x00000, DDRPHY_CONFIG_BASE + 0x23c);   /*   */
+	writel((WR_DQS_RATIO_0 << 10) | WR_DQS_RATIO_0, DDRPHY_CONFIG_BASE + 0x2dc); /*  data3 writelvl init ratio */
+	writel(0x00000, DDRPHY_CONFIG_BASE + 0x2e0);   /*   */
+
+
+	writel((RD_GATE_RATIO_3 << 10) | RD_GATE_RATIO_3, DDRPHY_CONFIG_BASE + 0x0FC); /*  data0 gatelvl init ratio */
+	writel(0x0, DDRPHY_CONFIG_BASE + 0x100);
+	writel((RD_GATE_RATIO_2 << 10) | RD_GATE_RATIO_2, DDRPHY_CONFIG_BASE + 0x1A0); /*  data1 gatelvl init ratio */
+	writel(0x0, DDRPHY_CONFIG_BASE + 0x1A4);
+	writel((RD_GATE_RATIO_1 << 10) | RD_GATE_RATIO_1, DDRPHY_CONFIG_BASE + 0x244); /*  data2 gatelvl init ratio */
+	writel(0x0, DDRPHY_CONFIG_BASE + 0x248);
+	writel((RD_GATE_RATIO_0 << 10) | RD_GATE_RATIO_0, DDRPHY_CONFIG_BASE + 0x2E8); /*  data3 gatelvl init ratio */
+	writel(0x0, DDRPHY_CONFIG_BASE + 0x2EC);
+
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x00C);     /* cmd0 io config - output impedance of pad */
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x010);     /* cmd0 io clk config - output impedance of pad */
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x040);     /* cmd1 io config - output impedance of pad */
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x044);     /* cmd1 io clk config - output impedance of pad */
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x074);     /* cmd2 io config - output impedance of pad */
+	writel(0x5, DDRPHY_CONFIG_BASE + 0x078);     /* cmd2 io clk config - output impedance of pad */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x0A8);     /* data0 io config - output impedance of pad */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x0AC);     /* data0 io clk config - output impedance of pad */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x14C);     /* data1 io config - output impedance of pa     */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x150);     /* data1 io clk config - output impedance of pad */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x1F0);     /* data2 io config - output impedance of pa */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x1F4);     /* data2 io clk config - output impedance of pad */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x294);     /* data3 io config - output impedance of pa */
+	writel(0x4, DDRPHY_CONFIG_BASE + 0x298);     /* data3 io clk config - output impedance of pad */
+
+	if(0 == get_cpu_rev())
+	{
+		writel(0x5, DDRPHY_CONFIG_BASE + 0x338);     /* fifo_we_out0  - output impedance of pad */
+		writel(0x5, DDRPHY_CONFIG_BASE + 0x340);     /* fifo_we_out1 - output impedance of pad */
+		writel(0x5, DDRPHY_CONFIG_BASE + 0x348);     /* fifo_we_in2 - output impedance of pad */
+		writel(0x5, DDRPHY_CONFIG_BASE + 0x350);     /* fifo_we_in3 - output impedance of pad */
+	}
+}
+
+static void emif4p_init(u32 TIM1, u32 TIM2, u32 TIM3, u32 SDREF, u32 SDCFG, u32 RL)
+{
+	if(USE_EMIF0){
+		/*Program EMIF0 CFG Registers*/
+		writel(TIM1, EMIF4_0_SDRAM_TIM_1);
+		writel(TIM1, EMIF4_0_SDRAM_TIM_1_SHADOW);
+		writel(TIM2, EMIF4_0_SDRAM_TIM_2);
+		writel(TIM2, EMIF4_0_SDRAM_TIM_2_SHADOW);
+		writel(TIM3, EMIF4_0_SDRAM_TIM_3);
+		writel(TIM3, EMIF4_0_SDRAM_TIM_3_SHADOW);
+		writel(SDCFG, EMIF4_0_SDRAM_CONFIG);
+		writel(RL, EMIF4_0_DDR_PHY_CTRL_1);
+		writel(RL, EMIF4_0_DDR_PHY_CTRL_1_SHADOW);
+		writel(0x0000613B, EMIF4_0_SDRAM_REF_CTRL);   /* initially a large refresh period */
+		writel(0x1000613B, EMIF4_0_SDRAM_REF_CTRL);   /* trigger initialization           */
+		writel((0x10000000|EMIF_SDREF), EMIF4_0_SDRAM_REF_CTRL);
+	}
+
+	if(USE_EMIF1){
+	/*Program EMIF1 CFG Registers*/
+		writel(TIM1, EMIF4_1_SDRAM_TIM_1);
+		writel(TIM1, EMIF4_1_SDRAM_TIM_1_SHADOW);
+		writel(TIM2, EMIF4_1_SDRAM_TIM_2);
+		writel(TIM2, EMIF4_1_SDRAM_TIM_2_SHADOW);
+		writel(TIM3, EMIF4_1_SDRAM_TIM_3);
+		writel(TIM3, EMIF4_1_SDRAM_TIM_3_SHADOW);
+		writel(SDCFG, EMIF4_1_SDRAM_CONFIG);
+		writel(RL, EMIF4_1_DDR_PHY_CTRL_1);
+		writel(RL, EMIF4_1_DDR_PHY_CTRL_1_SHADOW);
+		writel(0x0000613B, EMIF4_1_SDRAM_REF_CTRL);   /* initially a large refresh period */
+		writel(0x1000613B, EMIF4_1_SDRAM_REF_CTRL);   /* trigger initialization           */
+		writel((0x10000000|EMIF_SDREF), EMIF4_1_SDRAM_REF_CTRL);
+	}
+
+	delay(1000);
+#ifdef CONFIG_TI816X_DDR3_SW_LEVELING
+    ddr3_sw_levelling(0);
+    ddr3_sw_levelling(1);
+#endif
+}
+
+static void config_ti816x_sdram_ddr(void)
+{
+	writel(0x2, CM_DEFAULT_FW_CLKCTRL);				/*Enable the EMIF Firewall clocks */
+	writel(0x2, CM_DEFAULT_L3_FAST_CLKSTCTRL);			/*Enable the Power Domain Transition of L3 Fast Domain Peripheral*/
+	writel(0x2, CM_DEFAULT_EMIF_0_CLKCTRL);				/*Enable EMIF0 Clock*/
+	writel(0x2, CM_DEFAULT_EMIF_1_CLKCTRL);				/*Enable EMIF1 Clock*/
+	while((readl(CM_DEFAULT_L3_FAST_CLKSTCTRL) & 0x300) != 0x300);	/*Poll for L3_FAST_GCLK  & DDR_GCLK  are active*/
+	while((readl(CM_DEFAULT_EMIF_0_CLKCTRL)) != 0x2);	/*Poll for Module is functional*/
+	while((readl(CM_DEFAULT_EMIF_1_CLKCTRL)) != 0x2);	/*Poll for Module is functional*/
+
+	if (USE_EMIF0) {
+		ddr_init_settings(0);
+	}
+
+	if (USE_EMIF1) {
+		ddr_init_settings(1);
+	}
+
+	writel(0x2, CM_DEFAULT_DMM_CLKCTRL);			/*Enable EMIF1 Clock*/
+	while((readl(CM_DEFAULT_DMM_CLKCTRL)) != 0x2);		/*Poll for Module is functional*/
+
+	/* Program the DMM to for interleaved configuration */
+	writel(0x0, DMM_LISA_MAP__0);
+	writel(0x0, DMM_LISA_MAP__1);
+	writel(0x80640300, DMM_LISA_MAP__2);
+	writel(0xC0640320, DMM_LISA_MAP__3);
+
+	/*Enable Tiled Access*/
+	writel(0x80000000, DMM_PAT_BASE_ADDR);
+
+	emif4p_init(EMIF_TIM1, EMIF_TIM2, EMIF_TIM3, EMIF_SDREF & 0xFFFFFFF, EMIF_SDCFG, EMIF_PHYCFG);
+
+}
+
+#ifdef CONFIG_TI816X_DDR3_SW_LEVELING
+static void ddr3_sw_levelling(int emif)
+{
+    writel(0x6, (DDRPHY_CONFIG_BASE + 0x358));
+
+    writel(DQS_GATE_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x108));
+    writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x10C));
+    writel(DQS_GATE_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x1AC));
+    writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x1B0));
+    writel(DQS_GATE_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x250));
+    writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x254));
+    writel(DQS_GATE_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x2F4));
+    writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x2F8));
+
+    writel(WR_DQS_RATIO_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x0DC));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x0E0));
+    writel(WR_DQS_RATIO_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x180));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x184));
+    writel(WR_DQS_RATIO_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x224));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x228));
+    writel(WR_DQS_RATIO_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x2C8));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x2CC));
+
+    writel(WR_DATA_RATIO_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x120));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x124));
+    writel(WR_DATA_RATIO_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x1C4));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x1C8));
+    writel(WR_DATA_RATIO_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x268));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x26C));
+    writel(WR_DATA_RATIO_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x30C));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x310));
+
+    writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x0C8));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x0CC));
+    writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x16C));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x170));
+    writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x210));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x214));
+    writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x2B4));
+    writel(0x0, (DDRPHY_CONFIG_BASE + 0x2B8));
+}
+#endif /* CONFIG_TI816X_DDR3_SW_LEVELING */
+
+#endif /* CONFIG_TI816X_EVM_DDR3 */
+
+#ifdef CONFIG_TI816X_EVM_DDR2
+static void ddr_init_settings(int emif)
+{
+	/* DLL Lockdiff */
+	if(0 == get_cpu_rev())
+	{
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x028));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x05C));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x090));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x138));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x1DC));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x280));
+		writel(0xF, (DDRPHY_CONFIG_BASE + 0x324));
+	}
+
+	if(1 == get_cpu_rev())
+	{
+		writel(0x6, (DDRPHY_CONFIG_BASE + 0x358));
+	}
+
+	/* setup rank delays */
+	writel(0x1, (DDRPHY_CONFIG_BASE + 0x134));
+	writel(0x1, (DDRPHY_CONFIG_BASE + 0x1D8));
+	writel(0x1, (DDRPHY_CONFIG_BASE + 0x27C));
+	writel(0x1, (DDRPHY_CONFIG_BASE + 0x320));
+
+
+	writel(INVERT_CLK_OUT, (DDRPHY_CONFIG_BASE + 0x02C));	/* invert_clk_out cmd0 */
+	writel(INVERT_CLK_OUT, (DDRPHY_CONFIG_BASE + 0x060));	/* invert_clk_out cmd0 */
+	writel(INVERT_CLK_OUT, (DDRPHY_CONFIG_BASE + 0x094));	/* invert_clk_out cmd0 */
+
+
+	writel(CMD_SLAVE_RATIO, (DDRPHY_CONFIG_BASE + 0x01C));	/* cmd0 slave ratio */
+	writel(CMD_SLAVE_RATIO, (DDRPHY_CONFIG_BASE + 0x050));	/* cmd0 slave ratio */
+	writel(CMD_SLAVE_RATIO, (DDRPHY_CONFIG_BASE + 0x084));	/* cmd0 slave ratio */
+
+	writel(DQS_GATE_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x108));
+	writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x10C));
+	writel(DQS_GATE_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x1AC));
+	writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x1B0));
+	writel(DQS_GATE_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x250));
+	writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x254));
+	writel(DQS_GATE_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x2F4));
+	writel(0x00000000, (DDRPHY_CONFIG_BASE + 0x2F8));
+
+	writel(WR_DQS_RATIO_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x0DC));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x0E0));
+	writel(WR_DQS_RATIO_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x180));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x184));
+	writel(WR_DQS_RATIO_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x224));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x228));
+	writel(WR_DQS_RATIO_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x2C8));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x2CC));
+
+	writel(WR_DATA_RATIO_BYTE_LANE0, (DDRPHY_CONFIG_BASE + 0x120));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x124));
+	writel(WR_DATA_RATIO_BYTE_LANE1, (DDRPHY_CONFIG_BASE + 0x1C4));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x1C8));
+	writel(WR_DATA_RATIO_BYTE_LANE2, (DDRPHY_CONFIG_BASE + 0x268));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x26C));
+	writel(WR_DATA_RATIO_BYTE_LANE3, (DDRPHY_CONFIG_BASE + 0x30C));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x310));
+
+	writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x0C8));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x0CC));
+	writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x16C));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x170));
+	writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x210));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x214));
+	writel(RD_DQS_RATIO, (DDRPHY_CONFIG_BASE + 0x2B4));
+	writel(0x0, (DDRPHY_CONFIG_BASE + 0x2B8));
+
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x00C));
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x010));
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x040));
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x044));
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x074));
+	writel(0x5, (DDRPHY_CONFIG_BASE + 0x078));
+
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x0A8));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x0AC));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x14C));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x150));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x1F0));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x1F4));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x294));
+	writel(0x4, (DDRPHY_CONFIG_BASE + 0x298));
+
+	if(0 == get_cpu_rev())
+	{
+		writel(0x5, (DDRPHY_CONFIG_BASE + 0x338));
+		writel(0x5, (DDRPHY_CONFIG_BASE + 0x340));
+		writel(0x5, (DDRPHY_CONFIG_BASE + 0x348));
+		writel(0x5, (DDRPHY_CONFIG_BASE + 0x350));
+	}
+
+}
+
+static void emif4p_init(u32 TIM1, u32 TIM2, u32 TIM3, u32 SDREF, u32 SDCFG, u32 RL)
+{
+	/*Program EMIF0 CFG Registers*/
+	writel(TIM1, EMIF4_0_SDRAM_TIM_1);
+	writel(TIM1, EMIF4_0_SDRAM_TIM_1_SHADOW);
+	writel(TIM2, EMIF4_0_SDRAM_TIM_2);
+	writel(TIM2, EMIF4_0_SDRAM_TIM_2_SHADOW);
+	writel(TIM3, EMIF4_0_SDRAM_TIM_3);
+	writel(TIM3, EMIF4_0_SDRAM_TIM_3_SHADOW);
+	writel(SDCFG, EMIF4_0_SDRAM_CONFIG);
+	writel(RL, EMIF4_0_DDR_PHY_CTRL_1);
+	writel(RL, EMIF4_0_DDR_PHY_CTRL_1_SHADOW);
+
+	if (CONFIG_TI816X_TWO_EMIF){
+	writel(TIM1, EMIF4_1_SDRAM_TIM_1);
+	writel(TIM1, EMIF4_1_SDRAM_TIM_1_SHADOW);
+	writel(TIM2, EMIF4_1_SDRAM_TIM_2);
+	writel(TIM2, EMIF4_1_SDRAM_TIM_2_SHADOW);
+	writel(TIM3, EMIF4_1_SDRAM_TIM_3);
+	writel(TIM3, EMIF4_1_SDRAM_TIM_3_SHADOW);
+	writel(SDCFG, EMIF4_1_SDRAM_CONFIG);
+	writel(RL, EMIF4_1_DDR_PHY_CTRL_1);
+	writel(RL, EMIF4_1_DDR_PHY_CTRL_1_SHADOW);
+	}
+
+	/* setup a small control period */
+	writel(0x0000613B, EMIF4_0_SDRAM_REF_CTRL);
+	writel(0x1000613B, EMIF4_0_SDRAM_REF_CTRL);
+	writel((0x10000000|SDREF), EMIF4_0_SDRAM_REF_CTRL);
+
+	if (CONFIG_TI816X_TWO_EMIF){
+	/* setup a small control period */
+	writel(0x0000613B, EMIF4_1_SDRAM_REF_CTRL);
+	writel(0x1000613B, EMIF4_1_SDRAM_REF_CTRL);
+	writel((0x10000000|SDREF), EMIF4_1_SDRAM_REF_CTRL);
+
+	}
+
+
+}
+
+static void config_ti816x_sdram_ddr(void)
+{
+	writel(0x2, CM_DEFAULT_L3_FAST_CLKSTCTRL);			/*Enable the Power Domain Transition of L3 Fast Domain Peripheral*/
+	writel(0x2, CM_DEFAULT_EMIF_0_CLKCTRL);				/*Enable EMIF0 Clock*/
+	writel(0x2, CM_DEFAULT_EMIF_1_CLKCTRL);				/*Enable EMIF1 Clock*/
+	while((readl(CM_DEFAULT_L3_FAST_CLKSTCTRL) & 0x300) != 0x300);	/*Poll for L3_FAST_GCLK  & DDR_GCLK  are active*/
+	while((readl(CM_DEFAULT_EMIF_0_CLKCTRL)) != 0x2);	/*Poll for Module is functional*/
+	while((readl(CM_DEFAULT_EMIF_1_CLKCTRL)) != 0x2);	/*Poll for Module is functional*/
+
+	ddr_init_settings(0);
+
+	if (CONFIG_TI816X_TWO_EMIF){
+		ddr_init_settings(1);
+	}
+
+	writel(0x2, CM_DEFAULT_DMM_CLKCTRL);				/*Enable EMIF1 Clock*/
+	while((readl(CM_DEFAULT_DMM_CLKCTRL)) != 0x2);		/*Poll for Module is functional*/
+
+	/*Program the DMM for interleave setting */
+	writel(0x0, DMM_LISA_MAP__0);
+	writel(0x0, DMM_LISA_MAP__1);
+	writel(0x80640300, DMM_LISA_MAP__2);
+	writel(0xC0640320, DMM_LISA_MAP__3);
+
+	/*Enable Tiled Access*/
+	writel(0x80000000, DMM_PAT_BASE_ADDR);
+
+	emif4p_init(EMIF_TIM1, EMIF_TIM2, EMIF_TIM3, EMIF_SDREF & 0xFFFFFFF, EMIF_SDCFG, EMIF_PHYCFG);
+
+}
+#endif
+
+/*
+ * TI816X specific functions
+ */
+static void main_pll_init_ti816x(u32 sil_index, u32 clk_index)
+{
+	u32 main_pll_ctrl=0;
+
+	/* Sequence to be followed:
+	 * 1. Put the PLL in bypass mode by setting BIT2 in its ctrl reg
+	 * 2. Write the values of N,P in the CTRL reg
+	 * 3. Program the freq values, divider values for the required output in the Control module reg
+	 * 4. Note: Loading the freq value requires a particular bit to be set in the freq reg.
+	 * 4. Program the CM divider value in the CM module reg
+	 * 5. Enable the PLL by setting the appropriate bit in the CTRL reg of the PLL
+	 */
+
+	 /* If the registers have been set by the ROM code dont do anything
+	  */
+
+	 main_pll_ctrl = readl(MAINPLL_CTRL);
+	 main_pll_ctrl &= 0xFFFFFFFB;
+	 main_pll_ctrl |= 4;
+	 writel(main_pll_ctrl, MAINPLL_CTRL);
+
+	 main_pll_ctrl = readl(MAINPLL_CTRL);
+	 main_pll_ctrl &= 0xFFFFFFF7;
+	 main_pll_ctrl |= 8;
+	 writel(main_pll_ctrl, MAINPLL_CTRL);
+
+	 main_pll_ctrl = readl(MAINPLL_CTRL);
+	 main_pll_ctrl &= 0xFF;
+	 main_pll_ctrl |= (MAIN_N<<16 | MAIN_P<<8);
+	 writel(main_pll_ctrl, MAINPLL_CTRL);
+
+	 writel(0x0, MAINPLL_PWD);
+
+	 writel((1<<31 | 1<<28 | (MAIN_INTFREQ1<<24) | MAIN_FRACFREQ1), MAINPLL_FREQ1);
+	 writel(((1<<8) | MAIN_MDIV1), MAINPLL_DIV1);
+
+	 writel((1<<31 | 1<<28 | (MAIN_INTFREQ2<<24) | MAIN_FRACFREQ2), MAINPLL_FREQ2);
+	 writel(((1<<8) | MAIN_MDIV2), MAINPLL_DIV2);
+
+	 writel((1<<31 | 1<<28 | (MAIN_INTFREQ3<<24) | MAIN_FRACFREQ3), MAINPLL_FREQ3);
+	 writel(((1<<8) | MAIN_MDIV3), MAINPLL_DIV3);
+
+	 writel((1<<31 | 1<<28 | (MAIN_INTFREQ4<<24) | MAIN_FRACFREQ4), MAINPLL_FREQ4);
+	 writel(((1<<8) | MAIN_MDIV4), MAINPLL_DIV4);
+
+	 writel((1<<31 | 1<<28 | (MAIN_INTFREQ5<<24) | MAIN_FRACFREQ5), MAINPLL_FREQ5);
+	 writel(((1<<8) | MAIN_MDIV5), MAINPLL_DIV5);
+
+	 writel((1<<8 | MAIN_MDIV6), MAINPLL_DIV6);
+
+	 writel((1<<8 | MAIN_MDIV7), MAINPLL_DIV7);
+
+	 while((readl(MAINPLL_CTRL) & 0x80) != 0x80);
+
+	 main_pll_ctrl = readl(MAINPLL_CTRL);
+	 main_pll_ctrl &= 0xFFFFFFFB;
+
+	 writel(main_pll_ctrl, MAINPLL_CTRL);
+
+}
+
+static void ddr_pll_init_ti816x(u32 sil_index, u32 clk_index)
+{
+	u32 ddr_pll_ctrl=0;
+
+	/* Sequence to be followed:
+	 * 1. Put the PLL in bypass mode by setting BIT2 in its ctrl reg
+	 * 2. Write the values of N,P in the CTRL reg
+	 * 3. Program the freq values, divider values for the required output in the Control module reg
+	 * 4. Note: Loading the freq value requires a particular bit to be set in the freq reg.
+	 * 4. Program the CM divider value in the CM module reg
+	 * 5. Enable the PLL by setting the appropriate bit in the CTRL reg of the PLL
+	 */
+
+	 /* If the registers have been set by the ROM code dont do anything
+	  */
+
+	ddr_pll_ctrl = readl(DDRPLL_CTRL);
+	ddr_pll_ctrl &= 0xFFFFFFFB;
+	writel(ddr_pll_ctrl, DDRPLL_CTRL);
+
+	ddr_pll_ctrl = readl(DDRPLL_CTRL);
+	ddr_pll_ctrl &= 0xFFFFFFF7;
+	ddr_pll_ctrl |= 8;
+	writel(ddr_pll_ctrl, DDRPLL_CTRL);
+
+	ddr_pll_ctrl = readl(DDRPLL_CTRL);
+	ddr_pll_ctrl &= 0xFF;
+	ddr_pll_ctrl |= (DDR_N<<16 | DDR_P<<8);
+	writel(ddr_pll_ctrl, DDRPLL_CTRL);
+
+	/* 10usec delay */
+	ddr_delay(10);
+
+	writel(0x0,DDRPLL_PWD);
+
+	writel(((0<<8) | DDR_MDIV1), DDRPLL_DIV1);
+	ddr_delay(1);
+	writel(((1<<8) | DDR_MDIV1), DDRPLL_DIV1);
+
+	writel((1<<31 | 1<<28 | (DDR_INTFREQ2<<24) | DDR_FRACFREQ2), DDRPLL_FREQ2);
+	writel(((1<<8) | DDR_MDIV2), DDRPLL_DIV2);
+
+	writel(((0<<8) | DDR_MDIV3), DDRPLL_DIV3);
+	ddr_delay(1);
+	writel(((1<<8) | DDR_MDIV3), DDRPLL_DIV3);
+	ddr_delay(1);
+	writel((0<<31 | 1<<28 | (DDR_INTFREQ3<<24) | DDR_FRACFREQ3), DDRPLL_FREQ3);
+	ddr_delay(1);
+	writel((1<<31 | 1<<28 | (DDR_INTFREQ3<<24) | DDR_FRACFREQ3), DDRPLL_FREQ3);
+
+	ddr_delay(5);
+
+	/* Wait for PLL to lock */
+	while((readl(DDRPLL_CTRL) & 0x80) != 0x80);
+
+	ddr_pll_ctrl = readl(DDRPLL_CTRL);
+	ddr_pll_ctrl &= 0xFFFFFFFB;
+	ddr_pll_ctrl |= 4;
+	writel(ddr_pll_ctrl, DDRPLL_CTRL);
+
+	writel(0x1, DDR_RCD);
+
+}
+
+/*****************************************************************
+ * Routine: peripheral_enable
+ * Description: Enable the clks & power for perifs (TIMER1, UART0,...)
+ *
+ ******************************************************************/
+static void peripheral_enable(void)
+{
+	/* DMTimers */
+	writel(0x2, CM_ALWON_L3_SLOW_CLKSTCTRL);
+
+	/* Note on Timers:
+	 * There are 8 timers(0-7) out of which timer 0 is a secure timer.
+	 * Timer 0 mux should not be changed
+	 * For other timers, there are 3 inputs TCLKIN, 32KHz (external clk or SYSCLK18?) and CLKIN(27MHz)
+	 * We select CLKIN and use that
+	 */
+
+	/* First we need to enable the modules and setup the clk path
+	 * Then the timers need to be configured by writing to their registers
+	 * To access the timer registers we need the module to be
+	 * enabled which is what we do in the first step
+	 */
+
+	/* TIMER 1 */
+	writel(0x2, CM_ALWON_TIMER_1_CLKCTRL);
+
+	/* Selects CLKIN (27MHz) */
+	writel(0x2, CM_TIMER1_CLKSEL);
+
+	while(((readl(CM_ALWON_L3_SLOW_CLKSTCTRL) & (0x80000<<1)) >> (19+1)) != 1);
+
+	while(((readl(CM_ALWON_TIMER_1_CLKCTRL) & 0x30000)>>16) !=0);
+
+
+	writel(0x2,(DM_TIMER1_BASE + 0x54));
+	while(readl(DM_TIMER1_BASE + 0x10) & 1);
+
+	writel(0x1,(DM_TIMER1_BASE + 0x38));
+
+	/* UARTs */
+	/* Note: The clock has been set to correct rate before this step */
+	writel(0x2, CM_ALWON_UART_0_CLKCTRL);
+	while(readl(CM_ALWON_UART_0_CLKCTRL) != 0x2);
+
+	writel(0x2, CM_ALWON_UART_1_CLKCTRL);
+	while(readl(CM_ALWON_UART_1_CLKCTRL) != 0x2);
+
+	writel(0x2, CM_ALWON_UART_2_CLKCTRL);
+	while(readl(CM_ALWON_UART_2_CLKCTRL) != 0x2);
+
+	while((readl(CM_ALWON_L3_SLOW_CLKSTCTRL) & 0x2100) != 0x2100);
+
+	/* eFuse */
+	writel(0x2, CM_ALWON_CUST_EFUSE_CLKCTRL);
+	while(readl(CM_ALWON_CUST_EFUSE_CLKCTRL) != 0x2);
+
+	/* GPIO0 */
+	writel(0x2, CM_ALWON_GPIO_0_CLKCTRL);
+	while(readl(CM_ALWON_GPIO_0_CLKCTRL) != 0x2);
+
+	writel((BIT(8)), CM_ALWON_GPIO_0_OPTFCLKEN_DBCLK);
+
+	/* SPI */
+	writel(0x2, CM_ALWON_SPI_CLKCTRL);
+	while(readl(CM_ALWON_SPI_CLKCTRL) != 0x2);
+
+	/* I2C0 */
+	writel(0x2, CM_ALWON_I2C_0_CLKCTRL);
+	while(readl(CM_ALWON_I2C_0_CLKCTRL) != 0x2);
+
+	/* Ethernet */
+	writel(0x2, CM_ETHERNET_CLKSTCTRL);
+	writel(0x2, CM_ALWON_ETHERNET_0_CLKCTRL);
+	writel(0x2, CM_ALWON_ETHERNET_1_CLKCTRL);
+
+	/* HSMMC */
+	writel(0x2, CM_ALWON_HSMMC_CLKCTRL);
+	while(readl(CM_ALWON_HSMMC_CLKCTRL) != 0x2);
+
+	/* WDT */
+	/* For WDT to be functional, it needs to be first stopped by writing
+	 * the pattern 0xAAAA followed by 0x5555 in the WDT start/stop register.
+	 * After that a write-once register in Control module needs to be configured
+	 * to unfreeze the timer.
+	 * Note: It is important to stop the watchdog before unfreezing it
+	 */
+	writel(0xAAAA, WDT_WSPR);
+	while(readl(WDT_WWPS) != 0x0);
+	writel(0x5555, WDT_WSPR);
+	while(readl(WDT_WWPS) != 0x0);
+
+	/* Unfreeze WDT */
+	writel(0x2, WDT_UNFREEZE);
+}
+
+/******************************************************************************
+ * prcm_init() - inits clocks for PRCM as defined in clocks.h
+ *****************************************************************************/
+void prcm_init(void)
+{
+	/* For future */
+	u32 clk_index = 0, sil_index = 0;
+
+	writel(0x2, 0x48200010);
+	/* Enable the control module */
+	writel(0x2, CM_ALWON_CONTROL_CLKCTRL);
+
+	/* Fix ROM code bug */
+	writel(0x0, 0x48180324);
+
+	main_pll_init_ti816x(clk_index, sil_index);
+	ddr_pll_init_ti816x(clk_index, sil_index);
+
+	/* With clk freqs setup to desired values, enable the required peripherals */
+	peripheral_enable();
+}
+#endif /* CONFIG_SPL_BUILD */
+
+/**********************************************************
+ * Routine: s_init
+ * Description: Does early system init of muxing and clocks.
+ * - Called at time when only stack is available.
+ **********************************************************/
+void s_init(void)
+{
+#ifdef CONFIG_SPL_BUILD
+	prcm_init();			/* Setup the PLLs and the clocks for the peripherals */
+	configure_module_pin_mux(mmc_pin_mux);
+
+	gd = &gdata;
+
+	preloader_console_init();
+
+	config_ti816x_sdram_ddr();	/* Do DDR settings */
+#endif
+}
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
+int board_mmc_init(bd_t *bis)
+{
+	omap_mmc_init(0, 0, 0);
+	return 0;
+}
+#endif
diff --git a/boards.cfg b/boards.cfg
index c98495a..aab56b9 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -239,6 +239,7 @@ am335x_evm_uart3             arm         armv7       am335x              ti
 am335x_evm_uart4             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL5,CONS_INDEX=5
 am335x_evm_uart5             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL6,CONS_INDEX=6
 ti814x_evm                   arm         armv7       ti814x              ti             am33xx
+ti816x_evm                   arm         armv7       ti816x              ti             am33xx
 pcm051                       arm         armv7       pcm051              phytec         am33xx      pcm051
 highbank                     arm         armv7       highbank            -              highbank
 mx51_efikamx                 arm         armv7       mx51_efikamx        genesi         mx5		mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
diff --git a/include/configs/ti816x_evm.h b/include/configs/ti816x_evm.h
new file mode 100644
index 0000000..e6b1ddc
--- /dev/null
+++ b/include/configs/ti816x_evm.h
@@ -0,0 +1,172 @@
+/*
+ * ti816x_evm.h
+ *
+ * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ * Antoine Tenart, <atenart@adeneo-embedded.com>
+ *
+ * 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.
+ */
+
+#ifndef __CONFIG_TI816X_EVM_H
+#define __CONFIG_TI816X_EVM_H
+
+#define CONFIG_TI81XX
+#define CONFIG_TI816X
+#define CONFIG_SYS_NO_FLASH
+
+#include <asm/arch/cpu.h>
+#include <asm/arch/hardware.h>
+
+#define CONFIG_ENV_SIZE			0x2000
+#define CONFIG_SYS_MALLOC_LEN	(CONFIG_ENV_SIZE + (32 * 1024))
+#undef  CONFIG_SYS_LONGHELP 	/* undef save memory */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT		"u-boot/ti816x# "
+#define CONFIG_MACH_TYPE		MACH_TYPE_TI8168EVM
+
+#define CONFIG_OF_LIBFDT
+#define CONFIG_CMDLINE_TAG			/* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG			/* required for ramdisk support */
+
+#include <config_cmd_default.h>		/* u-boot default commands */
+
+#define CONFIG_VERSION_VARIABLE
+#define CONFIG_DISPLAY_CPUINFO
+
+#define CONFIG_BOOTDELAY	3		/* set negative for no autoboot */
+#define CONFIG_EXTRA_EMV_SETTINGS \
+	"verify=yes\0" \
+
+#define CONFIG_BOOTCOMMAND	"mmc rescan 0; fatload mmc 0 0x81000000 uImage; bootm 0x81000000"
+#define CONFIG_BOOTARGS		"console=ttyO2,115200n8 noinitrd earlyprintk"
+
+/* Clock Defines */
+#define V_OSCK          24000000    /* Clock output from T2 */
+#define V_SCLK          (V_OSCK >> 1)
+
+#define CONFIG_SYS_MAXARGS	32	/* max number of command arguments */
+#define CONFIG_SYS_CBSIZE	512	/* console I/O buffer size */
+#define CONFIG_SYS_PBSIZE	(CONFIG_SYS_CBSIZE \
+                + sizeof(CONFIG_SYS_PROMPT) + 16)	/* print buffer size */
+#define CONFIG_SYS_BARGSIZE	CONFIG_SYS_CBSIZE	/* boot arg buffer size */
+
+/* memtest works on 8 MB in DRAM after skipping 32MB from start addr of ram disk */
+#define CONFIG_SYS_MEMTEST_START    (PHYS_DRAM_1 + (64 *1024 *1024))
+#define CONFIG_SYS_MEMTEST_END      (CONFIG_SYS_MEMTEST_START \
+                    + (8 * 1024 * 1024))
+
+#undef  CONFIG_SYS_CLKS_IN_HZ
+#define CONFIG_SYS_LOAD_ADDR	0x81000000  /* Default load address */
+#define CONFIG_SYS_HZ			1000    /* 1ms clock */
+
+#define CONFIG_CMD_ASKEN
+#define CONFIG_CMD_ECHO
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_OMAP_HSMMC
+#define CONFIG_CMD_MMC
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2
+
+#define CONFIG_FS_FAT
+
+/* Only one of the following two options (DDR3/DDR2) should be enabled */
+/*
+#define CONFIG_TI816X_EVM_DDR2
+#define CONFIG_TI816X_TWO_EMIF	1
+*/
+#define CONFIG_TI816X_EVM_DDR3
+
+
+#define CONFIG_NR_DRAM_BANKS	2			/* we have 2 banks of DRAM */
+#define PHYS_DRAM_1				0x80000000	/* DRAM Bank #1 */
+#define PHYS_DRAM_1_SIZE        0x40000000  /* 1 GB */
+#define PHYS_DRAM_2				0xC0000000 	/* DRAM Bank #2 */
+#define PHYS_DRAM_2_SIZE		0x40000000	/* 1 GB */
+
+#define CONFIG_MAX_RAM_BANK_SIZE	(2048 << 20)	/* 2048MB */
+#define CONFIG_SYS_SDRAM_BASE		PHYS_DRAM_1
+#define CONFIG_SYS_INIT_SP_ADDR		(NON_SECURE_SRAM_END - \
+                    GENERATED_GBL_DATA_SIZE)
+
+/**
+ * Platform/Board specific defs
+ */
+#define CONFIG_SYS_CLK_FREQ     27000000
+#define CONFIG_SYS_TIMERBASE    0x4802E000
+#define CONFIG_SYS_PTV          2   /* Divisor: 2^(PTV+1) => 8 */
+
+#undef CONFIG_NAND_OMAP_GPMC
+
+/*
+ * NS16550 Configuration
+ */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SYS_NS16550_REG_SIZE (-4)
+#define CONFIG_SYS_NS16550_CLK      (48000000)
+#define CONFIG_SYS_NS16550_COM1     0x48024000  /* Base EVM has UART2 */
+
+#define CONFIG_BAUDRATE     115200
+#define CONFIG_SYS_BAUDRATE_TABLE   { 110, 300, 600, 1200, 2400, \
+4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
+
+/* allow overwriting serial config and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_SERIAL1
+#define CONFIG_SERIAL2
+#define CONFIG_SERIAL3
+#define CONFIG_CONS_INDEX	1
+#define CONFIG_SYS_CONSOLE_INFO_QUIET
+
+#define CONFIG_ENV_IS_NOWHERE
+
+/* SPL */
+/* Defines for SPL */
+#define CONFIG_SPL
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE        0x40300000
+#define CONFIG_SPL_MAX_SIZE     ((128 - 18) * 1024)
+#define CONFIG_SPL_STACK        CONFIG_SYS_INIT_SP_ADDR
+
+#define CONFIG_SPL_BSS_START_ADDR   0x80000000
+#define CONFIG_SPL_BSS_MAX_SIZE     0x80000     /* 512 KB */
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS      0x200 /* 256 KB */
+#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION    1
+#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME        "u-boot.img"
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_FAT_SUPPORT
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SPL_YMODEM_SUPPORT
+#define CONFIG_SYS_SPI_U_BOOT_OFFS  0x20000
+#define CONFIG_SYS_SPI_U_BOOT_SIZE  0x40000
+#define CONFIG_SPL_LDSCRIPT     "$(CPUDIR)/omap-common/u-boot-spl.lds"
+
+#define CONFIG_SPL_BOARD_INIT
+
+#define CONFIG_SYS_TEXT_BASE        0x80800000
+#define CONFIG_SYS_SPL_MALLOC_START 0x80208000
+#define CONFIG_SYS_SPL_MALLOC_SIZE  0x100000
+
+/* Since SPL did pll and ddr initialization for us,
+ * we don't need to do it twice.
+ */
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#endif
+
+/* Unsupported features */
+#undef CONFIG_USE_IRQ
+
+#endif
-- 
1.7.10.4

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

* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
  2013-03-28 17:14 ` [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X TENART Antoine
@ 2013-03-28 21:02   ` Peter Korsgaard
  2013-03-28 21:50   ` Tom Rini
  1 sibling, 0 replies; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 21:02 UTC (permalink / raw)
  To: u-boot

>>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:

 TENART> Rename some CONFIG_TI814X to a more generic CONFIG_81XX

Acked-by: Peter Korsgaard <jacmet@Sunsite.dk>

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 2/8] Add TI816X mux definitions.
  2013-03-28 17:14 ` [U-Boot] [PATCH 2/8] Add TI816X mux definitions TENART Antoine
@ 2013-03-28 21:04   ` Peter Korsgaard
  2013-03-28 21:52     ` Tom Rini
  0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 21:04 UTC (permalink / raw)
  To: u-boot

>>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:

Acked-by: Peter Korsgaard <jacmet@sunsite.dk>

I just now noticed that you forgot to sign off on your patches (-s
option).

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference
  2013-03-28 17:14 ` [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference TENART Antoine
@ 2013-03-28 21:14   ` Peter Korsgaard
  0 siblings, 0 replies; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 21:14 UTC (permalink / raw)
  To: u-boot

>>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:

Acked-by: Peter Korsgaard <jacmet@sunsite.dk>

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 5/8] Add TI816X cpu definitions
  2013-03-28 17:14 ` [U-Boot] [PATCH 5/8] Add TI816X cpu definitions TENART Antoine
@ 2013-03-28 21:24   ` Peter Korsgaard
  2013-03-29 10:17     ` TENART Antoine
  0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 21:24 UTC (permalink / raw)
  To: u-boot

>>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:

 TENART> ---
 TENART>  arch/arm/include/asm/arch-am33xx/cpu.h        |    4 +
 TENART>  arch/arm/include/asm/arch-am33xx/cpu_ti816x.h |  269 +++++++++++++++++++++++++
 TENART>  arch/arm/include/asm/emif.h                   |    4 +
 TENART>  3 files changed, 277 insertions(+)
 TENART>  create mode 100644 arch/arm/include/asm/arch-am33xx/cpu_ti816x.h

 TENART> diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h
 TENART> index 13c0667..34b3aa9 100644
 TENART> --- a/arch/arm/include/asm/arch-am33xx/cpu.h
 TENART> +++ b/arch/arm/include/asm/arch-am33xx/cpu.h
 TENART> @@ -25,6 +25,10 @@
 
 TENART>  #include <asm/arch/hardware.h>
 
 TENART> +#if defined(CONFIG_TI816X)
 TENART> +#include <asm/arch/cpu_ti816x.h>
 TENART> +#endif
 TENART> +
 TENART>  #define BIT(x)				(1 << x)
 TENART>  #define CL_BIT(x)			(0 << x)
 
 TENART> diff --git a/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h b/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h
 TENART> new file mode 100644
 TENART> index 0000000..b4a13a8
 TENART> --- /dev/null
 TENART> +++ b/arch/arm/include/asm/arch-am33xx/cpu_ti816x.h
 TENART> @@ -0,0 +1,269 @@
 TENART> +/*
 TENART> + * cpu_ti816x.h
 TENART> + *
 TENART> + * Copyright (C) 2013, Adeneo Embedded <www.adeneo-embedded.com>
 TENART> + * Antoine Tenart, <atenart@adeneo-embedded.com>
 TENART> + *
 TENART> + * Based on TI-PSP-04.00.02.14 :
 TENART> + *
 TENART> + * (C) Copyright 2006
 TENART> + * Texas Instruments, <www.ti.com>
 TENART> + *
 TENART> + * See file CREDITS for list of people who contributed to this
 TENART> + * project.
 TENART> + *
 TENART> + * This program is free software; you can redistribute it and/or
 TENART> + * modify it under the terms of the GNU General Public License as
 TENART> + * published by the Free Software Foundation; either version 2 of
 TENART> + * the License, or (at your option) any later version.
 TENART> + *
 TENART> + * This program is distributed in the hope that it will be useful,
 TENART> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 TENART> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 TENART> + * GNU General Public License for more details.
 TENART> + *
 TENART> + * You should have received a copy of the GNU General Public License
 TENART> + * along with this program; if not, write to the Free Software
 TENART> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 TENART> + * MA 02111-1307 USA
 TENART> + *
 TENART> + */
 TENART> +
 TENART> +#ifndef _TI816X_CPU_H
 TENART> +#define _TI816X_CPU_H
 TENART> +
 TENART> +#include <asm/arch/hardware.h>
 TENART> +
 TENART> +/* Timer registers */
 TENART> +#define TIMER_TCLR			0x38		/* Timer control register */
 TENART> +#define TIMER_TCRR			0x3C		/* Timer counter register */
 TENART> +#define TIMER_TLDR			0x40		/* Timer load value register*/
 TENART> +

Are these defines all needed? As far as I can see from skimming the
series, they aren't referenced anywhere.

 TENART> diff --git a/arch/arm/include/asm/emif.h b/arch/arm/include/asm/emif.h
 TENART> index ed251ec..a7b938c 100644
 TENART> --- a/arch/arm/include/asm/emif.h
 TENART> +++ b/arch/arm/include/asm/emif.h
 TENART> @@ -521,7 +521,11 @@
 TENART>  #define SDRAM_CONFIG_EXT_RD_LVL_4_SAMPLES	0x000001A7
 
 TENART>  /* DMM */
 TENART> +#if defined(CONFIG_TI816X)
 TENART> +#define DMM_BASE			0x4E000000
 TENART> +#else
 TENART>  #define DMM_BASE			0x4E000040
 TENART> +#endif

I don't think that's right. Matt's series uses DMM_BASE to refer to the
lisa registers, which are offset 0x40 from the DMM region, so I think
you can drop this.

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 6/8] Add TI816X specific register definitions
  2013-03-28 17:14 ` [U-Boot] [PATCH 6/8] Add TI816X specific register definitions TENART Antoine
@ 2013-03-28 21:37   ` Peter Korsgaard
  2013-03-28 21:52     ` Tom Rini
  0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 21:37 UTC (permalink / raw)
  To: u-boot

>>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:

 TENART> Also move some non common defintions from hardware.h
 TENART> ---
 TENART>  arch/arm/include/asm/arch-am33xx/hardware.h        |    7 +--
 TENART>  arch/arm/include/asm/arch-am33xx/hardware_am33xx.h |    5 ++
 TENART>  arch/arm/include/asm/arch-am33xx/hardware_ti814x.h |    5 ++
 TENART>  arch/arm/include/asm/arch-am33xx/hardware_ti816x.h |   58 ++++++++++++++++++++
 TENART>  4 files changed, 70 insertions(+), 5 deletions(-)
 TENART>  create mode 100644 arch/arm/include/asm/arch-am33xx/hardware_ti816x.h

..

 TENART> +#define DDRPHY_0_CONFIG_BASE	0x48198000
 TENART> +#define DDRPHY_1_CONFIG_BASE	0x4819a000
 TENART> +#define DDRPHY_CONFIG_BASE		((emif == 0) ? DDRPHY_0_CONFIG_BASE:DDRPHY_1_CONFIG_BASE)
 TENART> +
 TENART> +/* CPSW Config space */
 TENART> +#define CPSW_MDIO_BASE			0x4A100800

ti816x doesn't have CPSW, so the name is a bit odd (the base address
matches the emac mdio module). The emac driver expects an
asm/arch/emac_defs.h header with a EMAC_MDIO_BASE_ADDR define (among
others).

Perhaps just drop it from here as you're not adding emac support in this
series anyway.

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 8/8] Add TI816X evm board support
  2013-03-28 17:14 ` [U-Boot] [PATCH 8/8] Add TI816X evm board support TENART Antoine
@ 2013-03-28 21:49   ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:49 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 06:14:41PM +0100, TENART Antoine wrote:

> ---
>  MAINTAINERS                            |    4 +
>  arch/arm/include/asm/arch-am33xx/spl.h |    9 +
>  board/ti/ti816x/Makefile               |   48 ++
>  board/ti/ti816x/evm.c                  |  753 ++++++++++++++++++++++++++++++++

This file has a large number of style problems, both things I know
checkpatch will catch as well as inconsistent spacing throughout and
/*
 * All multiline comments must look
 * like this.
 */

[snip]
> +#define CONFIG_SYS_BAUDRATE_TABLE   { 110, 300, 600, 1200, 2400, \
> +4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }

Please use the fallback table instead of this.  And I snipped it before
I recalled, but you also should have enough memory to keep longhelp :)

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/03a074ac/attachment.pgp>

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

* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
  2013-03-28 17:14 ` [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X TENART Antoine
  2013-03-28 21:02   ` Peter Korsgaard
@ 2013-03-28 21:50   ` Tom Rini
  2013-03-28 22:05     ` Peter Korsgaard
  1 sibling, 1 reply; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:50 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 06:14:34PM +0100, TENART Antoine wrote:

> Rename some CONFIG_TI814X to a more generic CONFIG_81XX

This is fine except it breaks bisectability, you need to also add
CONFIG_TI81XX to ti814x_evm.h at this point.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/f19ea3a2/attachment.pgp>

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

* [U-Boot] [PATCH 2/8] Add TI816X mux definitions.
  2013-03-28 21:04   ` Peter Korsgaard
@ 2013-03-28 21:52     ` Tom Rini
  2013-03-29  9:11       ` TENART Antoine
  0 siblings, 1 reply; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:52 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 10:04:40PM +0100, Peter Korsgaard wrote:
> >>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:
> 
> Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
> 
> I just now noticed that you forgot to sign off on your patches (-s
> option).

Yes, please fix with a v2 of the series which also addreses the other
feedback as well.  Also, patches 2-7 can be squashed into a single "Add
ti816x support" patch.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/5aaabd33/attachment.pgp>

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

* [U-Boot] [PATCH 3/8] Add TI816X clocks definitions
  2013-03-28 17:14 ` [U-Boot] [PATCH 3/8] Add TI816X clocks definitions TENART Antoine
@ 2013-03-28 21:52   ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:52 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 06:14:36PM +0100, TENART Antoine wrote:

> ---
>  arch/arm/include/asm/arch-am33xx/clock.h         |    4 +
>  arch/arm/include/asm/arch-am33xx/clocks_ti816x.h |  173 ++++++++++++++++++++++
>  2 files changed, 177 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-am33xx/clocks_ti816x.h

Reviewed-by: Tom Rini <trini@ti.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/78b66cc9/attachment.pgp>

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

* [U-Boot] [PATCH 4/8] Add TI816X ddr definitions
  2013-03-28 17:14 ` [U-Boot] [PATCH 4/8] Add TI816X ddr definitions TENART Antoine
@ 2013-03-28 21:52   ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:52 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 06:14:37PM +0100, TENART Antoine wrote:

[snip]
> +#define CONFIG_TI816X_DDR3_796			/* Values supported 400,531,675,796 */
> +#define CONFIG_TI816X_DDR3_SW_LEVELING	/* Enable software leveling as part of DDR3 init*/

Lines too long.  Please run tools/checkpatch.pl on the whole series,
thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/351756dd/attachment.pgp>

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

* [U-Boot] [PATCH 6/8] Add TI816X specific register definitions
  2013-03-28 21:37   ` Peter Korsgaard
@ 2013-03-28 21:52     ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2013-03-28 21:52 UTC (permalink / raw)
  To: u-boot

On Thu, Mar 28, 2013 at 10:37:28PM +0100, Peter Korsgaard wrote:
> >>>>> "TENART" == TENART Antoine <atenart@adeneo-embedded.com> writes:
> 
>  TENART> Also move some non common defintions from hardware.h
>  TENART> ---
>  TENART>  arch/arm/include/asm/arch-am33xx/hardware.h        |    7 +--
>  TENART>  arch/arm/include/asm/arch-am33xx/hardware_am33xx.h |    5 ++
>  TENART>  arch/arm/include/asm/arch-am33xx/hardware_ti814x.h |    5 ++
>  TENART>  arch/arm/include/asm/arch-am33xx/hardware_ti816x.h |   58 ++++++++++++++++++++
>  TENART>  4 files changed, 70 insertions(+), 5 deletions(-)
>  TENART>  create mode 100644 arch/arm/include/asm/arch-am33xx/hardware_ti816x.h
> 
> ..
> 
>  TENART> +#define DDRPHY_0_CONFIG_BASE	0x48198000
>  TENART> +#define DDRPHY_1_CONFIG_BASE	0x4819a000
>  TENART> +#define DDRPHY_CONFIG_BASE		((emif == 0) ? DDRPHY_0_CONFIG_BASE:DDRPHY_1_CONFIG_BASE)
>  TENART> +
>  TENART> +/* CPSW Config space */
>  TENART> +#define CPSW_MDIO_BASE			0x4A100800
> 
> ti816x doesn't have CPSW, so the name is a bit odd (the base address
> matches the emac mdio module). The emac driver expects an
> asm/arch/emac_defs.h header with a EMAC_MDIO_BASE_ADDR define (among
> others).
> 
> Perhaps just drop it from here as you're not adding emac support in this
> series anyway.

Agreed, and please check the whole series over for other unused defines.
We shouldn't import things we aren't using.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130328/c045bc39/attachment.pgp>

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

* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
  2013-03-28 21:50   ` Tom Rini
@ 2013-03-28 22:05     ` Peter Korsgaard
  2013-03-29  9:09       ` TENART Antoine
  0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2013-03-28 22:05 UTC (permalink / raw)
  To: u-boot

>>>>> "Tom" == Tom Rini <trini@ti.com> writes:

 Tom> On Thu, Mar 28, 2013 at 06:14:34PM +0100, TENART Antoine wrote:
 >> Rename some CONFIG_TI814X to a more generic CONFIG_81XX

 Tom> This is fine except it breaks bisectability, you need to also add
 Tom> CONFIG_TI81XX to ti814x_evm.h at this point.

It afaik already has it.

-- 
Bye, Peter Korsgaard

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

* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
  2013-03-28 22:05     ` Peter Korsgaard
@ 2013-03-29  9:09       ` TENART Antoine
  2013-03-29 12:30         ` Tom Rini
  0 siblings, 1 reply; 24+ messages in thread
From: TENART Antoine @ 2013-03-29  9:09 UTC (permalink / raw)
  To: u-boot

>   Tom>  This is fine except it breaks bisectability, you need to also add
>   Tom>  CONFIG_TI81XX to ti814x_evm.h at this point.
>
> It afaik already has it.
>

Yes, it was introduced by Matt Porter in "ti814x_evm: add ti814x evm 
board support" patch :
+#define CONFIG_TI81XX
+#define CONFIG_TI814X

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

* [U-Boot] [PATCH 2/8] Add TI816X mux definitions.
  2013-03-28 21:52     ` Tom Rini
@ 2013-03-29  9:11       ` TENART Antoine
  0 siblings, 0 replies; 24+ messages in thread
From: TENART Antoine @ 2013-03-29  9:11 UTC (permalink / raw)
  To: u-boot

> Yes, please fix with a v2 of the series which also addreses the other
> feedback as well.  Also, patches 2-7 can be squashed into a single "Add
> ti816x support" patch.
>

Thanks for your review, I'll do a v2 following your advices.

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

* [U-Boot] [PATCH 5/8] Add TI816X cpu definitions
  2013-03-28 21:24   ` Peter Korsgaard
@ 2013-03-29 10:17     ` TENART Antoine
  0 siblings, 0 replies; 24+ messages in thread
From: TENART Antoine @ 2013-03-29 10:17 UTC (permalink / raw)
  To: u-boot

>   TENART>   /* DMM */
>   TENART>  +#if defined(CONFIG_TI816X)
>   TENART>  +#define DMM_BASE			0x4E000000
>   TENART>  +#else
>   TENART>   #define DMM_BASE			0x4E000040
>   TENART>  +#endif
>
> I don't think that's right. Matt's series uses DMM_BASE to refer to the
> lisa registers, which are offset 0x40 from the DMM region, so I think
> you can drop this.
>

You're right, this is because I didn't use config_dmm(). I'll fix that.

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

* [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X
  2013-03-29  9:09       ` TENART Antoine
@ 2013-03-29 12:30         ` Tom Rini
  0 siblings, 0 replies; 24+ messages in thread
From: Tom Rini @ 2013-03-29 12:30 UTC (permalink / raw)
  To: u-boot

On Fri, Mar 29, 2013 at 10:09:30AM +0100, TENART Antoine wrote:
> >   Tom>  This is fine except it breaks bisectability, you need to also add
> >   Tom>  CONFIG_TI81XX to ti814x_evm.h at this point.
> >
> > It afaik already has it.
> >
> 
> Yes, it was introduced by Matt Porter in "ti814x_evm: add ti814x evm 
> board support" patch :
> +#define CONFIG_TI81XX
> +#define CONFIG_TI814X

OK, thanks, forgot Matt already set the symbol.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130329/cb42acb7/attachment.pgp>

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

end of thread, other threads:[~2013-03-29 12:30 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1364490881-25921-1-git-send-email-atenart@adeneo-embedded.com>
2013-03-28 17:14 ` [U-Boot] [PATCH 1/8] Prepare for TI816X : reuse existing code from TI814X TENART Antoine
2013-03-28 21:02   ` Peter Korsgaard
2013-03-28 21:50   ` Tom Rini
2013-03-28 22:05     ` Peter Korsgaard
2013-03-29  9:09       ` TENART Antoine
2013-03-29 12:30         ` Tom Rini
2013-03-28 17:14 ` [U-Boot] [PATCH 2/8] Add TI816X mux definitions TENART Antoine
2013-03-28 21:04   ` Peter Korsgaard
2013-03-28 21:52     ` Tom Rini
2013-03-29  9:11       ` TENART Antoine
2013-03-28 17:14 ` [U-Boot] [PATCH 3/8] Add TI816X clocks definitions TENART Antoine
2013-03-28 21:52   ` Tom Rini
2013-03-28 17:14 ` [U-Boot] [PATCH 4/8] Add TI816X ddr definitions TENART Antoine
2013-03-28 21:52   ` Tom Rini
2013-03-28 17:14 ` [U-Boot] [PATCH 5/8] Add TI816X cpu definitions TENART Antoine
2013-03-28 21:24   ` Peter Korsgaard
2013-03-29 10:17     ` TENART Antoine
2013-03-28 17:14 ` [U-Boot] [PATCH 6/8] Add TI816X specific register definitions TENART Antoine
2013-03-28 21:37   ` Peter Korsgaard
2013-03-28 21:52     ` Tom Rini
2013-03-28 17:14 ` [U-Boot] [PATCH 7/8] Add TI816X mmc clock reference TENART Antoine
2013-03-28 21:14   ` Peter Korsgaard
2013-03-28 17:14 ` [U-Boot] [PATCH 8/8] Add TI816X evm board support TENART Antoine
2013-03-28 21:49   ` Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox