fsp platforms: consolidate FspNotify calls

Consolidate the FspNotify calls into the FSP driver directory,
using BOOT_STATE_INIT_ENTRY to set up the call times.

Change-Id: I184ab234ebb9dcdeb8eece1537c12d03f227c25e
Signed-off-by: Martin Roth <gaumless@gmail.com>
Reviewed-on: http://review.coreboot.org/9780
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Martin Roth 2015-04-16 21:20:34 -06:00
parent ceae968e2c
commit 562d6f30a0
4 changed files with 29 additions and 65 deletions

View File

@ -317,6 +317,35 @@ static void find_fsp_hob_update_mrc(void *unused)
}
}
/** @brief Notify FSP for PostPciEnumeration
*
* @param unused
*/
static void fsp_after_pci_enum(void *unused)
{
/* This call needs to be done before resource allocation. */
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
FspNotify(EnumInitPhaseAfterPciEnumeration);
printk(BIOS_DEBUG,
"Returned from FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
}
/** @brief Notify FSP for ReadyToBoot
*
* @param unused
*/
static void fsp_finalize(void *unused)
{
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseReadyToBoot)\n");
print_fsp_info();
FspNotify(EnumInitPhaseReadyToBoot);
printk(BIOS_DEBUG, "Returned from FspNotify(EnumInitPhaseReadyToBoot)\n");
}
/* Set up for the ramstage FSP calls */
BOOT_STATE_INIT_ENTRY(BS_DEV_ENUMERATE, BS_ON_EXIT, fsp_after_pci_enum, NULL);
BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, fsp_finalize, NULL);
/* Update the MRC/fast boot cache as part of the late table writing stage */
BOOT_STATE_INIT_ENTRY(BS_WRITE_TABLES, BS_ON_ENTRY,
find_fsp_hob_update_mrc, NULL);

View File

@ -112,17 +112,6 @@ static int add_fixed_resources(struct device *dev, int index)
return index;
}
static void finalize_dev (device_t dev)
{
/*
* Notify FSP for PostPciEnumeration.
* Northbridge APIC init should be early and late enough...
*/
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
FspNotify(EnumInitPhaseAfterPciEnumeration);
printk(BIOS_DEBUG, "Returned from FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
}
static void mc_add_dram_resources(device_t dev)
{
u32 tomlow, bmbound, bsmmrrl, bsmmrrh;
@ -233,7 +222,6 @@ static struct device_operations pci_domain_ops = {
.set_resources = pci_domain_set_resources,
.enable_resources = NULL,
.init = NULL,
.final = finalize_dev,
.scan_bus = pci_domain_scan_bus,
.ops_pci_bus = pci_bus_default_ops,
};
@ -294,17 +282,7 @@ static void enable_dev(device_t dev)
}
}
static void finalize_chip(void *chip_info)
{
/* Notify FSP for ReadyToBoot */
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseReadyToBoot)\n");
print_fsp_info();
FspNotify(EnumInitPhaseReadyToBoot);
printk(BIOS_DEBUG, "Returned from FspNotify(EnumInitPhaseReadyToBoot)\n");
}
struct chip_operations northbridge_intel_fsp_rangeley_ops = {
CHIP_NAME("Intel Rangeley Northbridge")
.enable_dev = enable_dev,
.final = finalize_chip,
};

View File

@ -39,7 +39,6 @@
#include <fsp_util.h>
static int bridge_revision_id = -1;
static u8 finished_FSP_after_pci = 0;
/* IGD UMA memory */
static uint64_t uma_memory_base = 0;
@ -372,31 +371,9 @@ static void enable_dev(device_t dev)
} else if (dev->path.type == DEVICE_PATH_CPU_CLUSTER) {
dev->ops = &cpu_bus_ops;
}
/*
* Notify FSP for PostPciEnumeration.
* This call needs to be done before resource allocation.
*/
if (!finished_FSP_after_pci) {
finished_FSP_after_pci = 1;
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
FspNotify(EnumInitPhaseAfterPciEnumeration);
printk(BIOS_DEBUG,
"Returned from FspNotify(EnumInitPhaseAfterPciEnumeration)\n\n");
}
}
static void finalize_chip(void *chip_info)
{
/* Notify FSP for ReadyToBoot */
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseReadyToBoot)\n");
print_fsp_info();
FspNotify(EnumInitPhaseReadyToBoot);
printk(BIOS_DEBUG, "Returned from FspNotify(EnumInitPhaseReadyToBoot)\n");
}
struct chip_operations northbridge_intel_fsp_sandybridge_ops = {
CHIP_NAME("Intel i7 (SandyBridge/IvyBridge) integrated Northbridge")
.enable_dev = enable_dev,
.final = finalize_chip,
};

View File

@ -30,22 +30,11 @@ static void pci_domain_set_resources(device_t dev)
assign_resources(dev->link_list);
}
static void finalize_dev (device_t dev)
{
/*
* Notify FSP for PostPciEnumeration.
* Northbridge APIC init should be early and late enough...
*/
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseAfterPciEnumeration)\n");
FspNotify(EnumInitPhaseAfterPciEnumeration);
}
static struct device_operations pci_domain_ops = {
.read_resources = pci_domain_read_resources,
.set_resources = pci_domain_set_resources,
.enable_resources = NULL,
.init = NULL,
.final = &finalize_dev,
.scan_bus = pci_domain_scan_bus,
.ops_pci_bus = pci_bus_default_ops,
};
@ -77,14 +66,6 @@ static void enable_dev(device_t dev)
}
}
static void finalize_chip(void *chip_info)
{
/* Notify FSP for ReadyToBoot */
printk(BIOS_DEBUG, "FspNotify(EnumInitPhaseReadyToBoot)\n");
FspNotify(EnumInitPhaseReadyToBoot);
}
/* Called at BS_DEV_INIT_CHIPS time -- very early. Just after BS_PRE_DEVICE. */
static void soc_init(void *chip_info)
{
@ -95,7 +76,6 @@ struct chip_operations soc_intel_fsp_baytrail_ops = {
CHIP_NAME("Intel BayTrail SoC")
.enable_dev = enable_dev,
.init = soc_init,
.final = &finalize_chip,
};
static void pci_set_subsystem(device_t dev, unsigned vendor, unsigned device)