[U-Boot] [PATCH] nitrogen6x : Use generic distro configuration

Sjoerd Simons sjoerd.simons at collabora.co.uk
Tue Jun 28 12:58:49 CEST 2016


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 at 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.

> 
-- 

Sjoerd Simons
Collabora Ltd.


More information about the U-Boot mailing list