device: introduce and use dev_get_domain_id

To avoid having constructs like 'dev->path.domain.domain' in the SoC
code, create the 'dev_get_domain_id' helper function that returns the
domain ID of either that device if it's a domain device or the
corresponding domain device's domain ID, and use it in the code.

If this function is called with a device other than PCI or domain type,
it won't have a domain number. In order to not need to call 'die',
'dev_get_domain_id' will print an error and return 0 which is a valid
domain number. In that case, the calling code should be fixed.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I3d79f19846cea49609f848a4c42747ac1052c288
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83644
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held
2024-07-25 00:05:53 +02:00
parent 2c31e86d6b
commit 32c38ca221
12 changed files with 31 additions and 14 deletions

View File

@ -128,7 +128,7 @@ static void setup_bmc_lanes(uint8_t lane, uint8_t socket)
static void per_device_config(MPIOCLASS_INPUT_BLK *mpio_data, struct device *dev)
{
static uint32_t slot_num;
const uint32_t domain = dev->upstream->dev->path.domain.domain;
const uint32_t domain = dev_get_domain_id(dev);
const uint32_t devfn = dev->path.pci.devfn;
const struct vendorcode_amd_opensil_chip_mpio_config *const config = dev->chip_info;
printk(BIOS_DEBUG, "Setting MPIO port for domain 0x%x, PCI %d:%d\n",