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>master
parent
d0d0746e0c
commit
e961a66df9
@ -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