sandbox: Add basic SPL implementation
Add an sandbox implementation for the generic SPL framework. This supports locating and running U-Boot proper. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
		
							parent
							
								
									d0d0746e0c
								
							
						
					
					
						commit
						e961a66df9
					
				|  | @ -8,6 +8,7 @@ | ||||||
| #
 | #
 | ||||||
| 
 | 
 | ||||||
| obj-y	:= cpu.o os.o start.o state.o | obj-y	:= cpu.o os.o start.o state.o | ||||||
|  | obj-$(CONFIG_SPL_BUILD)	+= spl.o | ||||||
| obj-$(CONFIG_ETH_SANDBOX_RAW)	+= eth-raw-os.o | obj-$(CONFIG_ETH_SANDBOX_RAW)	+= eth-raw-os.o | ||||||
| obj-$(CONFIG_SANDBOX_SDL)	+= sdl.o | obj-$(CONFIG_SANDBOX_SDL)	+= sdl.o | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,51 @@ | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2016 Google, Inc | ||||||
|  |  * SPDX-License-Identifier:	GPL-2.0+ | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <common.h> | ||||||
|  | #include <dm.h> | ||||||
|  | #include <os.h> | ||||||
|  | #include <asm/spl.h> | ||||||
|  | #include <asm/state.h> | ||||||
|  | 
 | ||||||
|  | DECLARE_GLOBAL_DATA_PTR; | ||||||
|  | 
 | ||||||
|  | void board_init_f(ulong flag) | ||||||
|  | { | ||||||
|  | 	struct sandbox_state *state = state_get_current(); | ||||||
|  | 
 | ||||||
|  | 	gd->arch.ram_buf = state->ram_buf; | ||||||
|  | 	gd->ram_size = state->ram_size; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | u32 spl_boot_device(void) | ||||||
|  | { | ||||||
|  | 	return BOOT_DEVICE_BOARD; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void spl_board_announce_boot_device(void) | ||||||
|  | { | ||||||
|  | 	char fname[256]; | ||||||
|  | 	int ret; | ||||||
|  | 
 | ||||||
|  | 	ret = os_find_u_boot(fname, sizeof(fname)); | ||||||
|  | 	if (ret) { | ||||||
|  | 		printf("(%s not found, error %d)\n", fname, ret); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	printf("%s\n", fname); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int spl_board_load_image(void) | ||||||
|  | { | ||||||
|  | 	char fname[256]; | ||||||
|  | 	int ret; | ||||||
|  | 
 | ||||||
|  | 	ret = os_find_u_boot(fname, sizeof(fname)); | ||||||
|  | 	if (ret) | ||||||
|  | 		return ret; | ||||||
|  | 
 | ||||||
|  | 	/* Hopefully this will not return */ | ||||||
|  | 	return os_spl_to_uboot(fname); | ||||||
|  | } | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2016 Google, Inc | ||||||
|  |  * SPDX-License-Identifier:	GPL-2.0+ | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef __asm_spl_h | ||||||
|  | #define __asm_spl_h | ||||||
|  | 
 | ||||||
|  | #define CONFIG_SPL_BOARD_LOAD_IMAGE | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Board-specific load method for boards that have a special way of loading | ||||||
|  |  * U-Boot, which does not fit with the existing SPL code. | ||||||
|  |  * | ||||||
|  |  * @return 0 on success, negative errno value on failure. | ||||||
|  |  */ | ||||||
|  | int spl_board_load_image(void); | ||||||
|  | 
 | ||||||
|  | enum { | ||||||
|  | 	BOOT_DEVICE_BOARD, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
		Loading…
	
		Reference in New Issue