čt 30. 7. 2020 v 14:42 odesílatel Michal Simek <michal.si...@xilinx.com> napsal: > > Enabling saving variables to MMC(FAT), NAND, SPI based on primary bootmode. > Maybe that logic can be tuned for more complicated use cases and better > tested for different bootmodes. > > Tested on zcu104 to SD(FAT) and JTAG(NOWHERE). > > Signed-off-by: Michal Simek <michal.si...@xilinx.com> > --- > > SPI is not tested and tuning is required. > --- > board/xilinx/zynqmp/zynqmp.c | 35 ++++++++++++++++++++++++++++ > configs/xilinx_zynqmp_virt_defconfig | 6 +++++ > 2 files changed, 41 insertions(+) > > diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c > index 8a4df6fc1ab6..b11abd0e7d04 100644 > --- a/board/xilinx/zynqmp/zynqmp.c > +++ b/board/xilinx/zynqmp/zynqmp.c > @@ -9,6 +9,7 @@ > #include <cpu_func.h> > #include <debug_uart.h> > #include <env.h> > +#include <env_internal.h> > #include <init.h> > #include <log.h> > #include <net.h> > @@ -732,3 +733,37 @@ int checkboard(void) > puts("Board: Xilinx ZynqMP\n"); > return 0; > } > + > +enum env_location env_get_location(enum env_operation op, int prio) > +{ > + u32 bootmode = zynqmp_get_bootmode(); > + > + if (prio) > + return ENVL_UNKNOWN; > + > + switch (bootmode) { > + case EMMC_MODE: > + case SD_MODE: > + case SD1_LSHFT_MODE: > + case SD_MODE1: > + if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT)) > + return ENVL_FAT; > + if (IS_ENABLED(CONFIG_ENV_IS_IN_EXT4)) > + return ENVL_EXT4; > + return ENVL_UNKNOWN; > + case NAND_MODE: > + if (IS_ENABLED(CONFIG_ENV_IS_IN_NAND)) > + return ENVL_NAND; > + if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI)) > + return ENVL_UBI; > + return ENVL_UNKNOWN; > + case QSPI_MODE_24BIT: > + case QSPI_MODE_32BIT: > + if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH)) > + return ENVL_SPI_FLASH; > + return ENVL_UNKNOWN; > + case JTAG_MODE: > + default: > + return ENVL_NOWHERE; > + } > +} > diff --git a/configs/xilinx_zynqmp_virt_defconfig > b/configs/xilinx_zynqmp_virt_defconfig > index c84bf2008a19..53cc0c3bf475 100644 > --- a/configs/xilinx_zynqmp_virt_defconfig > +++ b/configs/xilinx_zynqmp_virt_defconfig > @@ -57,6 +57,12 @@ CONFIG_CMD_UBI=y > CONFIG_SPL_OF_CONTROL=y > CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zcu100-revC" > CONFIG_OF_LIST="avnet-ultra96-rev1 zynqmp-a2197-revA zynqmp-e-a2197-00-revA > zynqmp-g-a2197-00-revA zynqmp-m-a2197-01-revA zynqmp-m-a2197-02-revA > zynqmp-m-a2197-03-revA zynqmp-p-a2197-00-revA zynqmp-zc1232-revA > zynqmp-zc1254-revA zynqmp-zc1751-xm015-dc1 zynqmp-zc1751-xm016-dc2 > zynqmp-zc1751-xm017-dc3 zynqmp-zc1751-xm018-dc4 zynqmp-zc1751-xm019-dc5 > zynqmp-zcu100-revC zynqmp-zcu102-rev1.1 zynqmp-zcu102-rev1.0 > zynqmp-zcu102-revA zynqmp-zcu102-revB zynqmp-zcu104-revA zynqmp-zcu104-revC > zynqmp-zcu106-revA zynqmp-zcu111-revA zynqmp-zcu1275-revA zynqmp-zcu1275-revB > zynqmp-zcu1285-revA zynqmp-zcu208-revA zynqmp-zcu216-revA > zynqmp-topic-miamimp-xilinx-xdp-v1r1" > +CONFIG_ENV_IS_NOWHERE=y > +CONFIG_ENV_IS_IN_FAT=y > +CONFIG_ENV_IS_IN_NAND=y > +CONFIG_ENV_IS_IN_SPI_FLASH=y > +CONFIG_ENV_EXT4_INTERFACE="mmc" > +CONFIG_ENV_EXT4_DEVICE_AND_PART="1:auto" > CONFIG_SYS_RELOC_GD_ENV_ADDR=y > CONFIG_NET_RANDOM_ETHADDR=y > CONFIG_NETCONSOLE=y > -- > 2.27.0 >
Applied with defconfig sync up. M -- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs