diff options
-rw-r--r-- | CHANGELOG | 20 | ||||
-rw-r--r-- | README | 6 | ||||
-rw-r--r-- | board/r360mpi/r360mpi.c | 156 | ||||
-rw-r--r-- | board/trab/vfd.c | 6 | ||||
-rw-r--r-- | common/cmd_bootm.c | 9 | ||||
-rw-r--r-- | cpu/mpc8xx/lcd.c | 29 | ||||
-rw-r--r-- | include/configs/R360MPI.h | 35 | ||||
-rw-r--r-- | tools/env/fw_env.c | 484 |
8 files changed, 402 insertions, 343 deletions
@@ -2,11 +2,23 @@ Changes since U-Boot 0.3.0: ====================================================================== +* Patch by Lutz Dennig, 10 Apr 2003: + Update for R360MPI board + +* Add new meaning to "autostart" environment variable: + If set to "no", a standalone image passed to the + "bootm" command will be copied to the load address + (and eventually uncompressed), but NOT be started. + This can be used to load and uncompress arbitrary + data. + * Patch by Stefan Roese, 10 Apr 2003: - Changed DHCP client to use ip address from server option field #54 - from the OFFER-paket in the server option field #54 in the REQUEST- - paket. This fixes a problem using a Windows 2000 DHCP server, where - the DHCP-server is not the TFTP-server. + Changed DHCP client to use IP address from server option field #54 + from the OFFER packet in the server option field #54 in the REQUEST + packet. This fixes a problem using a Windows 2000 DHCP server, + where the DHCP-server is not the TFTP-server. + +* Set max brightness for MN11236 displays on TRAB board * Add support for TQM862L modules @@ -1918,6 +1918,12 @@ Some configuration options can be set using Environment Variables: be automatically started (by internally calling "bootm") + If set to "no", a standalone image passed to the + "bootm" command will be copied to the load address + (and eventually uncompressed), but NOT be started. + This can be used to load and uncompress arbitrary + data. + initrd_high - restrict positioning of initrd images: If this variable is not set, initrd images will be copied to the highest possible address in RAM; this diff --git a/board/r360mpi/r360mpi.c b/board/r360mpi/r360mpi.c index d7b8873..91e3234 100644 --- a/board/r360mpi/r360mpi.c +++ b/board/r360mpi/r360mpi.c @@ -126,12 +126,12 @@ long int initdram (int board_type) memctl->memc_mar = 0x00000088; /* - * Map controller bank 1 to the SDRAM bank at + * Map controller bank 2 to the SDRAM bank at * preliminary address - these have to be modified after the * SDRAM size has been determined. */ - memctl->memc_or1 = CFG_OR1_PRELIM; - memctl->memc_br1 = CFG_BR1_PRELIM; + memctl->memc_or2 = CFG_OR2_PRELIM; + memctl->memc_br2 = CFG_BR2_PRELIM; memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE)); /* no refresh yet */ @@ -139,9 +139,9 @@ long int initdram (int board_type) /* perform SDRAM initializsation sequence */ - memctl->memc_mcr = 0x80002105; /* SDRAM bank 0 */ + memctl->memc_mcr = 0x80004105; /* SDRAM bank 0 */ udelay (200); - memctl->memc_mcr = 0x80002230; /* SDRAM bank 0 - execute twice */ + memctl->memc_mcr = 0x80004230; /* SDRAM bank 0 - execute twice */ udelay (200); memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */ @@ -153,7 +153,7 @@ long int initdram (int board_type) * * try 8 column mode */ - size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE1_PRELIM, + size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE); udelay (1000); @@ -161,13 +161,13 @@ long int initdram (int board_type) /* * try 9 column mode */ - size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE1_PRELIM, + size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM, SDRAM_MAX_SIZE); if (size8 < size9) { /* leave configuration at 9 columns */ size_b0 = size9; /* debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20); */ - } else { /* back to 8 columns */ + } else { /* back to 8 columns */ size_b0 = size8; memctl->memc_mamr = CFG_MAMR_8COL; udelay (500); @@ -200,6 +200,47 @@ long int initdram (int board_type) udelay (10000); +#ifdef CONFIG_CAN_DRIVER + /* Initialize OR3 / BR3 */ + memctl->memc_or3 = CFG_OR3_CAN; /* switch GPLB_5 to GPLA_5 */ + memctl->memc_br3 = CFG_BR3_CAN; + + /* Initialize MBMR */ + memctl->memc_mbmr = MAMR_GPL_B4DIS; /* GPL_B4 works as UPWAITB */ + + /* Initialize UPMB for CAN: single read */ + memctl->memc_mdr = 0xFFFFC004; + memctl->memc_mcr = 0x0100 | UPMB; + + memctl->memc_mdr = 0x0FFFD004; + memctl->memc_mcr = 0x0101 | UPMB; + + memctl->memc_mdr = 0x0FFFC000; + memctl->memc_mcr = 0x0102 | UPMB; + + memctl->memc_mdr = 0x3FFFC004; + memctl->memc_mcr = 0x0103 | UPMB; + + memctl->memc_mdr = 0xFFFFDC05; + memctl->memc_mcr = 0x0104 | UPMB; + + /* Initialize UPMB for CAN: single write */ + memctl->memc_mdr = 0xFFFCC004; + memctl->memc_mcr = 0x0118 | UPMB; + + memctl->memc_mdr = 0xCFFCD004; + memctl->memc_mcr = 0x0119 | UPMB; + + memctl->memc_mdr = 0x0FFCC000; + memctl->memc_mcr = 0x011A | UPMB; + + memctl->memc_mdr = 0x7FFCC004; + memctl->memc_mcr = 0x011B | UPMB; + + memctl->memc_mdr = 0xFFFDCC05; + memctl->memc_mcr = 0x011C | UPMB; +#endif + return (size_b0); } @@ -213,8 +254,8 @@ long int initdram (int board_type) * - short between data lines */ -static long int dram_size (long int mamr_value, long int *base, - long int maxsize) +static long int dram_size (long int mamr_value, + long int *base, long int maxsize) { volatile immap_t *immap = (immap_t *) CFG_IMMR; volatile memctl8xx_t *memctl = &immap->im_memctl; @@ -257,10 +298,10 @@ static long int dram_size (long int mamr_value, long int *base, /* ------------------------------------------------------------------------- */ -void r360_pwm_write (uchar reg, uchar val) +void r360_i2c_lcd_write (uchar data0, uchar data1) { - if (i2c_write (CFG_I2C_PWM_ADDR, reg, 1, &val, 1)) { - printf ("Can't write PWM register 0x%02X.\n", reg); + if (i2c_write (CFG_I2C_LCD_ADDR, data0, 1, &data1, 1)) { + printf("Can't write lcd data 0x%02X 0x%02X.\n", data0, data1); } } @@ -271,10 +312,8 @@ void r360_pwm_write (uchar reg, uchar val) */ /* Number of bytes returned from Keyboard Controller */ -#define KEYBD_KEY_MAX 20 /* maximum key number */ -#define KEYBD_DATALEN ((KEYBD_KEY_MAX + 7) / 8) /* normal key scan data */ - -static uchar kbd_addr = CFG_I2C_KBD_ADDR; +#define KEYBD_KEY_MAX 16 /* maximum key number */ +#define KEYBD_DATALEN ((KEYBD_KEY_MAX + 7) / 8) /* normal key scan data */ static uchar *key_match (uchar *); @@ -287,14 +326,14 @@ int misc_init_r (void) i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); - i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN); + i2c_read (CFG_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN); for (i = 0; i < KEYBD_DATALEN; ++i) { sprintf (keybd_env + i + i, "%02X", kbd_data[i]); } setenv ("keybd", keybd_env); - str = strdup (key_match (kbd_data)); /* decode keys */ + str = strdup (key_match (keybd_env)); /* decode keys */ #ifdef CONFIG_PREBOOT /* automatically configure "preboot" command on key match */ setenv ("preboot", str); /* set or delete definition */ @@ -324,16 +363,13 @@ int misc_init_r (void) static uchar kbd_magic_prefix[] = "key_magic"; static uchar kbd_command_prefix[] = "key_cmd"; -static uchar *key_match (uchar * kbd_data) +static uchar *key_match (uchar * kbd_str) { - uchar compare[KEYBD_DATALEN]; uchar magic[sizeof (kbd_magic_prefix) + 1]; uchar cmd_name[sizeof (kbd_command_prefix) + 1]; - uchar key_mask; - uchar *str, *nxt, *suffix; + uchar *str, *suffix; uchar *kbd_magic_keys; char *cmd; - int i; /* * The following string defines the characters that can pe appended @@ -343,62 +379,48 @@ static uchar *key_match (uchar * kbd_data) * "key_magic" is checked (old behaviour); the string "125" causes * checks for "key_magic1", "key_magic2" and "key_magic5", etc. */ - if ((kbd_magic_keys = getenv ("magic_keys")) == NULL) - kbd_magic_keys = ""; + if ((kbd_magic_keys = getenv ("magic_keys")) != NULL) { + /* loop over all magic keys; + * use '\0' suffix in case of empty string + */ + for (suffix = kbd_magic_keys; + *suffix || suffix == kbd_magic_keys; + ++suffix) { + sprintf (magic, "%s%c", kbd_magic_prefix, *suffix); - /* loop over all magic keys; - * use '\0' suffix in case of empty string - */ - for (suffix=kbd_magic_keys; *suffix || suffix==kbd_magic_keys; ++suffix) { - sprintf (magic, "%s%c", kbd_magic_prefix, *suffix); #if 0 - printf ("### Check magic \"%s\"\n", magic); + printf ("### Check magic \"%s\"\n", magic); #endif - memcpy(compare, kbd_data, KEYBD_DATALEN); - - for (str = getenv(magic); str != NULL; str = (*nxt) ? nxt+1 : nxt) { - uchar c; - - c = (uchar) simple_strtoul (str, (char **) (&nxt), 16); - - if (str == nxt) /* invalid character */ - break; - - if (c >= KEYBD_KEY_MAX) /* bad key number */ - goto next_magic; - - key_mask = 0x80 >> (c % 8); - - if (!(compare[c / 8] & key_mask)) /* key not pressed */ - goto next_magic; + if ((str = getenv (magic)) != 0) { - compare[c / 8] &= ~key_mask; - } - - for (i=0; i<KEYBD_DATALEN; i++) - if (compare[i]) /* key(s) not released */ - goto next_magic; - - sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix); - - cmd = getenv (cmd_name); #if 0 - printf ("### Set PREBOOT to $(%s): \"%s\"\n", - cmd_name, cmd ? cmd : "<<NULL>>"); + printf ("### Compare \"%s\" \"%s\"\n", + kbd_str, str); #endif - *kbd_data = *suffix; - return (cmd); + if (strcmp (kbd_str, str) == 0) { + sprintf (cmd_name, "%s%c", + kbd_command_prefix, + *suffix); - next_magic:; + if ((cmd = getenv (cmd_name)) != 0) { +#if 0 + printf ("### Set PREBOOT to $(%s): \"%s\"\n", + cmd_name, cmd); +#endif + return (cmd); + } + } + } + } } #if 0 printf ("### Delete PREBOOT\n"); #endif - *kbd_data = '\0'; + *kbd_str = '\0'; return (NULL); } -#endif /* CONFIG_PREBOOT */ +#endif /* CONFIG_PREBOOT */ /* Read Keyboard status */ int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) @@ -410,7 +432,7 @@ int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); /* Read keys */ - i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN); + i2c_read (CFG_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN); puts ("Keys:"); for (i = 0; i < KEYBD_DATALEN; ++i) { diff --git a/board/trab/vfd.c b/board/trab/vfd.c index 9b61f6e..d0dcedc 100644 --- a/board/trab/vfd.c +++ b/board/trab/vfd.c @@ -486,7 +486,11 @@ int drv_vfd_init(void) /* frame buffer endadr */ rLCDSADDR2 = (gd->fb_base + FRAME_BUF_SIZE) >> 1; rLCDSADDR3 = ((256/4)); - rLCDCON2 = 0x000DC000; +rLCDCON2 = 0x000DC000; + if(gd->vfd_type == VFD_TYPE_MN11236) + rLCDCON2 = 37 << 14; /* MN11236: 38 lines */ + else + rLCDCON2 = 55 << 14; /* T119C: 56 lines */ rLCDCON3 = 0x0051000A; rLCDCON4 = 0x00000001; if (gd->vfd_type && vfd_inv_data) diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index f3f9603..8b32f1c 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -287,12 +287,17 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) switch (hdr->ih_type) { case IH_TYPE_STANDALONE: - appl = (int (*)(cmd_tbl_t *, int, int, char *[]))ntohl(hdr->ih_ep); if (iflag) enable_interrupts(); + /* load (and uncompress), but don't start if "autostart" + * is set to "no" + */ + if (((s = getenv("autostart")) != NULL) && (strcmp(s,"no") == 0)) + return 0; + appl = (int (*)(cmd_tbl_t *, int, int, char *[]))ntohl(hdr->ih_ep); (*appl)(cmdtp, flag, argc-1, &argv[1]); - break; + return 0; case IH_TYPE_KERNEL: case IH_TYPE_MULTI: /* handled below */ diff --git a/cpu/mpc8xx/lcd.c b/cpu/mpc8xx/lcd.c index f6dda60..4ef1513 100644 --- a/cpu/mpc8xx/lcd.c +++ b/cpu/mpc8xx/lcd.c @@ -177,6 +177,8 @@ static vidinfo_t panel_info = { /* * Sharp LQ057Q3DC02 display. Active, color, single scan. */ +#define LCD_DF 12 + static vidinfo_t panel_info = { 320, 240, 0, 0, CFG_HIGH, CFG_HIGH, CFG_LOW, CFG_LOW, CFG_HIGH, 3, 0, 0, 1, 1, 15, 4, 0, 3 @@ -260,11 +262,11 @@ static vidinfo_t panel_info = { * Emerging Display Technologies 320x240. Passive, monochrome, single scan. */ #define LCD_BPP LCD_MONOCHROME -#define LCD_DF 20 +#define LCD_DF 10 static vidinfo_t panel_info = { 320, 240, 0, 0, CFG_HIGH, CFG_HIGH, CFG_HIGH, CFG_HIGH, CFG_LOW, - LCD_BPP, 0, 0, 0, 0, 0, 15, 0, 0 + LCD_BPP, 0, 0, 0, 0, 33, 0, 0, 0 }; #endif /*----------------------------------------------------------------------*/ @@ -977,15 +979,18 @@ static void lcd_enable (void) c |= 0x07; /* Power on CCFL, Enable CCFL, Chip Enable LCD */ pic_write (0x60, c); } -#elif defined(CONFIG_R360MPI) +#endif /* CONFIG_LWMON */ + +#if defined(CONFIG_R360MPI) { - extern void r360_pwm_write (uchar reg, uchar val); + extern void r360_i2c_lcd_write (uchar data0, uchar data1); - r360_pwm_write(8, 1); - r360_pwm_write(0, 4); - r360_pwm_write(1, 6); + r360_i2c_lcd_write(0x10, 0x01); + r360_i2c_lcd_write(0x20, 0x01); + r360_i2c_lcd_write(0x3F, 0xFF); + r360_i2c_lcd_write(0x47, 0xFF); } -#endif /* CONFIG_LWMON */ +#endif /* CONFIG_R360MPI */ } /*----------------------------------------------------------------------*/ @@ -1003,10 +1008,12 @@ static void lcd_disable (void) } #elif defined(CONFIG_R360MPI) { - extern void r360_pwm_write (uchar reg, uchar val); + extern void r360_i2c_lcd_write (uchar data0, uchar data1); - r360_pwm_write(0, 0); - r360_pwm_write(1, 0); + r360_i2c_lcd_write(0x10, 0x00); + r360_i2c_lcd_write(0x20, 0x00); + r360_i2c_lcd_write(0x30, 0x00); + r360_i2c_lcd_write(0x40, 0x00); } #endif /* CONFIG_LWMON */ /* Disable the LCD panel */ diff --git a/include/configs/R360MPI.h b/include/configs/R360MPI.h index cba2a27..c7cf8a4 100644 --- a/include/configs/R360MPI.h +++ b/include/configs/R360MPI.h @@ -47,7 +47,7 @@ #define CONFIG_8xx_CONS_SMC1 1 /* Console is on SMC1 */ #undef CONFIG_8xx_CONS_SMC2 #undef CONFIG_8xx_CONS_NONE -#define CONFIG_BAUDRATE 9600 /* console baudrate = 9600bps */ +#define CONFIG_BAUDRATE 115200 /* console baudrate in bps */ #if 0 #define CONFIG_BOOTDELAY -1 /* autoboot disabled */ #else @@ -83,7 +83,7 @@ #endif /* CONFIG_LCD */ #endif -#undef CONFIG_CAN_DRIVER /* CAN Driver support disabled */ +#define CONFIG_CAN_DRIVER /* CAN Driver support enabled */ #define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_BOOTFILESIZE) @@ -113,9 +113,9 @@ else immr->im_cpm.cp_pbdat &= ~PB_SCL #define I2C_DELAY udelay(50) -#define CFG_I2C_PWM_ADDR 0x58 /* Power management coprocessor */ -#define CFG_I2C_KBD_ADDR 0x50 /* Keyboard coprocessor */ -#define CFG_I2C_TERM_ADDR 0x49 /* Temperature Sensors */ +#define CFG_I2C_LCD_ADDR 0x8 /* LCD Control */ +#define CFG_I2C_KEY_ADDR 0x9 /* Keyboard coprocessor */ +#define CFG_I2C_TEM_ADDR 0x49 /* Temperature Sensors */ #define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \ CFG_CMD_DHCP | \ @@ -232,11 +232,7 @@ *----------------------------------------------------------------------- * PCMCIA config., multi-function pin tri-state */ -#ifndef CONFIG_CAN_DRIVER #define CFG_SIUMCR (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01) -#else /* we must activate GPL5 in the SIUMCR for CAN */ -#define CFG_SIUMCR (SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01) -#endif /* CONFIG_CAN_DRIVER */ /*----------------------------------------------------------------------- * TBSCR - Time Base Status and Control 11-26 @@ -362,20 +358,31 @@ /* - * BR1 and OR1 (SDRAM) + * BR2 and OR2 (SDRAM) * */ -#define SDRAM_BASE1_PRELIM 0x00000000 /* SDRAM bank #0 */ +#define SDRAM_BASE2_PRELIM 0x00000000 /* SDRAM bank #0 */ #define SDRAM_MAX_SIZE 0x04000000 /* max 64 MB per bank */ -#define CFG_PRELIM_OR1_AM 0xF8000000 /* OR addr mask */ +#define CFG_PRELIM_OR2_AM 0xF8000000 /* OR addr mask */ /* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care) */ #define CFG_OR_TIMING_SDRAM (OR_ACS_DIV1 | OR_CSNT_SAM | \ OR_SCY_0_CLK | OR_G5LS) -#define CFG_OR1_PRELIM (CFG_PRELIM_OR1_AM | CFG_OR_TIMING_SDRAM ) -#define CFG_BR1_PRELIM ((SDRAM_BASE1_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V ) +#define CFG_OR2_PRELIM (CFG_PRELIM_OR2_AM | CFG_OR_TIMING_SDRAM ) +#define CFG_BR2_PRELIM ((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V ) + +/* + * BR3 and OR3 (CAN Controller) + */ +#ifdef CONFIG_CAN_DRIVER +#define CFG_CAN_BASE 0xC0000000 /* CAN base address */ +#define CFG_CAN_OR_AM 0xFFFF8000 /* 32 kB address mask */ +#define CFG_OR3_CAN (CFG_CAN_OR_AM | OR_G5LA |OR_BI) +#define CFG_BR3_CAN ((CFG_CAN_BASE & BR_BA_MSK) | \ + BR_PS_8 | BR_MS_UPMB | BR_V) +#endif /* CONFIG_CAN_DRIVER */ /* diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c index b60395e..f70c023 100644 --- a/tools/env/fw_env.c +++ b/tools/env/fw_env.c @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000 + * (C) Copyright 2000-2003 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -34,16 +34,16 @@ #include <linux/mtd/mtd.h> #include "fw_env.h" -typedef unsigned char uchar; +typedef unsigned char uchar; #define CMD_GETENV "fw_printenv" #define CMD_SETENV "fw_setenv" typedef struct envdev_s { - uchar devname[16]; /* Device name */ - ulong devoff; /* Device offset */ - ulong env_size; /* environment size */ - ulong erase_size; /* device erase size */ + uchar devname[16]; /* Device name */ + ulong devoff; /* Device offset */ + ulong env_size; /* environment size */ + ulong erase_size; /* device erase size */ } envdev_t; static envdev_t envdevices[2]; @@ -59,8 +59,8 @@ static int curdev; #define ENV_SIZE getenvsize() typedef struct environment_s { - ulong crc; /* CRC32 over data bytes */ - uchar flags; /* active or obsolete */ + ulong crc; /* CRC32 over data bytes */ + uchar flags; /* active or obsolete */ uchar *data; } env_t; @@ -77,92 +77,94 @@ static uchar obsolete_flag = 0; static uchar default_environment[] = { #if defined(CONFIG_BOOTARGS) - "bootargs=" CONFIG_BOOTARGS "\0" + "bootargs=" CONFIG_BOOTARGS "\0" #endif #if defined(CONFIG_BOOTCOMMAND) - "bootcmd=" CONFIG_BOOTCOMMAND "\0" + "bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif #if defined(CONFIG_RAMBOOTCOMMAND) - "ramboot=" CONFIG_RAMBOOTCOMMAND "\0" + "ramboot=" CONFIG_RAMBOOTCOMMAND "\0" #endif #if defined(CONFIG_NFSBOOTCOMMAND) - "nfsboot=" CONFIG_NFSBOOTCOMMAND "\0" + "nfsboot=" CONFIG_NFSBOOTCOMMAND "\0" #endif #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) - "bootdelay=" MK_STR(CONFIG_BOOTDELAY) "\0" + "bootdelay=" MK_STR (CONFIG_BOOTDELAY) "\0" #endif #if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0) - "baudrate=" MK_STR(CONFIG_BAUDRATE) "\0" + "baudrate=" MK_STR (CONFIG_BAUDRATE) "\0" #endif #ifdef CONFIG_LOADS_ECHO - "loads_echo=" MK_STR(CONFIG_LOADS_ECHO) "\0" + "loads_echo=" MK_STR (CONFIG_LOADS_ECHO) "\0" #endif #ifdef CONFIG_ETHADDR - "ethaddr=" MK_STR(CONFIG_ETHADDR) "\0" + "ethaddr=" MK_STR (CONFIG_ETHADDR) "\0" #endif #ifdef CONFIG_ETH1ADDR - "eth1addr=" MK_STR(CONFIG_ETH1ADDR) "\0" + "eth1addr=" MK_STR (CONFIG_ETH1ADDR) "\0" #endif #ifdef CONFIG_ETH2ADDR - "eth2addr=" MK_STR(CONFIG_ETH2ADDR) "\0" + "eth2addr=" MK_STR (CONFIG_ETH2ADDR) "\0" #endif #ifdef CONFIG_ETHPRIME - "ethprime=" CONFIG_ETHPRIME "\0" + "ethprime=" CONFIG_ETHPRIME "\0" #endif #ifdef CONFIG_IPADDR - "ipaddr=" MK_STR(CONFIG_IPADDR) "\0" + "ipaddr=" MK_STR (CONFIG_IPADDR) "\0" #endif #ifdef CONFIG_SERVERIP - "serverip=" MK_STR(CONFIG_SERVERIP) "\0" + "serverip=" MK_STR (CONFIG_SERVERIP) "\0" #endif #ifdef CFG_AUTOLOAD - "autoload=" CFG_AUTOLOAD "\0" + "autoload=" CFG_AUTOLOAD "\0" #endif #ifdef CONFIG_ROOTPATH - "rootpath=" MK_STR(CONFIG_ROOTPATH) "\0" + "rootpath=" MK_STR (CONFIG_ROOTPATH) "\0" #endif #ifdef CONFIG_GATEWAYIP - "gatewayip=" MK_STR(CONFIG_GATEWAYIP) "\0" + "gatewayip=" MK_STR (CONFIG_GATEWAYIP) "\0" #endif #ifdef CONFIG_NETMASK - "netmask=" MK_STR(CONFIG_NETMASK) "\0" + "netmask=" MK_STR (CONFIG_NETMASK) "\0" #endif #ifdef CONFIG_HOSTNAME - "hostname=" MK_STR(CONFIG_HOSTNAME) "\0" + "hostname=" MK_STR (CONFIG_HOSTNAME) "\0" #endif #ifdef CONFIG_BOOTFILE - "bootfile=" MK_STR(CONFIG_BOOTFILE) "\0" + "bootfile=" MK_STR (CONFIG_BOOTFILE) "\0" #endif #ifdef CONFIG_LOADADDR - "loadaddr=" MK_STR(CONFIG_LOADADDR) "\0" + "loadaddr=" MK_STR (CONFIG_LOADADDR) "\0" #endif #ifdef CONFIG_PREBOOT - "preboot=" CONFIG_PREBOOT "\0" + "preboot=" CONFIG_PREBOOT "\0" #endif #ifdef CONFIG_CLOCKS_IN_MHZ - "clocks_in_mhz=" "1" "\0" + "clocks_in_mhz=" "1" "\0" #endif #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0) - "pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0" + "pcidelay=" MK_STR (CONFIG_PCI_BOOTDELAY) "\0" #endif #ifdef CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_SETTINGS #endif - "\0" /* Termimate env_t data with 2 NULs */ + "\0" /* Termimate env_t data with 2 NULs */ }; -static int flash_io (int mode); -static uchar *envmatch(uchar *s1, uchar *s2); -static int env_init(void); -static int parse_config(void); +static int flash_io (int mode); +static uchar *envmatch (uchar * s1, uchar * s2); +static int env_init (void); +static int parse_config (void); + #if defined(CONFIG_FILE) -static int get_config(char *); +static int get_config (char *); #endif -static inline ulong getenvsize(void) +static inline ulong getenvsize (void) { - ulong rc = CFG_ENV_SIZE - sizeof(long); + ulong rc = CFG_ENV_SIZE - sizeof (long); + if (HaveRedundEnv) - rc -= sizeof(char); + rc -= sizeof (char); return rc; } @@ -174,20 +176,20 @@ unsigned char *fw_getenv (unsigned char *name) { uchar *env, *nxt; - if (env_init()) + if (env_init ()) return (NULL); - for (env=environment.data; *env; env=nxt+1) { + for (env = environment.data; *env; env = nxt + 1) { uchar *val; - for (nxt=env; *nxt; ++nxt) { + for (nxt = env; *nxt; ++nxt) { if (nxt >= &environment.data[ENV_SIZE]) { fprintf (stderr, "## Error: " "environment not terminated\n"); return (NULL); } } - val=envmatch(name, env); + val = envmatch (name, env); if (!val) continue; return (val); @@ -199,17 +201,17 @@ unsigned char *fw_getenv (unsigned char *name) * Print the current definition of one, or more, or all * environment variables */ -void fw_printenv(int argc, char *argv[]) +void fw_printenv (int argc, char *argv[]) { uchar *env, *nxt; int i, n_flag; - if (env_init()) + if (env_init ()) return; - if (argc == 1) { /* Print all env variables */ - for (env=environment.data; *env; env=nxt+1) { - for (nxt=env; *nxt; ++nxt) { + if (argc == 1) { /* Print all env variables */ + for (env = environment.data; *env; env = nxt + 1) { + for (nxt = env; *nxt; ++nxt) { if (nxt >= &environment.data[ENV_SIZE]) { fprintf (stderr, "## Error: " "environment not terminated\n"); @@ -217,12 +219,12 @@ void fw_printenv(int argc, char *argv[]) } } - printf("%s\n", env); + printf ("%s\n", env); } return; } - if (strcmp(argv[1], "-n") == 0) { + if (strcmp (argv[1], "-n") == 0) { n_flag = 1; ++argv; --argc; @@ -235,32 +237,31 @@ void fw_printenv(int argc, char *argv[]) n_flag = 0; } - for (i=1; i<argc; ++i) { /* print single env variables */ + for (i = 1; i < argc; ++i) { /* print single env variables */ uchar *name = argv[i]; uchar *val = NULL; - for (env=environment.data; *env; env=nxt+1) { + for (env = environment.data; *env; env = nxt + 1) { - for (nxt=env; *nxt; ++nxt) { + for (nxt = env; *nxt; ++nxt) { if (nxt >= &environment.data[ENV_SIZE]) { fprintf (stderr, "## Error: " "environment not terminated\n"); return; } } - val=envmatch(name, env); + val = envmatch (name, env); if (val) { if (!n_flag) { fputs (name, stdout); - putc ('=', stdout); + putc ('=', stdout); } - puts (val); + puts (val); break; } } if (!val) - fprintf (stderr, "## Error: \"%s\" not defined\n", - name); + fprintf (stderr, "## Error: \"%s\" not defined\n", name); } } @@ -274,7 +275,7 @@ void fw_printenv(int argc, char *argv[]) */ int fw_setenv (int argc, char *argv[]) { - int i, len; + int i, len; uchar *env, *nxt; uchar *oldval = NULL; uchar *name; @@ -283,7 +284,7 @@ int fw_setenv (int argc, char *argv[]) return (EINVAL); } - if (env_init()) + if (env_init ()) return (errno); name = argv[1]; @@ -291,15 +292,15 @@ int fw_setenv (int argc, char *argv[]) /* * search if variable with this name already exists */ - for (env=environment.data; *env; env=nxt+1) { - for (nxt=env; *nxt; ++nxt) { + for (nxt = env = environment.data; *env; env = nxt + 1) { + for (nxt = env; *nxt; ++nxt) { if (nxt >= &environment.data[ENV_SIZE]) { fprintf (stderr, "## Error: " "environment not terminated\n"); return (EINVAL); } } - if ((oldval=envmatch(name, env)) != NULL) + if ((oldval = envmatch (name, env)) != NULL) break; } @@ -311,7 +312,7 @@ int fw_setenv (int argc, char *argv[]) * Ethernet Address and serial# can be set only once */ if ((strcmp (name, "ethaddr") == 0) || - (strcmp (name, "serial#") == 0) ) { + (strcmp (name, "serial#") == 0)) { fprintf (stderr, "Can't overwrite \"%s\"\n", name); return (EROFS); } @@ -336,20 +337,19 @@ int fw_setenv (int argc, char *argv[]) /* * Append new definition at the end */ - for (env=environment.data; *env || *(env+1); ++env) - ; + for (env = environment.data; *env || *(env + 1); ++env); if (env > environment.data) ++env; /* * Overflow when: * "name" + "=" + "val" +"\0\0" > CFG_ENV_SIZE - (env-environment) */ - len = strlen(name) + 2; + len = strlen (name) + 2; /* add '=' for first arg, ' ' for all others */ - for (i=2; i<argc; ++i) { - len += strlen(argv[i]) + 1; + for (i = 2; i < argc; ++i) { + len += strlen (argv[i]) + 1; } - if (len > (&environment.data[ENV_SIZE]-env)) { + if (len > (&environment.data[ENV_SIZE] - env)) { fprintf (stderr, "Error: environment overflow, \"%s\" deleted\n", name); @@ -357,26 +357,24 @@ int fw_setenv (int argc, char *argv[]) } while ((*env = *name++) != '\0') env++; - for (i=2; i<argc; ++i) { + for (i = 2; i < argc; ++i) { uchar *val = argv[i]; - *env = (i==2) ? '=' : ' '; - while ((*++env = *val++) != '\0') - ; + *env = (i == 2) ? '=' : ' '; + while ((*++env = *val++) != '\0'); } /* end is marked with double '\0' */ *++env = '\0'; -WRITE_FLASH: + WRITE_FLASH: /* Update CRC */ - environment.crc = crc32(0, environment.data, ENV_SIZE); + environment.crc = crc32 (0, environment.data, ENV_SIZE); /* write environment back to flash */ if (flash_io (O_RDWR)) { - fprintf (stderr, - "Error: can't write fw_env to flash\n"); + fprintf (stderr, "Error: can't write fw_env to flash\n"); return (-1); } @@ -389,166 +387,172 @@ static int flash_io (int mode) erase_info_t erase; char *data; - if ((fd = open(DEVNAME(curdev), mode)) < 0) { - fprintf (stderr, - "Can't open %s: %s\n", - DEVNAME(curdev), strerror(errno)); + if ((fd = open (DEVNAME (curdev), mode)) < 0) { + fprintf (stderr, + "Can't open %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } - len = sizeof(environment.crc); + len = sizeof (environment.crc); if (HaveRedundEnv) { - len += sizeof(environment.flags); + len += sizeof (environment.flags); } if (mode == O_RDWR) { if (HaveRedundEnv) { /* switch to next partition for writing */ otherdev = !curdev; - if ((fdr = open(DEVNAME(otherdev), mode)) < 0) { - fprintf (stderr, - "Can't open %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + if ((fdr = open (DEVNAME (otherdev), mode)) < 0) { + fprintf (stderr, + "Can't open %s: %s\n", + DEVNAME (otherdev), + strerror (errno)); return (-1); } } else { otherdev = curdev; fdr = fd; } - printf("Unlocking flash...\n"); - erase.length = DEVESIZE(otherdev); - erase.start = DEVOFFSET(otherdev); + printf ("Unlocking flash...\n"); + erase.length = DEVESIZE (otherdev); + erase.start = DEVOFFSET (otherdev); ioctl (fdr, MEMUNLOCK, &erase); if (HaveRedundEnv) { - erase.length = DEVESIZE(curdev); - erase.start = DEVOFFSET(curdev); + erase.length = DEVESIZE (curdev); + erase.start = DEVOFFSET (curdev); ioctl (fd, MEMUNLOCK, &erase); environment.flags = active_flag; } - printf("Done\n"); - resid = DEVESIZE(otherdev) - CFG_ENV_SIZE; + printf ("Done\n"); + resid = DEVESIZE (otherdev) - CFG_ENV_SIZE; if (resid) { - if ((data = malloc(resid)) == NULL) { - fprintf(stderr, - "Cannot malloc %d bytes: %s\n", - resid, strerror(errno)); + if ((data = malloc (resid)) == NULL) { + fprintf (stderr, + "Cannot malloc %d bytes: %s\n", + resid, + strerror (errno)); return (-1); } - if (lseek (fdr, DEVOFFSET(otherdev) + CFG_ENV_SIZE, SEEK_SET) == -1) { - fprintf (stderr, - "seek error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + if (lseek (fdr, DEVOFFSET (otherdev) + CFG_ENV_SIZE, SEEK_SET) + == -1) { + fprintf (stderr, "seek error on %s: %s\n", + DEVNAME (otherdev), + strerror (errno)); return (-1); } if ((rc = read (fdr, data, resid)) != resid) { fprintf (stderr, - "read error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + "read error on %s: %s\n", + DEVNAME (otherdev), + strerror (errno)); return (-1); } } - printf("Erasing old environment...\n"); + printf ("Erasing old environment...\n"); - erase.length = DEVESIZE(otherdev); - erase.start = DEVOFFSET(otherdev); + erase.length = DEVESIZE (otherdev); + erase.start = DEVOFFSET (otherdev); if (ioctl (fdr, MEMERASE, &erase) != 0) { fprintf (stderr, "MTD erase error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + DEVNAME (otherdev), + strerror (errno)); return (-1); } - printf("Done\n"); + printf ("Done\n"); - printf("Writing environment to %s...\n",DEVNAME(otherdev)); - if (lseek (fdr, DEVOFFSET(otherdev), SEEK_SET) == -1) { + printf ("Writing environment to %s...\n", DEVNAME (otherdev)); + if (lseek (fdr, DEVOFFSET (otherdev), SEEK_SET) == -1) { fprintf (stderr, - "seek error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + "seek error on %s: %s\n", + DEVNAME (otherdev), strerror (errno)); return (-1); } - if (write(fdr, &environment, len) != len) { + if (write (fdr, &environment, len) != len) { fprintf (stderr, - "CRC write error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + "CRC write error on %s: %s\n", + DEVNAME (otherdev), strerror (errno)); return (-1); } - if (write(fdr, environment.data, ENV_SIZE) != ENV_SIZE) { + if (write (fdr, environment.data, ENV_SIZE) != ENV_SIZE) { fprintf (stderr, - "Write error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + "Write error on %s: %s\n", + DEVNAME (otherdev), strerror (errno)); return (-1); } if (resid) { if (write (fdr, data, resid) != resid) { fprintf (stderr, - "write error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "write error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } - free(data); + free (data); } if (HaveRedundEnv) { /* change flag on current active env partition */ - if (lseek (fd, DEVOFFSET(curdev) + sizeof(ulong), SEEK_SET) == -1) { - fprintf (stderr, - "seek error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + if (lseek (fd, DEVOFFSET (curdev) + sizeof (ulong), SEEK_SET) + == -1) { + fprintf (stderr, "seek error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } - if (write (fd, &obsolete_flag, sizeof(obsolete_flag)) != - sizeof(obsolete_flag)) { + if (write (fd, &obsolete_flag, sizeof (obsolete_flag)) != + sizeof (obsolete_flag)) { fprintf (stderr, - "Write error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "Write error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } } - printf("Done\n"); - printf("Locking ...\n"); - erase.length = DEVESIZE(otherdev); - erase.start = DEVOFFSET(otherdev); + printf ("Done\n"); + printf ("Locking ...\n"); + erase.length = DEVESIZE (otherdev); + erase.start = DEVOFFSET (otherdev); ioctl (fdr, MEMLOCK, &erase); if (HaveRedundEnv) { - erase.length = DEVESIZE(curdev); - erase.start = DEVOFFSET(curdev); + erase.length = DEVESIZE (curdev); + erase.start = DEVOFFSET (curdev); ioctl (fd, MEMLOCK, &erase); - if (close(fdr)) { + if (close (fdr)) { fprintf (stderr, - "I/O error on %s: %s\n", - DEVNAME(otherdev), strerror(errno)); + "I/O error on %s: %s\n", + DEVNAME (otherdev), + strerror (errno)); return (-1); } } - printf("Done\n"); + printf ("Done\n"); } else { - if (lseek (fd, DEVOFFSET(curdev), SEEK_SET) == -1) { + if (lseek (fd, DEVOFFSET (curdev), SEEK_SET) == -1) { fprintf (stderr, - "seek error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "seek error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } if (read (fd, &environment, len) != len) { fprintf (stderr, - "CRC read error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "CRC read error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } if ((rc = read (fd, environment.data, ENV_SIZE)) != ENV_SIZE) { fprintf (stderr, - "Read error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "Read error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } } - if (close(fd)) { + if (close (fd)) { fprintf (stderr, - "I/O error on %s: %s\n", - DEVNAME(curdev), strerror(errno)); + "I/O error on %s: %s\n", + DEVNAME (curdev), strerror (errno)); return (-1); } @@ -562,22 +566,21 @@ static int flash_io (int mode) * If the names match, return the value of s2, else NULL. */ -static uchar * -envmatch (uchar *s1, uchar *s2) +static uchar *envmatch (uchar * s1, uchar * s2) { while (*s1 == *s2++) if (*s1++ == '=') - return(s2); - if (*s1 == '\0' && *(s2-1) == '=') - return(s2); - return(NULL); + return (s2); + if (*s1 == '\0' && *(s2 - 1) == '=') + return (s2); + return (NULL); } /* * Prevent confusion if running from erased flash memory */ -static int env_init(void) +static int env_init (void) { int crc1, crc1_ok; uchar *addr1; @@ -585,151 +588,142 @@ static int env_init(void) int crc2, crc2_ok; uchar flag1, flag2, *addr2; - if (parse_config()) /* should fill envdevices */ + if (parse_config ()) /* should fill envdevices */ return 1; - + if ((addr1 = calloc (1, ENV_SIZE)) == NULL) { - fprintf (stderr, - "Not enough memory for environment (%ld bytes)\n", - ENV_SIZE); + fprintf (stderr, + "Not enough memory for environment (%ld bytes)\n", + ENV_SIZE); return (errno); } - + /* read environment from FLASH to local buffer */ environment.data = addr1; curdev = 0; if (flash_io (O_RDONLY)) { return (errno); } - - crc1_ok = ((crc1 = crc32(0, environment.data, ENV_SIZE)) + + crc1_ok = ((crc1 = crc32 (0, environment.data, ENV_SIZE)) == environment.crc); if (!HaveRedundEnv) { if (!crc1_ok) { - fprintf (stderr, - "Warning: Bad CRC, using default environment\n"); + fprintf (stderr, + "Warning: Bad CRC, using default environment\n"); environment.data = default_environment; - free(addr1); + free (addr1); } } else { flag1 = environment.flags; - + curdev = 1; if ((addr2 = calloc (1, ENV_SIZE)) == NULL) { - fprintf (stderr, - "Not enough memory for environment (%ld bytes)\n", - ENV_SIZE); + fprintf (stderr, + "Not enough memory for environment (%ld bytes)\n", + ENV_SIZE); return (errno); - } + } environment.data = addr2; - + if (flash_io (O_RDONLY)) { return (errno); } - - crc2_ok = ((crc2 = crc32(0, environment.data, ENV_SIZE)) + + crc2_ok = ((crc2 = crc32 (0, environment.data, ENV_SIZE)) == environment.crc); flag2 = environment.flags; - - if (crc1_ok && ! crc2_ok) { - environment.data = addr1; + + if (crc1_ok && !crc2_ok) { + environment.data = addr1; environment.flags = flag1; environment.crc = crc1; curdev = 0; - free(addr2); - } - else if (! crc1_ok && crc2_ok) { - environment.data = addr2; + free (addr2); + } else if (!crc1_ok && crc2_ok) { + environment.data = addr2; environment.flags = flag2; environment.crc = crc2; curdev = 1; - free(addr1); - } - else if (! crc1_ok && ! crc2_ok) { - fprintf (stderr, - "Warning: Bad CRC, using default environment\n"); + free (addr1); + } else if (!crc1_ok && !crc2_ok) { + fprintf (stderr, + "Warning: Bad CRC, using default environment\n"); environment.data = default_environment; curdev = 0; - free(addr2); - free(addr1); - } - else if (flag1 == active_flag && flag2 == obsolete_flag) { - environment.data = addr1; + free (addr2); + free (addr1); + } else if (flag1 == active_flag && flag2 == obsolete_flag) { + environment.data = addr1; environment.flags = flag1; environment.crc = crc1; curdev = 0; - free(addr2); - } - else if (flag1 == obsolete_flag && flag2 == active_flag) { - environment.data = addr2; + free (addr2); + } else if (flag1 == obsolete_flag && flag2 == active_flag) { + environment.data = addr2; environment.flags = flag2; environment.crc = crc2; curdev = 1; - free(addr1); - } - else if (flag1 == flag2) { - environment.data = addr1; + free (addr1); + } else if (flag1 == flag2) { + environment.data = addr1; environment.flags = flag1; environment.crc = crc1; curdev = 0; - free(addr2); - } - else if (flag1 == 0xFF) { - environment.data = addr1; + free (addr2); + } else if (flag1 == 0xFF) { + environment.data = addr1; environment.flags = flag1; environment.crc = crc1; curdev = 0; - free(addr2); - } - else if (flag2 == 0xFF) { - environment.data = addr2; + free (addr2); + } else if (flag2 == 0xFF) { + environment.data = addr2; environment.flags = flag2; environment.crc = crc2; curdev = 1; - free(addr1); + free (addr1); } } return (0); } -static int parse_config() +static int parse_config () { struct stat st; #if defined(CONFIG_FILE) /* Fills in DEVNAME(), ENVSIZE(), DEVESIZE(). Or don't. */ - if (get_config(CONFIG_FILE)) { + if (get_config (CONFIG_FILE)) { fprintf (stderr, - "Cannot parse config file: %s\n", - strerror(errno)); + "Cannot parse config file: %s\n", strerror (errno)); return 1; } - #else - strcpy(DEVNAME(0), DEVICE1_NAME); - DEVOFFSET(0) = DEVICE1_OFFSET; - ENVSIZE(0) = ENV1_SIZE; - DEVESIZE(0) = DEVICE1_ESIZE; + strcpy (DEVNAME (0), DEVICE1_NAME); + DEVOFFSET (0) = DEVICE1_OFFSET; + ENVSIZE (0) = ENV1_SIZE; + DEVESIZE (0) = DEVICE1_ESIZE; #ifdef HAVE_REDUND - strcpy(DEVNAME(1), DEVICE2_NAME); - DEVOFFSET(1) = DEVICE2_OFFSET; - ENVSIZE(1) = ENV2_SIZE; - DEVESIZE(1) = DEVICE2_ESIZE; + strcpy (DEVNAME (1), DEVICE2_NAME); + DEVOFFSET (1) = DEVICE2_OFFSET; + ENVSIZE (1) = ENV2_SIZE; + DEVESIZE (1) = DEVICE2_ESIZE; HaveRedundEnv = 1; #endif #endif - if (stat (DEVNAME(0), &st)) { - fprintf (stderr, - "Cannot access MTD device %s: %s\n", - DEVNAME(0), strerror(errno)); + if (stat (DEVNAME (0), &st)) { + fprintf (stderr, + "Cannot access MTD device %s: %s\n", + DEVNAME (0), strerror (errno)); return 1; } - - if (HaveRedundEnv && stat (DEVNAME(1), &st)) { - fprintf (stderr, - "Cannot access MTD device %s: %s\n", - DEVNAME(2), strerror(errno)); + + if (HaveRedundEnv && stat (DEVNAME (1), &st)) { + fprintf (stderr, + "Cannot access MTD device %s: %s\n", + DEVNAME (2), strerror (errno)); return 1; } return 0; @@ -743,26 +737,28 @@ static int get_config (char *fname) int rc; char dump[128]; - if ((fp = fopen(fname, "r")) == NULL) { + if ((fp = fopen (fname, "r")) == NULL) { return 1; } - while ((i < 2) && - ((rc = fscanf (fp, "%s %lx %lx %lx", - DEVNAME(i), &DEVOFFSET(i), &ENVSIZE(i), &DEVESIZE(i))) != EOF)) { + while ((i < 2) && ((rc = fscanf (fp, "%s %lx %lx %lx", + DEVNAME (i), + &DEVOFFSET (i), + &ENVSIZE (i), + &DEVESIZE (i) )) != EOF)) { /* Skip incomplete conversions and comment strings */ - if ((rc < 3) || (*DEVNAME(i) == '#')) { - fgets (dump, sizeof(dump), fp); /* Consume till end */ + if ((rc < 3) || (*DEVNAME (i) == '#')) { + fgets (dump, sizeof (dump), fp); /* Consume till end */ continue; } i++; } - fclose(fp); - + fclose (fp); + HaveRedundEnv = i - 1; - if (!i) { /* No valid entries found */ + if (!i) { /* No valid entries found */ errno = EINVAL; return 1; } else |