[PATCH 8/8] gw_ventana: Migrate to using CONFIG_EXTRA_ENV_TEXT

Tim Harvey tharvey at gateworks.com
Tue Jun 14 18:58:17 CEST 2022


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!

Tim


More information about the U-Boot mailing list