Re: [U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-24 Thread Adam Ford
On Wed, Mar 22, 2017 at 7:27 PM, Tom Rini  wrote:
> On Wed, Mar 22, 2017 at 05:07:02PM -0500, Adam Ford wrote:
>
>> Logic PD has an i.MX6Q system on module (SOM) with a development kit.
>> This have been verified to boot the i.MX6Q version over either SD
>> on the development kit or NAND built into the SOM.
>>

[snip]

>
>> + "fdt_high=0x\0"   \
>> + "initrd_high=0x\0" \
>
> I'm really really not a fan of disabling these relocations, please use
> bootm_size to tell U-Boot where to make sure everything resides without
> overlap.  Also, distro boot?

If I remove "initrd_high" then the booting with a RAM Disk fails even
when I define bootm_size.  I have looked at several i.MX6 boards, and
it seems like the ones with RAM Disk options have this parameter.

I am sure what distro boot is.  Can you elaborate?
>
> [snip]
>> +# define MTDPARTS_DEFAULT"mtdparts=gpmi-nand:4m(uboot)," \
>> + "1m(env),8m(kernel),1m(dtb),-(fs)"
>
> Are you really sure all of these sizes are what you can live with for a
> long long time?  That kernel size feels small.

I defined the kernel to 8m based on the vast majority of the other
i.MX6 boards, but I can see your point.  I think I will just aim high
and go for 16.  This has plenty of NAND.

>
> Thanks!
>
Thank you for the feedback.

adam
> --
> Tom
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-24 Thread Adam Ford
On Fri, Mar 24, 2017 at 6:09 AM, Stefano Babic  wrote:
> Hi Adam,
>
> On 22/03/2017 23:07, Adam Ford wrote:
>> Logic PD has an i.MX6Q system on module (SOM) with a development kit.
>> This have been verified to boot the i.MX6Q version over either SD
>> on the development kit or NAND built into the SOM.
>
> A short list of supported peripherals (Ethernet,..) will help. See
> commits of other i.MX6 boards.
>
>>
>> Signed-off-by: Adam Ford 
>>
>> diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
>> index 190e5c6..059d905 100644
>> --- a/arch/arm/cpu/armv7/mx6/Kconfig
>> +++ b/arch/arm/cpu/armv7/mx6/Kconfig
>> @@ -367,6 +367,13 @@ config TARGET_ZC5601
>>   select DM
>>   select DM_THERMAL
>>
>> +config TARGET_MX6LOGICPD
>> + bool "mx6logicpd"
>> + select BOARD_LATE_INIT
>> + select DM
>> + select DM_THERMAL
>> + select BOARD_EARLY_INIT_F
>> +
>>  endchoice
>>
>>  config SYS_SOC
>> @@ -415,5 +422,6 @@ source "board/udoo/Kconfig"
>>  source "board/udoo/neo/Kconfig"
>>  source "board/wandboard/Kconfig"
>>  source "board/warp/Kconfig"
>> +source "board/logicpd/imx6/Kconfig"
>>
>>  endif
>> diff --git a/board/logicpd/imx6/Kconfig b/board/logicpd/imx6/Kconfig
>> new file mode 100644
>> index 000..f5e2f58
>> --- /dev/null
>> +++ b/board/logicpd/imx6/Kconfig
>> @@ -0,0 +1,12 @@
>> +if TARGET_MX6LOGICPD
>> +
>> +config SYS_BOARD
>> +   default "imx6"
>> +
>> +config SYS_VENDOR
>> +   default "logicpd"
>> +
>> +config SYS_CONFIG_NAME
>> +   default "imx6_logic"
>> +
>> +endif
>> diff --git a/board/logicpd/imx6/MAINTAINERS b/board/logicpd/imx6/MAINTAINERS
>> new file mode 100644
>> index 000..5db7d2c
>> --- /dev/null
>> +++ b/board/logicpd/imx6/MAINTAINERS
>> @@ -0,0 +1,6 @@
>> +MX6LOGICPD BOARD
>> +M: Adam Ford 
>> +S: Maintained
>> +F: board/logicpd/imx6/
>> +F: include/configs/imx6_logic.h
>> +F: configs/imx6q_logic_defconfig
>> diff --git a/board/logicpd/imx6/Makefile b/board/logicpd/imx6/Makefile
>> new file mode 100644
>> index 000..397bc5e
>> --- /dev/null
>> +++ b/board/logicpd/imx6/Makefile
>> @@ -0,0 +1,11 @@
>> +#
>> +# Copyright (C) 2007, Guennadi Liakhovetski 
>> +#
>> +# (C) Copyright 2011 Freescale Semiconductor, Inc.
>> +#
>> +# SPDX-License-Identifier: GPL-2.0+
>> +#
>> +
>> +obj-y  := imx6logic.o
>> +obj-$(CONFIG_POWER_PFUZE100)   += ../../freescale/common/pfuze.o
>> +
>> diff --git a/board/logicpd/imx6/README b/board/logicpd/imx6/README
>> new file mode 100644
>> index 000..5814b9d
>> --- /dev/null
>> +++ b/board/logicpd/imx6/README
>> @@ -0,0 +1,103 @@
>> +How to use and build U-Boot on mx6sabresd:
>> +--
>> +
>> +Currently there are three methods for booting mx6sabresd boards:
>> +
>
> We already know how to boot sabresd - what about your board ?
>
> I do not see support for SPL.
>
> You should also add explanation how to install U-Boot into the NAND.
>
>> +1. Booting via Normal U-Boot (u-boot.imx)
>> +
>> +2. Booting via SPL (SPL and u-boot.img)
>> +
>> +3. Booting via Falcon mode (SPL launches the kernel directly)
>> +
>> +
>> +1. Booting via Normal U-Boot
>> +
>> +
>> +$ make mx6qsabresd_defconfig (If you want to build for mx6qsabresd)
>> +
>> +or
>> +
>> +$ make mx6dlsabresd_defconfig (If you want to build for mx6dlsabresd)
>> +
>> +$ make
>> +
>> +This will generate the image called u-boot.imx.
>> +
>> +- Flash the u-boot.imx binary into the SD card:
>> +
>> +$ sudo dd if=u-boot.imx of=/dev/sdb bs=1K seek=1 && sync
>> +
>> +
>> +2. Booting via SPL
>> +--
>> +
>> +Other method for building U-Boot on mx6qsabresd and mx6qpsabresd is
>> +through SPL. In order to do so:
>> +
>> +$ make mx6sabresd_spl_defconfig
>> +$ make
>> +
>> +This will generate the SPL image called SPL and the u-boot.img.
>> +
>> +- Flash the SPL image into the SD card:
>> +
>> +$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 && sync
>> +
>> +- Flash the u-boot.img image into the SD card:
>> +
>> +$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 && sync
>> +
>> +
>> +3. Booting via Falcon mode
>> +--
>> +
>> +$ make mx6sabresd_spl_defconfig
>> +$ make
>> +
>> +This will generate the SPL image called SPL and the u-boot.img.
>> +
>> +- Flash the SPL image into the SD card:
>> +
>> +$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 oflag=sync status=none && sync
>> +
>> +- Flash the u-boot.img image into the SD card:
>> +
>> +$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 oflag=sync status=none && 
>> sync
>> +
>> +Create a partition for root file system and extract it there:
>> +
>> +$ sudo tar xvf rootfs.tar.gz -C /media/root
>> +
>> +The SD card must have enough space for raw "args" and "kernel".
>> +To configure Falcon mode for the first time, on U-Boot do the following 
>> commands:
>> +
>> +- Setup the IP server:
>> +
>> +# setenv serverip 
>> +
>> +- Download dtb 

Re: [U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-24 Thread Stefano Babic
Hi Adam,

On 22/03/2017 23:07, Adam Ford wrote:
> Logic PD has an i.MX6Q system on module (SOM) with a development kit.
> This have been verified to boot the i.MX6Q version over either SD
> on the development kit or NAND built into the SOM.

A short list of supported peripherals (Ethernet,..) will help. See
commits of other i.MX6 boards.

> 
> Signed-off-by: Adam Ford 
> 
> diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
> index 190e5c6..059d905 100644
> --- a/arch/arm/cpu/armv7/mx6/Kconfig
> +++ b/arch/arm/cpu/armv7/mx6/Kconfig
> @@ -367,6 +367,13 @@ config TARGET_ZC5601
>   select DM
>   select DM_THERMAL
>  
> +config TARGET_MX6LOGICPD
> + bool "mx6logicpd"
> + select BOARD_LATE_INIT
> + select DM
> + select DM_THERMAL
> + select BOARD_EARLY_INIT_F
> +
>  endchoice
>  
>  config SYS_SOC
> @@ -415,5 +422,6 @@ source "board/udoo/Kconfig"
>  source "board/udoo/neo/Kconfig"
>  source "board/wandboard/Kconfig"
>  source "board/warp/Kconfig"
> +source "board/logicpd/imx6/Kconfig"
>  
>  endif
> diff --git a/board/logicpd/imx6/Kconfig b/board/logicpd/imx6/Kconfig
> new file mode 100644
> index 000..f5e2f58
> --- /dev/null
> +++ b/board/logicpd/imx6/Kconfig
> @@ -0,0 +1,12 @@
> +if TARGET_MX6LOGICPD
> +
> +config SYS_BOARD
> +   default "imx6"
> +
> +config SYS_VENDOR
> +   default "logicpd"
> +
> +config SYS_CONFIG_NAME
> +   default "imx6_logic"
> +
> +endif
> diff --git a/board/logicpd/imx6/MAINTAINERS b/board/logicpd/imx6/MAINTAINERS
> new file mode 100644
> index 000..5db7d2c
> --- /dev/null
> +++ b/board/logicpd/imx6/MAINTAINERS
> @@ -0,0 +1,6 @@
> +MX6LOGICPD BOARD
> +M: Adam Ford 
> +S: Maintained
> +F: board/logicpd/imx6/
> +F: include/configs/imx6_logic.h
> +F: configs/imx6q_logic_defconfig
> diff --git a/board/logicpd/imx6/Makefile b/board/logicpd/imx6/Makefile
> new file mode 100644
> index 000..397bc5e
> --- /dev/null
> +++ b/board/logicpd/imx6/Makefile
> @@ -0,0 +1,11 @@
> +#
> +# Copyright (C) 2007, Guennadi Liakhovetski 
> +#
> +# (C) Copyright 2011 Freescale Semiconductor, Inc.
> +#
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +
> +obj-y  := imx6logic.o
> +obj-$(CONFIG_POWER_PFUZE100)   += ../../freescale/common/pfuze.o
> +
> diff --git a/board/logicpd/imx6/README b/board/logicpd/imx6/README
> new file mode 100644
> index 000..5814b9d
> --- /dev/null
> +++ b/board/logicpd/imx6/README
> @@ -0,0 +1,103 @@
> +How to use and build U-Boot on mx6sabresd:
> +--
> +
> +Currently there are three methods for booting mx6sabresd boards:
> +

We already know how to boot sabresd - what about your board ?

I do not see support for SPL.

You should also add explanation how to install U-Boot into the NAND.

> +1. Booting via Normal U-Boot (u-boot.imx)
> +
> +2. Booting via SPL (SPL and u-boot.img)
> +
> +3. Booting via Falcon mode (SPL launches the kernel directly)
> +
> +
> +1. Booting via Normal U-Boot
> +
> +
> +$ make mx6qsabresd_defconfig (If you want to build for mx6qsabresd)
> +
> +or
> +
> +$ make mx6dlsabresd_defconfig (If you want to build for mx6dlsabresd)
> +
> +$ make
> +
> +This will generate the image called u-boot.imx.
> +
> +- Flash the u-boot.imx binary into the SD card:
> +
> +$ sudo dd if=u-boot.imx of=/dev/sdb bs=1K seek=1 && sync
> +
> +
> +2. Booting via SPL
> +--
> +
> +Other method for building U-Boot on mx6qsabresd and mx6qpsabresd is
> +through SPL. In order to do so:
> +
> +$ make mx6sabresd_spl_defconfig
> +$ make
> +
> +This will generate the SPL image called SPL and the u-boot.img.
> +
> +- Flash the SPL image into the SD card:
> +
> +$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 && sync
> +
> +- Flash the u-boot.img image into the SD card:
> +
> +$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 && sync
> +
> +
> +3. Booting via Falcon mode
> +--
> +
> +$ make mx6sabresd_spl_defconfig
> +$ make
> +
> +This will generate the SPL image called SPL and the u-boot.img.
> +
> +- Flash the SPL image into the SD card:
> +
> +$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 oflag=sync status=none && sync
> +
> +- Flash the u-boot.img image into the SD card:
> +
> +$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 oflag=sync status=none && 
> sync
> +
> +Create a partition for root file system and extract it there:
> +
> +$ sudo tar xvf rootfs.tar.gz -C /media/root
> +
> +The SD card must have enough space for raw "args" and "kernel".
> +To configure Falcon mode for the first time, on U-Boot do the following 
> commands:
> +
> +- Setup the IP server:
> +
> +# setenv serverip 
> +
> +- Download dtb file:
> +
> +# dhcp ${fdt_addr} imx6q-sabresd.dtb
> +
> +- Download kernel image:
> +
> +# dhcp ${loadaddr} uImage
> +
> +- Write kernel at 2MB offset:
> +
> +# mmc write ${loadaddr} 0x1000 0x4000
> +
> +- Setup kernel bootargs:
> +
> +# setenv 

Re: [U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-22 Thread Tom Rini
On Wed, Mar 22, 2017 at 05:07:02PM -0500, Adam Ford wrote:

> Logic PD has an i.MX6Q system on module (SOM) with a development kit.
> This have been verified to boot the i.MX6Q version over either SD
> on the development kit or NAND built into the SOM.
> 
> Signed-off-by: Adam Ford 
> 
> diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
> index 190e5c6..059d905 100644
> --- a/arch/arm/cpu/armv7/mx6/Kconfig
> +++ b/arch/arm/cpu/armv7/mx6/Kconfig
> @@ -367,6 +367,13 @@ config TARGET_ZC5601
>   select DM
>   select DM_THERMAL
>  
> +config TARGET_MX6LOGICPD
> + bool "mx6logicpd"
> + select BOARD_LATE_INIT
> + select DM
> + select DM_THERMAL
> + select BOARD_EARLY_INIT_F

Please sort this as well.

[snip]
> +Currently there are three methods for booting mx6sabresd boards:
> diff --git a/board/logicpd/imx6/imx6logic.c b/board/logicpd/imx6/imx6logic.c
> new file mode 100644
> index 000..18ec9a1
> --- /dev/null
> +++ b/board/logicpd/imx6/imx6logic.c
> @@ -0,0 +1,364 @@
> +/*
> + * Copyright (C) 2017 Logic PD, Inc.
> + *
> + * Author: Adam Ford 

... based on board/.../ since I assume you copied mx6sabresd here as
well :)

[snip]
> +int board_late_init(void)
> +{
> +#ifdef CONFIG_CMD_BMODE
> + add_board_boot_modes(board_boot_modes);
> +#endif
> +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
> + setenv("board_name", "imx6_logicpd");
> +
> + if (is_mx6dqp()) {
> + setenv("board_rev", "MX6QP");
> + setenv("fdt_file", "imx6q-logicpd.dtb");
> + }
> + else if (is_mx6dq()) {
> + setenv("board_rev", "MX6Q");
> + setenv("fdt_file", "imx6q-logicpd.dtb");
> + }
> + else if (is_mx6sdl()) {
> + setenv("board_rev", "MX6DL");
> + setenv("fdt_file", "imx6sdl-logicpd.dtb");
> + }
> + else if (is_mx6solo()) {
> + setenv("board_rev", "MX6SOLO");
> + setenv("fdt_file", "imx6sdl-logicpd.dtb");
> + }
> +#endif

Do all of these variations exist?

> diff --git a/include/configs/imx6_logic.h b/include/configs/imx6_logic.h
> new file mode 100644
> index 000..556cad2
> --- /dev/null
> +++ b/include/configs/imx6_logic.h
> @@ -0,0 +1,194 @@
> +/*
> + * Copyright (C) 2017 Logic PD, Inc.
> + *
> + * Configuration settings for the LogicPD i.MX6 SOM.
> + *
> + * SPDX-License-Identifier:GPL-2.0+
> + */
> +
> +#ifndef __IMX6LOGIC_CONFIG_H
> +#define __IMX6LOGIC_CONFIG_H
> +
> +#define CONFIG_MACH_TYPE   3980

New board, we should not need MACH_TYPE and I bet that's not the "real"
one for your brand new board.

> + "fdt_high=0x\0"   \
> + "initrd_high=0x\0" \

I'm really really not a fan of disabling these relocations, please use
bootm_size to tell U-Boot where to make sure everything resides without
overlap.  Also, distro boot?

[snip]
> +# define MTDPARTS_DEFAULT"mtdparts=gpmi-nand:4m(uboot)," \
> + "1m(env),8m(kernel),1m(dtb),-(fs)"

Are you really sure all of these sizes are what you can live with for a
long long time?  That kernel size feels small.

Thanks!

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-22 Thread Fabio Estevam
Hi Adam,

On Wed, Mar 22, 2017 at 7:07 PM, Adam Ford  wrote:
 config SYS_SOC
> @@ -415,5 +422,6 @@ source "board/udoo/Kconfig"
>  source "board/udoo/neo/Kconfig"
>  source "board/wandboard/Kconfig"
>  source "board/warp/Kconfig"
> +source "board/logicpd/imx6/Kconfig"

Alphabetical order, please.

> --- /dev/null
> +++ b/board/logicpd/imx6/README
> @@ -0,0 +1,103 @@
> +How to use and build U-Boot on mx6sabresd:
> +--
> +
> +Currently there are three methods for booting mx6sabresd boards:

Looks like you forgot to change the board name here :-)

> +iomux_v3_cfg_t const nand_pads[] = {

static


> +//Control:
> +DATA 4  0x020e057c 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET
> +DATA 4  0x020e058c 0x  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can 
> be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS
> +DATA 4  0x020e059c 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0
> +DATA 4  0x020e05a0 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1
> +DATA 4  0x020e078c 0x0030  // IOMUXC_SW_PAD_CTL_GRP_CTLDS
> +
> +//Data Strobes:

Better avoid // notation. You could use /* comment */ instead. Make
sure you run checkpatch.pl.

> +DATA 4  0x020e0750 0x0002  // IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL
> +DATA 4  0x020e05a8 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0
> +DATA 4  0x020e05b0 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1
> +DATA 4  0x020e0524 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2
> +DATA 4  0x020e051c 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3
> +//DATA 4  0x020e0518 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS4
> +//DATA 4  0x020e050c 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS5
> +//DATA 4  0x020e05b8 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS6
> +//DATA 4  0x020e05c0 0x0030  // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS7

Better to remove unused lines.
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH] imx: i.mx6q: add the initial support for LogicPD i.MX6Q SOM

2017-03-22 Thread Adam Ford
Logic PD has an i.MX6Q system on module (SOM) with a development kit.
This have been verified to boot the i.MX6Q version over either SD
on the development kit or NAND built into the SOM.

Signed-off-by: Adam Ford 

diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
index 190e5c6..059d905 100644
--- a/arch/arm/cpu/armv7/mx6/Kconfig
+++ b/arch/arm/cpu/armv7/mx6/Kconfig
@@ -367,6 +367,13 @@ config TARGET_ZC5601
select DM
select DM_THERMAL
 
+config TARGET_MX6LOGICPD
+   bool "mx6logicpd"
+   select BOARD_LATE_INIT
+   select DM
+   select DM_THERMAL
+   select BOARD_EARLY_INIT_F
+
 endchoice
 
 config SYS_SOC
@@ -415,5 +422,6 @@ source "board/udoo/Kconfig"
 source "board/udoo/neo/Kconfig"
 source "board/wandboard/Kconfig"
 source "board/warp/Kconfig"
+source "board/logicpd/imx6/Kconfig"
 
 endif
diff --git a/board/logicpd/imx6/Kconfig b/board/logicpd/imx6/Kconfig
new file mode 100644
index 000..f5e2f58
--- /dev/null
+++ b/board/logicpd/imx6/Kconfig
@@ -0,0 +1,12 @@
+if TARGET_MX6LOGICPD
+
+config SYS_BOARD
+   default "imx6"
+
+config SYS_VENDOR
+   default "logicpd"
+
+config SYS_CONFIG_NAME
+   default "imx6_logic"
+
+endif
diff --git a/board/logicpd/imx6/MAINTAINERS b/board/logicpd/imx6/MAINTAINERS
new file mode 100644
index 000..5db7d2c
--- /dev/null
+++ b/board/logicpd/imx6/MAINTAINERS
@@ -0,0 +1,6 @@
+MX6LOGICPD BOARD
+M: Adam Ford 
+S: Maintained
+F: board/logicpd/imx6/
+F: include/configs/imx6_logic.h
+F: configs/imx6q_logic_defconfig
diff --git a/board/logicpd/imx6/Makefile b/board/logicpd/imx6/Makefile
new file mode 100644
index 000..397bc5e
--- /dev/null
+++ b/board/logicpd/imx6/Makefile
@@ -0,0 +1,11 @@
+#
+# Copyright (C) 2007, Guennadi Liakhovetski 
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y  := imx6logic.o
+obj-$(CONFIG_POWER_PFUZE100)   += ../../freescale/common/pfuze.o
+
diff --git a/board/logicpd/imx6/README b/board/logicpd/imx6/README
new file mode 100644
index 000..5814b9d
--- /dev/null
+++ b/board/logicpd/imx6/README
@@ -0,0 +1,103 @@
+How to use and build U-Boot on mx6sabresd:
+--
+
+Currently there are three methods for booting mx6sabresd boards:
+
+1. Booting via Normal U-Boot (u-boot.imx)
+
+2. Booting via SPL (SPL and u-boot.img)
+
+3. Booting via Falcon mode (SPL launches the kernel directly)
+
+
+1. Booting via Normal U-Boot
+
+
+$ make mx6qsabresd_defconfig (If you want to build for mx6qsabresd)
+
+or
+
+$ make mx6dlsabresd_defconfig (If you want to build for mx6dlsabresd)
+
+$ make
+
+This will generate the image called u-boot.imx.
+
+- Flash the u-boot.imx binary into the SD card:
+
+$ sudo dd if=u-boot.imx of=/dev/sdb bs=1K seek=1 && sync
+
+
+2. Booting via SPL
+--
+
+Other method for building U-Boot on mx6qsabresd and mx6qpsabresd is
+through SPL. In order to do so:
+
+$ make mx6sabresd_spl_defconfig
+$ make
+
+This will generate the SPL image called SPL and the u-boot.img.
+
+- Flash the SPL image into the SD card:
+
+$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 && sync
+
+- Flash the u-boot.img image into the SD card:
+
+$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 && sync
+
+
+3. Booting via Falcon mode
+--
+
+$ make mx6sabresd_spl_defconfig
+$ make
+
+This will generate the SPL image called SPL and the u-boot.img.
+
+- Flash the SPL image into the SD card:
+
+$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 oflag=sync status=none && sync
+
+- Flash the u-boot.img image into the SD card:
+
+$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 oflag=sync status=none && sync
+
+Create a partition for root file system and extract it there:
+
+$ sudo tar xvf rootfs.tar.gz -C /media/root
+
+The SD card must have enough space for raw "args" and "kernel".
+To configure Falcon mode for the first time, on U-Boot do the following 
commands:
+
+- Setup the IP server:
+
+# setenv serverip 
+
+- Download dtb file:
+
+# dhcp ${fdt_addr} imx6q-sabresd.dtb
+
+- Download kernel image:
+
+# dhcp ${loadaddr} uImage
+
+- Write kernel at 2MB offset:
+
+# mmc write ${loadaddr} 0x1000 0x4000
+
+- Setup kernel bootargs:
+
+# setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p1 rootfstype=ext4 
rootwait quiet rw"
+
+- Prepare args:
+
+# spl export fdt ${loadaddr} - ${fdt_addr}
+
+- Write args 1MB data (0x800 sectors) to 1MB offset (0x800 sectors)
+
+# mmc write 1800 0x800 0x800
+
+- Press KEY_VOL_UP key, power up the board and then SPL binary will
+launch the kernel directly.
diff --git a/board/logicpd/imx6/imx6logic.c b/board/logicpd/imx6/imx6logic.c
new file mode 100644
index 000..18ec9a1
--- /dev/null
+++ b/board/logicpd/imx6/imx6logic.c
@@ -0,0 +1,364 @@
+/*
+ * Copyright (C) 2017 Logic PD, Inc.
+ *
+ * Author: Adam Ford 
+ *
+ *