In order to simplify the use of various images on various media
for nitrogen6x, the configuration of the board must follow the
generic distro configuration (doc/README.distro).

In order to boot your old rootfs, move your kernel and your device
tree in /boot/. Then create /boot/extlinux/extlinux.conf with for
example:

default Buildroot

label Buildroot
        kernel /boot/zImage
        append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
        fdtdir /boot

Signed-off-by: Fabien Lahoudere <fabien.lahoud...@collabora.co.uk>
---
 configs/mx6qsabrelite_defconfig |   1 +
 configs/nitrogen6dl2g_defconfig |   1 +
 configs/nitrogen6dl_defconfig   |   1 +
 configs/nitrogen6q2g_defconfig  |   1 +
 configs/nitrogen6q_defconfig    |   1 +
 configs/nitrogen6s1g_defconfig  |   1 +
 configs/nitrogen6s_defconfig    |   1 +
 doc/README.imx6                 |  47 +++++++++++
 include/configs/mx6_common.h    |  28 +++++++
 include/configs/nitrogen6x.h    | 169 ++++------------------------------------
 10 files changed, 97 insertions(+), 154 deletions(-)

diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index fa6139a..27b64c4 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -36,3 +36,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig
index 02b2462..b1344c6 100644
--- a/configs/nitrogen6dl2g_defconfig
+++ b/configs/nitrogen6dl2g_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig
index 52553f6..f794c08 100644
--- a/configs/nitrogen6dl_defconfig
+++ b/configs/nitrogen6dl_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index 11188b7..56cebe0 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index 05bf140..c150b97 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig
index bb081a2..dfd096d 100644
--- a/configs/nitrogen6s1g_defconfig
+++ b/configs/nitrogen6s1g_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig
index 08e91c9..5e2e693 100644
--- a/configs/nitrogen6s_defconfig
+++ b/configs/nitrogen6s_defconfig
@@ -34,3 +34,4 @@ CONFIG_G_DNL_MANUFACTURER="Boundary"
 CONFIG_G_DNL_VENDOR_NUM=0x0525
 CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
+CONFIG_DISTRO_DEFAULTS=y
\ No newline at end of file
diff --git a/doc/README.imx6 b/doc/README.imx6
index 1823fb2..36452f6 100644
--- a/doc/README.imx6
+++ b/doc/README.imx6
@@ -138,3 +138,50 @@ c
 The last "c" command tells kermit (from ckermit package in most distros)
 to switch from command line mode to communication mode, and when the
 script is finished, the U-Boot prompt is shown in the same shell.
+
+3. Using generic distro configuration
+-------------------------------------
+
+In order to simplify the use of various images on various media
+for imx6 boards, the configuration of the board must follow the
+generic distro configuration (doc/README.distro).
+
+3.1. Setup uboot configuration for your board
+---------------------------------------------
+
+First, you have to set 'CONFIG_DISTRO_DEFAULTS=y' in your board defconfig
+
+Some mandatory variable are set in mx6_common.h but can be overwritten like:
+      - fdtfile with CONFIG_FDTFILE
+      - fdt_addr_r and fdt_addr with CONFIG_FDTADDR
+      - ramdisk_addr_r, ramdiskaddr CONFIG_RAMDISKADDR
+
+You also have to define BOOT_TARGET_DEVICES with available media.
+For example added in include/configs/nitrogen6x.h:
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1) \
+       func(SATA, sata, 0) \
+       func(USB, usb, 0) \
+       func(PXE, pxe, na) \
+       func(DHCP, dhcp, na)
+
+All this configuration should be done before '#include "mx6_common.h"'
+
+3.2. Setup your distribution
+----------------------------
+
+Set the partition containing /boot/ bootable.
+Copy your kernel and device tree in /boot.
+Create /boot/extlinux/extlinux.conf on your rootfs and fill it according to 
specification
+at http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/
+
+For example:
+
+default Buildroot
+
+label Buildroot
+       kernel /boot/zImage
+       append console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw
+       fdtdir /boot
+
diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h
index fb49322..75cbc84 100644
--- a/include/configs/mx6_common.h
+++ b/include/configs/mx6_common.h
@@ -58,6 +58,12 @@
 #endif
 #endif
 #define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+#ifndef CONFIG_FDTADDR
+#define CONFIG_FDTADDR         0x18000000
+#endif
+#ifndef CONFIG_RAMDISKADDR
+#define CONFIG_RAMDISKADDR     0x13000000
+#endif
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
@@ -93,4 +99,26 @@
 #define CONFIG_CMD_FUSE
 #define CONFIG_MXC_OCOTP
 
+#ifdef CONFIG_DISTRO_DEFAULTS
+#include <config_distro_defaults.h>
+
+#ifndef CONFIG_FDTFILE
+#define CONFIG_FDTFILE "undefined"
+#endif
+
+#include <config_distro_bootcmd.h>
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "fdtfile=" CONFIG_FDTFILE "\0" \
+       "fdt_addr_r=" __stringify(CONFIG_FDTADDR) "\0"  \
+       "fdt_addr=" __stringify(CONFIG_FDTADDR) "\0" \
+       "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0"  \
+       "pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+       "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
+       "ramdisk_addr_r=" __stringify(CONFIG_RAMDISKADDR) "\0" \
+       "ramdiskaddr=" __stringify(CONFIG_RAMDISKADDR) "\0" \
+       BOOTENV
+
+#endif
+
 #endif
diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
index b651eb3..33658b0 100644
--- a/include/configs/nitrogen6x.h
+++ b/include/configs/nitrogen6x.h
@@ -10,8 +10,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-#include "mx6_common.h"
-
 #define CONFIG_MACH_TYPE       3769
 
 /* Size of malloc() pool */
@@ -38,9 +36,9 @@
 /* I2C Configs */
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_MXC
-#define CONFIG_SYS_I2C_MXC_I2C1                /* enable I2C bus 1 */
-#define CONFIG_SYS_I2C_MXC_I2C2                /* enable I2C bus 2 */
-#define CONFIG_SYS_I2C_MXC_I2C3                /* enable I2C bus 3 */
+#define CONFIG_SYS_I2C_MXC_I2C1        /* enable I2C bus 1 */
+#define CONFIG_SYS_I2C_MXC_I2C2        /* enable I2C bus 2 */
+#define CONFIG_SYS_I2C_MXC_I2C3        /* enable I2C bus 3 */
 #define CONFIG_SYS_I2C_SPEED           100000
 #define CONFIG_I2C_EDID
 
@@ -113,159 +111,22 @@
 
 #define CONFIG_PREBOOT                 ""
 
-#ifdef CONFIG_CMD_SATA
-#define CONFIG_DRIVE_SATA "sata "
-#else
-#define CONFIG_DRIVE_SATA
-#endif
-
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_DRIVE_MMC "mmc "
-#else
-#define CONFIG_DRIVE_MMC
-#endif
-
-#ifdef CONFIG_USB_STORAGE
-#define CONFIG_DRIVE_USB "usb "
+#if defined(CONFIG_SABRELITE)
+#define CONFIG_FDTFILE "imx6q-sabrelite.dtb"
 #else
-#define CONFIG_DRIVE_USB
+#define CONFIG_FDTFILE "imx6q-nitrogen6x.dtb"
 #endif
 
-#define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC CONFIG_DRIVE_USB
-#define CONFIG_UMSDEVS CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC
-
-#if defined(CONFIG_SABRELITE)
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "script=boot.scr\0" \
-       "uimage=uImage\0" \
-       "console=ttymxc1\0" \
-       "fdt_high=0xffffffff\0" \
-       "initrd_high=0xffffffff\0" \
-       "fdt_file=imx6q-sabrelite.dtb\0" \
-       "fdt_addr=0x18000000\0" \
-       "boot_fdt=try\0" \
-       "ip_dyn=yes\0" \
-       "mmcdevs=0 1\0" \
-       "mmcpart=1\0" \
-       "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
-       "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
-       "loadbootscript=" \
-               "load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
-               "source\0" \
-       "loaduimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
-       "loadfdt=load 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 " \
-                               "bootm ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootm; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootm; " \
-               "fi;\0" \
-       "netargs=setenv bootargs console=${console},${baudrate} " \
-               "root=/dev/nfs " \
-       "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
-               "netboot=echo Booting from net ...; " \
-               "run netargs; " \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "${get_cmd} ${uimage}; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-                               "bootm ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootm; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootm; " \
-               "fi;\0"
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1) \
+       func(SATA, sata, 0) \
+       func(USB, usb, 0) \
+       func(PXE, pxe, na) \
+       func(DHCP, dhcp, na)
 
-#define CONFIG_BOOTCOMMAND \
-       "for mmcdev in ${mmcdevs}; do " \
-               "mmc dev ${mmcdev}; " \
-               "if mmc rescan; then " \
-                       "if run loadbootscript; then " \
-                               "run bootscript; " \
-                       "else " \
-                               "if run loaduimage; then " \
-                                       "run mmcboot; " \
-                               "fi; " \
-                       "fi; " \
-               "fi; " \
-       "done; " \
-       "run netboot; "
-#else
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "bootdevs=" CONFIG_DRIVE_TYPES "\0" \
-       "umsdevs=" CONFIG_UMSDEVS "\0" \
-       "console=ttymxc1\0" \
-       "clearenv=if sf probe || sf probe || sf probe 1 ; then " \
-               "sf erase 0xc0000 0x2000 && " \
-               "echo restored environment to factory default ; fi\0" \
-       "bootcmd=for dtype in ${bootdevs}" \
-               "; do " \
-                       "if itest.s \"xusb\" == \"x${dtype}\" ; then " \
-                               "usb start ;" \
-                       "fi; " \
-                       "for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
-                               "load " \
-                                       "${dtype} ${disk}:1 " \
-                                       "10008000 " \
-                                       "/6x_bootscript" \
-                                       "&& source 10008000 ; " \
-                       "done ; " \
-               "done; " \
-               "setenv stdout serial,vga ; " \
-               "echo ; echo 6x_bootscript not found ; " \
-               "echo ; echo serial console at 115200, 8N1 ; echo ; " \
-               "echo details at http://boundarydevices.com/6q_bootscript ; " \
-               "setenv stdout serial;" \
-               "setenv stdin serial,usbkbd;" \
-               "for dtype in ${umsdevs} ; do " \
-                       "if itest.s sata == ${dtype}; then " \
-                               "initcmd='sata init' ;" \
-                       "else " \
-                               "initcmd='mmc rescan' ;" \
-                       "fi; " \
-                       "for disk in 0 1 ; do " \
-                               "if $initcmd && $dtype dev $disk ; then " \
-                                       "setenv stdout serial,vga; " \
-                                       "echo expose ${dtype} ${disk} " \
-                                               "over USB; " \
-                                       "ums 0 $dtype $disk ;" \
-                               "fi; " \
-               "       done; " \
-               "done ;" \
-               "setenv stdout serial,vga; " \
-               "echo no block devices found;" \
-               "\0" \
-       "initrd_high=0xffffffff\0" \
-       "upgradeu=for dtype in ${bootdevs}" \
-               "; do " \
-               "for disk in 0 1 ; do ${dtype} dev ${disk} ;" \
-                       "load ${dtype} ${disk}:1 10008000 " \
-                               "/6x_upgrade " \
-                               "&& source 10008000 ; " \
-               "done ; " \
-       "done\0" \
+#include "mx6_common.h"
 
-#endif
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_MEMTEST_START       0x10000000
 #define CONFIG_SYS_MEMTEST_END        0x10010000
@@ -327,4 +188,4 @@
 #define CONFIG_FASTBOOT_BUF_ADDR   CONFIG_SYS_LOAD_ADDR
 #define CONFIG_FASTBOOT_BUF_SIZE   0x07000000
 
-#endif        /* __CONFIG_H */
+#endif /* __CONFIG_H */
-- 
2.1.4

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

Reply via email to