summaryrefslogtreecommitdiff
path: root/src/soc/amd/picasso
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/amd/picasso')
-rw-r--r--src/soc/amd/picasso/root_complex.c15
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)