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:
parent
692dde599f
commit
f06d7d7003
|
@ -59,13 +59,9 @@ static void fill_pcie_descriptors(FSP_S_CONFIG *scfg,
|
||||||
const fsp_pcie_descriptor *descs, size_t num)
|
const fsp_pcie_descriptor *descs, size_t num)
|
||||||
{
|
{
|
||||||
size_t i;
|
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++) {
|
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)
|
const fsp_ddi_descriptor *descs, size_t num)
|
||||||
{
|
{
|
||||||
size_t i;
|
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++) {
|
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)
|
static void fsp_fill_pcie_ddi_descriptors(FSP_S_CONFIG *scfg)
|
||||||
|
|
|
@ -9,19 +9,14 @@
|
||||||
|
|
||||||
#include <FspUpd.h>
|
#include <FspUpd.h>
|
||||||
|
|
||||||
|
#define FSPS_UPD_DXIO_DESCRIPTOR_COUNT 6
|
||||||
|
#define FSPS_UPD_DDI_DESCRIPTOR_COUNT 4
|
||||||
|
|
||||||
typedef struct __packed {
|
typedef struct __packed {
|
||||||
/** Offset 0x0020**/ uint32_t emmc0_mode;
|
/** Offset 0x0020**/ uint32_t emmc0_mode;
|
||||||
/** Offset 0x0024**/ uint8_t unused0[12];
|
/** Offset 0x0024**/ uint8_t unused0[12];
|
||||||
/** Offset 0x0030**/ uint8_t dxio_descriptor0[16];
|
/** Offset 0x0030**/ uint8_t dxio_descriptor[FSPS_UPD_DXIO_DESCRIPTOR_COUNT][16];
|
||||||
/** Offset 0x0040**/ uint8_t dxio_descriptor1[16];
|
/** Offset 0x0090**/ uint32_t ddi_descriptor[FSPS_UPD_DDI_DESCRIPTOR_COUNT];
|
||||||
/** 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 0x00A0**/ uint32_t unused1;
|
/** Offset 0x00A0**/ uint32_t unused1;
|
||||||
/** Offset 0x00A4**/ uint32_t unused2;
|
/** Offset 0x00A4**/ uint32_t unused2;
|
||||||
/** Offset 0x00A8**/ uint32_t unused3;
|
/** Offset 0x00A8**/ uint32_t unused3;
|
||||||
|
|
Loading…
Reference in New Issue