X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=env%2Feeprom.c;h=e8126cfe3974695787e5cd11fe00fc9860d29406;hb=8d78211856fba41bde19831a35322527f09f8887;hp=fbe4fd4efc5d7ea2d7090a384745b375282d3a5d;hpb=21f639446d6bccb6cc550140d36bd3ebd74fcee8;p=oweals%2Fu-boot.git diff --git a/env/eeprom.c b/env/eeprom.c index fbe4fd4efc..e8126cfe39 100644 --- a/env/eeprom.c +++ b/env/eeprom.c @@ -1,17 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2000-2010 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH * Andreas Heppel - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include -#include +#include +#include +#include #include +#include #if defined(CONFIG_I2C_ENV_EEPROM_BUS) #include #endif @@ -61,7 +63,10 @@ static int eeprom_bus_write(unsigned dev_addr, unsigned offset, return rcode; } -static int env_eeprom_get_char(int index) +/** Call this function from overridden env_get_char_spec() if you need + * this functionality. + */ +int env_eeprom_get_char(int index) { uchar c; unsigned int off = CONFIG_ENV_OFFSET; @@ -76,7 +81,7 @@ static int env_eeprom_get_char(int index) return c; } -static void env_eeprom_load(void) +static int env_eeprom_load(void) { char buf_env[CONFIG_ENV_SIZE]; unsigned int off = CONFIG_ENV_OFFSET; @@ -122,16 +127,18 @@ static void env_eeprom_load(void) if (!crc_ok[0] && !crc_ok[1]) { gd->env_addr = 0; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; } else if (crc_ok[0] && !crc_ok[1]) { gd->env_valid = ENV_VALID; } else if (!crc_ok[0] && crc_ok[1]) { gd->env_valid = ENV_REDUND; } else { /* both ok - check serial */ - if (flags[0] == ACTIVE_FLAG && flags[1] == OBSOLETE_FLAG) + if (flags[0] == ENV_REDUND_ACTIVE && + flags[1] == ENV_REDUND_OBSOLETE) gd->env_valid = ENV_VALID; - else if (flags[0] == OBSOLETE_FLAG && flags[1] == ACTIVE_FLAG) + else if (flags[0] == ENV_REDUND_OBSOLETE && + flags[1] == ENV_REDUND_ACTIVE) gd->env_valid = ENV_REDUND; else if (flags[0] == 0xFF && flags[1] == 0) gd->env_valid = ENV_REDUND; @@ -166,9 +173,9 @@ static void env_eeprom_load(void) } if (crc == new) { - gd->env_valid = ENV_VALID; + gd->env_valid = ENV_VALID; } else { - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; } #endif /* CONFIG_ENV_OFFSET_REDUND */ @@ -181,7 +188,7 @@ static void env_eeprom_load(void) eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, off, (uchar *)buf_env, CONFIG_ENV_SIZE); - env_import(buf_env, 1); + return env_import(buf_env, 1); } static int env_eeprom_save(void) @@ -191,7 +198,7 @@ static int env_eeprom_save(void) unsigned int off = CONFIG_ENV_OFFSET; #ifdef CONFIG_ENV_OFFSET_REDUND unsigned int off_red = CONFIG_ENV_OFFSET_REDUND; - char flag_obsolete = OBSOLETE_FLAG; + char flag_obsolete = ENV_REDUND_OBSOLETE; #endif rc = env_export(&env_new); @@ -204,7 +211,7 @@ static int env_eeprom_save(void) off_red = CONFIG_ENV_OFFSET; } - env_new.flags = ACTIVE_FLAG; + env_new.flags = ENV_REDUND_ACTIVE; #endif rc = eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR, @@ -228,7 +235,6 @@ static int env_eeprom_save(void) U_BOOT_ENV_LOCATION(eeprom) = { .location = ENVL_EEPROM, ENV_NAME("EEPROM") - .get_char = env_eeprom_get_char, .load = env_eeprom_load, .save = env_save_ptr(env_eeprom_save), };