summaryrefslogtreecommitdiff
path: root/src/soc/amd/morgana
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2022-11-10 22:44:18 +0100
committerFelix Held <felix-coreboot@felixheld.de>2022-11-14 18:50:45 +0000
commit2e81436be8e1b372cd15be93939adc8f48886449 (patch)
tree0839b877cd920a94d4675891af4d30ec8038ea04 /src/soc/amd/morgana
parent79db98764e62f626847bb76952679c27a66bd390 (diff)
soc/amd/*/root_complex: use FSP HOB iterator functions
Use the newly added functions to iterate over the FSP HOBs to report the resources used by FSP to the resource allocator instead of open coding the iteration over the HOBs in the SoC code. TEST=Patch doesn't change reported resources on Mandolin Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I67ca346345c1fa08b008caa885d0a00d2d5afb12 Reviewed-on: https://review.coreboot.org/c/coreboot/+/69476 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/soc/amd/morgana')
-rw-r--r--src/soc/amd/morgana/root_complex.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/soc/amd/morgana/root_complex.c b/src/soc/amd/morgana/root_complex.c
index 0e6e730008..10e541521d 100644
--- a/src/soc/amd/morgana/root_complex.c
+++ b/src/soc/amd/morgana/root_complex.c
@@ -118,7 +118,7 @@ static void read_resources(struct device *dev)
{
uint32_t mem_usable = (uintptr_t)cbmem_top();
unsigned int idx = 0;
- const struct hob_header *hob = fsp_get_hob_list();
+ const struct hob_header *hob_iterator;
const struct hob_resource *res;
struct resource *gnb_apic;
@@ -163,19 +163,13 @@ static void read_resources(struct device *dev)
gnb_apic->size = 0x00001000;
gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
- if (!hob) {
+ if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) {
printk(BIOS_ERR, "%s incomplete because no HOB list was found\n",
__func__);
return;
}
- for (; hob->type != HOB_TYPE_END_OF_HOB_LIST; hob = fsp_next_hob(hob)) {
-
- if (hob->type != HOB_TYPE_RESOURCE_DESCRIPTOR)
- continue;
-
- res = fsp_hob_header_to_resource(hob);
-
+ while (fsp_hob_iterator_get_next_resource(&hob_iterator, &res) == CB_SUCCESS) {
if (res->type == EFI_RESOURCE_SYSTEM_MEMORY && res->addr < mem_usable)
continue; /* 0 through low usable was set above */
if (res->type == EFI_RESOURCE_MEMORY_MAPPED_IO)