eeprom.c (0649cd0d4908d9b983a0361b8665938ef25701be) | eeprom.c (203e94f6c9ca03e260175ce240f5856507395585) |
---|---|
1/* 2 * (C) Copyright 2000-2010 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com> 6 * Andreas Heppel <aheppel@sysgo.de> 7 * 8 * SPDX-License-Identifier: GPL-2.0+ --- 57 unchanged lines hidden (view full) --- 66} 67 68uchar env_get_char_spec(int index) 69{ 70 uchar c; 71 unsigned int off = CONFIG_ENV_OFFSET; 72 73#ifdef CONFIG_ENV_OFFSET_REDUND | 1/* 2 * (C) Copyright 2000-2010 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com> 6 * Andreas Heppel <aheppel@sysgo.de> 7 * 8 * SPDX-License-Identifier: GPL-2.0+ --- 57 unchanged lines hidden (view full) --- 66} 67 68uchar env_get_char_spec(int index) 69{ 70 uchar c; 71 unsigned int off = CONFIG_ENV_OFFSET; 72 73#ifdef CONFIG_ENV_OFFSET_REDUND |
74 if (gd->env_valid == 2) | 74 if (gd->env_valid == ENV_REDUND) |
75 off = CONFIG_ENV_OFFSET_REDUND; 76#endif 77 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 78 off + index + offsetof(env_t, data), &c, 1); 79 80 return c; 81} 82 --- 40 unchanged lines hidden (view full) --- 123 if (crc_tmp == crc[i]) 124 crc_ok[i] = 1; 125 } 126 127 if (!crc_ok[0] && !crc_ok[1]) { 128 gd->env_addr = 0; 129 gd->env_valid = 0; 130 } else if (crc_ok[0] && !crc_ok[1]) { | 75 off = CONFIG_ENV_OFFSET_REDUND; 76#endif 77 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 78 off + index + offsetof(env_t, data), &c, 1); 79 80 return c; 81} 82 --- 40 unchanged lines hidden (view full) --- 123 if (crc_tmp == crc[i]) 124 crc_ok[i] = 1; 125 } 126 127 if (!crc_ok[0] && !crc_ok[1]) { 128 gd->env_addr = 0; 129 gd->env_valid = 0; 130 } else if (crc_ok[0] && !crc_ok[1]) { |
131 gd->env_valid = 1; | 131 gd->env_valid = ENV_VALID; |
132 } else if (!crc_ok[0] && crc_ok[1]) { | 132 } else if (!crc_ok[0] && crc_ok[1]) { |
133 gd->env_valid = 2; | 133 gd->env_valid = ENV_REDUND; |
134 } else { 135 /* both ok - check serial */ 136 if (flags[0] == ACTIVE_FLAG && flags[1] == OBSOLETE_FLAG) | 134 } else { 135 /* both ok - check serial */ 136 if (flags[0] == ACTIVE_FLAG && flags[1] == OBSOLETE_FLAG) |
137 gd->env_valid = 1; | 137 gd->env_valid = ENV_VALID; |
138 else if (flags[0] == OBSOLETE_FLAG && flags[1] == ACTIVE_FLAG) | 138 else if (flags[0] == OBSOLETE_FLAG && flags[1] == ACTIVE_FLAG) |
139 gd->env_valid = 2; | 139 gd->env_valid = ENV_REDUND; |
140 else if (flags[0] == 0xFF && flags[1] == 0) | 140 else if (flags[0] == 0xFF && flags[1] == 0) |
141 gd->env_valid = 2; | 141 gd->env_valid = ENV_REDUND; |
142 else if (flags[1] == 0xFF && flags[0] == 0) | 142 else if (flags[1] == 0xFF && flags[0] == 0) |
143 gd->env_valid = 1; | 143 gd->env_valid = ENV_VALID; |
144 else /* flags are equal - almost impossible */ | 144 else /* flags are equal - almost impossible */ |
145 gd->env_valid = 1; | 145 gd->env_valid = ENV_VALID; |
146 } 147 148#else /* CONFIG_ENV_OFFSET_REDUND */ 149 ulong crc, len, new; 150 uchar rdbuf[64]; 151 152 eeprom_init(-1); /* prepare for EEPROM read/write */ 153 --- 11 unchanged lines hidden (view full) --- 165 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 166 CONFIG_ENV_OFFSET + off, rdbuf, n); 167 new = crc32(new, rdbuf, n); 168 len -= n; 169 off += n; 170 } 171 172 if (crc == new) { | 146 } 147 148#else /* CONFIG_ENV_OFFSET_REDUND */ 149 ulong crc, len, new; 150 uchar rdbuf[64]; 151 152 eeprom_init(-1); /* prepare for EEPROM read/write */ 153 --- 11 unchanged lines hidden (view full) --- 165 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 166 CONFIG_ENV_OFFSET + off, rdbuf, n); 167 new = crc32(new, rdbuf, n); 168 len -= n; 169 off += n; 170 } 171 172 if (crc == new) { |
173 gd->env_valid = 1; | 173 gd->env_valid = ENV_VALID; |
174 } else { 175 gd->env_valid = 0; 176 } 177#endif /* CONFIG_ENV_OFFSET_REDUND */ 178 179 off = CONFIG_ENV_OFFSET; 180#ifdef CONFIG_ENV_OFFSET_REDUND | 174 } else { 175 gd->env_valid = 0; 176 } 177#endif /* CONFIG_ENV_OFFSET_REDUND */ 178 179 off = CONFIG_ENV_OFFSET; 180#ifdef CONFIG_ENV_OFFSET_REDUND |
181 if (gd->env_valid == 2) | 181 if (gd->env_valid == ENV_REDUND) |
182 off = CONFIG_ENV_OFFSET_REDUND; 183#endif 184 185 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 186 off, (uchar *)buf_env, CONFIG_ENV_SIZE); 187 188 env_import(buf_env, 1); 189} --- 10 unchanged lines hidden (view full) --- 200 201 BUG_ON(env_ptr != NULL); 202 203 rc = env_export(&env_new); 204 if (rc) 205 return rc; 206 207#ifdef CONFIG_ENV_OFFSET_REDUND | 182 off = CONFIG_ENV_OFFSET_REDUND; 183#endif 184 185 eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR, 186 off, (uchar *)buf_env, CONFIG_ENV_SIZE); 187 188 env_import(buf_env, 1); 189} --- 10 unchanged lines hidden (view full) --- 200 201 BUG_ON(env_ptr != NULL); 202 203 rc = env_export(&env_new); 204 if (rc) 205 return rc; 206 207#ifdef CONFIG_ENV_OFFSET_REDUND |
208 if (gd->env_valid == 1) { | 208 if (gd->env_valid == ENV_VALID) { |
209 off = CONFIG_ENV_OFFSET_REDUND; 210 off_red = CONFIG_ENV_OFFSET; 211 } 212 213 env_new.flags = ACTIVE_FLAG; 214#endif 215 216 rc = eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR, 217 off, (uchar *)&env_new, CONFIG_ENV_SIZE); 218 219#ifdef CONFIG_ENV_OFFSET_REDUND 220 if (rc == 0) { 221 eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR, 222 off_red + offsetof(env_t, flags), 223 (uchar *)&flag_obsolete, 1); 224 | 209 off = CONFIG_ENV_OFFSET_REDUND; 210 off_red = CONFIG_ENV_OFFSET; 211 } 212 213 env_new.flags = ACTIVE_FLAG; 214#endif 215 216 rc = eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR, 217 off, (uchar *)&env_new, CONFIG_ENV_SIZE); 218 219#ifdef CONFIG_ENV_OFFSET_REDUND 220 if (rc == 0) { 221 eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR, 222 off_red + offsetof(env_t, flags), 223 (uchar *)&flag_obsolete, 1); 224 |
225 if (gd->env_valid == 1) 226 gd->env_valid = 2; | 225 if (gd->env_valid == ENV_VALID) 226 gd->env_valid = ENV_REDUND; |
227 else | 227 else |
228 gd->env_valid = 1; | 228 gd->env_valid = ENV_VALID; |
229 } 230#endif 231 return rc; 232} 233 234/* 235 * Initialize Environment use 236 * 237 * We are still running from ROM, so data use is limited. 238 * Use a (moderately small) buffer on the stack 239 */ 240int env_init(void) 241{ 242 gd->env_addr = (ulong)&default_environment[0]; | 229 } 230#endif 231 return rc; 232} 233 234/* 235 * Initialize Environment use 236 * 237 * We are still running from ROM, so data use is limited. 238 * Use a (moderately small) buffer on the stack 239 */ 240int env_init(void) 241{ 242 gd->env_addr = (ulong)&default_environment[0]; |
243 gd->env_valid = 1; | 243 gd->env_valid = ENV_VALID; |
244 return 0; 245} | 244 return 0; 245} |