Global Data: Flagify have_console and env_valid
Subsystems (10)
PATCH 1/1 Global Data: Flagify have_console and env_valid
--- arch/arm/include/asm/global_data.h | 5 ++- arch/avr32/include/asm/global_data.h | 5 ++- arch/blackfin/include/asm/global_data.h | 5 ++- arch/blackfin/lib/board.c | 2 - arch/m68k/include/asm/global_data.h | 5 ++- arch/microblaze/include/asm/global_data.h | 5 ++- arch/mips/include/asm/global_data.h | 5 ++- arch/nios2/include/asm/global_data.h | 5 ++- arch/powerpc/cpu/mpc5xxx/i2c.c | 20 ++++++------ arch/powerpc/cpu/mpc8xx/i2c.c | 12 ++++---- arch/powerpc/include/asm/global_data.h | 5 ++- arch/sh/include/asm/global_data.h | 5 ++- arch/sparc/include/asm/global_data.h | 5 ++- arch/x86/include/asm/global_data.h | 36 +++++++++++----------- board/edb93xx/edb93xx.c | 2 +- board/matrix_vision/common/mv_common.c | 2 +- board/zeus/zeus.c | 2 +- common/console.c | 4 +- common/env_common.c | 6 ++-- common/env_dataflash.c | 6 ++-- common/env_eeprom.c | 36 +++++++++++----------- common/env_flash.c | 26 ++++++++-------- common/env_mgdisk.c | 2 +- common/env_mmc.c | 2 +- common/env_nand.c | 45 +++++++++++++++------------- common/env_nowhere.c | 2 +- common/env_nvram.c | 4 +- common/env_onenand.c | 4 +- common/env_sf.c | 31 +++++++++++-------- drivers/i2c/ppc4xx_i2c.c | 2 +- drivers/i2c/soft_i2c.c | 6 ++-- include/environment.h | 18 +++++++++++ 32 files changed, 177 insertions(+), 143 deletions(-)
arch/arm/include/asm/global_data.h +3 -2
@@ -37,9 +37,7 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ #ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;
@@ -88,6 +86,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
arch/avr32/include/asm/global_data.h +3 -2
@@ -37,10 +37,8 @@ typedef struct global_data {unsigned long flags;unsigned long baudrate;unsigned long stack_end;/* highest stack address */ -unsigned long have_console;/* serial_init() was called */ unsigned long reloc_off;/* Relocation Offset */ unsigned long env_addr;/* Address of env struct */ -unsigned long env_valid;/* Checksum of env valid? */ unsigned long cpu_hz;/* cpu core clock frequency */ #if defined(CONFIG_LCD )void *fb_base;/* framebuffer address */
@@ -60,6 +58,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm("r5")
arch/blackfin/include/asm/global_data.h +3 -2
@@ -44,10 +44,8 @@ typedef struct global_data {unsigned long flags;unsigned long board_type;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ #if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER )unsigned long post_log_word;/* Record POST activities */ unsigned long post_init_f_time;/* When post_init_f started */
@@ -68,6 +66,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P3")
arch/blackfin/lib/board.c +0 -2
@@ -83,10 +83,8 @@ static void display_global_data(void)printf (" |-flags: %lx\n" , gd->flags);printf (" |-board_type: %lx\n" , gd->board_type);printf (" |-baudrate: %lu\n" , gd->baudrate); -printf (" |-have_console: %lx\n" , gd->have_console);printf (" |-ram_size: %lx\n" , gd->ram_size);printf (" |-env_addr: %lx\n" , gd->env_addr); -printf (" |-env_valid: %lx\n" , gd->env_valid);printf (" |-jt(%p): %p\n" , gd->jt, *(gd->jt));printf (" \\-bd: %p\n" , gd->bd);printf (" |-bi_baudrate: %x\n" , bd->bi_baudrate);
arch/m68k/include/asm/global_data.h +3 -2
@@ -55,8 +55,6 @@ typedef struct global_data {unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )unsigned long fb_base;/* Base addr of framebuffer memory */ #endif
@@ -78,6 +76,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #if 0 extern gd_t *global_data;
arch/microblaze/include/asm/global_data.h +3 -2
@@ -38,9 +38,7 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */
@@ -57,6 +55,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
arch/mips/include/asm/global_data.h +3 -2
@@ -40,11 +40,9 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long reloc_off;/* Relocation Offset */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ } gd_t;
@@ -60,6 +58,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("k0")
arch/nios2/include/asm/global_data.h +3 -2
@@ -28,10 +28,8 @@ typedef struct global_data {unsigned long flags;unsigned long baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ #if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER )unsigned long post_log_word;/* Record POST activities */ unsigned long post_init_f_time;/* When post_init_f started */
@@ -49,6 +47,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp")
arch/powerpc/cpu/mpc5xxx/i2c.c +10 -10
@@ -332,7 +332,7 @@ static int mpc_get_fdr(int speed)if (gd->flags &GD_FLG_RELOC ) { fdr = divider; }else { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("%ld kHz, " , best_speed /1000 );return divider; }
@@ -374,33 +374,33 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3 ] = addr &0xFF ;if (wait_for_bb ()) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: bus is busy\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_STA ,I2C_STA );if (do_address (chip,0 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: failed to address chip\n" ); goto Done; }if (send_bytes (chip, &xaddr[4 -alen], alen)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: send_bytes failed\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_RSTA ,I2C_RSTA );if (do_address (chip,1 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: failed to address chip\n" ); goto Done; }if (receive_bytes (chip, (char *)buf, len)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: receive_bytes failed\n" ); goto Done; }
@@ -423,26 +423,26 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3 ] = addr &0xFF ;if (wait_for_bb ()) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: bus is busy\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_STA ,I2C_STA );if (do_address (chip,0 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: failed to address chip\n" ); goto Done; }if (send_bytes (chip, &xaddr[4 -alen], alen)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: send_bytes failed\n" ); goto Done; }if (send_bytes (chip, (char *)buf, len)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: send_bytes failed\n" ); goto Done; }
arch/powerpc/cpu/mpc8xx/i2c.c +6 -6
@@ -633,21 +633,21 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len) rc =i2c_send (&state, chip,0 ,I2CF_START_COND , alen, &xaddr[4 -alen]);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_receive (&state, chip,0 ,I2CF_STOP_COND , len, buffer);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_receive failed (%d)\n" , rc);return 1 ; } rc =i2c_doio (&state);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_doio failed (%d)\n" , rc);return 1 ; }
@@ -683,21 +683,21 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len) rc =i2c_send (&state, chip,0 ,I2CF_START_COND , alen, &xaddr[4 -alen]);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: first i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_send (&state,0 ,0 ,I2CF_STOP_COND , len, buffer);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: second i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_doio (&state);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: i2c_doio failed (%d)\n" , rc);return 1 ; }
arch/powerpc/include/asm/global_data.h +3 -2
@@ -136,8 +136,6 @@ typedef struct global_data {unsigned long arbiter_event_address;#endif unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_SYS_ALLOC_DPRAM ) || defined(CONFIG_CPM2 )unsigned int dp_alloc_base;unsigned int dp_alloc_top;
@@ -193,6 +191,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #if 1 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2")
arch/sh/include/asm/global_data.h +3 -2
@@ -33,10 +33,8 @@ typedef struct global_dataunsigned long flags;unsigned long baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ void **jt;/* Standalone app jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ } gd_t;
@@ -49,6 +47,9 @@ typedef struct global_data#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("r13")
arch/sparc/include/asm/global_data.h +3 -2
@@ -50,8 +50,6 @@ typedef struct global_data {unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )unsigned long fb_base;/* Base address of framebuffer memory */
@@ -85,6 +83,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("%g7")
arch/x86/include/asm/global_data.h +18 -18
@@ -39,11 +39,9 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long reloc_off;/* Relocation Offset */ unsigned long load_off;/* Load Offset */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long cpu_clk;/* CPU clock in Hz! */ unsigned long bus_clk;unsigned long relocaddr;/* Start address of U-Boot in RAM */
@@ -59,23 +57,21 @@ extern gd_t *gd;#endif /* Word Offsets into Global Data - MUST match struct gd_t */ -#define GD_BD 0 -#define GD_FLAGS 1 -#define GD_BAUDRATE 2 -#define GD_HAVE_CONSOLE 3 -#define GD_RELOC_OFF 4 -#define GD_LOAD_OFF 5 -#define GD_ENV_ADDR 6 -#define GD_ENV_VALID 7 -#define GD_CPU_CLK 8 -#define GD_BUS_CLK 9 -#define GD_RELOC_ADDR 10 -#define GD_START_ADDR_SP 11 -#define GD_RAM_SIZE 12 -#define GD_RESET_STATUS 13 -#define GD_JT 14 +#define GD_BD 0 +#define GD_FLAGS 1 +#define GD_BAUDRATE 2 +#define GD_RELOC_OFF 3 +#define GD_LOAD_OFF 4 +#define GD_ENV_ADDR 5 +#define GD_CPU_CLK 6 +#define GD_BUS_CLK 7 +#define GD_RELOC_ADDR 8 +#define GD_START_ADDR_SP 9 +#define GD_RAM_SIZE 10 +#define GD_RESET_STATUS 11 +#define GD_JT 12 -#define GD_SIZE 15 +#define GD_SIZE 13/* * Global Data Flags
@@ -90,6 +86,10 @@ extern gd_t *gd;#define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ #define GD_FLG_COLD_BOOT 0x00100/* Cold Boot */ #define GD_FLG_WARM_BOOT 0x00200/* Warm Boot */ +#define GD_FLG_HAVE_CONSOLE 0x00400/* Warm Boot */ +#define GD_FLG_PRI_ENV_VALID 0x00800/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x01000/* Redundant environment valid */ +#if 0 #define DECLARE_GLOBAL_DATA_PTR
board/edb93xx/edb93xx.c +1 -1
@@ -77,7 +77,7 @@ int board_init(void) gd->bd->bi_boot_params =LINUX_BOOT_PARAM_ADDR ;/* We have a console */ - gd->have_console =1 ; + gd->flags &=GD_FLG_HAVE_CONSOLE ;return 0 ; }
board/matrix_vision/common/mv_common.c +1 -1
@@ -56,7 +56,7 @@ void mv_reset_environment(void) } } - gd->env_valid =0 ; +SET_NO_ENV_VALID ();env_relocate ();for (i =0 ; i <MV_KEEP_ENTRIES ; i++) {
board/zeus/zeus.c +1 -1
@@ -224,7 +224,7 @@ static int restore_default(void)set_default_env ("" ); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();/* * Read board specific values from I2C EEPROM
common/console.c +2 -2
@@ -404,7 +404,7 @@ static int ctrlc_disabled = 0; /* see disable_ctrl() */static int ctrlc_was_pressed =0 ;int ctrlc (void ) { -if (!ctrlc_disabled && gd->have_console) { +if (!ctrlc_disabled && (gd->flags &GD_FLG_HAVE_CONSOLE )) {if (tstc ()) {switch (getc ()) {case 0x03 :/* ^C - Control C */
@@ -522,7 +522,7 @@ int console_assign(int file, const char *devname)/* Called before relocation - use serial functions */ int console_init_f (void ) { - gd->have_console =1 ; + gd->flags &=GD_FLG_HAVE_CONSOLE ;#ifdef CONFIG_SILENT_CONSOLE if (getenv ("silent" ) !=NULL )
common/env_common.c +3 -3
@@ -136,7 +136,7 @@ static uchar env_get_char_init (int index)uchar c;/* if crc was bad, use the default environment */ -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID )) c =env_get_char_spec (index);else c = default_environment[index];
@@ -164,7 +164,7 @@ uchar env_get_char (int index)const uchar *env_get_addr (int index) { -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))return (uchar *)(gd->env_addr + index);else return &default_environment[index];
@@ -234,7 +234,7 @@ void env_relocate (void)env_reloc ();#endif -if (gd->env_valid ==0 ) { +if (!(gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))) {#if defined(CONFIG_ENV_IS_NOWHERE )/* Environment not changable */ set_default_env (NULL );#else
common/env_dataflash.c +3 -3
@@ -92,7 +92,7 @@ int env_init(void)unsigned off;uchar buf[64 ]; -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))return 0 ;AT91F_DataflashInit ();/* prepare for DATAFLASH read/write */
@@ -116,10 +116,10 @@ int env_init(void)if (crc == new) { gd->env_addr = offsetof(env_t ,data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }return 0 ;
common/env_eeprom.c +18 -18
@@ -101,7 +101,7 @@ uchar env_get_char_spec (int index) off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) off =CONFIG_ENV_OFFSET_REDUND ;#endif eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
@@ -117,7 +117,7 @@ void env_relocate_spec (void)unsigned int off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) off =CONFIG_ENV_OFFSET_REDUND ;#endif eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
@@ -151,7 +151,7 @@ int saveenv(void) env_new.crc =crc32 (0 , env_new.data,ENV_SIZE );#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==1 ) { +if (gd->flags &GD_FLG_PRI_ENV_VALID ) { off =CONFIG_ENV_OFFSET_REDUND ; off_red =CONFIG_ENV_OFFSET ; }
@@ -170,10 +170,10 @@ int saveenv(void) off_red + offsetof(env_t ,flags), (uchar *)&flag_obsolete, 1); -if (gd->env_valid ==1 ) - gd->env_valid =2 ; +if (gd->flags &GD_FLG_PRI_ENV_VALID ) +SET_REDUNDANT_ENV_VALID ();else - gd->env_valid = 1; + SET_PRIMARY_ENV_VALID(); }#endif
@@ -233,31 +233,31 @@ int env_init(void)if (!crc_ok[0 ] && !crc_ok[1 ]) { gd->env_addr =0 ; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return 0 ; }else if (crc_ok[0 ] && !crc_ok[1 ]) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (!crc_ok[0 ] && crc_ok[1 ]) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else {/* both ok - check serial */ if (flags[0 ] ==ACTIVE_FLAG && flags[1 ] ==OBSOLETE_FLAG ) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();else if (flags[0 ] ==OBSOLETE_FLAG && flags[1 ] ==ACTIVE_FLAG ) - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();else if (flags[0 ] ==0xFF && flags[1 ] ==0 ) - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();else if (flags[1 ] ==0xFF && flags[0 ] ==0 ) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();else /* flags are equal - almost impossible */ - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); } -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) gd->env_addr = off_env[1 ] + offsetof(env_t ,data); -else if (gd->env_valid ==1 ) +else if (gd->flags &GD_FLG_PRI_ENV_VALID ) gd->env_addr = off_env[0 ] + offsetof(env_t ,data);return (0 );
@@ -292,10 +292,10 @@ int env_init(void)if (crc == new) { gd->env_addr = offsetof(env_t ,data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr =0 ; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }return (0 );
common/env_flash.c +13 -13
@@ -100,28 +100,28 @@ int env_init(void)if (crc1_ok && ! crc2_ok) { gd->env_addr = addr1; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (! crc1_ok && crc2_ok) { gd->env_addr = addr2; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (! crc1_ok && ! crc2_ok) { gd->env_addr = addr_default; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }else if (flag1 ==ACTIVE_FLAG && flag2 ==OBSOLETE_FLAG ) { gd->env_addr = addr1; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (flag1 ==OBSOLETE_FLAG && flag2 ==ACTIVE_FLAG ) { gd->env_addr = addr2; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (flag1 == flag2) { gd->env_addr = addr1; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (flag1 ==0xFF ) { gd->env_addr = addr1; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (flag2 ==0xFF ) { gd->env_addr = addr2; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }return 0 ;
@@ -244,12 +244,12 @@ int env_init(void) {if (crc32 (0 , env_ptr->data,ENV_SIZE ) == env_ptr->crc) { gd->env_addr = (ulong)&(env_ptr->data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return (0 ); } gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return 0 ; }
@@ -351,7 +351,7 @@ void env_relocate_spec(void) flash_addr_new->crc) {char flag =OBSOLETE_FLAG ; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();flash_sect_protect (0 , (ulong )flash_addr_new, end_addr_new); flash_write(&flag, (ulong)&(flash_addr_new->flags),
@@ -363,7 +363,7 @@ void env_relocate_spec(void) (flash_addr->flags & ACTIVE_FLAG) == ACTIVE_FLAG) {char flag =ACTIVE_FLAG ; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();flash_sect_protect (0 , (ulong )flash_addr, end_addr); flash_write(&flag, (ulong)&(flash_addr->flags),
@@ -371,7 +371,7 @@ void env_relocate_spec(void) flash_sect_protect(1, (ulong)flash_addr, end_addr); } -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID )puts ("*** Warning - some problems detected " "reading environment; recovered successfully\n\n" );#endif /* CONFIG_ENV_ADDR_REDUND */
common/env_mgdisk.c +1 -1
@@ -78,7 +78,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_mmc.c +1 -1
@@ -73,7 +73,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_nand.c +24 -21
106 lines not on this page · raw message
common/env_nowhere.c +1 -1
@@ -52,7 +52,7 @@ uchar env_get_char_spec(int index)int env_init (void ) { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return (0 ); }
common/env_nvram.c +2 -2
@@ -131,10 +131,10 @@ int env_init(void)if (crc32 (0 , env_ptr->data,ENV_SIZE ) == env_ptr->crc) { gd->env_addr = (ulong)&(env_ptr->data);#endif - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); } return (0); }
common/env_onenand.c +2 -2
@@ -90,7 +90,7 @@ void env_relocate_spec(void) rc =env_import (buf,1 );if (rc) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }int saveenv (void )
@@ -145,7 +145,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong) & default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_sf.c +18 -13
@@ -99,7 +99,7 @@ int saveenv(void) env_new.crc =crc32 (0 , env_new.data,ENV_SIZE ); env_new.flags =ACTIVE_FLAG ; -if (gd->env_valid ==1 ) { +if (gd->flags &GD_FLG_PRI_ENV_VALID ) { env_new_offset =CONFIG_ENV_OFFSET_REDUND ; env_offset =CONFIG_ENV_OFFSET ; }else {
@@ -156,9 +156,14 @@ int saveenv(void)puts ("done\n" ); - gd->env_valid = (gd->env_valid ==2 ?1 :2 ); +if (gd->flags &GD_FLG_RED_ENV_VALID ) { +SET_PRIMARY_ENV_VALID (); +printf ("Valid environment: Primary\n" ); + }else { +SET_REDUNDANT_ENV_VALID (); +printf ("Valid environment: Redundant\n" ); + } -printf ("Valid environment: %d\n" , (int )gd->env_valid); done:if (saved_buffer)
@@ -210,28 +215,28 @@ void env_relocate_spec(void)set_default_env ("!bad CRC" ); goto err_read; }else if (crc1_ok && !crc2_ok) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (!crc1_ok && crc2_ok) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags ==ACTIVE_FLAG && tmp_env2->flags ==OBSOLETE_FLAG ) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (tmp_env1->flags ==OBSOLETE_FLAG && tmp_env2->flags ==ACTIVE_FLAG ) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags == tmp_env2->flags) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags ==0xFF ) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else {/* * this differs from code in env_flash.c, but I think a sane * default path is desirable. */ - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); } -if (gd->env_valid ==1 ) +if (gd->flags &GD_FLG_PRI_ENV_VALID ) ep = tmp_env1;else ep = tmp_env2;
@@ -350,7 +355,7 @@ void env_relocate_spec(void) ret =env_import (buf,1 );if (ret) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); out:spi_flash_free (env_flash); env_flash =NULL ;
@@ -361,7 +366,7 @@ int env_init(void) {/* SPI flash isn't usable before relocation */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
drivers/i2c/ppc4xx_i2c.c +1 -1
@@ -396,7 +396,7 @@ static int ppc4xx_i2c_transfer(uchar chip, uint addr, int alen, uchar *buffer,#endif if ((ret =i2c_transfer (read, chip <<1 , &xaddr[4 - alen], alen, buffer, len)) !=0 ) { -if (gd->have_console) { +if (gd->flags &GD_FLG_HAVE_CONSOLE ) {printf ("I2C %s: failed %d\n" , read ?"read" :"write" , ret); }
drivers/i2c/soft_i2c.c +3 -3
@@ -118,9 +118,9 @@ DECLARE_GLOBAL_DATA_PTR;#ifdef DEBUG_I2C -#define PRINTD(fmt,args...) do { \ - if (gd->have_console) \ - printf (fmt ,##args); \ +#define PRINTD(fmt,args...) do { \ + if (gd->flags & GD_FLG_HAVE_CONSOLE) \ + printf (fmt ,##args); \ } while (0)#else #define PRINTD(fmt,args...)
include/environment.h +18 -0
@@ -152,6 +152,24 @@ typedef struct environment_s {unsigned char data[ENV_SIZE ];/* Environment data */ } env_t; +#define SET_NO_ENV_VALID () \ + do { \ + gd->flags &= ~(GD_FLG_PRI_ENV_VALID | \ + GD_FLG_RED_ENV_VALID); \ + } while (0) + +#define SET_PRIMARY_ENV_VALID () \ + do { \ + SET_NO_ENV_VALID(); \ + gd->flags |= GD_FLG_PRI_ENV_VALID; \ + } while (0) + +#define SET_REDUNDANT_ENV_VALID () \ + do { \ + SET_NO_ENV_VALID(); \ + gd->flags |= GD_FLG_RED_ENV_VALID; \ + } while (0) +#ifndef DO_DEPS_ONLY #include <search.h>
--
1.7.5.2.317.g391b14
PATCH v2 1/1 Global Data: Flagify have_console and env_valid
---
Changes since V1:
- In common/console.c, gd->flags &= GD_FLG_HAVE_CONSOLE change to |=
arch/arm/include/asm/global_data.h | 5 ++- arch/avr32/include/asm/global_data.h | 5 ++- arch/blackfin/include/asm/global_data.h | 5 ++- arch/blackfin/lib/board.c | 2 - arch/m68k/include/asm/global_data.h | 5 ++- arch/microblaze/include/asm/global_data.h | 5 ++- arch/mips/include/asm/global_data.h | 5 ++- arch/nios2/include/asm/global_data.h | 5 ++- arch/powerpc/cpu/mpc5xxx/i2c.c | 20 ++++++------ arch/powerpc/cpu/mpc8xx/i2c.c | 12 ++++---- arch/powerpc/include/asm/global_data.h | 5 ++- arch/sh/include/asm/global_data.h | 5 ++- arch/sparc/include/asm/global_data.h | 5 ++- arch/x86/include/asm/global_data.h | 36 +++++++++++----------- board/edb93xx/edb93xx.c | 2 +- board/matrix_vision/common/mv_common.c | 2 +- board/zeus/zeus.c | 2 +- common/console.c | 4 +- common/env_common.c | 6 ++-- common/env_dataflash.c | 6 ++-- common/env_eeprom.c | 36 +++++++++++----------- common/env_flash.c | 26 ++++++++-------- common/env_mgdisk.c | 2 +- common/env_mmc.c | 2 +- common/env_nand.c | 45 +++++++++++++++------------- common/env_nowhere.c | 2 +- common/env_nvram.c | 4 +- common/env_onenand.c | 4 +- common/env_sf.c | 31 +++++++++++-------- drivers/i2c/ppc4xx_i2c.c | 2 +- drivers/i2c/soft_i2c.c | 6 ++-- include/environment.h | 18 +++++++++++ 32 files changed, 177 insertions(+), 143 deletions(-)
arch/arm/include/asm/global_data.h +3 -2
@@ -37,9 +37,7 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ #ifdef CONFIG_FSL_ESDHC unsigned long sdhc_clk;
@@ -88,6 +86,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
arch/avr32/include/asm/global_data.h +3 -2
@@ -37,10 +37,8 @@ typedef struct global_data {unsigned long flags;unsigned long baudrate;unsigned long stack_end;/* highest stack address */ -unsigned long have_console;/* serial_init() was called */ unsigned long reloc_off;/* Relocation Offset */ unsigned long env_addr;/* Address of env struct */ -unsigned long env_valid;/* Checksum of env valid? */ unsigned long cpu_hz;/* cpu core clock frequency */ #if defined(CONFIG_LCD )void *fb_base;/* framebuffer address */
@@ -60,6 +58,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm("r5")
arch/blackfin/include/asm/global_data.h +3 -2
@@ -44,10 +44,8 @@ typedef struct global_data {unsigned long flags;unsigned long board_type;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ #if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER )unsigned long post_log_word;/* Record POST activities */ unsigned long post_init_f_time;/* When post_init_f started */
@@ -68,6 +66,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P3")
arch/blackfin/lib/board.c +0 -2
@@ -83,10 +83,8 @@ static void display_global_data(void)printf (" |-flags: %lx\n" , gd->flags);printf (" |-board_type: %lx\n" , gd->board_type);printf (" |-baudrate: %lu\n" , gd->baudrate); -printf (" |-have_console: %lx\n" , gd->have_console);printf (" |-ram_size: %lx\n" , gd->ram_size);printf (" |-env_addr: %lx\n" , gd->env_addr); -printf (" |-env_valid: %lx\n" , gd->env_valid);printf (" |-jt(%p): %p\n" , gd->jt, *(gd->jt));printf (" \\-bd: %p\n" , gd->bd);printf (" |-bi_baudrate: %x\n" , bd->bi_baudrate);
arch/m68k/include/asm/global_data.h +3 -2
@@ -55,8 +55,6 @@ typedef struct global_data {unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )unsigned long fb_base;/* Base addr of framebuffer memory */ #endif
@@ -78,6 +76,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #if 0 extern gd_t *global_data;
arch/microblaze/include/asm/global_data.h +3 -2
@@ -38,9 +38,7 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long fb_base;/* base address of frame buffer */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */
@@ -57,6 +55,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
arch/mips/include/asm/global_data.h +3 -2
@@ -40,11 +40,9 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long reloc_off;/* Relocation Offset */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ void **jt;/* jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ } gd_t;
@@ -60,6 +58,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("k0")
arch/nios2/include/asm/global_data.h +3 -2
@@ -28,10 +28,8 @@ typedef struct global_data {unsigned long flags;unsigned long baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ #if defined(CONFIG_POST ) || defined(CONFIG_LOGBUFFER )unsigned long post_log_word;/* Record POST activities */ unsigned long post_init_f_time;/* When post_init_f started */
@@ -49,6 +47,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp")
arch/powerpc/cpu/mpc5xxx/i2c.c +10 -10
@@ -332,7 +332,7 @@ static int mpc_get_fdr(int speed)if (gd->flags &GD_FLG_RELOC ) { fdr = divider; }else { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("%ld kHz, " , best_speed /1000 );return divider; }
@@ -374,33 +374,33 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3 ] = addr &0xFF ;if (wait_for_bb ()) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: bus is busy\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_STA ,I2C_STA );if (do_address (chip,0 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: failed to address chip\n" ); goto Done; }if (send_bytes (chip, &xaddr[4 -alen], alen)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: send_bytes failed\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_RSTA ,I2C_RSTA );if (do_address (chip,1 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: failed to address chip\n" ); goto Done; }if (receive_bytes (chip, (char *)buf, len)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: receive_bytes failed\n" ); goto Done; }
@@ -423,26 +423,26 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3 ] = addr &0xFF ;if (wait_for_bb ()) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: bus is busy\n" ); goto Done; }mpc_reg_out (®s->mcr,I2C_STA ,I2C_STA );if (do_address (chip,0 )) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: failed to address chip\n" ); goto Done; }if (send_bytes (chip, &xaddr[4 -alen], alen)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: send_bytes failed\n" ); goto Done; }if (send_bytes (chip, (char *)buf, len)) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: send_bytes failed\n" ); goto Done; }
arch/powerpc/cpu/mpc8xx/i2c.c +6 -6
@@ -633,21 +633,21 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len) rc =i2c_send (&state, chip,0 ,I2CF_START_COND , alen, &xaddr[4 -alen]);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_receive (&state, chip,0 ,I2CF_STOP_COND , len, buffer);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_receive failed (%d)\n" , rc);return 1 ; } rc =i2c_doio (&state);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_read: i2c_doio failed (%d)\n" , rc);return 1 ; }
@@ -683,21 +683,21 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len) rc =i2c_send (&state, chip,0 ,I2CF_START_COND , alen, &xaddr[4 -alen]);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: first i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_send (&state,0 ,0 ,I2CF_STOP_COND , len, buffer);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: second i2c_send failed (%d)\n" , rc);return 1 ; } rc =i2c_doio (&state);if (rc !=0 ) { -if (gd->have_console) +if (gd->flags &GD_FLG_HAVE_CONSOLE )printf ("i2c_write: i2c_doio failed (%d)\n" , rc);return 1 ; }
arch/powerpc/include/asm/global_data.h +3 -2
@@ -136,8 +136,6 @@ typedef struct global_data {unsigned long arbiter_event_address;#endif unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_SYS_ALLOC_DPRAM ) || defined(CONFIG_CPM2 )unsigned int dp_alloc_base;unsigned int dp_alloc_top;
@@ -193,6 +191,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #if 1 #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r2")
arch/sh/include/asm/global_data.h +3 -2
@@ -33,10 +33,8 @@ typedef struct global_dataunsigned long flags;unsigned long baudrate;unsigned long cpu_clk;/* CPU clock in Hz! */ -unsigned long have_console;/* serial_init() was called */ phys_size_t ram_size;/* RAM size */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid */ void **jt;/* Standalone app jump table */ char env_buf[32 ];/* buffer for getenv() before reloc. */ } gd_t;
@@ -49,6 +47,9 @@ typedef struct global_data#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("r13")
arch/sparc/include/asm/global_data.h +3 -2
@@ -50,8 +50,6 @@ typedef struct global_data {unsigned long reloc_off;/* Relocation Offset */ unsigned long reset_status;/* reset status register at boot */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ -unsigned long have_console;/* serial_init() was called */ #if defined(CONFIG_LCD ) || defined(CONFIG_VIDEO )unsigned long fb_base;/* Base address of framebuffer memory */
@@ -85,6 +83,9 @@ typedef struct global_data {#define GD_FLG_LOGINIT 0x00020/* Log Buffer has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040/* Disable console (in & out) */ #define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ +#define GD_FLG_HAVE_CONSOLE 0x00100/* serial_init() was called */ +#define GD_FLG_PRI_ENV_VALID 0x00200/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x00400/* Redundant environment valid */ #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("%g7")
arch/x86/include/asm/global_data.h +18 -18
@@ -39,11 +39,9 @@ typedef struct global_data {bd_t *bd;unsigned long flags;unsigned long baudrate; -unsigned long have_console;/* serial_init() was called */ unsigned long reloc_off;/* Relocation Offset */ unsigned long load_off;/* Load Offset */ unsigned long env_addr;/* Address of Environment struct */ -unsigned long env_valid;/* Checksum of Environment valid? */ unsigned long cpu_clk;/* CPU clock in Hz! */ unsigned long bus_clk;unsigned long relocaddr;/* Start address of U-Boot in RAM */
@@ -59,23 +57,21 @@ extern gd_t *gd;#endif /* Word Offsets into Global Data - MUST match struct gd_t */ -#define GD_BD 0 -#define GD_FLAGS 1 -#define GD_BAUDRATE 2 -#define GD_HAVE_CONSOLE 3 -#define GD_RELOC_OFF 4 -#define GD_LOAD_OFF 5 -#define GD_ENV_ADDR 6 -#define GD_ENV_VALID 7 -#define GD_CPU_CLK 8 -#define GD_BUS_CLK 9 -#define GD_RELOC_ADDR 10 -#define GD_START_ADDR_SP 11 -#define GD_RAM_SIZE 12 -#define GD_RESET_STATUS 13 -#define GD_JT 14 +#define GD_BD 0 +#define GD_FLAGS 1 +#define GD_BAUDRATE 2 +#define GD_RELOC_OFF 3 +#define GD_LOAD_OFF 4 +#define GD_ENV_ADDR 5 +#define GD_CPU_CLK 6 +#define GD_BUS_CLK 7 +#define GD_RELOC_ADDR 8 +#define GD_START_ADDR_SP 9 +#define GD_RAM_SIZE 10 +#define GD_RESET_STATUS 11 +#define GD_JT 12 -#define GD_SIZE 15 +#define GD_SIZE 13/* * Global Data Flags
@@ -90,6 +86,10 @@ extern gd_t *gd;#define GD_FLG_ENV_READY 0x00080/* Environment imported into hash table */ #define GD_FLG_COLD_BOOT 0x00100/* Cold Boot */ #define GD_FLG_WARM_BOOT 0x00200/* Warm Boot */ +#define GD_FLG_HAVE_CONSOLE 0x00400/* Warm Boot */ +#define GD_FLG_PRI_ENV_VALID 0x00800/* Primary environment valid */ +#define GD_FLG_RED_ENV_VALID 0x01000/* Redundant environment valid */ +#if 0 #define DECLARE_GLOBAL_DATA_PTR
board/edb93xx/edb93xx.c +1 -1
@@ -77,7 +77,7 @@ int board_init(void) gd->bd->bi_boot_params =LINUX_BOOT_PARAM_ADDR ;/* We have a console */ - gd->have_console =1 ; + gd->flags &=GD_FLG_HAVE_CONSOLE ;return 0 ; }
board/matrix_vision/common/mv_common.c +1 -1
@@ -56,7 +56,7 @@ void mv_reset_environment(void) } } - gd->env_valid =0 ; +SET_NO_ENV_VALID ();env_relocate ();for (i =0 ; i <MV_KEEP_ENTRIES ; i++) {
board/zeus/zeus.c +1 -1
@@ -224,7 +224,7 @@ static int restore_default(void)set_default_env ("" ); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();/* * Read board specific values from I2C EEPROM
common/console.c +2 -2
@@ -404,7 +404,7 @@ static int ctrlc_disabled = 0; /* see disable_ctrl() */static int ctrlc_was_pressed =0 ;int ctrlc (void ) { -if (!ctrlc_disabled && gd->have_console) { +if (!ctrlc_disabled && (gd->flags &GD_FLG_HAVE_CONSOLE )) {if (tstc ()) {switch (getc ()) {case 0x03 :/* ^C - Control C */
@@ -522,7 +522,7 @@ int console_assign(int file, const char *devname)/* Called before relocation - use serial functions */ int console_init_f (void ) { - gd->have_console =1 ; + gd->flags |=GD_FLG_HAVE_CONSOLE ;#ifdef CONFIG_SILENT_CONSOLE if (getenv ("silent" ) !=NULL )
common/env_common.c +3 -3
@@ -136,7 +136,7 @@ static uchar env_get_char_init (int index)uchar c;/* if crc was bad, use the default environment */ -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID )) c =env_get_char_spec (index);else c = default_environment[index];
@@ -164,7 +164,7 @@ uchar env_get_char (int index)const uchar *env_get_addr (int index) { -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))return (uchar *)(gd->env_addr + index);else return &default_environment[index];
@@ -234,7 +234,7 @@ void env_relocate (void)env_reloc ();#endif -if (gd->env_valid ==0 ) { +if (!(gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))) {#if defined(CONFIG_ENV_IS_NOWHERE )/* Environment not changable */ set_default_env (NULL );#else
common/env_dataflash.c +3 -3
@@ -92,7 +92,7 @@ int env_init(void)unsigned off;uchar buf[64 ]; -if (gd->env_valid) +if (gd->flags & (GD_FLG_PRI_ENV_VALID |GD_FLG_RED_ENV_VALID ))return 0 ;AT91F_DataflashInit ();/* prepare for DATAFLASH read/write */
@@ -116,10 +116,10 @@ int env_init(void)if (crc == new) { gd->env_addr = offsetof(env_t ,data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }return 0 ;
common/env_eeprom.c +18 -18
@@ -101,7 +101,7 @@ uchar env_get_char_spec (int index) off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) off =CONFIG_ENV_OFFSET_REDUND ;#endif eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
@@ -117,7 +117,7 @@ void env_relocate_spec (void)unsigned int off =CONFIG_ENV_OFFSET ;#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) off =CONFIG_ENV_OFFSET_REDUND ;#endif eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
@@ -151,7 +151,7 @@ int saveenv(void) env_new.crc =crc32 (0 , env_new.data,ENV_SIZE );#ifdef CONFIG_ENV_OFFSET_REDUND -if (gd->env_valid ==1 ) { +if (gd->flags &GD_FLG_PRI_ENV_VALID ) { off =CONFIG_ENV_OFFSET_REDUND ; off_red =CONFIG_ENV_OFFSET ; }
@@ -170,10 +170,10 @@ int saveenv(void) off_red + offsetof(env_t ,flags), (uchar *)&flag_obsolete, 1); -if (gd->env_valid ==1 ) - gd->env_valid =2 ; +if (gd->flags &GD_FLG_PRI_ENV_VALID ) +SET_REDUNDANT_ENV_VALID ();else - gd->env_valid = 1; + SET_PRIMARY_ENV_VALID(); }#endif
@@ -233,31 +233,31 @@ int env_init(void)if (!crc_ok[0 ] && !crc_ok[1 ]) { gd->env_addr =0 ; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return 0 ; }else if (crc_ok[0 ] && !crc_ok[1 ]) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (!crc_ok[0 ] && crc_ok[1 ]) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else {/* both ok - check serial */ if (flags[0 ] ==ACTIVE_FLAG && flags[1 ] ==OBSOLETE_FLAG ) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();else if (flags[0 ] ==OBSOLETE_FLAG && flags[1 ] ==ACTIVE_FLAG ) - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();else if (flags[0 ] ==0xFF && flags[1 ] ==0 ) - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();else if (flags[1 ] ==0xFF && flags[0 ] ==0 ) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();else /* flags are equal - almost impossible */ - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); } -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID ) gd->env_addr = off_env[1 ] + offsetof(env_t ,data); -else if (gd->env_valid ==1 ) +else if (gd->flags &GD_FLG_PRI_ENV_VALID ) gd->env_addr = off_env[0 ] + offsetof(env_t ,data);return (0 );
@@ -292,10 +292,10 @@ int env_init(void)if (crc == new) { gd->env_addr = offsetof(env_t ,data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr =0 ; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }return (0 );
common/env_flash.c +13 -13
@@ -100,28 +100,28 @@ int env_init(void)if (crc1_ok && ! crc2_ok) { gd->env_addr = addr1; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (! crc1_ok && crc2_ok) { gd->env_addr = addr2; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (! crc1_ok && ! crc2_ok) { gd->env_addr = addr_default; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); }else if (flag1 ==ACTIVE_FLAG && flag2 ==OBSOLETE_FLAG ) { gd->env_addr = addr1; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (flag1 ==OBSOLETE_FLAG && flag2 ==ACTIVE_FLAG ) { gd->env_addr = addr2; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (flag1 == flag2) { gd->env_addr = addr1; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (flag1 ==0xFF ) { gd->env_addr = addr1; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (flag2 ==0xFF ) { gd->env_addr = addr2; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }return 0 ;
@@ -244,12 +244,12 @@ int env_init(void) {if (crc32 (0 , env_ptr->data,ENV_SIZE ) == env_ptr->crc) { gd->env_addr = (ulong)&(env_ptr->data); - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return (0 ); } gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return 0 ; }
@@ -351,7 +351,7 @@ void env_relocate_spec(void) flash_addr_new->crc) {char flag =OBSOLETE_FLAG ; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();flash_sect_protect (0 , (ulong )flash_addr_new, end_addr_new); flash_write(&flag, (ulong)&(flash_addr_new->flags),
@@ -363,7 +363,7 @@ void env_relocate_spec(void) (flash_addr->flags & ACTIVE_FLAG) == ACTIVE_FLAG) {char flag =ACTIVE_FLAG ; - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID ();flash_sect_protect (0 , (ulong )flash_addr, end_addr); flash_write(&flag, (ulong)&(flash_addr->flags),
@@ -371,7 +371,7 @@ void env_relocate_spec(void) flash_sect_protect(1, (ulong)flash_addr, end_addr); } -if (gd->env_valid ==2 ) +if (gd->flags &GD_FLG_RED_ENV_VALID )puts ("*** Warning - some problems detected " "reading environment; recovered successfully\n\n" );#endif /* CONFIG_ENV_ADDR_REDUND */
common/env_mgdisk.c +1 -1
@@ -78,7 +78,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_mmc.c +1 -1
@@ -73,7 +73,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_nand.c +24 -21
106 lines not on this page · raw message
common/env_nowhere.c +1 -1
@@ -52,7 +52,7 @@ uchar env_get_char_spec(int index)int env_init (void ) { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID ();return (0 ); }
common/env_nvram.c +2 -2
@@ -131,10 +131,10 @@ int env_init(void)if (crc32 (0 , env_ptr->data,ENV_SIZE ) == env_ptr->crc) { gd->env_addr = (ulong)&(env_ptr->data);#endif - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else { gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =0 ; +SET_NO_ENV_VALID (); } return (0); }
common/env_onenand.c +2 -2
@@ -90,7 +90,7 @@ void env_relocate_spec(void) rc =env_import (buf,1 );if (rc) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }int saveenv (void )
@@ -145,7 +145,7 @@ int env_init(void) {/* use default */ gd->env_addr = (ulong) & default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
common/env_sf.c +18 -13
@@ -99,7 +99,7 @@ int saveenv(void) env_new.crc =crc32 (0 , env_new.data,ENV_SIZE ); env_new.flags =ACTIVE_FLAG ; -if (gd->env_valid ==1 ) { +if (gd->flags &GD_FLG_PRI_ENV_VALID ) { env_new_offset =CONFIG_ENV_OFFSET_REDUND ; env_offset =CONFIG_ENV_OFFSET ; }else {
@@ -156,9 +156,14 @@ int saveenv(void)puts ("done\n" ); - gd->env_valid = (gd->env_valid ==2 ?1 :2 ); +if (gd->flags &GD_FLG_RED_ENV_VALID ) { +SET_PRIMARY_ENV_VALID (); +printf ("Valid environment: Primary\n" ); + }else { +SET_REDUNDANT_ENV_VALID (); +printf ("Valid environment: Redundant\n" ); + } -printf ("Valid environment: %d\n" , (int )gd->env_valid); done:if (saved_buffer)
@@ -210,28 +215,28 @@ void env_relocate_spec(void)set_default_env ("!bad CRC" ); goto err_read; }else if (crc1_ok && !crc2_ok) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (!crc1_ok && crc2_ok) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags ==ACTIVE_FLAG && tmp_env2->flags ==OBSOLETE_FLAG ) { - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); }else if (tmp_env1->flags ==OBSOLETE_FLAG && tmp_env2->flags ==ACTIVE_FLAG ) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags == tmp_env2->flags) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else if (tmp_env1->flags ==0xFF ) { - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); }else {/* * this differs from code in env_flash.c, but I think a sane * default path is desirable. */ - gd->env_valid =2 ; +SET_REDUNDANT_ENV_VALID (); } -if (gd->env_valid ==1 ) +if (gd->flags &GD_FLG_PRI_ENV_VALID ) ep = tmp_env1;else ep = tmp_env2;
@@ -350,7 +355,7 @@ void env_relocate_spec(void) ret =env_import (buf,1 );if (ret) - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID (); out:spi_flash_free (env_flash); env_flash =NULL ;
@@ -361,7 +366,7 @@ int env_init(void) {/* SPI flash isn't usable before relocation */ gd->env_addr = (ulong)&default_environment[0 ]; - gd->env_valid =1 ; +SET_PRIMARY_ENV_VALID ();return 0 ; }
drivers/i2c/ppc4xx_i2c.c +1 -1
@@ -396,7 +396,7 @@ static int ppc4xx_i2c_transfer(uchar chip, uint addr, int alen, uchar *buffer,#endif if ((ret =i2c_transfer (read, chip <<1 , &xaddr[4 - alen], alen, buffer, len)) !=0 ) { -if (gd->have_console) { +if (gd->flags &GD_FLG_HAVE_CONSOLE ) {printf ("I2C %s: failed %d\n" , read ?"read" :"write" , ret); }
drivers/i2c/soft_i2c.c +3 -3
@@ -118,9 +118,9 @@ DECLARE_GLOBAL_DATA_PTR;#ifdef DEBUG_I2C -#define PRINTD(fmt,args...) do { \ - if (gd->have_console) \ - printf (fmt ,##args); \ +#define PRINTD(fmt,args...) do { \ + if (gd->flags & GD_FLG_HAVE_CONSOLE) \ + printf (fmt ,##args); \ } while (0)#else #define PRINTD(fmt,args...)
include/environment.h +18 -0
@@ -152,6 +152,24 @@ typedef struct environment_s {unsigned char data[ENV_SIZE ];/* Environment data */ } env_t; +#define SET_NO_ENV_VALID () \ + do { \ + gd->flags &= ~(GD_FLG_PRI_ENV_VALID | \ + GD_FLG_RED_ENV_VALID); \ + } while (0) + +#define SET_PRIMARY_ENV_VALID () \ + do { \ + SET_NO_ENV_VALID(); \ + gd->flags |= GD_FLG_PRI_ENV_VALID; \ + } while (0) + +#define SET_REDUNDANT_ENV_VALID () \ + do { \ + SET_NO_ENV_VALID(); \ + gd->flags |= GD_FLG_RED_ENV_VALID; \ + } while (0) +#ifndef DO_DEPS_ONLY #include <search.h>
--
1.7.5.2.317.g391b14
PATCH v2 1/1 Global Data: Flagify have_console and env_valid
looks sane enough to me
when changing the global_data structure, do we need to bump the u-boot standalone API number (XF_VERSION in exports.h) ? and i vaguely recall global data being passed to like Linux for some arches ? although looking at the number of #ifdef's in there, maybe that's already been a long lost battle. -mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110826/5a428713/attachment.pgp
PATCH v2 1/1 Global Data: Flagify have_console and env_valid
Hi Mike,
Quoted 6 lines · Mike Frysinger
looks sane enough to me
when changing the
global_datastructure, do we need to bump the u-boot standalone API number (XF_VERSIONinexports.h) ? and i vaguely recall global data being passed to like Linux for some arches ? although looking at the number of #ifdef's in there, maybe that's already been a long lost battle.
That's a very interesting point. As far as I can tell, XF_VERSION needs to be incremented when either the global data data structure is modified, or if functions are added to or removed from the export list. Commit 3469424cb6d939c7aedf1e0efdec44a797c0a18c seems to confirm this:
Note that the location of the standalone application jump table pointer in the global data structure is affected by this change, breaking execution of standalone applications compiled for previous versions of U-Boot.
So I think your point about the #ifdef's in global data is very interesting. There are a _lot_ of board level defines (LCD, PCI, POST etc)
Question for Wolfgang I think :)
Regards,
Graeme
PATCH v2 1/1 Global Data: Flagify have_console and env_valid
In reply to Mike FrysingerQuoted 6 lines · Mike Frysinger
looks sane enough to me
when changing the
global_datastructure, do we need to bump the u-boot standalone API number (XF_VERSIONinexports.h) ? and i vaguely recall global data being passed to like Linux for some arches ? although looking at the number of #ifdef's in there, maybe that's already been a long lost battle.
The data passed to Linux in the non-device-tree case was bd_t, not gd_t.
Of course, that's full of ifdefs too, at least on powerpc. :-P
-Scott
PATCH v2 1/1 Global Data: Flagify have_console and env_valid
In reply to Graeme RussDear Graeme Russ,
Quoted 31 lines · In message <[email protected]> you wrote:
Signed-off-by Graeme Russ <[email protected]>---
Changes since V1:
- Incommon/console.c,gd->flags&=GD_FLG_HAVE_CONSOLEchange to |=arch/arm/include/asm/global_data.h | 5 ++- arch/avr32/include/asm/global_data.h | 5 ++- arch/blackfin/include/asm/global_data.h | 5 ++- arch/blackfin/lib/board.c | 2 - arch/m68k/include/asm/global_data.h | 5 ++- arch/microblaze/include/asm/global_data.h | 5 ++- arch/mips/include/asm/global_data.h | 5 ++- arch/nios2/include/asm/global_data.h | 5 ++- arch/powerpc/cpu/mpc5xxx/i2c.c | 20 ++++++------ arch/powerpc/cpu/mpc8xx/i2c.c | 12 ++++---- arch/powerpc/include/asm/global_data.h | 5 ++- arch/sh/include/asm/global_data.h | 5 ++- arch/sparc/include/asm/global_data.h | 5 ++- arch/x86/include/asm/global_data.h | 36 +++++++++++----------- board/edb93xx/edb93xx.c | 2 +- board/matrix_vision/common/mv_common.c | 2 +- board/zeus/zeus.c | 2 +- common/console.c | 4 +- common/env_common.c | 6 ++-- common/env_dataflash.c | 6 ++-- common/env_eeprom.c | 36 +++++++++++----------- common/env_flash.c | 26 ++++++++-------- common/env_mgdisk.c | 2 +- common/env_mmc.c | 2 +- common/env_nand.c | 45 +++++++++++++++-------------
Quoted 8 lines
common/env_nowhere.c | 2 +- common/env_nvram.c | 4 +- common/env_onenand.c | 4 +- common/env_sf.c | 31 +++++++++++-------- drivers/i2c/ppc4xx_i2c.c | 2 +- drivers/i2c/soft_i2c.c | 6 ++-- include/environment.h | 18 +++++++++++ 32 files changed, 177 insertions(+), 143 deletions(-)
Checkpatch says:
total: 3 errors, 43 warnings, 901 lines checked
Please clean up and resubmit. Thanks.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Q: How do you spell "onomatopoeia"? A: The way it sounds.