diff options
Diffstat (limited to 'firmware/eeprom_settings.c')
-rw-r--r-- | firmware/eeprom_settings.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/firmware/eeprom_settings.c b/firmware/eeprom_settings.c index 450eff9623..ad2c9c848f 100644 --- a/firmware/eeprom_settings.c +++ b/firmware/eeprom_settings.c | |||
@@ -27,13 +27,20 @@ | |||
27 | 27 | ||
28 | struct eeprom_settings firmware_settings; | 28 | struct eeprom_settings firmware_settings; |
29 | 29 | ||
30 | static void reset_config(void) | 30 | static bool reset_config(void) |
31 | { | 31 | { |
32 | memset(&firmware_settings, 0, sizeof(struct eeprom_settings)); | 32 | memset(&firmware_settings, 0, sizeof(struct eeprom_settings)); |
33 | #ifdef BOOTLOADER | ||
34 | /* Don't reset settings if we are inside bootloader. */ | ||
35 | firmware_settings.initialized = false; | ||
36 | #else | ||
33 | firmware_settings.version = EEPROM_SETTINGS_VERSION; | 37 | firmware_settings.version = EEPROM_SETTINGS_VERSION; |
34 | firmware_settings.initialized = true; | 38 | firmware_settings.initialized = true; |
35 | firmware_settings.boot_disk = false; | 39 | firmware_settings.boot_disk = false; |
36 | firmware_settings.bl_version = 0; | 40 | firmware_settings.bl_version = 0; |
41 | #endif | ||
42 | |||
43 | return firmware_settings.initialized; | ||
37 | } | 44 | } |
38 | 45 | ||
39 | bool eeprom_settings_init(void) | 46 | bool eeprom_settings_init(void) |
@@ -69,23 +76,20 @@ bool eeprom_settings_init(void) | |||
69 | if (firmware_settings.version != EEPROM_SETTINGS_VERSION) | 76 | if (firmware_settings.version != EEPROM_SETTINGS_VERSION) |
70 | { | 77 | { |
71 | logf("Version mismatch"); | 78 | logf("Version mismatch"); |
72 | reset_config(); | 79 | return reset_config(); |
73 | return true; | ||
74 | } | 80 | } |
75 | 81 | ||
76 | if (firmware_settings.checksum != sum) | 82 | if (firmware_settings.checksum != sum) |
77 | { | 83 | { |
78 | logf("Checksum mismatch"); | 84 | logf("Checksum mismatch"); |
79 | reset_config(); | 85 | return reset_config(); |
80 | return true; | ||
81 | } | 86 | } |
82 | 87 | ||
83 | #ifndef BOOTLOADER | 88 | #ifndef BOOTLOADER |
84 | if (firmware_settings.bl_version < EEPROM_SETTINGS_BL_MINVER) | 89 | if (firmware_settings.bl_version < EEPROM_SETTINGS_BL_MINVER) |
85 | { | 90 | { |
86 | logf("Too old bootloader: %d", firmware_settings.bl_version); | 91 | logf("Too old bootloader: %d", firmware_settings.bl_version); |
87 | reset_config(); | 92 | return reset_config(); |
88 | return true; | ||
89 | } | 93 | } |
90 | #endif | 94 | #endif |
91 | 95 | ||