vc/amd/fsp/morgana/FspmUpd: don't use pointers for usb_phy config
The size of a pointer changes between a 32 and 64 bit coreboot build. In order to be able to use a 32 bit FSP in a 64 bit coreboot build, change the pointer in the UPDs to a uint32_t to always have a 32 bit field in the UPD for this. Also make sure that the address of the lcl_usb_phy struct is located below the 4GB boundary, so that the truncation to 32 bits won't result in pointing to a different memory location than intended. In this error case, which I don't expect to happen, print an error and write 0 to mcfg->usb_phy_ptr so that the FSP will use its default values. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I1394aa6ef5f401e0c7bdd4861f1e28ae46e56e4f Reviewed-on: https://review.coreboot.org/c/coreboot/+/70505 Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com> Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@ -96,7 +96,8 @@ typedef struct __packed {
|
||||
/** Offset 0x04CF**/ uint32_t telemetry_vddcrsocfull_scale_current;
|
||||
/** Offset 0x04D3**/ uint32_t telemetry_vddcrsocOffset;
|
||||
/** Offset 0x04D7**/ uint8_t UnusedUpdSpace1;
|
||||
/** Offset 0x04D8**/ struct usb_phy_config *usb_phy;
|
||||
/* usb_phy_ptr is actually struct usb_phy_config *, but that won't work for 64bit coreboot */
|
||||
/** Offset 0x04D8**/ uint32_t usb_phy_ptr;
|
||||
/** Offset 0x04DC**/ uint8_t UnusedUpdSpace2[292];
|
||||
/** Offset 0x0600**/ uint16_t UpdTerminator;
|
||||
} FSP_M_CONFIG;
|
||||
|
Reference in New Issue
Block a user