On 30.5.2016 21:36, Alexander Graf wrote: > > > On 05/30/2016 04:11 PM, Michal Simek wrote: >> Setup flag when default environment are used to be able to >> rewrite default distro boot variables based on SoC boot mode. >> >> Signed-off-by: Michal Simek <michal.si...@xilinx.com> >> --- >> >> I didn't find any way how to detect that default or saved variables are >> used. I want to have a flag to be able to rewrite boot_targets variable >> based on boot mode. Especially when SD boot mode is setup than SD should >> be primary boot devices, etc. >> When variables are saved boot_targets will be restored and SoC boot mode >> will be ignored. >> If you know better way how to do it, please let me know. > > You may want to be able to do the same from inside a script, so I guess > we should better have this as an environment variable itself again.
Was there any environment in past? > > There was a way to have environment variable reads return a value > directly from code rather than go via environment storage. I guess we > could expose the flag through that? If you expose environment variable and then run saveenv this variable will be saved and restored again and your script behaves the same. > > Or add an environment variable that we set in set_default_env() and > ignore that variable on saveenv. I'm not sure I like that option better > than your current one though. Yes this should work but sounds pretty hacky. Just and example of usage which I have tested on ZynqMP. Based on bootmode different boot_targets are setup and this setting is blocked for saved environment detected via this flag. Thanks, Michal 224 int board_late_init(void) 225 { 226 u32 reg = 0; 227 u8 bootmode; 228 229 if (!(gd->flags & GD_FLG_ENV_DEFAULT)) { 230 debug("Saved variables - Skipping\n"); 231 return 0; 232 } 233 234 reg = readl(&crlapb_base->boot_mode); 235 bootmode = reg & BOOT_MODES_MASK; 236 237 puts("Bootmode: "); 238 switch (bootmode) { 239 case JTAG_MODE: 240 puts("JTAG_MODE\n"); 241 setenv("boot_targets", "pxe dhcp"); 242 break; 243 case QSPI_MODE_24BIT: 244 case QSPI_MODE_32BIT: 245 setenv("boot_targets", "qspi0"); 246 puts("QSPI_MODE\n"); 247 break; 248 case EMMC_MODE: 249 puts("EMMC_MODE\n"); 250 setenv("boot_targets", "mmc0 mmc1"); 251 break; 252 case SD_MODE: 253 puts("SD_MODE\n"); 254 setenv("boot_targets", "mmc0 mmc1"); 255 break; 256 case SD_MODE1: 257 puts("SD_MODE1\n"); 258 setenv("boot_targets", "mmc0 mmc1"); 259 break; 260 case NAND_MODE: 261 puts("NAND_MODE\n"); 262 setenv("boot_targets", "nand0"); 263 break; 264 default: 265 printf("Invalid Boot Mode:0x%x\n", bootmode); 266 break; 267 } 268 269 return 0; 270 } _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot