diff --git a/board/udoo/1066mhz_4x256mx16_dl.cfg b/board/udoo/1066mhz_4x256mx16_dl.cfg
new file mode 100644
index 0000000..e37c9f9
--- /dev/null
+++ b/board/udoo/1066mhz_4x256mx16_dl.cfg
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 Seco USA Inc
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+
+DATA 4, MX6_MMDC_P0_MDPDC,	0x0002002D
+DATA 4, MX6_MMDC_P0_MDOTC,	0x00333040
+
+DATA 4, MX6_MMDC_P0_MDCFG0,	0x3F4352F3
+DATA 4, MX6_MMDC_P0_MDCFG1,	0xB66D8B63
+DATA 4, MX6_MMDC_P0_MDCFG2,	0x01FF00DB
+
+DATA 4, MX6_MMDC_P0_MDMISC,	0x00001740
+DATA 4, MX6_MMDC_P0_MDSCR,	0x00008000
+DATA 4, MX6_MMDC_P0_MDRWD,	0x000026D2
+
+
+DATA 4, MX6_MMDC_P0_MDOR,	0x00431023
+DATA 4, MX6_MMDC_P0_MDASP,	0x00000027
+DATA 4, MX6_MMDC_P0_MDCTL,	0x831A0000
+
+DATA 4, MX6_MMDC_P0_MDSCR,	0x02008032
+DATA 4, MX6_MMDC_P0_MDSCR,	0x00008033
+DATA 4, MX6_MMDC_P0_MDSCR,	0x00048031
+DATA 4, MX6_MMDC_P0_MDSCR,	0x05208030
+DATA 4, MX6_MMDC_P0_MDSCR,	0x04008040
+
+DATA 4, MX6_MMDC_P0_MPZQHWCTRL,	0xa1390003
+DATA 4, MX6_MMDC_P1_MPZQHWCTRL,	0xa1390003
+
+DATA 4, MX6_MMDC_P0_MDREF,	0x00007800
+
+DATA 4, MX6_MMDC_P0_MPODTCTRL,	0x00022227
+DATA 4, MX6_MMDC_P1_MPODTCTRL,	0x00022227
+
+DATA 4, MX6_MMDC_P0_MPDGCTRL0,	0x425C0251
+DATA 4, MX6_MMDC_P0_MPDGCTRL1,	0x021B021E
+DATA 4, MX6_MMDC_P1_MPDGCTRL0,	0x021B021E
+DATA 4, MX6_MMDC_P1_MPDGCTRL1,	0x01730200
+
+DATA 4, MX6_MMDC_P0_MPRDDLCTL,	0x45474C45
+DATA 4, MX6_MMDC_P1_MPRDDLCTL,	0x44464744
+DATA 4, MX6_MMDC_P0_MPWRDLCTL,	0x3F3F3336
+DATA 4, MX6_MMDC_P1_MPWRDLCTL,	0x32383630
+
+DATA 4, MX6_MMDC_P0_MPWLDECTRL0,	0x002F0038
+DATA 4, MX6_MMDC_P0_MPWLDECTRL1,	0x001F001F
+DATA 4, MX6_MMDC_P1_MPWLDECTRL0,	0x001F001F
+DATA 4, MX6_MMDC_P1_MPWLDECTRL1,	0x001F001F
+
+DATA 4, MX6_MMDC_P0_MPMUR0,	0x00000000
+DATA 4, MX6_MMDC_P1_MPMUR0,	0x00000000
+
+DATA 4, MX6_MMDC_P0_MDPDC,	0x0002556D
+DATA 4, MX6_MMDC_P0_MAPSR,	0x00011006
+DATA 4, MX6_MMDC_P0_MDSCR,	0x00000000
diff --git a/board/udoo/ddr-setup_dl.cfg b/board/udoo/ddr-setup_dl.cfg
new file mode 100644
index 0000000..487570e
--- /dev/null
+++ b/board/udoo/ddr-setup_dl.cfg
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2013 Seco USA Inc
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Device Configuration Data (DCD)
+ *
+ * Each entry must have the format:
+ * Addr-type           Address        Value
+ *
+ * where:
+ *      Addr-type register length (1,2 or 4 bytes)
+ *      Address   absolute address of the register
+ *      value     value to be stored in the register
+ */
+
+/*
+ * DDR3 settings
+ * MX6Q    ddr is limited to 1066 Mhz	currently 1056 MHz(528 MHz clock),
+ *	   memory bus width: 64 bits	x16/x32/x64
+ * MX6DL   ddr is limited to 800 MHz(400 MHz clock)
+ *	   memory bus width: 64 bits	x16/x32/x64
+ * MX6SOLO ddr is limited to 800 MHz(400 MHz clock)
+ *	   memory bus width: 32 bits	x16/x32
+ */
+DATA 4, MX6_IOM_DRAM_SDQS0,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS1,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS2,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS3,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS4,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS5,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS6,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDQS7,	0x00000028
+
+DATA 4, MX6_IOM_GRP_B0DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B1DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B2DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B3DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B4DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B5DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B6DS,	0x00000028
+DATA 4, MX6_IOM_GRP_B7DS,	0x00000028
+DATA 4, MX6_IOM_GRP_ADDDS,	0x00000028
+
+DATA 4, MX6_IOM_GRP_CTLDS,	0x00000028
+
+DATA 4, MX6_IOM_DRAM_DQM0,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM1,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM2,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM3,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM4,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM5,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM6,	0x00000028
+DATA 4, MX6_IOM_DRAM_DQM7,	0x00000028
+
+DATA 4, MX6_IOM_DRAM_CAS,	0x00000028
+DATA 4, MX6_IOM_DRAM_RAS,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDCLK_0,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDCLK_1,	0x00000028
+
+DATA 4, MX6_IOM_DRAM_RESET,	0x00000028
+
+DATA 4, MX6_IOM_DRAM_SDODT0,	0x00000028
+DATA 4, MX6_IOM_DRAM_SDODT1,	0x00000028
+
+/* (differential input) */
+DATA 4, MX6_IOM_DDRMODE_CTL,	0x00020000
+/* (differential input) */
+DATA 4, MX6_IOM_GRP_DDRMODE,	0x00020000
+/* disable ddr pullups */
+DATA 4, MX6_IOM_GRP_DDRPKE,	0x00000000
+DATA 4, MX6_IOM_DRAM_SDBA2,	0x00000000
+/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */
+DATA 4, MX6_IOM_GRP_DDR_TYPE,	0x000C0000
+
+/* Read data DQ Byte0-3 delay */
+DATA 4, MX6_MMDC_P0_MPRDDQBY0DL,	0x33333333
+DATA 4, MX6_MMDC_P0_MPRDDQBY1DL,	0x33333333
+DATA 4, MX6_MMDC_P0_MPRDDQBY2DL,	0x33333333
+DATA 4, MX6_MMDC_P0_MPRDDQBY3DL,	0x33333333
+DATA 4, MX6_MMDC_P1_MPRDDQBY0DL,	0x33333333
+DATA 4, MX6_MMDC_P1_MPRDDQBY1DL,	0x33333333
+DATA 4, MX6_MMDC_P1_MPRDDQBY2DL,	0x33333333
+DATA 4, MX6_MMDC_P1_MPRDDQBY3DL,	0x33333333
diff --git a/board/udoo/udoo-dl.cfg b/board/udoo/udoo-dl.cfg
new file mode 100644
index 0000000..46953c1
--- /dev/null
+++ b/board/udoo/udoo-dl.cfg
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2013 Boundary Devices
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Refer doc/README.imximage for more details about how-to configure
+ * and create imximage boot image
+ *
+ * The syntax is taken as close as possible with the kwbimage
+ */
+
+/* image version */
+IMAGE_VERSION 2
+
+/*
+ * Boot Device : one of
+ * spi, sd (the board has no nand neither onenand)
+ */
+BOOT_FROM      sd
+
+#define __ASSEMBLY__
+#include <config.h>
+#include "asm/arch/mx6-ddr.h"
+#include "asm/arch/iomux.h"
+#include "asm/arch/crm_regs.h"
+
+#include "ddr-setup_dl.cfg"
+#include "1066mhz_4x256mx16_dl.cfg"
+#include "clocks.cfg"
diff --git a/configs/udoo_dl_defconfig b/configs/udoo_dl_defconfig
new file mode 100644
index 0000000..5dc9016
--- /dev/null
+++ b/configs/udoo_dl_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/udoo/udoo-dl.cfg,MX6DL,DDR_MB=1024"
+CONFIG_ARM=y
+CONFIG_TARGET_UDOO=y
diff --git a/include/configs/udoo.h b/include/configs/udoo.h
index 700e9c1..7fdce0f 100644
--- a/include/configs/udoo.h
+++ b/include/configs/udoo.h
@@ -78,7 +78,7 @@
 #define CONFIG_CMD_BMODE
 #define CONFIG_CMD_SETEXPR
 
-#define CONFIG_BOOTDELAY		3
+#define CONFIG_BOOTDELAY		1
 
 #define CONFIG_SYS_MEMTEST_START	0x10000000
 #define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
@@ -96,60 +96,97 @@
 #define CONFIG_BOUNCE_BUFFER
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FS_GENERIC
 #define CONFIG_DOS_PARTITION
 
+#define CONFIG_IDENT_STRING " Parabola GNU/Linux-libre"
+
+#if defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
+#define CONFIG_DEFAULT_FDT_FILE		"imx6dl-udoo.dtb"
+#elif defined(CONFIG_MX6Q)
 #define CONFIG_DEFAULT_FDT_FILE		"imx6q-udoo.dtb"
+#endif
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
-	"script=boot.scr\0" \
-	"image=zImage\0" \
-	"console=ttymxc1\0" \
+	"bootfile=vmlinuz-linux-libre\0" \
+	"bootdir=/boot\0" \
+	"console=ttymxc1,115200\0" \
 	"splashpos=m,m\0" \
 	"fdt_high=0xffffffff\0" \
+	"rdaddr=0x12A00000\0" \
+	"rdfile=initramfs-linux-libre.img\0" \
 	"initrd_high=0xffffffff\0" \
-	"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
-	"fdt_addr=0x18000000\0" \
-	"boot_fdt=try\0" \
+	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
+	"fdtdir=/boot/dtbs/linux-libre\0" \
+	"fdtaddr=0x18000000\0" \
 	"ip_dyn=yes\0" \
+	"optargs=\0" \
+	"video=\0" \
 	"mmcdev=0\0" \
-	"mmcpart=1\0" \
-	"mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
-	"update_sd_firmware_filename=u-boot.imx\0" \
-	"update_sd_firmware=" \
-		"if test ${ip_dyn} = yes; then " \
-			"setenv get_cmd dhcp; " \
+	"mmcroot=/dev/mmcblk0p1 rw rootwait\0" \
+	"mmcargs=setenv bootargs console=${console} " \
+		"${optargs} " \
+		"root=${mmcroot} " \
+		"video=${video}\0" \
+	"videoargs=" \
+		"setenv nextcon 0; " \
+		"if hdmidet; then " \
+			"setenv bootargs ${bootargs} " \
+				"video=mxcfb${nextcon}:dev=hdmi,1280x720M@60," \
+					"if=RGB24; " \
+			"setenv fbmem fbmem=28M; " \
+			"setexpr nextcon ${nextcon} + 1; " \
 		"else " \
-			"setenv get_cmd tftp; " \
+			"echo - no HDMI monitor;" \
 		"fi; " \
-		"if mmc dev ${mmcdev}; then "	\
-			"if ${get_cmd} ${update_sd_firmware_filename}; then " \
-				"setexpr fw_sz ${filesize} / 0x200; " \
-				"setexpr fw_sz ${fw_sz} + 1; "	\
-				"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
-			"fi; "	\
-		"fi\0" \
-	"mmcargs=setenv bootargs console=${console},${baudrate} " \
-		"root=${mmcroot}\0" \
-	"loadbootscript=" \
-		"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-	"bootscript=echo Running bootscript from mmc ...; " \
-		"source\0" \
-	"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
-	"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
-	"mmcboot=echo Booting from mmc ...; " \
-		"run mmcargs; " \
-		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-			"if run loadfdt; then " \
-				"bootz ${loadaddr} - ${fdt_addr}; " \
+		"i2c dev 1; " \
+		"if i2c probe 0x10; then " \
+			"setenv bootargs ${bootargs} " \
+				"video=mxcfb${nextcon}:dev=lcd,800x480@60," \
+					"if=RGB666; " \
+			"if test 0 -eq ${nextcon}; then " \
+				"setenv fbmem fbmem=10M; " \
 			"else " \
-				"if test ${boot_fdt} = try; then " \
-					"bootz; " \
-				"else " \
-					"echo WARN: Cannot load the DT; " \
-				"fi; " \
+				"setenv fbmem ${fbmem},10M; " \
 			"fi; " \
+			"setexpr nextcon ${nextcon} + 1; " \
 		"else " \
-			"bootz; " \
+			"echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \
+		"fi; " \
+		"setenv bootargs ${bootargs} ${fbmem}\0" \
+	"loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+	"loadrd=load mmc ${bootpart} ${rdaddr} ${bootdir}/${rdfile}\0" \
+	"loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load mmc ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
+	"mmcboot=mmc dev ${mmcdev}; " \
+		"if mmc rescan; then " \
+			"echo SD/MMC found on device ${mmcdev};" \
+			"setenv bootpart ${mmcdev}:1; " \
+			"echo Checking for: ${bootdir}/uEnv.txt ...;" \
+			"if test -e mmc ${bootpart} ${bootdir}/uEnv.txt; then " \
+				"load mmc ${bootpart} ${loadaddr} ${bootdir}/uEnv.txt;" \
+				"env import -t ${loadaddr} ${filesize};" \
+				"echo Loaded environment from ${bootdir}/uEnv.txt;" \
+				"echo Checking if uenvcmd is set ...;" \
+				"if test -n ${uenvcmd}; then " \
+					"echo Running uenvcmd ...;" \
+					"run uenvcmd;" \
+				"fi;" \
+			"fi; " \
+			"if run loadimage; then " \
+				"if run loadfdt; then " \
+					"run mmcargs;" \
+					"if run loadrd; then " \
+						"bootz ${loadaddr} ${rdaddr}:${filesize} ${fdtaddr};" \
+					"else " \
+						"bootz ${loadaddr} - ${fdtaddr};" \
+					"fi;" \
+				"else " \
+					"echo Kernel found, but no device tree found;" \
+				"fi;" \
+			"else " \
+				"echo No kernel found;" \
+			"fi;" \
 		"fi;\0" \
 	"netargs=setenv bootargs console=${console},${baudrate} " \
 		"root=/dev/nfs " \
@@ -161,10 +198,10 @@
 		"else " \
 			"setenv get_cmd tftp; " \
 		"fi; " \
-		"${get_cmd} ${image}; " \
+		"${get_cmd} ${bootfile}; " \
 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-			"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-				"bootz ${loadaddr} - ${fdt_addr}; " \
+			"if ${get_cmd} ${fdtaddr} ${fdtfile}; then " \
+				"bootz ${loadaddr} - ${fdtaddr}; " \
 			"else " \
 				"if test ${boot_fdt} = try; then " \
 					"bootz; " \
@@ -177,16 +214,7 @@
 		"fi;\0"
 
 #define CONFIG_BOOTCOMMAND \
-	   "mmc dev ${mmcdev}; if mmc rescan; then " \
-		   "if run loadbootscript; then " \
-			   "run bootscript; " \
-		   "else " \
-			   "if run loadimage; then " \
-				   "run mmcboot; " \
-			   "else run netboot; " \
-			   "fi; " \
-		   "fi; " \
-	   "else run netboot; fi"
+	"run mmcboot;"
 
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_LONGHELP
@@ -228,6 +256,7 @@
 
 #define CONFIG_OF_LIBFDT
 #define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
 
 #ifndef CONFIG_SYS_DCACHE_OFF
 #define CONFIG_CMD_CACHE
-- 
2.2.1

