psp_verstage: differentiate bios entry
AMDFW tool stores bios dir entry to bios1_entry in picasso but bios3_entry in cezanne. Separate getting bios_dir_addr into a function and implement it on each platforms. Signed-off-by: Kangheui Won <khwon@chromium.org> Change-Id: Ie18ed7979a04319c074b9b251130d419dc7f22dc Reviewed-on: https://review.coreboot.org/c/coreboot/+/52964 Reviewed-by: Martin Roth <martinroth@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
a5dae4c4d6
commit
5858fb4e35
|
@ -21,6 +21,11 @@ uint32_t save_uapp_data(void *address, uint32_t size)
|
||||||
return svc_save_uapp_data(address, size);
|
return svc_save_uapp_data(address, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t get_bios_dir_addr(struct psp_ef_table *ef_table)
|
||||||
|
{
|
||||||
|
return ef_table->bios3_entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Functions below are stub functions for not-yet-implemented PSP features.
|
/* Functions below are stub functions for not-yet-implemented PSP features.
|
||||||
* These functions should be replaced with proper implementations later.
|
* These functions should be replaced with proper implementations later.
|
||||||
|
|
|
@ -48,6 +48,8 @@ struct psp_ef_table {
|
||||||
uint32_t bios0_entry;
|
uint32_t bios0_entry;
|
||||||
uint32_t bios1_entry;
|
uint32_t bios1_entry;
|
||||||
uint32_t bios2_entry;
|
uint32_t bios2_entry;
|
||||||
|
uint32_t reserved1;
|
||||||
|
uint32_t bios3_entry;
|
||||||
} __attribute__((packed, aligned(16)));
|
} __attribute__((packed, aligned(16)));
|
||||||
|
|
||||||
void test_svc_calls(void);
|
void test_svc_calls(void);
|
||||||
|
@ -59,5 +61,6 @@ uintptr_t *map_spi_rom(void);
|
||||||
uint32_t get_max_workbuf_size(uint32_t *size);
|
uint32_t get_max_workbuf_size(uint32_t *size);
|
||||||
uint32_t update_psp_bios_dir(uint32_t *psp_dir_offset, uint32_t *bios_dir_offset);
|
uint32_t update_psp_bios_dir(uint32_t *psp_dir_offset, uint32_t *bios_dir_offset);
|
||||||
uint32_t save_uapp_data(void *address, uint32_t size);
|
uint32_t save_uapp_data(void *address, uint32_t size);
|
||||||
|
uint32_t get_bios_dir_addr(struct psp_ef_table *ef_table);
|
||||||
|
|
||||||
#endif /* PSP_VERSTAGE_H */
|
#endif /* PSP_VERSTAGE_H */
|
||||||
|
|
|
@ -107,7 +107,7 @@ static uint32_t update_boot_region(struct vb2_context *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
psp_dir_addr = ef_table->psp_table;
|
psp_dir_addr = ef_table->psp_table;
|
||||||
bios_dir_addr = ef_table->bios1_entry;
|
bios_dir_addr = get_bios_dir_addr(ef_table);
|
||||||
psp_dir_in_spi = (uint32_t *)((psp_dir_addr & SPI_ADDR_MASK) +
|
psp_dir_in_spi = (uint32_t *)((psp_dir_addr & SPI_ADDR_MASK) +
|
||||||
(uint32_t)boot_dev.base);
|
(uint32_t)boot_dev.base);
|
||||||
bios_dir_in_spi = (uint32_t *)((bios_dir_addr & SPI_ADDR_MASK) +
|
bios_dir_in_spi = (uint32_t *)((bios_dir_addr & SPI_ADDR_MASK) +
|
||||||
|
|
|
@ -18,3 +18,8 @@ uint32_t get_max_workbuf_size(uint32_t *size)
|
||||||
{
|
{
|
||||||
return svc_get_max_workbuf_size(size);
|
return svc_get_max_workbuf_size(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t get_bios_dir_addr(struct psp_ef_table *ef_table)
|
||||||
|
{
|
||||||
|
return ef_table->bios1_entry;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue