mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	- Hymod board database mods: add "who" field and new xilinx chip types
- provide new "init_cmd_timeout()" function so code external to
  "common/main.c" can use the "reset_cmd_timeout()" function before
  entering the main loop
- add DTT support for adm1021 (new file dtt/adm1021.c; config
  slightly different. see include/configs/hymod.h for an example
  (requires CONFIG_DTT_ADM1021, CONFIG_DTT_SENSORS, and
  CFG_DTT_ADM1021 defined)
- add new "eeprom_probe()" function which has similar args and
  behaves in a similar way to "eeprom_read()" etc.
- add 8260 FCC ethernet loopback code (new "eth_loopback_test()"
  function which is enabled by defining CONFIG_ETHER_LOOPBACK_TEST)
- gdbtools copyright update
- ensure that set_msr() executes the "sync" and "isync" instructions
  after the "mtmsr" instruction in cpu/mpc8260/interrupts.c
- 8260 I/O ports fix: Open Drain should be set last when configuring
- add SIU IRQ defines for 8260
- allow LDSCRIPT override and OBJCFLAGS initialization: change to
  config.mk to allow board configurations to override the GNU
  linker script, selected via the LDSCRIPT, make variable, and to
  give an initial value to the OBJCFLAGS make variable
- 8260 i2c enhancement:
  o correctly extends the timeout depending on the size of all
    queued messages for both transmit and receive
  o will not continue with receive if transmit times out
  o ensures that the error callback is done for all queued tx
    and rx messages
  o correctly detects both tx and rx timeouts, only delivers one to
    the callback, and does not overwrite an earlier error
  o logic in i2c_probe now correct
- add "vprintf()" function so that "panic()" function can be
  technically correct
- many Hymod board changes
		
	
			
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * (C) Copyright 2001
 | |
|  * Murray Jensen, CSIRO-MIT, <Murray.Jensen@csiro.au>
 | |
|  *
 | |
|  * See file CREDITS for list of people who contributed to this
 | |
|  * project.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License as
 | |
|  * published by the Free Software Foundation; either version 2 of
 | |
|  * the License, or (at your option) any later version.
 | |
|  *
 | |
|  * 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
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software
 | |
|  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 | |
|  * MA 02111-1307 USA
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <net.h>
 | |
| 
 | |
| /* imports from input.c */
 | |
| extern int hymod_get_ethaddr (void);
 | |
| 
 | |
| int
 | |
| fetch_and_parse (char *fn, ulong addr, int (*cback)(uchar *, uchar *))
 | |
| {
 | |
| 	char *ethaddr;
 | |
| 	uchar *fp, *efp;
 | |
| 	int rc, count = 0;
 | |
| 
 | |
| 	while ((ethaddr = getenv ("ethaddr")) == NULL || *ethaddr == '\0') {
 | |
| 
 | |
| 		printf ("*** Ethernet address is%s not set\n",
 | |
| 			count == 0 ? "" : " STILL");
 | |
| 
 | |
| 		if ((rc = hymod_get_ethaddr ()) < 0) {
 | |
| 			if (rc == -1)
 | |
| 				puts ("\n*** interrupted!");
 | |
| 			else
 | |
| 				puts ("\n*** timeout!");
 | |
| 			printf (" - fetch of '%s' aborted\n", fn);
 | |
| 			return (0);
 | |
| 		}
 | |
| 
 | |
| 		count++;
 | |
| 	}
 | |
| 
 | |
| 	copy_filename (BootFile, fn, sizeof (BootFile));
 | |
| 	load_addr = addr;
 | |
| 	NetBootFileXferSize = 0;
 | |
| 
 | |
| 	if (NetLoop (TFTP) == 0) {
 | |
| 		printf ("tftp transfer of file '%s' failed\n", fn);
 | |
| 		return (0);
 | |
| 	}
 | |
| 
 | |
| 	if (NetBootFileXferSize == 0) {
 | |
| 		printf ("can't determine size of file '%s'\n", fn);
 | |
| 		return (0);
 | |
| 	}
 | |
| 
 | |
| 	fp = (uchar *)load_addr;
 | |
| 	efp = fp + NetBootFileXferSize;
 | |
| 
 | |
| 	do {
 | |
| 		uchar *name, *value;
 | |
| 
 | |
| 		if (*fp == '#' || *fp == '\n') {
 | |
| 			/* skip this line */
 | |
| 			while (fp < efp && *fp++ != '\n')
 | |
| 				;
 | |
| 			continue;
 | |
| 		}
 | |
| 
 | |
| 		name = fp;
 | |
| 
 | |
| 		while (fp < efp && *fp != '=' && *fp != '\n')
 | |
| 			fp++;
 | |
| 		if (fp >= efp)
 | |
| 			break;
 | |
| 		if (*fp == '\n') {
 | |
| 			fp++;
 | |
| 			continue;
 | |
| 		}
 | |
| 		*fp++ = '\0';
 | |
| 
 | |
| 		value = fp;
 | |
| 
 | |
| 		while (fp < efp && *fp != '\n')
 | |
| 			fp++;
 | |
| 		if (fp[-1] == '\r')
 | |
| 			fp[-1] = '\0';
 | |
| 		*fp++ = '\0';	/* ok if we go off the end here */
 | |
| 
 | |
| 		if ((*cback)(name, value) == 0)
 | |
| 			return (0);
 | |
| 
 | |
| 	} while (fp < efp);
 | |
| 
 | |
| 	return (1);
 | |
| }
 |