diff options
Diffstat (limited to 'src/soc/amd/picasso')
-rw-r--r-- | src/soc/amd/picasso/root_complex.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c index 489202366b..c6623209af 100644 --- a/src/soc/amd/picasso/root_complex.c +++ b/src/soc/amd/picasso/root_complex.c @@ -103,7 +103,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; @@ -146,19 +146,12 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; - if (!hob) { - printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", - __func__); + 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) |