mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	This code allows using DFU defined mediums for storing data received via TFTP protocol. It reuses and preserves functionality of legacy code at common/update.c. The update_tftp() function now accepts parameters - namely medium device name and its number (e.g. mmc 1). Without this information passed old behavior is preserved. Signed-off-by: Lukasz Majewski <l.majewski@majess.pl> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
		
			
				
	
	
		
			89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * (C) Copyright 2000
 | 
						|
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier:	GPL-2.0+
 | 
						|
 */
 | 
						|
 | 
						|
/* #define	DEBUG	*/
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <autoboot.h>
 | 
						|
#include <cli.h>
 | 
						|
#include <version.h>
 | 
						|
 | 
						|
DECLARE_GLOBAL_DATA_PTR;
 | 
						|
 | 
						|
/*
 | 
						|
 * Board-specific Platform code can reimplement show_boot_progress () if needed
 | 
						|
 */
 | 
						|
__weak void show_boot_progress(int val) {}
 | 
						|
 | 
						|
static void modem_init(void)
 | 
						|
{
 | 
						|
#ifdef CONFIG_MODEM_SUPPORT
 | 
						|
	debug("DEBUG: main_loop:   gd->do_mdm_init=%lu\n", gd->do_mdm_init);
 | 
						|
	if (gd->do_mdm_init) {
 | 
						|
		char *str = getenv("mdm_cmd");
 | 
						|
 | 
						|
		setenv("preboot", str);  /* set or delete definition */
 | 
						|
		mdm_init(); /* wait for modem connection */
 | 
						|
	}
 | 
						|
#endif  /* CONFIG_MODEM_SUPPORT */
 | 
						|
}
 | 
						|
 | 
						|
static void run_preboot_environment_command(void)
 | 
						|
{
 | 
						|
#ifdef CONFIG_PREBOOT
 | 
						|
	char *p;
 | 
						|
 | 
						|
	p = getenv("preboot");
 | 
						|
	if (p != NULL) {
 | 
						|
# ifdef CONFIG_AUTOBOOT_KEYED
 | 
						|
		int prev = disable_ctrlc(1);	/* disable Control C checking */
 | 
						|
# endif
 | 
						|
 | 
						|
		run_command_list(p, -1, 0);
 | 
						|
 | 
						|
# ifdef CONFIG_AUTOBOOT_KEYED
 | 
						|
		disable_ctrlc(prev);	/* restore Control C checking */
 | 
						|
# endif
 | 
						|
	}
 | 
						|
#endif /* CONFIG_PREBOOT */
 | 
						|
}
 | 
						|
 | 
						|
/* We come here after U-Boot is initialised and ready to process commands */
 | 
						|
void main_loop(void)
 | 
						|
{
 | 
						|
	const char *s;
 | 
						|
 | 
						|
	bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop");
 | 
						|
 | 
						|
#ifndef CONFIG_SYS_GENERIC_BOARD
 | 
						|
	puts("Warning: Your board does not use generic board. Please read\n");
 | 
						|
	puts("doc/README.generic-board and take action. Boards not\n");
 | 
						|
	puts("upgraded by the late 2014 may break or be removed.\n");
 | 
						|
#endif
 | 
						|
 | 
						|
	modem_init();
 | 
						|
#ifdef CONFIG_VERSION_VARIABLE
 | 
						|
	setenv("ver", version_string);  /* set version variable */
 | 
						|
#endif /* CONFIG_VERSION_VARIABLE */
 | 
						|
 | 
						|
	cli_init();
 | 
						|
 | 
						|
	run_preboot_environment_command();
 | 
						|
 | 
						|
#if defined(CONFIG_UPDATE_TFTP)
 | 
						|
	update_tftp(0UL, NULL, NULL);
 | 
						|
#endif /* CONFIG_UPDATE_TFTP */
 | 
						|
 | 
						|
	s = bootdelay_process();
 | 
						|
	if (cli_process_fdt(&s))
 | 
						|
		cli_secure_boot_cmd(s);
 | 
						|
 | 
						|
	autoboot_command(s);
 | 
						|
 | 
						|
	cli_loop();
 | 
						|
}
 |