env: spi: Fix gd->env_valid for the first write
authorMichal Simek <michal.simek@amd.com>
Mon, 22 Sep 2025 16:03:39 +0000 (18:03 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 2 Oct 2025 17:32:34 +0000 (11:32 -0600)
commite589d5822cac10915ec04e8d9044d2460aec8924
treed2028bb559e544edf5e1d4034fb75b29d1ae1141
parenta14253b15c8371b78da2984c0386241c552cc4df
env: spi: Fix gd->env_valid for the first write

When both SPI environment locations are invalid (gd->env_valid ==
ENV_INVALID), the first call to saveenv writes to the primary location and
sets the active flag. However, the logic for updating gd->env_valid
incorrectly sets it to ENV_REDUND, which does not match the actual location
written. This causes the first two writes to target the same location, and
alternation only begins after the second write.

Update the logic to alternate gd->env_valid based on whether the last write
was to the primary or redundant location, ensuring the first write sets
ENV_VALID and subsequent writes alternate as expected. This aligns
env_valid with the actual storage location and fixes the alternation
sequence from the first write.

With this change, the "Valid environment" printout correctly reflects the
active location after each save, and the alternation between primary and
redundant locations works as intended from the start.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Reviewed-by: Marek Vasut <marek.vasut@mailbox.org>
Acked-by: E Shattow <e@freeshell.de>
env/sf.c