amd/picasso: rework DXIO and DDI UPD handling

Turning the DXIO and DDI descriptor fields in the FSP_S_CONFIG struct
into arrays allows to properly iterate over the fields.

BUG=b:158695393
TEST=Mandolin still boots.

Change-Id: I85debe4d52399e933768b89b665ff10c9f7779f8
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/43434
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held 2020-07-14 00:23:11 +02:00 committed by Patrick Georgi
parent 692dde599f
commit f06d7d7003
2 changed files with 7 additions and 20 deletions

View File

@ -59,13 +59,9 @@ static void fill_pcie_descriptors(FSP_S_CONFIG *scfg,
const fsp_pcie_descriptor *descs, size_t num)
{
size_t i;
fsp_pcie_descriptor *fsp_pcie;
/* FIXME: this violates C rules. */
fsp_pcie = (fsp_pcie_descriptor *)(scfg->dxio_descriptor0);
for (i = 0; i < num; i++) {
fsp_pcie[i] = descs[i];
memcpy(scfg->dxio_descriptor[i], &descs[i], sizeof(scfg->dxio_descriptor[0]));
}
}
@ -73,13 +69,9 @@ static void fill_ddi_descriptors(FSP_S_CONFIG *scfg,
const fsp_ddi_descriptor *descs, size_t num)
{
size_t i;
fsp_ddi_descriptor *fsp_ddi;
/* FIXME: this violates C rules. */
fsp_ddi = (fsp_ddi_descriptor *)&(scfg->ddi_descriptor0);
for (i = 0; i < num; i++) {
fsp_ddi[i] = descs[i];
memcpy(&scfg->ddi_descriptor[i], &descs[i], sizeof(scfg->ddi_descriptor[0]));
}
}
static void fsp_fill_pcie_ddi_descriptors(FSP_S_CONFIG *scfg)

View File

@ -9,19 +9,14 @@
#include <FspUpd.h>
#define FSPS_UPD_DXIO_DESCRIPTOR_COUNT 6
#define FSPS_UPD_DDI_DESCRIPTOR_COUNT 4
typedef struct __packed {
/** Offset 0x0020**/ uint32_t emmc0_mode;
/** Offset 0x0024**/ uint8_t unused0[12];
/** Offset 0x0030**/ uint8_t dxio_descriptor0[16];
/** Offset 0x0040**/ uint8_t dxio_descriptor1[16];
/** Offset 0x0050**/ uint8_t dxio_descriptor2[16];
/** Offset 0x0060**/ uint8_t dxio_descriptor3[16];
/** Offset 0x0070**/ uint8_t dxio_descriptor4[16];
/** Offset 0x0080**/ uint8_t dxio_descriptor5[16];
/** Offset 0x0090**/ uint32_t ddi_descriptor0;
/** Offset 0x0094**/ uint32_t ddi_descriptor1;
/** Offset 0x0098**/ uint32_t ddi_descriptor2;
/** Offset 0x009C**/ uint32_t ddi_descriptor3;
/** Offset 0x0030**/ uint8_t dxio_descriptor[FSPS_UPD_DXIO_DESCRIPTOR_COUNT][16];
/** Offset 0x0090**/ uint32_t ddi_descriptor[FSPS_UPD_DDI_DESCRIPTOR_COUNT];
/** Offset 0x00A0**/ uint32_t unused1;
/** Offset 0x00A4**/ uint32_t unused2;
/** Offset 0x00A8**/ uint32_t unused3;