[U-Boot] [PATCH] arm: imx: Switch Wandboard to use config_distro_bootcmd.h.

This allows for more flexible and standardized boot across multiple platforms. Remove most redundant legacy boot environment.
Cc: Otavio Salvador otavio@ossystems.com.br Signed-off-by: Vagrant Cascadian vagrant@debian.org ---
include/configs/wandboard.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 6e8aec2..67d5a6a 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -95,6 +95,7 @@ "fdtfile=undefined\0" \ "fdt_high=0xffffffff\0" \ "initrd_high=0xffffffff\0" \ + "fdt_addr_r=0x18000000\0" \ "fdt_addr=0x18000000\0" \ "boot_fdt=try\0" \ "ip_dyn=yes\0" \ @@ -199,9 +200,23 @@ "setenv fdtfile imx6dl-wandboard-revb1.dtb; fi; " \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine dtb to use; fi; \0" \ + "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "pxe_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "ramdisk_addr_r=0x13000000\0" \ + "ramdiskaddr=0x13000000\0" \ + "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ + BOOTENV + +#define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 0) \ + func(MMC, mmc, 1) \ + func(USB, usb, 0) \ + func(PXE, pxe, na) \ + func(DHCP, dhcp, na)
#define CONFIG_BOOTCOMMAND \ "run findfdt; " \ + "run distro_bootcmd; " \ "mmc dev ${mmcdev}; if mmc rescan; then " \ "if run loadbootscript; then " \ "run bootscript; " \ @@ -213,6 +228,9 @@ "fi; " \ "else run netboot; fi"
+#include <config_distro_defaults.h> +#include <config_distro_bootcmd.h> + /* Physical Memory Map */ #define CONFIG_NR_DRAM_BANKS 1 #define PHYS_SDRAM MMDC0_ARB_BASE_ADDR

On 2015-10-27, Vagrant Cascadian wrote:
This allows for more flexible and standardized boot across multiple platforms. Remove most redundant legacy boot environment.
Er, Bad commit message, this patch doesn't actually "Remove most redundant legacy boot environment" at all. Leftovers from an earlier attempt.
live well, vagrant

On Tue, Oct 27, 2015 at 5:13 PM, Vagrant Cascadian vagrant@debian.org wrote:
On 2015-10-27, Vagrant Cascadian wrote:
This allows for more flexible and standardized boot across multiple platforms. Remove most redundant legacy boot environment.
Er, Bad commit message, this patch doesn't actually "Remove most redundant legacy boot environment" at all. Leftovers from an earlier attempt.
LOL, this was my complain a minute ago ;-)

On Tue, Oct 27, 2015 at 5:06 PM, Vagrant Cascadian vagrant@debian.org wrote:
This allows for more flexible and standardized boot across multiple platforms. Remove most redundant legacy boot environment.
Cc: Otavio Salvador otavio@ossystems.com.br Signed-off-by: Vagrant Cascadian vagrant@debian.org
You need to remove the old environment script which is now duplicated. Can you prepare a v2?

This allows for more flexible and standardized boot across multiple platforms.
Remove redundant legacy boot environment.
Signed-off-by: Vagrant Cascadian vagrant@debian.org ---
Changes in v2: - Remove redundant legacy boot environment. Cc: Otavio Salvador otavio@ossystems.com.br
include/configs/wandboard.h | 80 ++++++++++----------------------------------- 1 file changed, 18 insertions(+), 62 deletions(-)
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h index 6e8aec2..b87ca77 100644 --- a/include/configs/wandboard.h +++ b/include/configs/wandboard.h @@ -88,19 +88,15 @@
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG #define CONFIG_EXTRA_ENV_SETTINGS \ - "script=boot.scr\0" \ - "image=zImage\0" \ "console=ttymxc0\0" \ "splashpos=m,m\0" \ "fdtfile=undefined\0" \ "fdt_high=0xffffffff\0" \ "initrd_high=0xffffffff\0" \ + "fdt_addr_r=0x18000000\0" \ "fdt_addr=0x18000000\0" \ - "boot_fdt=try\0" \ "ip_dyn=yes\0" \ "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\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 " \ @@ -115,8 +111,6 @@ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \ "fi; " \ "fi\0" \ - "mmcargs=setenv bootargs console=${console},${baudrate} " \ - "root=${mmcroot}; run videoargs\0" \ "videoargs=" \ "setenv nextcon 0; " \ "if hdmidet; then " \ @@ -143,51 +137,6 @@ "echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \ "fi; " \ "setenv bootargs ${bootargs} ${fbmem}\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} ${fdtfile}\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}; " \ - "else " \ - "if test ${boot_fdt} = try; then " \ - "bootz; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi; " \ - "else " \ - "bootz; " \ - "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} ${image}; " \ - "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ - "if ${get_cmd} ${fdt_addr} ${fdtfile}; then " \ - "bootz ${loadaddr} - ${fdt_addr}; " \ - "else " \ - "if test ${boot_fdt} = try; then " \ - "bootz; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi; " \ - "else " \ - "bootz; " \ - "fi;\0" \ "findfdt="\ "if test $board_name = C1 && test $board_rev = MX6Q ; then " \ "setenv fdtfile imx6q-wandboard.dtb; fi; " \ @@ -199,19 +148,26 @@ "setenv fdtfile imx6dl-wandboard-revb1.dtb; fi; " \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine dtb to use; fi; \0" \ + "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "pxe_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ + "ramdisk_addr_r=0x13000000\0" \ + "ramdiskaddr=0x13000000\0" \ + "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \ + BOOTENV + +#define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 0) \ + func(MMC, mmc, 1) \ + func(USB, usb, 0) \ + func(PXE, pxe, na) \ + func(DHCP, dhcp, na)
#define CONFIG_BOOTCOMMAND \ "run findfdt; " \ - "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 distro_bootcmd" + +#include <config_distro_defaults.h> +#include <config_distro_bootcmd.h>
/* Physical Memory Map */ #define CONFIG_NR_DRAM_BANKS 1

Hi Vagrant,
On Tue, Oct 27, 2015 at 5:49 PM, Vagrant Cascadian vagrant@debian.org wrote:
+#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
func(MMC, mmc, 1) \
func(USB, usb, 0) \
func(PXE, pxe, na) \
func(DHCP, dhcp, na)
I never used config_distro_bootcmd, so let me ask you: is there a TFTP variant for func() as well?
In the current script we can switch from TFTP/DHCP very easily.
Also, how can do we switch from booting the rootfs from mmc versus NFS mount?
Regards,
Fabio Estevam

On 2015-10-27, Fabio Estevam wrote:
On Tue, Oct 27, 2015 at 5:49 PM, Vagrant Cascadian vagrant@debian.org wrote:
+#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
func(MMC, mmc, 1) \
func(USB, usb, 0) \
func(PXE, pxe, na) \
func(DHCP, dhcp, na)
I never used config_distro_bootcmd, so let me ask you: is there a TFTP variant for func() as well?
Both PXE and DHCP download an extlinux-style config (or boot script) via TFTP, which then decides what kernel, initrd, dtb, etc. to load. Other boot methods work similarly, loading from local media.
In the current script we can switch from TFTP/DHCP very easily.
You can override the default boot order by changing the boot_targets variable.
Also, how can do we switch from booting the rootfs from mmc versus NFS mount?
That would be defined in the extlinux-style config or boot script.
So, it doesn't exactly replicate the prior functionality, though it provides similar methods.
This is why I originally proposed to make it fallback to the old behavior, then you could set boot_targets to empty and still have the old style booting; but opinions may differ on all this. :)
Mostly, I'm seeking to standardize on a common configuration for as many boards as we can in Debian (and ideally in upstream u-boot, to minimize long-term maintenance), so that various supported boards at least behave similarly by default.
A lot of goals and functionality is documented reasonably well in doc/README.distro.
live well, vagrant

On Wed, Oct 28, 2015 at 1:59 AM, Vagrant Cascadian vagrant@debian.org wrote:
On 2015-10-27, Fabio Estevam wrote:
On Tue, Oct 27, 2015 at 5:49 PM, Vagrant Cascadian vagrant@debian.org wrote:
+#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
func(MMC, mmc, 1) \
func(USB, usb, 0) \
func(PXE, pxe, na) \
func(DHCP, dhcp, na)
I never used config_distro_bootcmd, so let me ask you: is there a TFTP variant for func() as well?
Both PXE and DHCP download an extlinux-style config (or boot script) via TFTP, which then decides what kernel, initrd, dtb, etc. to load. Other boot methods work similarly, loading from local media.
In the current script we can switch from TFTP/DHCP very easily.
You can override the default boot order by changing the boot_targets variable.
Also, how can do we switch from booting the rootfs from mmc versus NFS mount?
That would be defined in the extlinux-style config or boot script.
So, it doesn't exactly replicate the prior functionality, though it provides similar methods.
This is why I originally proposed to make it fallback to the old behavior, then you could set boot_targets to empty and still have the old style booting; but opinions may differ on all this. :)
Mostly, I'm seeking to standardize on a common configuration for as many boards as we can in Debian (and ideally in upstream u-boot, to minimize long-term maintenance), so that various supported boards at least behave similarly by default.
A lot of goals and functionality is documented reasonably well in doc/README.distro.
Agreed and I think for community and reference boards the distro environment provides some benefits as standardization and flexibility.

On Wed, Oct 28, 2015 at 1:59 AM, Vagrant Cascadian vagrant@debian.org wrote:
This is why I originally proposed to make it fallback to the old behavior, then you could set boot_targets to empty and still have the old style booting; but opinions may differ on all this. :)
Making it fallback to the old behavior would be a nice transition IMHO.
Otavio, what do you think?

On Thu, Oct 29, 2015 at 1:27 PM, Fabio Estevam festevam@gmail.com wrote:
On Wed, Oct 28, 2015 at 1:59 AM, Vagrant Cascadian vagrant@debian.org wrote:
This is why I originally proposed to make it fallback to the old behavior, then you could set boot_targets to empty and still have the old style booting; but opinions may differ on all this. :)
Making it fallback to the old behavior would be a nice transition IMHO.
Otavio, what do you think?
Yes and no; to be honest, the Yocto Project does not support the old behavior but we should.
I think we ought to convert and work to properly support it, the fallback should not be supported.
participants (3)
-
Fabio Estevam
-
Otavio Salvador
-
Vagrant Cascadian