mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-25 18:18:19 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) Orbacom Systems, Inc <www.orbacom.com>
 | |
|  * All rights reserved.
 | |
|  *
 | |
|  * Redistribution and use in source and binary forms are freely
 | |
|  * permitted provided that the above copyright notice and this
 | |
|  * paragraph and the following disclaimer are duplicated in all
 | |
|  * such forms.
 | |
|  *
 | |
|  * This software is provided "AS IS" and without any express or
 | |
|  * implied warranties, including, without limitation, the implied
 | |
|  * warranties of merchantability and fitness for a particular
 | |
|  * purpose.
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <asm/processor.h>
 | |
| #include <image.h>
 | |
| #include <net.h>
 | |
| 
 | |
| #include <lynxkdi.h>
 | |
| 
 | |
| DECLARE_GLOBAL_DATA_PTR;
 | |
| 
 | |
| #if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR)
 | |
| void lynxkdi_boot (image_header_t *hdr)
 | |
| {
 | |
| 	void (*lynxkdi)(void) = (void(*)(void))image_get_ep (hdr);
 | |
| 	lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020;
 | |
| 	bd_t *kbd;
 | |
| 	u32 *psz = (u32 *)(image_get_load (hdr) + 0x0204);
 | |
| 
 | |
| 	memset (parms, 0, sizeof(*parms));
 | |
| 	kbd = gd->bd;
 | |
| 	parms->clock_ref = kbd->bi_busfreq;
 | |
| 	parms->dramsz = kbd->bi_memsize;
 | |
| 	eth_getenv_enetaddr("ethaddr", parms->ethaddr);
 | |
| 	mtspr (SPRN_SPRG2, 0x0020);
 | |
| 
 | |
| 	/* Do a simple check for Bluecat so we can pass the
 | |
| 	 * kernel command line parameters.
 | |
| 	 */
 | |
| 	if (le32_to_cpu (*psz) == image_get_data_size (hdr)) {	/* FIXME: NOT SURE HERE ! */
 | |
| 		char *args;
 | |
| 		char *cmdline = (char *)(image_get_load (hdr) + 0x020c);
 | |
| 		int len;
 | |
| 
 | |
| 		printf ("Booting Bluecat KDI ...\n");
 | |
| 		udelay (200*1000); /* Allow serial port to flush */
 | |
| 		if ((args = getenv ("bootargs")) == NULL)
 | |
| 			args = "";
 | |
| 		/* Prepend the cmdline */
 | |
| 		len = strlen (args);
 | |
| 		if (len && (len + strlen (cmdline) + 2 < (0x0400 - 0x020c))) {
 | |
| 			memmove (cmdline + strlen (args) + 1, cmdline, strlen (cmdline));
 | |
| 			strcpy (cmdline, args);
 | |
| 			cmdline[len] = ' ';
 | |
| 		}
 | |
| 	}
 | |
| 	else {
 | |
| 		printf ("Booting LynxOS KDI ...\n");
 | |
| 	}
 | |
| 
 | |
| 	lynxkdi ();
 | |
| }
 | |
| #else
 | |
| #error "Lynx KDI support not implemented for configured CPU"
 | |
| #endif
 |