x86: broadwell: Allow booting from SPL
At present broadwell only supports booting straight into U-Boot proper. Add a separate init file to boot from SPL into U-Boot proper, and select it when SPL is in use. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
@@ -5,6 +5,21 @@
|
||||
obj-y += adsp.o
|
||||
obj-y += cpu.o
|
||||
obj-y += cpu_full.o
|
||||
|
||||
ifdef CONFIG_SPL
|
||||
ifndef CONFIG_SPL_BUILD
|
||||
obj-y += cpu_from_spl.o
|
||||
obj-y += cpu_full.o
|
||||
endif
|
||||
ifndef CONFIG_SPL_BUILD
|
||||
# obj-y += cpu_from_spl.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_$(SPL_TPL_)X86_32BIT_INIT),)
|
||||
#obj-y += cpu_from_spl.o
|
||||
endif
|
||||
|
||||
obj-y += iobp.o
|
||||
obj-y += lpc.o
|
||||
obj-y += me.o
|
||||
|
||||
63
arch/x86/cpu/broadwell/cpu_from_spl.c
Normal file
63
arch/x86/cpu/broadwell/cpu_from_spl.c
Normal file
@@ -0,0 +1,63 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* (C) Copyright 2016 Google, Inc
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <bloblist.h>
|
||||
#include <debug_uart.h>
|
||||
#include <handoff.h>
|
||||
#include <asm/mtrr.h>
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
struct spl_handoff *ho;
|
||||
|
||||
ho = bloblist_find(BLOBLISTT_SPL_HANDOFF, sizeof(*ho));
|
||||
if (!ho)
|
||||
return log_msg_ret("Missing SPL hand-off info", -ENOENT);
|
||||
handoff_load_dram_size(ho);
|
||||
#ifdef CONFIG_TPL
|
||||
/* TODO(sjg@chromium.org): MTRR cannot be adjusted without a hang */
|
||||
mtrr_add_request(MTRR_TYPE_WRBACK, 0, 2ULL << 30);
|
||||
#else
|
||||
mtrr_add_request(MTRR_TYPE_WRBACK, 0, gd->ram_size);
|
||||
mtrr_commit(true);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int checkcpu(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int print_cpuinfo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void board_debug_uart_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
int dram_init_banksize(void)
|
||||
{
|
||||
#ifdef CONFIG_NR_DRAM_BANKS
|
||||
struct spl_handoff *ho;
|
||||
|
||||
ho = bloblist_find(BLOBLISTT_SPL_HANDOFF, sizeof(*ho));
|
||||
if (!ho)
|
||||
return log_msg_ret("Missing SPL hand-off info", -ENOENT);
|
||||
handoff_load_dram_banks(ho);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user