drivers/intel/fsp1.1: Simplify bootflow and clean up
This gets rid of the boilerplate back and forward calls between the SOC/FSP-driver code and mainboard code. Change-Id: I5d4a10d1da6b3ac5e65efd7f82607b56b80e08d4 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32961 Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Frans Hendriks <fhendriks@eltan.com> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
1ac5ecbfd1
commit
73ac12196c
|
@ -44,15 +44,13 @@ struct romstage_params {
|
||||||
|
|
||||||
void mainboard_memory_init_params(struct romstage_params *params,
|
void mainboard_memory_init_params(struct romstage_params *params,
|
||||||
MEMORY_INIT_UPD *memory_params);
|
MEMORY_INIT_UPD *memory_params);
|
||||||
void mainboard_romstage_entry(struct romstage_params *params);
|
void mainboard_pre_raminit(struct romstage_params *params);
|
||||||
void mainboard_save_dimm_info(struct romstage_params *params);
|
void mainboard_save_dimm_info(struct romstage_params *params);
|
||||||
void mainboard_add_dimm_info(struct romstage_params *params,
|
void mainboard_add_dimm_info(struct romstage_params *params,
|
||||||
struct memory_info *mem_info,
|
struct memory_info *mem_info,
|
||||||
int channel, int dimm, int index);
|
int channel, int dimm, int index);
|
||||||
void raminit(struct romstage_params *params);
|
void raminit(struct romstage_params *params);
|
||||||
void report_memory_config(void);
|
void report_memory_config(void);
|
||||||
void romstage_common(struct romstage_params *params);
|
|
||||||
asmlinkage void romstage_main(FSP_INFO_HEADER *fih);
|
|
||||||
/* Initialize memory margin analysis settings. */
|
/* Initialize memory margin analysis settings. */
|
||||||
void setup_mma(MEMORY_INIT_UPD *memory_upd);
|
void setup_mma(MEMORY_INIT_UPD *memory_upd);
|
||||||
void soc_after_ram_init(struct romstage_params *params);
|
void soc_after_ram_init(struct romstage_params *params);
|
||||||
|
|
|
@ -37,48 +37,7 @@
|
||||||
#include <timestamp.h>
|
#include <timestamp.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include <vendorcode/google/chromeos/chromeos.h>
|
||||||
|
|
||||||
asmlinkage void romstage_main(FSP_INFO_HEADER *fih)
|
static void raminit_common(struct romstage_params *params)
|
||||||
{
|
|
||||||
struct romstage_params params = {
|
|
||||||
.chipset_context = fih,
|
|
||||||
};
|
|
||||||
|
|
||||||
post_code(0x30);
|
|
||||||
|
|
||||||
timestamp_add_now(TS_START_ROMSTAGE);
|
|
||||||
|
|
||||||
/* Load microcode before RAM init */
|
|
||||||
if (CONFIG(SUPPORT_CPU_UCODE_IN_CBFS))
|
|
||||||
intel_update_microcode_from_cbfs();
|
|
||||||
|
|
||||||
/* Display parameters */
|
|
||||||
if (!CONFIG(NO_MMCONF_SUPPORT))
|
|
||||||
printk(BIOS_SPEW, "CONFIG_MMCONF_BASE_ADDRESS: 0x%08x\n",
|
|
||||||
CONFIG_MMCONF_BASE_ADDRESS);
|
|
||||||
printk(BIOS_INFO, "Using FSP 1.1\n");
|
|
||||||
|
|
||||||
/* Display FSP banner */
|
|
||||||
print_fsp_info(fih);
|
|
||||||
|
|
||||||
/* Stash FSP version. */
|
|
||||||
params.fsp_version = fsp_version(fih);
|
|
||||||
|
|
||||||
/* Get power state */
|
|
||||||
params.power_state = fill_power_state();
|
|
||||||
|
|
||||||
/* Call into mainboard. */
|
|
||||||
mainboard_romstage_entry(¶ms);
|
|
||||||
soc_after_ram_init(¶ms);
|
|
||||||
post_code(0x38);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cache_as_ram_stage_main(FSP_INFO_HEADER *fih)
|
|
||||||
{
|
|
||||||
romstage_main(fih);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Entry from the mainboard. */
|
|
||||||
void romstage_common(struct romstage_params *params)
|
|
||||||
{
|
{
|
||||||
bool s3wake;
|
bool s3wake;
|
||||||
struct region_device rdev;
|
struct region_device rdev;
|
||||||
|
@ -153,6 +112,47 @@ void romstage_common(struct romstage_params *params)
|
||||||
full_reset();
|
full_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cache_as_ram_stage_main(FSP_INFO_HEADER *fih)
|
||||||
|
{
|
||||||
|
struct romstage_params params = {
|
||||||
|
.chipset_context = fih,
|
||||||
|
};
|
||||||
|
|
||||||
|
post_code(0x30);
|
||||||
|
|
||||||
|
timestamp_add_now(TS_START_ROMSTAGE);
|
||||||
|
|
||||||
|
/* Load microcode before RAM init */
|
||||||
|
if (CONFIG(SUPPORT_CPU_UCODE_IN_CBFS))
|
||||||
|
intel_update_microcode_from_cbfs();
|
||||||
|
|
||||||
|
/* Display parameters */
|
||||||
|
if (!CONFIG(NO_MMCONF_SUPPORT))
|
||||||
|
printk(BIOS_SPEW, "CONFIG_MMCONF_BASE_ADDRESS: 0x%08x\n",
|
||||||
|
CONFIG_MMCONF_BASE_ADDRESS);
|
||||||
|
printk(BIOS_INFO, "Using FSP 1.1\n");
|
||||||
|
|
||||||
|
/* Display FSP banner */
|
||||||
|
print_fsp_info(fih);
|
||||||
|
|
||||||
|
/* Stash FSP version. */
|
||||||
|
params.fsp_version = fsp_version(fih);
|
||||||
|
|
||||||
|
/* Get power state */
|
||||||
|
params.power_state = fill_power_state();
|
||||||
|
|
||||||
|
/* Board initialization before and after RAM is enabled */
|
||||||
|
mainboard_pre_raminit(¶ms);
|
||||||
|
|
||||||
|
post_code(0x31);
|
||||||
|
|
||||||
|
/* Initialize memory */
|
||||||
|
raminit_common(¶ms);
|
||||||
|
|
||||||
|
soc_after_ram_init(¶ms);
|
||||||
|
post_code(0x38);
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the power state */
|
/* Initialize the power state */
|
||||||
__weak struct chipset_power_state *fill_power_state(void)
|
__weak struct chipset_power_state *fill_power_state(void)
|
||||||
{
|
{
|
||||||
|
@ -160,13 +160,8 @@ __weak struct chipset_power_state *fill_power_state(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Board initialization before and after RAM is enabled */
|
/* Board initialization before and after RAM is enabled */
|
||||||
__weak void mainboard_romstage_entry(
|
__weak void mainboard_pre_raminit(struct romstage_params *params)
|
||||||
struct romstage_params *params)
|
|
||||||
{
|
{
|
||||||
post_code(0x31);
|
|
||||||
|
|
||||||
/* Initialize memory */
|
|
||||||
romstage_common(params);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save the DIMM information for SMBIOS table 17 */
|
/* Save the DIMM information for SMBIOS table 17 */
|
||||||
|
|
|
@ -19,13 +19,6 @@
|
||||||
|
|
||||||
#include "spd/spd_util.h"
|
#include "spd/spd_util.h"
|
||||||
|
|
||||||
/* All FSP specific code goes in this block */
|
|
||||||
void mainboard_romstage_entry(struct romstage_params *rp)
|
|
||||||
{
|
|
||||||
/* Call back into chipset code with platform values updated. */
|
|
||||||
romstage_common(rp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mainboard_memory_init_params(struct romstage_params *params,
|
void mainboard_memory_init_params(struct romstage_params *params,
|
||||||
MEMORY_INIT_UPD *memory_params)
|
MEMORY_INIT_UPD *memory_params)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,15 +25,13 @@
|
||||||
#include "spd/spd_util.h"
|
#include "spd/spd_util.h"
|
||||||
#include "spd/spd.h"
|
#include "spd/spd.h"
|
||||||
|
|
||||||
void mainboard_romstage_entry(struct romstage_params *params)
|
void mainboard_pre_raminit(struct romstage_params *params)
|
||||||
{
|
{
|
||||||
#ifdef EC_ENABLE_KEYBOARD_BACKLIGHT
|
#ifdef EC_ENABLE_KEYBOARD_BACKLIGHT
|
||||||
/* Turn on keyboard backlight to indicate we are booting */
|
/* Turn on keyboard backlight to indicate we are booting */
|
||||||
if (params->power_state->prev_sleep_state != ACPI_S3)
|
if (params->power_state->prev_sleep_state != ACPI_S3)
|
||||||
google_chromeec_kbbacklight(25);
|
google_chromeec_kbbacklight(25);
|
||||||
#endif
|
#endif
|
||||||
/* Initialize memory */
|
|
||||||
romstage_common(params);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mainboard_memory_init_params(struct romstage_params *params,
|
void mainboard_memory_init_params(struct romstage_params *params,
|
||||||
|
|
|
@ -20,12 +20,6 @@
|
||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
#include "spd/spd.h"
|
#include "spd/spd.h"
|
||||||
|
|
||||||
void mainboard_romstage_entry(struct romstage_params *params)
|
|
||||||
{
|
|
||||||
/* Initialize memory */
|
|
||||||
romstage_common(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mainboard_memory_init_params(struct romstage_params *params,
|
void mainboard_memory_init_params(struct romstage_params *params,
|
||||||
MEMORY_INIT_UPD *memory_params)
|
MEMORY_INIT_UPD *memory_params)
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,12 +33,6 @@ void car_mainboard_pre_console_init(void)
|
||||||
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
|
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mainboard_romstage_entry(struct romstage_params *params)
|
|
||||||
{
|
|
||||||
post_code(0x31);
|
|
||||||
romstage_common(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mainboard_memory_init_params(
|
void mainboard_memory_init_params(
|
||||||
struct romstage_params *params,
|
struct romstage_params *params,
|
||||||
MEMORY_INIT_UPD *memory_params)
|
MEMORY_INIT_UPD *memory_params)
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <soc/gpio.h>
|
|
||||||
#include <soc/pci_devs.h>
|
|
||||||
#include <soc/romstage.h>
|
#include <soc/romstage.h>
|
||||||
#include "onboard.h"
|
#include "onboard.h"
|
||||||
#include <boardid.h>
|
#include <boardid.h>
|
||||||
|
|
Loading…
Reference in New Issue