u-boot/arch/x86/lib
Bin Meng aefaff8ed8 x86: fsp: Move FspInitEntry call to board_init_f()
The call to FspInitEntry is done in arch/x86/lib/fsp/fsp_car.S so far.
It worked pretty well but looks not that good. Apart from doing too
much work than just enabling CAR, it cannot read the configuration
data from device tree at that time. Now we want to move it a little
bit later as part of init_sequence_f[] being called by board_init_f().
This way it looks and works better in the U-Boot initialization path.

Due to FSP's design, after calling FspInitEntry it will not return to
its caller, instead it jumps to a continuation function which is given
by bootloader with a new stack in system memory. The original stack in
the CAR is gone, but its content is perserved by FSP and described by
a bootloader temporary memory HOB. Technically we can recover anything
we had before in the previous stack, but that is way too complicated.
To make life much easier, in the FSP continuation routine we just
simply call fsp_init_done() and jump back to car_init_ret() to redo
the whole board_init_f() initialization, but this time with a non-zero
HOB list pointer saved in U-Boot's global data so that we can bypass
the FspInitEntry for the second time.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Andrew Bradford <andrew.bradford@kodakalaris.com>
Tested-by: Simon Glass <sjg@chromium.org>
2015-07-14 18:03:15 -06:00
..
fsp x86: fsp: Move FspInitEntry call to board_init_f() 2015-07-14 18:03:15 -06:00
asm-offsets.c x86: Support Intel FSP initialization path in start.S 2014-12-13 22:32:05 -07:00
bios.c x86: Tidy up VESA mode numbers 2015-01-13 07:24:59 -08:00
bios.h x86: move arch-specific asmlinkage to <asm/linkage.h> 2014-12-15 07:22:53 -07:00
bios_asm.S x86: Add support for running option ROMs natively 2014-11-25 06:38:57 -07:00
bios_interrupts.c x86: Add a x86_ prefix to the x86-specific PCI functions 2015-04-16 19:27:41 -06:00
bootm.c x86: Correct a few progress message nits 2014-10-28 20:44:27 -06:00
cmd_boot.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cmd_hob.c x86: Move common FSP code into a common location 2015-02-05 22:16:43 -07:00
cmd_mtrr.c x86: Add an 'mtrr' command to list and adjust MTRRs 2015-01-13 07:25:02 -08:00
gcc.c x86: Support tracing function 2013-06-26 10:18:56 -04:00
init_helpers.c dm: x86: spi: Convert ICH SPI driver to driver model 2015-04-18 11:11:14 -06:00
interrupts.c x86: Fix out of bounds irq handlers access 2015-01-23 17:24:54 -07:00
lpc-uclass.c dm: x86: Add a uclass for an Low Pin Count (LPC) device 2015-04-18 11:11:14 -06:00
Makefile x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
pcat_interrupts.c x86: Refactor interrupt_init() 2014-11-25 06:34:02 -07:00
pcat_timer.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pch-uclass.c dm: x86: Add a uclass for a Platform Controller Hub 2015-04-18 11:11:14 -06:00
pci_type1.c x86: Define macros for pci configuration space access 2015-02-06 12:07:40 -07:00
physmem.c x86: Move paging functions into cpu.c 2014-10-28 20:42:51 -06:00
pirq_routing.c x86: Check PIRQ routing table sanity in the F segment 2015-04-29 18:51:50 -06:00
ramtest.c x86: ivybridge: Implement SDRAM init 2014-11-21 07:34:15 +01:00
relocate.c x86: Panic if there is no relocation data 2014-11-25 06:33:59 -07:00
sfi.c x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
string.c Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
tables.c x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
tsc_timer.c x86: Allow a hardcoded TSC frequency provided by Kconfig 2015-01-13 07:25:02 -08:00
zimage.c x86: Install a default e820 table in the __weak install_e820_map() 2015-04-29 18:51:49 -06:00