summaryrefslogtreecommitdiff
path: root/firmware/eeprom_settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/eeprom_settings.c')
-rw-r--r--firmware/eeprom_settings.c18
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
28struct eeprom_settings firmware_settings; 28struct eeprom_settings firmware_settings;
29 29
30static void reset_config(void) 30static 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
39bool eeprom_settings_init(void) 46bool 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