Message ID | 1466783976-15827-1-git-send-email-fabien.lahoudere@collabora.co.uk |
---|---|
State | Superseded |
Delegated to: | Stefano Babic |
Headers | show |
On 6/24/2016 8:59 AM, Fabien Lahoudere wrote: > 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.lahoudere@collabora.co.uk> ... > + > 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 > +#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 > + This should probably be called something like CONFIG_EXTRA_DEFAULT_ENV_SETTINGS and the board files could contain #define CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \ "extra=more stuff\0" \ I would not remove any environment variables in this patch except for redundant things.
On 27/06/16 20:51, Troy Kisky wrote: > On 6/24/2016 8:59 AM, Fabien Lahoudere wrote: >> 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.lahoudere@collabora.co.uk> > ... >> + >> 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 >> +#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 >> + > This should probably be called something like CONFIG_EXTRA_DEFAULT_ENV_SETTINGS > and the board files could contain > > #define CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_DEFAULT_ENV_SETTINGS \ > "extra=more stuff\0" \ > > > I would not remove any environment variables in this patch except for redundant things. > Hello Troy Thank you for your reply. I think that all variables defined in CONFIG_EXTRA_ENV_SETTINGS are redundant with the generic distro configuration feature (except for ums). That's why I thought to replace this variable. Advantages of this feature is: - to boot any distro on any media - have more common code between imx6 boards - manage more media than current settings - use more generic configuration (extlinux.conf) I will prepare a new patch in order to keep current settings and set generic distro only if CONFIG_DISTRO_DEFAULTS=y Is it ok for you? Thanks Fabien
On Fri, 2016-06-24 at 17:59 +0200, Fabien Lahoudere wrote: > 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.lahoudere@collabora.co.uk> > --- > > 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> Why a configure option for using the default distro options rather then just always using them? Note that you can use the defaults without enforcing distro_bootcmd usage. (Though it would be good to get some consistent boot setup on all the mx6 devices ofcourse) > +#ifndef CONFIG_FDTFILE > +#define CONFIG_FDTFILE "undefined" > +#endif Not having an fdt is bad when using distro boot commands, probably better to error here. > +#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) You probably don't want to toss out all the legacy boot stuff. See commit bc3199fd1875f89e9e1fb2af45665c4a718217b9 for an example of how to integrate older hardcoded boot commands with the distro boot commands. Do take special care about the ordering, It's probably undesirable to have attempts for network booting happening before e.g. trying to do an upgrade. >
On 28/06/16 12:58, Sjoerd Simons wrote: > On Fri, 2016-06-24 at 17:59 +0200, Fabien Lahoudere wrote: >> 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.lahoudere@collabora.co.uk> >> --- >> >> 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> > > Why a configure option for using the default distro options rather then > just always using them? > > Note that you can use the defaults without enforcing distro_bootcmd > usage. (Though it would be good to get some consistent boot setup on > all the mx6 devices ofcourse) Because #include <config_distro_defaults.h> need CONFIG_DISTRO_DEFAULTS=y else it does not compile. And keeping this configure option will let the end user chose u-boot behaviour without having an heavy env. > >> +#ifndef CONFIG_FDTFILE >> +#define CONFIG_FDTFILE "undefined" >> +#endif > > Not having an fdt is bad when using distro boot commands, probably > better to error here. > Ok. I agree and I will fix this. >> +#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) > > You probably don't want to toss out all the legacy boot stuff. See > commit bc3199fd1875f89e9e1fb2af45665c4a718217b9 for an example of how > to integrate older hardcoded boot commands with the distro boot > commands. > > Do take special care about the ordering, It's probably undesirable to > have attempts for network booting happening before e.g. trying to do an > upgrade. > Yes I see the commit but the problem with the nitrogen6x.h is that there is two different env. So if we add LEGACY_MMC, we need to redefine mmcboot depending on what board is used. The goal is to simplify so I prefer not to add this legacy stuff. I you think it is mandatory, I can add it and redefine mmcboot if necessary.
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 */
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.lahoudere@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(-)