[PATCH 8/8] gw_ventana: Migrate to using CONFIG_EXTRA_ENV_TEXT
Tom Rini
trini at konsulko.com
Thu Jun 16 19:04:23 CEST 2022
On Thu, Jun 16, 2022 at 09:51:13AM -0700, Tim Harvey wrote:
> On Tue, Jun 14, 2022 at 9:58 AM Tim Harvey <tharvey at gateworks.com> wrote:
> >
> > On Tue, Jun 14, 2022 at 9:18 AM Tom Rini <trini at konsulko.com> wrote:
> > >
> > > On Tue, Jun 14, 2022 at 09:14:03AM -0700, Tim Harvey wrote:
> > > > On Mon, Jun 13, 2022 at 7:57 PM Tom Rini <trini at konsulko.com> wrote:
> > > > >
> > > > > Move the environment text over from being set via
> > > > > CONFIG_EXTRA_ENV_SETTINGS in include/configs/gw_ventana.h and over
> > > > > to plain text in board/gateworks/gw_ventana/gw_ventana.env. This lets
> > > > > us drop CONFIG_EXTRA_ENV_SETTINGS_COMMON as everything resides in a
> > > > > single environment file now.
> > > > >
> > > > > Cc: Tim Harvey <tharvey at gateworks.com>
> > > > > Signed-off-by: Tom Rini <trini at konsulko.com>
> > > > > ---
> > > > > board/gateworks/gw_ventana/gw_ventana.env | 145 +++++++++++++++++++++
> > > > > include/configs/gw_ventana.h | 148 ----------------------
> > > > > 2 files changed, 145 insertions(+), 148 deletions(-)
> > > > > create mode 100644 board/gateworks/gw_ventana/gw_ventana.env
> > > > >
> > > > > diff --git a/board/gateworks/gw_ventana/gw_ventana.env b/board/gateworks/gw_ventana/gw_ventana.env
> > > > > new file mode 100644
> > > > > index 000000000000..9a316c74f215
> > > > > --- /dev/null
> > > > > +++ b/board/gateworks/gw_ventana/gw_ventana.env
> > > > > @@ -0,0 +1,145 @@
> > > > > +/* SPDX-License-Identifier: GPL-2.0+ */
> > > > > +/*
> > > > > + * Copyright (C) 2013 Gateworks Corporation
> > > > > + */
> > > > > +
> > > > > +splashpos=m,m
> > > > > +splashimage=CONFIG_SYS_LOAD_ADDR
> > > > > +usb_pgood_delay=2000
> > > > > +console=ttymxc1
> > > > > +bootdevs=usb mmc sata flash
> > > > > +hwconfig=_UNKNOWN_
> > > > > +
> > > > > +disk=0
> > > > > +part=1
> > > > > +
> > > > > +fdt_high=0xffffffff
> > > > > +fdt_addr=0x18000000
> > > > > +initrd_high=0xffffffff
> > > > > +fixfdt=fdt addr ${fdt_addr}
> > > > > +bootdir=boot
> > > > > +loadfdt=
> > > > > + if ${fsload} ${fdt_addr} ${bootdir}/${fdt_file}; then
> > > > > + echo Loaded DTB from ${bootdir}/${fdt_file};
> > > > > + run fixfdt;
> > > > > + elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file1}; then
> > > > > + echo Loaded DTB from ${bootdir}/${fdt_file1};
> > > > > + run fixfdt;
> > > > > + elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file2}; then
> > > > > + echo Loaded DTB from ${bootdir}/${fdt_file2};
> > > > > + run fixfdt;
> > > > > + fi
> > > > > +
> > > > > +fs=ext4
> > > > > +script=6x_bootscript-ventana
> > > > > +loadscript=
> > > > > + if ${fsload} ${loadaddr} ${bootdir}/${script}; then
> > > > > + source ${loadaddr};
> > > > > + fi
> > > > > +
> > > > > +uimage=uImage
> > > > > +mmc_root=mmcblk0p1
> > > > > +mmc_boot=
> > > > > + setenv fsload "${fs}load mmc ${disk}:${part}";
> > > > > + mmc dev ${disk} && mmc rescan &&
> > > > > + setenv dtype mmc; run loadscript;
> > > > > + if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then
> > > > > + setenv bootargs console=${console},${baudrate}
> > > > > + root=/dev/${mmc_root} rootfstype=${fs}
> > > > > + rootwait rw ${video} ${extra};
> > > > > + if run loadfdt; then
> > > > > + bootm ${loadaddr} - ${fdt_addr};
> > > > > + else
> > > > > + bootm;
> > > > > + fi;
> > > > > + fi
> > > > > +
> > > > > +sata_boot=
> > > > > + setenv fsload "${fs}load sata ${disk}:${part}";
> > > > > + sata init &&
> > > > > + setenv dtype sata; run loadscript;
> > > > > + if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then
> > > > > + setenv bootargs console=${console},${baudrate}
> > > > > + root=/dev/sda1 rootfstype=${fs}
> > > > > + rootwait rw ${video} ${extra};
> > > > > + if run loadfdt; then
> > > > > + bootm ${loadaddr} - ${fdt_addr};
> > > > > + else
> > > > > + bootm;
> > > > > + fi;
> > > > > + fi
> > > > > +
> > > > > +usb_boot=
> > > > > + setenv fsload "${fs}load usb ${disk}:${part}";
> > > > > + usb start && usb dev ${disk} &&
> > > > > + setenv dtype usb; run loadscript;
> > > > > + if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then
> > > > > + setenv bootargs console=${console},${baudrate}
> > > > > + root=/dev/sda1 rootfstype=${fs}
> > > > > + rootwait rw ${video} ${extra};
> > > > > + if run loadfdt; then
> > > > > + bootm ${loadaddr} - ${fdt_addr};
> > > > > + else
> > > > > + bootm;
> > > > > + fi;
> > > > > + fi
> > > > > +
> > > > > +#ifdef CONFIG_SPI_FLASH
> > > > > +image_os=ventana/openwrt-imx6-imx6q-gw5400-a-squashfs.bin
> > > > > +image_uboot=ventana/u-boot_spi.imx
> > > > > +
> > > > > +spi_koffset=0x90000
> > > > > +spi_klen=0x200000
> > > > > +
> > > > > +spi_updateuboot=echo Updating uboot from
> > > > > + ${serverip}:${image_uboot}...;
> > > > > + tftpboot ${loadaddr} ${image_uboot} &&
> > > > > + sf probe && sf erase 0 80000 &&
> > > > > + sf write ${loadaddr} 400 ${filesize}
> > > > > +spi_update=echo Updating OS from ${serverip}:${image_os}
> > > > > + to ${spi_koffset} ...;
> > > > > + tftp ${loadaddr} ${image_os} &&
> > > > > + sf probe &&
> > > > > + sf update ${loadaddr} ${spi_koffset} ${filesize}
> > > > > +
> > > > > +flash_boot=
> > > > > + if sf probe &&
> > > > > + sf read ${loadaddr} ${spi_koffset} ${spi_klen}; then
> > > > > + setenv bootargs console=${console},${baudrate}
> > > > > + root=/dev/mtdblock3
> > > > > + rootfstype=squashfs,jffs2
> > > > > + ${video} ${extra};
> > > > > + bootm;
> > > > > + fi
> > > > > +#else
> > > > > +image_rootfs=openwrt-imx6-ventana-rootfs.ubi
> > > > > +nand_update=echo Updating NAND from ${serverip}:${image_rootfs}...;
> > > > > + tftp ${loadaddr} ${image_rootfs} &&
> > > > > + nand erase.part rootfs &&
> > > > > + nand write ${loadaddr} rootfs ${filesize}
> > > > > +
> > > > > +flash_boot=
> > > > > + setenv fsload 'ubifsload';
> > > > > + ubi part rootfs;
> > > > > + if ubi check boot; then
> > > > > + ubifsmount ubi0:boot;
> > > > > + setenv root ubi0:rootfs ubi.mtd=2
> > > > > + rootfstype=squashfs,ubifs;
> > > > > + setenv bootdir;
> > > > > + elif ubi check rootfs; then
> > > > > + ubifsmount ubi0:rootfs;
> > > > > + setenv root ubi0:rootfs ubi.mtd=2
> > > > > + rootfstype=ubifs;
> > > > > + fi;
> > > > > + setenv dtype nand; run loadscript;
> > > > > + if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then
> > > > > + setenv bootargs console=${console},${baudrate}
> > > > > + root=${root} ${video} ${extra};
> > > > > + if run loadfdt; then
> > > > > + ubifsumount;
> > > > > + bootm ${loadaddr} - ${fdt_addr};
> > > > > + else
> > > > > + ubifsumount; bootm;
> > > > > + fi;
> > > > > + fi
> > > > > +#endif
> > > > > diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
> > > > > index 77f41502220a..47a72fc8fce5 100644
> > > > > --- a/include/configs/gw_ventana.h
> > > > > +++ b/include/configs/gw_ventana.h
> > > > > @@ -76,152 +76,4 @@
> > > > > #define CONFIG_IPADDR 192.168.1.1
> > > > > #define CONFIG_SERVERIP 192.168.1.146
> > > > >
> > > > > -#define CONFIG_EXTRA_ENV_SETTINGS_COMMON \
> > > > > - "splashpos=m,m\0" \
> > > > > - "splashimage=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
> > > > > - "usb_pgood_delay=2000\0" \
> > > > > - "console=ttymxc1\0" \
> > > > > - "bootdevs=usb mmc sata flash\0" \
> > > > > - "hwconfig=_UNKNOWN_\0" \
> > > > > - "video=\0" \
> > > > > - \
> > > > > - "disk=0\0" \
> > > > > - "part=1\0" \
> > > > > - \
> > > > > - "fdt_high=0xffffffff\0" \
> > > > > - "fdt_addr=0x18000000\0" \
> > > > > - "initrd_high=0xffffffff\0" \
> > > > > - "fixfdt=" \
> > > > > - "fdt addr ${fdt_addr}\0" \
> > > > > - "bootdir=boot\0" \
> > > > > - "loadfdt=" \
> > > > > - "if ${fsload} ${fdt_addr} ${bootdir}/${fdt_file}; then " \
> > > > > - "echo Loaded DTB from ${bootdir}/${fdt_file}; " \
> > > > > - "run fixfdt; " \
> > > > > - "elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file1}; then " \
> > > > > - "echo Loaded DTB from ${bootdir}/${fdt_file1}; " \
> > > > > - "run fixfdt; " \
> > > > > - "elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file2}; then " \
> > > > > - "echo Loaded DTB from ${bootdir}/${fdt_file2}; " \
> > > > > - "run fixfdt; " \
> > > > > - "fi\0" \
> > > > > - \
> > > > > - "fs=ext4\0" \
> > > > > - "script=6x_bootscript-ventana\0" \
> > > > > - "loadscript=" \
> > > > > - "if ${fsload} ${loadaddr} ${bootdir}/${script}; then " \
> > > > > - "source ${loadaddr}; " \
> > > > > - "fi\0" \
> > > > > - \
> > > > > - "uimage=uImage\0" \
> > > > > - "mmc_root=mmcblk0p1\0" \
> > > > > - "mmc_boot=" \
> > > > > - "setenv fsload \"${fs}load mmc ${disk}:${part}\"; " \
> > > > > - "mmc dev ${disk} && mmc rescan && " \
> > > > > - "setenv dtype mmc; run loadscript; " \
> > > > > - "if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then " \
> > > > > - "setenv bootargs console=${console},${baudrate} " \
> > > > > - "root=/dev/${mmc_root} rootfstype=${fs} " \
> > > > > - "rootwait rw ${video} ${extra}; " \
> > > > > - "if run loadfdt; then " \
> > > > > - "bootm ${loadaddr} - ${fdt_addr}; " \
> > > > > - "else " \
> > > > > - "bootm; " \
> > > > > - "fi; " \
> > > > > - "fi\0" \
> > > > > - \
> > > > > - "sata_boot=" \
> > > > > - "setenv fsload \"${fs}load sata ${disk}:${part}\"; " \
> > > > > - "sata init && " \
> > > > > - "setenv dtype sata; run loadscript; " \
> > > > > - "if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then " \
> > > > > - "setenv bootargs console=${console},${baudrate} " \
> > > > > - "root=/dev/sda1 rootfstype=${fs} " \
> > > > > - "rootwait rw ${video} ${extra}; " \
> > > > > - "if run loadfdt; then " \
> > > > > - "bootm ${loadaddr} - ${fdt_addr}; " \
> > > > > - "else " \
> > > > > - "bootm; " \
> > > > > - "fi; " \
> > > > > - "fi\0" \
> > > > > - "usb_boot=" \
> > > > > - "setenv fsload \"${fs}load usb ${disk}:${part}\"; " \
> > > > > - "usb start && usb dev ${disk} && " \
> > > > > - "setenv dtype usb; run loadscript; " \
> > > > > - "if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then " \
> > > > > - "setenv bootargs console=${console},${baudrate} " \
> > > > > - "root=/dev/sda1 rootfstype=${fs} " \
> > > > > - "rootwait rw ${video} ${extra}; " \
> > > > > - "if run loadfdt; then " \
> > > > > - "bootm ${loadaddr} - ${fdt_addr}; " \
> > > > > - "else " \
> > > > > - "bootm; " \
> > > > > - "fi; " \
> > > > > - "fi\0"
> > > > > -
> > > > > -#ifdef CONFIG_SPI_FLASH
> > > > > - #define CONFIG_EXTRA_ENV_SETTINGS \
> > > > > - CONFIG_EXTRA_ENV_SETTINGS_COMMON \
> > > > > - "image_os=ventana/openwrt-imx6-imx6q-gw5400-a-squashfs.bin\0" \
> > > > > - "image_uboot=ventana/u-boot_spi.imx\0" \
> > > > > - \
> > > > > - "spi_koffset=0x90000\0" \
> > > > > - "spi_klen=0x200000\0" \
> > > > > - \
> > > > > - "spi_updateuboot=echo Updating uboot from " \
> > > > > - "${serverip}:${image_uboot}...; " \
> > > > > - "tftpboot ${loadaddr} ${image_uboot} && " \
> > > > > - "sf probe && sf erase 0 80000 && " \
> > > > > - "sf write ${loadaddr} 400 ${filesize}\0" \
> > > > > - "spi_update=echo Updating OS from ${serverip}:${image_os} " \
> > > > > - "to ${spi_koffset} ...; " \
> > > > > - "tftp ${loadaddr} ${image_os} && " \
> > > > > - "sf probe && " \
> > > > > - "sf update ${loadaddr} ${spi_koffset} ${filesize}\0" \
> > > > > - \
> > > > > - "flash_boot=" \
> > > > > - "if sf probe && " \
> > > > > - "sf read ${loadaddr} ${spi_koffset} ${spi_klen}; then " \
> > > > > - "setenv bootargs console=${console},${baudrate} " \
> > > > > - "root=/dev/mtdblock3 " \
> > > > > - "rootfstype=squashfs,jffs2 " \
> > > > > - "${video} ${extra}; " \
> > > > > - "bootm; " \
> > > > > - "fi\0"
> > > > > -#else
> > > > > - #define CONFIG_EXTRA_ENV_SETTINGS \
> > > > > - CONFIG_EXTRA_ENV_SETTINGS_COMMON \
> > > > > - \
> > > > > - "image_rootfs=openwrt-imx6-ventana-rootfs.ubi\0" \
> > > > > - "nand_update=echo Updating NAND from ${serverip}:${image_rootfs}...; " \
> > > > > - "tftp ${loadaddr} ${image_rootfs} && " \
> > > > > - "nand erase.part rootfs && " \
> > > > > - "nand write ${loadaddr} rootfs ${filesize}\0" \
> > > > > - \
> > > > > - "flash_boot=" \
> > > > > - "setenv fsload 'ubifsload'; " \
> > > > > - "ubi part rootfs; " \
> > > > > - "if ubi check boot; then " \
> > > > > - "ubifsmount ubi0:boot; " \
> > > > > - "setenv root ubi0:rootfs ubi.mtd=2 " \
> > > > > - "rootfstype=squashfs,ubifs; " \
> > > > > - "setenv bootdir; " \
> > > > > - "elif ubi check rootfs; then " \
> > > > > - "ubifsmount ubi0:rootfs; " \
> > > > > - "setenv root ubi0:rootfs ubi.mtd=2 " \
> > > > > - "rootfstype=ubifs; " \
> > > > > - "fi; " \
> > > > > - "setenv dtype nand; run loadscript; " \
> > > > > - "if ${fsload} ${loadaddr} ${bootdir}/${uimage}; then " \
> > > > > - "setenv bootargs console=${console},${baudrate} " \
> > > > > - "root=${root} ${video} ${extra}; " \
> > > > > - "if run loadfdt; then " \
> > > > > - "ubifsumount; " \
> > > > > - "bootm ${loadaddr} - ${fdt_addr}; " \
> > > > > - "else " \
> > > > > - "ubifsumount; bootm; " \
> > > > > - "fi; " \
> > > > > - "fi\0"
> > > > > -#endif
> > > > > -
> > > > > #endif /* __CONFIG_H */
> > > > > --
> > > > > 2.25.1
> > > > >
> > > >
> > > > Tom,
> > > >
> > > > Thanks, I've been looking forward to seeing how env is going to get
> > > > migrated out of headers. Can you explain the process used to create
> > > > this patch? It seems you may have something automated.
> > > >
> > > > Acked-by: Tim Harvey <tharvey at gateworks.com>
> > >
> > > So, I do not have anything automated, unfortunately. In cases like this
> > > where we don't use distro_bootcmd and also don't use defined blocks of
> > > commands, it's a matter of applying a few regexs to remove quotes,
> > > spaces and trailing \, then giving it a quick read to make sure it's
> > > still right. This last part is some of why it can't be automated as we
> > > have cases of:
> > > "some_bootargs=a=1 b=2" \
> > > "c=3\0"
> > > and since there's no indent on c=3, it would become "c=3" in the
> > > environment rather than "some_bootargs" being set to "a=1 b=2 c=3".
> > >
> >
> > Tom,
> >
> > I see - Its good to see this as an example and thanks for the cleanup!
>
> Tom,
>
> What is the plan or challenges to move env from headers when generic
> distro config is used?
It's a good question I don't have an answer to just yet. One potential
answer is to say stop using include/config_distro_bootcmd.h and use
"bootmeth" to achieve the same results, but in a way that doesn't make
heavy use of macros and environment being constructed of null-terminated
tokens.
Or something new and clever is needed to let the macro work done in
include/config_distro_bootcmd.h work with a script that requires new
variables to begin a new line with no leading whitespace.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220616/03b71b11/attachment.sig>
More information about the U-Boot
mailing list