Revert "env_eeprom: Assign default environment during board_init_f"
PATCH v2 1/1 Revert "env_eeprom: Assign default environment during board_init_f"
The crc-check and decision on which environment to use is now moved to env_relocate_spec. This is done for both the "redundant env" and the "single env" case.
This also solves problems introduced from the commit "env_eeprom: Assign default environment during board_init_f" (ed6a5d4f880ac248530dbf64683b2257dbe54b64) due to the use of ENV_IS_EMBEDDED.
---
Changes for v2:
-instead of reverting the patch, the disabled, but needed code
was moved from env_init to env_relocate_spec
--- common/env_eeprom.c | 166 ++++++++++++++++++++++++--------------------------- 1 files changed, 77 insertions(+), 89 deletions(-)
common/env_eeprom.c +9 -81
@@ -82,75 +82,13 @@ uchar env_get_char_spec(int index)void env_relocate_spec (void ) { -char buf[CONFIG_ENV_SIZE ]; +char buf_env[CONFIG_ENV_SIZE ];unsigned int off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) - off =CONFIG_ENV_OFFSET_REDUND ; -#endif -eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , - off, (uchar *)buf,CONFIG_ENV_SIZE ); - -env_import (buf,1 ); -} - -int saveenv (void ) -{ -env_t env_new; -int rc; -unsigned int off =CONFIG_ENV_OFFSET ; -#ifdef CONFIG_ENV_OFFSET_REDUND -unsigned int off_red =CONFIG_ENV_OFFSET_REDUND ; -char flag_obsolete =OBSOLETE_FLAG ; -#endif - -BUG_ON (env_ptr !=NULL ); - - rc =env_export (&env_new); -if (rc) -return rc; - -#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==1 ) { - off =CONFIG_ENV_OFFSET_REDUND ; - off_red =CONFIG_ENV_OFFSET ; - } - - env_new.flags =ACTIVE_FLAG ; -#endif - - rc =eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , - off, (uchar *)&env_new,CONFIG_ENV_SIZE ); - -#ifdef CONFIG_ENV_OFFSET_REDUND -if (rc ==0 ) { -eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , - off_red + offsetof(env_t , flags), - (uchar *)&flag_obsolete,1 ); - -if (gd->env_valid ==1 ) - gd->env_valid =2 ; -else - gd->env_valid =1 ; - } -#endif -return rc; -} - -/* -* Initialize Environment use -* -* We are still running from ROM, so data use is limited. -* Use a (moderately small) buffer on the stack -*/ -#ifdef CONFIG_ENV_OFFSET_REDUND -int env_init (void ) -{ -#ifdef ENV_IS_EMBEDDED ulong len, crc[2 ], crc_tmp; -unsigned int off, off_env[2 ]; -uchar buf[64 ], flags[2 ]; +unsigned int off_env[2 ]; +uchar rdbuf[64 ], flags[2 ];int i, crc_ok[2 ] = {0 ,0 };eeprom_init ();/* prepare for EEPROM read/write */
@@ -172,12 +110,12 @@ int env_init(void) len =ENV_SIZE ; off = off_env[i] + offsetof(env_t , data);while (len >0 ) { -int n = (len >sizeof (buf)) ?sizeof (buf) : len; +int n = (len >sizeof (rdbuf)) ?sizeof (rdbuf) : len;eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , off, - buf, n); + rdbuf, n); - crc_tmp =crc32 (crc_tmp, buf, n); + crc_tmp =crc32 (crc_tmp, rdbuf, n); len -= n; off += n; }
@@ -189,8 +127,6 @@ int env_init(void)if (!crc_ok[0 ] && !crc_ok[1 ]) { gd->env_addr =0 ; gd->env_valid =0 ; - -return 0 ; }else if (crc_ok[0 ] && !crc_ok[1 ]) { gd->env_valid =1 ; }else if (!crc_ok[0 ] && crc_ok[1 ]) {
@@ -213,19 +149,10 @@ int env_init(void) gd->env_addr = off_env[1 ] + offsetof(env_t , data); else if (gd->env_valid == 1) gd->env_addr = off_env[0] + offsetof(env_t, data); -#else - gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; -#endif -return 0 ; -} -#else -int env_init (void ) -{ -#ifdef ENV_IS_EMBEDDED + +#else /* CONFIG_ENV_OFFSET_REDUND */ ulong crc, len, new; -unsigned off; -uchar buf[64 ]; +uchar rdbuf[64 ];eeprom_init ();/* prepare for EEPROM read/write */ @@ -237,13 +164,12 @@ int env_init(void) new =0 ;
len = ENV_SIZE;
off = offsetof(env_t, data);
-
while (len > 0) {
- int n = (len > sizeof(buf)) ? sizeof(buf) : len;
+ int n = (len > sizeof(rdbuf)) ? sizeof(rdbuf) : len;
eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
- CONFIG_ENV_OFFSET + off, buf, n);
- new = crc32(new, buf, n);
+ CONFIG_ENV_OFFSET + off, rdbuf, n);
+ new = crc32(new, rdbuf, n);
len -= n;
off += n;
}
@@ -255,10 +181,72 @@ int env_init(void)
gd->env_addr = 0;
gd->env_valid = 0;
}
-#else
+#endif /* CONFIG_ENV_OFFSET_REDUND */
+
+ off = CONFIG_ENV_OFFSET;
+#ifdef CONFIG_ENV_OFFSET_REDUND
+ if (gd->env_valid == 2)
+ off = CONFIG_ENV_OFFSET_REDUND;
+#endif
+
+ eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
+ off, (uchar *)buf_env, CONFIG_ENV_SIZE);
+
+ env_import(buf_env, 1);
+}
+
+int saveenv(void)
+{
+ env_t env_new;
+ int rc;
+ unsigned int off = CONFIG_ENV_OFFSET;
+#ifdef CONFIG_ENV_OFFSET_REDUND
+ unsigned int off_red = CONFIG_ENV_OFFSET_REDUND;
+ char flag_obsolete = OBSOLETE_FLAG;
+#endif
+
+ BUG_ON(env_ptr != NULL);
+
+ rc = env_export(&env_new);
+ if (rc)
+ return rc;
+
+#ifdef CONFIG_ENV_OFFSET_REDUND
+ if (gd->env_valid == 1) {
+ off = CONFIG_ENV_OFFSET_REDUND;
+ off_red = CONFIG_ENV_OFFSET;
+ }
+
+ env_new.flags = ACTIVE_FLAG;
+#endif
+
+ rc = eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR,
+ off, (uchar *)&env_new, CONFIG_ENV_SIZE);
+
+#ifdef CONFIG_ENV_OFFSET_REDUND
+ if (rc == 0) {
+ eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR,
+ off_red + offsetof(env_t, flags),
+ (uchar *)&flag_obsolete, 1);
+
+ if (gd->env_valid == 1)
+ gd->env_valid = 2;
+ else
+ gd->env_valid = 1;
+ }
+#endif
+ return rc;
+}
+
+/*
+ * Initialize Environment use
+ *
+ * We are still running from ROM, so data use is limited.
+ * Use a (moderately small) buffer on the stack
+ */
+int env_init(void)
+{
gd->env_addr = (ulong)&default_environment[0]; gd->env_valid = 1;
-#endif
return 0;
}
-#endif
Signature · 1 line
1.7.0.5
PATCH v2 1/1 Revert "env_eeprom: Assign default environment during board_init_f"
Quoted 8 lines · Ludger Dreier
The crc-check and decision on which environment to use is now moved to
env_relocate_spec. This is done for both the "redundant env" and the "single env" case.
This also solves problems introduced from the commit "env_eeprom: Assign default environment duringboard_init_f" (ed6a5d4f880ac248530dbf64683b2257dbe54b64) due to the use ofENV_IS_EMBEDDED.
Quoted 5 lines
Signed-off-by Ludger Dreier <[email protected]>---
Changes for v2:
-instead of reverting the patch, the disabled, but needed code
was moved fromenv_inittoenv_relocate_spec
Sorry, but this patch just doesn't apply right. I think the formatting got broken somewhere, can you send it with 'git send-email' directly? Thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151011/f153aebc/attachment.sig>
PATCH v3 1/1 Revert "env_eeprom: Assign default environment during board_init_f"
In reply to Ludger DreierThe crc-check and decision on which environment to use is now moved to env_relocate_spec. This is done for both the "redundant env" and the "single env" case.
This also solves problems introduced from the commit "env_eeprom: Assign default environment during board_init_f" (ed6a5d4f880ac248530dbf64683b2257dbe54b64) due to the use of ENV_IS_EMBEDDED.
---
Changes for v2:
-instead of reverting the patch, the disabled, but needed code
was moved from env_init to env_relocate_spec
---
Changes for v3:
-used git send-email instead of git imap-send
--- common/env_eeprom.c | 166 ++++++++++++++++++++++++--------------------------- 1 files changed, 77 insertions(+), 89 deletions(-)
common/env_eeprom.c +77 -89
@@ -82,75 +82,13 @@ uchar env_get_char_spec(int index)void env_relocate_spec (void ) { -char buf[CONFIG_ENV_SIZE ]; +char buf_env[CONFIG_ENV_SIZE ];unsigned int off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) - off =CONFIG_ENV_OFFSET_REDUND ; -#endif -eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , - off, (uchar *)buf,CONFIG_ENV_SIZE ); - -env_import (buf,1 ); -} - -int saveenv (void ) -{ -env_t env_new; -int rc; -unsigned int off =CONFIG_ENV_OFFSET ; -#ifdef CONFIG_ENV_OFFSET_REDUND -unsigned int off_red =CONFIG_ENV_OFFSET_REDUND ; -char flag_obsolete =OBSOLETE_FLAG ; -#endif - -BUG_ON (env_ptr !=NULL ); - - rc =env_export (&env_new); -if (rc) -return rc; - -#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==1 ) { - off =CONFIG_ENV_OFFSET_REDUND ; - off_red =CONFIG_ENV_OFFSET ; - } - - env_new.flags =ACTIVE_FLAG ; -#endif - - rc =eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , - off, (uchar *)&env_new,CONFIG_ENV_SIZE ); - -#ifdef CONFIG_ENV_OFFSET_REDUND -if (rc ==0 ) { -eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , - off_red + offsetof(env_t , flags), - (uchar *)&flag_obsolete,1 ); - -if (gd->env_valid ==1 ) - gd->env_valid =2 ; -else - gd->env_valid =1 ; - } -#endif -return rc; -} - -/* -* Initialize Environment use -* -* We are still running from ROM, so data use is limited. -* Use a (moderately small) buffer on the stack -*/ -#ifdef CONFIG_ENV_OFFSET_REDUND -int env_init (void ) -{ -#ifdef ENV_IS_EMBEDDED ulong len, crc[2 ], crc_tmp; -unsigned int off, off_env[2 ]; -uchar buf[64 ], flags[2 ]; +unsigned int off_env[2 ]; +uchar rdbuf[64 ], flags[2 ];int i, crc_ok[2 ] = {0 ,0 };eeprom_init ();/* prepare for EEPROM read/write */
@@ -172,12 +110,12 @@ int env_init(void) len =ENV_SIZE ; off = off_env[i] + offsetof(env_t , data);while (len >0 ) { -int n = (len >sizeof (buf)) ?sizeof (buf) : len; +int n = (len >sizeof (rdbuf)) ?sizeof (rdbuf) : len;eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , off, - buf, n); + rdbuf, n); - crc_tmp =crc32 (crc_tmp, buf, n); + crc_tmp =crc32 (crc_tmp, rdbuf, n); len -= n; off += n; }
@@ -189,8 +127,6 @@ int env_init(void)if (!crc_ok[0 ] && !crc_ok[1 ]) { gd->env_addr =0 ; gd->env_valid =0 ; - -return 0 ; }else if (crc_ok[0 ] && !crc_ok[1 ]) { gd->env_valid =1 ; }else if (!crc_ok[0 ] && crc_ok[1 ]) {
@@ -213,19 +149,10 @@ int env_init(void) gd->env_addr = off_env[1 ] + offsetof(env_t , data); else if (gd->env_valid == 1) gd->env_addr = off_env[0] + offsetof(env_t, data); -#else - gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; -#endif -return 0 ; -} -#else -int env_init (void ) -{ -#ifdef ENV_IS_EMBEDDED + +#else /* CONFIG_ENV_OFFSET_REDUND */ ulong crc, len, new; -unsigned off; -uchar buf[64 ]; +uchar rdbuf[64 ];eeprom_init ();/* prepare for EEPROM read/write */
@@ -237,13 +164,12 @@ int env_init(void) new =0 ; len =ENV_SIZE ; off = offsetof(env_t , data); -while (len >0 ) { -int n = (len >sizeof (buf)) ?sizeof (buf) : len; +int n = (len >sizeof (rdbuf)) ?sizeof (rdbuf) : len;eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , -CONFIG_ENV_OFFSET + off, buf, n); - new =crc32 (new, buf, n); +CONFIG_ENV_OFFSET + off, rdbuf, n); + new =crc32 (new, rdbuf, n); len -= n; off += n; }
@@ -255,10 +181,72 @@ int env_init(void) gd->env_addr =0 ; gd->env_valid =0 ; } -#else +#endif /* CONFIG_ENV_OFFSET_REDUND */ + + off =CONFIG_ENV_OFFSET ; +#ifdef CONFIG_ENV_OFFSET_REDUND +if (gd->env_valid ==2 ) + off =CONFIG_ENV_OFFSET_REDUND ; +#endif + +eeprom_bus_read (CONFIG_SYS_DEF_EEPROM_ADDR , + off, (uchar *)buf_env,CONFIG_ENV_SIZE ); + +env_import (buf_env,1 ); +} + +int saveenv (void ) +{ +env_t env_new; +int rc; +unsigned int off =CONFIG_ENV_OFFSET ; +#ifdef CONFIG_ENV_OFFSET_REDUND +unsigned int off_red =CONFIG_ENV_OFFSET_REDUND ; +char flag_obsolete =OBSOLETE_FLAG ; +#endif + +BUG_ON (env_ptr !=NULL ); + + rc =env_export (&env_new); +if (rc) +return rc; + +#ifdef CONFIG_ENV_OFFSET_REDUND +if (gd->env_valid ==1 ) { + off =CONFIG_ENV_OFFSET_REDUND ; + off_red =CONFIG_ENV_OFFSET ; + } + + env_new.flags =ACTIVE_FLAG ; +#endif + + rc =eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , + off, (uchar *)&env_new,CONFIG_ENV_SIZE ); + +#ifdef CONFIG_ENV_OFFSET_REDUND +if (rc ==0 ) { +eeprom_bus_write (CONFIG_SYS_DEF_EEPROM_ADDR , + off_red + offsetof(env_t , flags), + (uchar *)&flag_obsolete,1 ); + +if (gd->env_valid ==1 ) + gd->env_valid =2 ; +else + gd->env_valid =1 ; + } +#endif +return rc; +} + +/* +* Initialize Environment use +* +* We are still running from ROM, so data use is limited. +* Use a (moderately small) buffer on the stack +*/ +int env_init (void ) +{ gd->env_addr = (ulong)&default_environment[0 ]; gd->env_valid =1 ; -#endif return 0 ; } -#endif
Signature · 1 line
1.7.0.5
PATCH v3 1/1 Revert "env_eeprom: Assign default environment during board_init_f"
Quoted 9 lines · Ludger Dreier
The crc-check and decision on which environment to use is now moved to
env_relocate_spec. This is done for both the "redundant env" and the "single env" case.
This also solves problems introduced from the commit "env_eeprom: Assign default environment duringboard_init_f" (ed6a5d4f880ac248530dbf64683b2257dbe54b64) due to the use ofENV_IS_EMBEDDED.Signed-off-by Ludger Dreier <[email protected]>
Reworded the commit message and applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151012/877b736e/attachment.sig>