From 78137c3c93f3ff50f843b7a671739c8ae5704c3a Mon Sep 17 00:00:00 2001 From: wdenk Date: Mon, 15 Sep 2003 18:00:00 +0000 Subject: [PATCH] * Patches by Jon Diekema, 15 Sep 2003: - add description for missing CFG_CMD_* entries in the README file - sacsng tweaks: include/configs/sacsng.h: + Support extra bootp options like: 2nd DNS and send hostname + Enabling ping and irq command + Adding defines for a bunch of misc configrabled options (patches for these options will be coming) + Adding watchdog support, but it isn't enabled yet. board/sacsng/sacsng.c: + Suppressing unneeded output when the quiet environment is non-zero. + show_boot_progress() now accepts any negative number as a failure code. + show_boot_progress() flashes the error code 5 times, and then resets the board to retry the boot from the top * Patch by Gleb Natapov, 14 Sep 2003: enable watchdog support for all MPC824x boards that have a watchdog --- CHANGELOG | 4 ++ README | 15 +++++++ board/sacsng/sacsng.c | 92 +++++++++++++++++++++++++++++++++------- include/configs/sacsng.h | 81 +++++++++++++++++++++++++++++++---- 4 files changed, 168 insertions(+), 24 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 93e7c7f83e..0d7c5d7afe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,10 @@ Changes for U-Boot 1.0.0: ====================================================================== +* Patches by Jon Diekema, 15 Sep 2003: + - add description for missing CFG_CMD_* entries in the README file + - sacsng tweaks + * Patch by Gleb Natapov, 14 Sep 2003: enable watchdog support for all MPC824x boards that have a watchdog diff --git a/README b/README index e431c29a74..691140f53c 100644 --- a/README +++ b/README @@ -573,13 +573,18 @@ The following options need to be configured: #define enables commands: ------------------------- CFG_CMD_ASKENV * ask for env variable + CFG_CMD_AUTOSCRIPT Autoscript Support CFG_CMD_BDI bdinfo CFG_CMD_BEDBUG Include BedBug Debugger + CFG_CMD_BMP * BMP support CFG_CMD_BOOTD bootd CFG_CMD_CACHE icache, dcache CFG_CMD_CONSOLE coninfo CFG_CMD_DATE * support for RTC, date/time... CFG_CMD_DHCP DHCP support + CFG_CMD_DIAG * Diagnostics + CFG_CMD_DOC * Disk-On-Chip Support + CFG_CMD_DTT Digital Therm and Thermostat CFG_CMD_ECHO * echo arguments CFG_CMD_EEPROM * EEPROM read/write support CFG_CMD_ELF bootelf, bootvx @@ -589,27 +594,37 @@ The following options need to be configured: CFG_CMD_FDOS * Dos diskette Support CFG_CMD_FLASH flinfo, erase, protect CFG_CMD_FPGA FPGA device initialization support + CFG_CMD_HWFLOW * RTS/CTS hw flow control CFG_CMD_I2C * I2C serial bus support CFG_CMD_IDE * IDE harddisk support CFG_CMD_IMI iminfo + CFG_CMD_IMLS List all found images CFG_CMD_IMMAP * IMMR dump support CFG_CMD_IRQ * irqinfo + CFG_CMD_JFFS2 * JFFS2 Support CFG_CMD_KGDB * kgdb CFG_CMD_LOADB loadb CFG_CMD_LOADS loads CFG_CMD_MEMORY md, mm, nm, mw, cp, cmp, crc, base, loop, mtest + CFG_CMD_MISC Misc functions like sleep etc CFG_CMD_MMC MMC memory mapped support CFG_CMD_MII MII utility commands + CFG_CMD_NAND * NAND support CFG_CMD_NET bootp, tftpboot, rarpboot CFG_CMD_PCI * pciinfo CFG_CMD_PCMCIA * PCMCIA support + CFG_CMD_PING * send ICMP ECHO_REQUEST to network host + CFG_CMD_PORTIO Port I/O CFG_CMD_REGINFO * Register dump CFG_CMD_RUN run command in env variable + CFG_CMD_SAVES save S record dump CFG_CMD_SCSI * SCSI Support + CFG_CMD_SDRAM * print SDRAM configuration information CFG_CMD_SETGETDCR Support for DCR Register access (4xx only) CFG_CMD_SPI * SPI serial bus support CFG_CMD_USB * USB support + CFG_CMD_VFD * VFD support (TRAB) CFG_CMD_BSP * Board SPecific functions ----------------------------------------------- CFG_CMD_ALL all diff --git a/board/sacsng/sacsng.c b/board/sacsng/sacsng.c index eb7e416df5..60563d4ab2 100644 --- a/board/sacsng/sacsng.c +++ b/board/sacsng/sacsng.c @@ -28,11 +28,18 @@ #include #include #include +#include #ifdef CONFIG_SHOW_BOOT_PROGRESS #include #endif +#ifdef CONFIG_ETHER_LOOPBACK_TEST +extern void eth_loopback_test(void); +#endif /* CONFIG_ETHER_LOOPBACK_TEST */ + +extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + #include "clkinit.h" #include "ioconfig.h" /* I/O configuration table */ @@ -243,15 +250,15 @@ long int initdram(int board_type) /* We don't trust CL less than 2 (only saw it on an old 16MByte DIMM) */ if(caslatency < 2) { - printf("CL was %d, forcing to 2\n", caslatency); + printf("WARNING: CL was %d, forcing to 2\n", caslatency); caslatency = 2; } if(rows > 14) { - printf("This doesn't look good, rows = %d, should be <= 14\n", rows); + printf("WARNING: This doesn't look good, rows = %d, should be <= 14\n", rows); rows = 14; } if(cols > 11) { - printf("This doesn't look good, columns = %d, should be <= 11\n", cols); + printf("WARNING: This doesn't look good, columns = %d, should be <= 11\n", cols); cols = 11; } @@ -450,6 +457,15 @@ int misc_init_r(void) int sample_128x; /* Use 128/4 clocking for the ADC/DAC */ int right_just; /* Is the data to the DAC right justified? */ int mclk_divide; /* MCLK Divide */ + int quiet; /* Quiet or minimal output mode */ + + quiet = 0; + if ((ep = getenv("quiet")) != NULL) { + quiet = simple_strtol(ep, NULL, 10); + } + else { + setenv("quiet", "0"); + } /* * SACSng custom initialization: @@ -517,8 +533,12 @@ int misc_init_r(void) setenv("Daq128xSampling", "1"); } - /* Display the ADC/DAC clocking information */ - Daq_Display_Clocks(); + /* + * Display the ADC/DAC clocking information + */ + if (!quiet) { + Daq_Display_Clocks(); + } /* * Determine the DAC data justification @@ -552,8 +572,10 @@ int misc_init_r(void) * 3) Write the I2C address to register 6 * 4) Enable address matching by setting the MSB in register 7 */ - - printf("Initializing the ADC...\n"); + + if (!quiet) { + printf("Initializing the ADC...\n"); + } udelay(ADC_INITIAL_DELAY); /* 10uSec per uF of VREF cap */ iopa->pdat &= ~ADC_SDATA1_MASK; /* release SDATA1 */ @@ -615,7 +637,9 @@ int misc_init_r(void) * sending an I2C "start" sequence. When we bring the I2C back to * the normal state, we send an I2C "stop" sequence. */ - printf("Initializing the DAC...\n"); + if (!quiet) { + printf("Initializing the DAC...\n"); + } /* * Bring the I2C clock and data lines low for initialization @@ -695,7 +719,16 @@ int misc_init_r(void) I2C_DELAY; I2C_TRISTATE; - printf("\n"); + if (!quiet) { + printf("\n"); + } + +#ifdef CONFIG_ETHER_LOOPBACK_TEST + /* + * Run the Ethernet loopback test + */ + eth_loopback_test (); +#endif /* CONFIG_ETHER_LOOPBACK_TEST */ #ifdef CONFIG_SHOW_BOOT_PROGRESS /* @@ -758,17 +791,44 @@ static int last_boot_progress; void show_boot_progress (int status) { - if(status != -1) { + int i,j; + if(status > 0) { last_boot_progress = status; } else { + /* + * If a specific failure code is given, flash this code + * else just use the last success code we've seen + */ + if(status < -1) + last_boot_progress = -status; + + /* + * Flash this code 5 times + */ + for(j=0; j<5; j++) { + /* + * Houston, we have a problem. + * Blink the last OK status which indicates where things failed. + */ + status_led_set(STATUS_LED_RED, STATUS_LED_ON); + flash_code(last_boot_progress, 5, 3); + + /* + * Delay 5 seconds between repetitions, + * with the fault LED blinking + */ + for(i=0; i<5; i++) { + status_led_set(STATUS_LED_RED, STATUS_LED_OFF); + udelay(500000); + status_led_set(STATUS_LED_RED, STATUS_LED_ON); + udelay(500000); + } + } + /* - * Houston, we have a problem. Blink the last OK status which - * indicates where things failed. + * Reset the board to retry initialization. */ - status_led_set(STATUS_LED_RED, STATUS_LED_ON); - flash_code(last_boot_progress, 5, 3); - udelay(1000000); - status_led_set(STATUS_LED_RED, STATUS_LED_BLINKING); + do_reset (NULL, 0, 0, NULL); } } #endif /* CONFIG_SHOW_BOOT_PROGRESS */ diff --git a/include/configs/sacsng.h b/include/configs/sacsng.h index 6fd8abc9c3..cc4936677d 100644 --- a/include/configs/sacsng.h +++ b/include/configs/sacsng.h @@ -35,10 +35,11 @@ #ifndef __CONFIG_H #define __CONFIG_H -/* Enable debug prints */ #undef DEBUG /* General debug */ #undef DEBUG_BOOTP_EXT /* Debug received vendor fields */ +#undef CONFIG_LOGBUFFER /* External logbuffer support */ + /***************************************************************************** * * These settings must match the way _your_ board is set up @@ -172,6 +173,7 @@ #ifdef CONFIG_ETHER_ON_FCC #define CONFIG_ETHER_INDEX 2 /* which SCC/FCC channel for ethernet */ +#undef CONFIG_ETHER_LOOPBACK_TEST /* Ethernet external loopback test */ #define CONFIG_MII /* MII PHY management */ #define CONFIG_BITBANGMII /* bit-bang MII PHY management */ /* @@ -318,10 +320,12 @@ * will be part of the default enviroment compiled into the boot image. */ #define CONFIG_EXTRA_ENV_SETTINGS \ -"serverip=192.168.123.201\0" \ +"quiet=0\0" \ +"serverip=192.168.123.205\0" \ "ipaddr=192.168.123.203\0" \ "checkhostname=VR8500\0" \ "reprog="\ + "bootp; " \ "tftpboot 0x140000 /bdi2000/u-boot.bin; " \ "protect off 60000000 6003FFFF; " \ "erase 60000000 6003FFFF; " \ @@ -405,7 +409,7 @@ "adc-12=echo ### ADC-12 ; imd.b e 81 e\0" \ "adc-34=echo ### ADC-34 ; imd.b f 81 e\0" \ "dac=echo ### DAC ; imd.b 11 81 5\0" \ -"boot-hook=run ana\0" +"boot-hook=echo\0" /* What should the console's baud rate be? */ #define CONFIG_BAUDRATE 9600 @@ -466,15 +470,16 @@ #define CONFIG_BOOTP_RANDOM_DELAY /* Randomize the BOOTP retry delay */ -#define CONFIG_BOOTP_RETRY_COUNT 0x40000000 /* # of timeouts before giving up */ - /* Add support for a few extra bootp options like: * - File size - * - DNS + * - DNS (up to 2 servers) + * - Send hostname to DHCP server */ #define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | \ CONFIG_BOOTP_BOOTFILESIZE | \ - CONFIG_BOOTP_DNS) + CONFIG_BOOTP_DNS | \ + CONFIG_BOOTP_DNS2 | \ + CONFIG_BOOTP_SEND_HOSTNAME) /* undef this to save memory */ #define CFG_LONGHELP @@ -492,6 +497,11 @@ */ #define CONFIG_TIMESTAMP +/* If this variable is defined, an environment variable named "ver" + * is created by U-Boot showing the U-Boot version. + */ +#define CONFIG_VERSION_VARIABLE + /* What U-Boot subsytems do you want enabled? */ #ifdef CONFIG_ETHER_ON_FCC # define CONFIG_COMMANDS (((CONFIG_CMD_DFL & ~(CFG_CMD_KGDB))) | \ @@ -503,6 +513,8 @@ CFG_CMD_SDRAM | \ CFG_CMD_REGINFO | \ CFG_CMD_IMMAP | \ + CFG_CMD_IRQ | \ + CFG_CMD_PING | \ CFG_CMD_MII ) #else # define CONFIG_COMMANDS (((CONFIG_CMD_DFL & ~(CFG_CMD_KGDB))) | \ @@ -513,12 +525,16 @@ CFG_CMD_SPI | \ CFG_CMD_SDRAM | \ CFG_CMD_REGINFO | \ - CFG_CMD_IMMAP ) + CFG_CMD_IMMAP | \ + CFG_CMD_IRQ | \ + CFG_CMD_PING ) #endif /* CONFIG_ETHER_ON_FCC */ /* Where do the internal registers live? */ #define CFG_IMMR 0xF0000000 +#undef CONFIG_WATCHDOG /* disable the watchdog */ + /***************************************************************************** * * You should not have to modify any of the following settings @@ -532,9 +548,48 @@ /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ #include + /* * Miscellaneous configurable options */ +#define CFG_BOOTM_HEADER_QUIET 1 /* Suppress the image header dump */ + /* in the bootm command. */ +#define CFG_BOOTM_PROGESS_QUIET 1 /* Suppress the progress displays, */ + /* "## " from the bootm cmd */ +#define CFG_BOOTP_CHECK_HOSTNAME 1 /* If checkhostname environment is */ + /* defined, then the hostname param */ + /* validated against checkhostname. */ +#define CFG_BOOTP_RETRY_COUNT 0x40000000 /* # of timeouts before giving up */ +#define CFG_BOOTP_SHORT_RANDOM_DELAY 1 /* Use a short random delay value */ + /* (limited to maximum of 1024 msec) */ +#define CFG_CHK_FOR_ABORT_AT_LEAST_ONCE 1 + /* Check for abort key presses */ + /* at least once in dependent of the */ + /* CONFIG_BOOTDELAY value. */ +#define CFG_CONSOLE_INFO_QUIET 1 /* Don't print console @ startup */ +#define CFG_FAULT_ECHO_LINK_DOWN 1 /* Echo the inverted Ethernet link */ + /* state to the fault LED. */ +#define CFG_FAULT_MII_ADDR 0x02 /* MII addr of the PHY to check for */ + /* the Ethernet link state. */ +#define CFG_STATUS_FLASH_UNTIL_TFTP_OK 1 /* Keeping the status LED flashing */ + /* until the TFTP is successful. */ +#define CFG_STATUS_OFF_AFTER_NETBOOT 1 /* After a successful netboot, */ + /* turn off the STATUS LEDs. */ +#define CFG_TFTP_BLINK_STATUS_ON_DATA_IN 1 /* Blink status LED based on */ + /* incoming data. */ +#define CFG_TFTP_BLOCKS_PER_HASH 100 /* For every XX blocks, output a '#' */ + /* to signify that tftp is moving. */ +#define CFG_TFTP_HASHES_PER_FLASH 200 /* For every '#' hashes, */ + /* flash the status LED. */ +#define CFG_TFTP_HASHES_PER_LINE 65 /* Only output XX '#'s per line */ + /* during the tftp file transfer. */ +#define CFG_TFTP_PROGESS_QUIET 1 /* Suppress the progress displays */ + /* '#'s from the tftp command. */ +#define CFG_TFTP_STATUS_QUIET 1 /* Suppress the status displays */ + /* issued during the tftp command. */ +#define CFG_TFTP_TIMEOUT_COUNT 5 /* How many timeouts TFTP will allow */ + /* before it gives up. */ + #if (CONFIG_COMMANDS & CFG_CMD_KGDB) # define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ #else @@ -734,12 +789,22 @@ *----------------------------------------------------------------------- * Watchdog & Bus Monitor Timer max, 60x Bus Monitor enable */ +#if defined(CONFIG_WATCHDOG) +#define CFG_SYPCR (SYPCR_SWTC |\ + SYPCR_BMT |\ + SYPCR_PBME |\ + SYPCR_LBME |\ + SYPCR_SWRI |\ + SYPCR_SWP |\ + SYPCR_SWE) +#else #define CFG_SYPCR (SYPCR_SWTC |\ SYPCR_BMT |\ SYPCR_PBME |\ SYPCR_LBME |\ SYPCR_SWRI |\ SYPCR_SWP) +#endif /* CONFIG_WATCHDOG */ /*----------------------------------------------------------------------- * TMCNTSC - Time Counter Status and Control 4-40 -- 2.30.2