diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2024-07-25 00:05:53 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2024-07-31 14:32:19 +0000 |
commit | 32c38ca221ff5956a81026fd0e5df330d569fcca (patch) | |
tree | 57a07c42f641a94c51d4f71496ca8b00ec79007d /src/soc | |
parent | 2c31e86d6b7456d542ed96eeef7cc797ddd62a8b (diff) |
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>
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/amd/common/block/data_fabric/domain.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/data_fabric/pci_segment_multi.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/data_fabric/pci_segment_single.c | 2 | ||||
-rw-r--r-- | src/soc/amd/common/block/root_complex/root_complex.c | 2 | ||||
-rw-r--r-- | src/soc/amd/genoa_poc/domain.c | 7 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/acpi.c | 2 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/chip_common.c | 6 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/chip_gen1.c | 2 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/chip_gen6.c | 2 |
9 files changed, 14 insertions, 13 deletions
diff --git a/src/soc/amd/common/block/data_fabric/domain.c b/src/soc/amd/common/block/data_fabric/domain.c index c419fe02ce..12a7bba0e5 100644 --- a/src/soc/amd/common/block/data_fabric/domain.c +++ b/src/soc/amd/common/block/data_fabric/domain.c @@ -22,7 +22,7 @@ void amd_pci_domain_scan_bus(struct device *domain) if (segment_group >= PCI_SEGMENT_GROUP_COUNT) { printk(BIOS_ERR, "Skipping domain %u due to too large segment group %u.\n", - domain->path.domain.domain, segment_group); + dev_get_domain_id(domain), segment_group); return; } diff --git a/src/soc/amd/common/block/data_fabric/pci_segment_multi.c b/src/soc/amd/common/block/data_fabric/pci_segment_multi.c index bc680f9fff..433b0044d4 100644 --- a/src/soc/amd/common/block/data_fabric/pci_segment_multi.c +++ b/src/soc/amd/common/block/data_fabric/pci_segment_multi.c @@ -29,6 +29,6 @@ enum cb_err data_fabric_get_pci_bus_numbers(struct device *domain, uint8_t *segm } printk(BIOS_ERR, "No valid DF PCI CFG register pair found for domain %x.\n", - domain->path.domain.domain); + dev_get_domain_id(domain)); return CB_ERR; } diff --git a/src/soc/amd/common/block/data_fabric/pci_segment_single.c b/src/soc/amd/common/block/data_fabric/pci_segment_single.c index 3e02d96148..49e6b9a56d 100644 --- a/src/soc/amd/common/block/data_fabric/pci_segment_single.c +++ b/src/soc/amd/common/block/data_fabric/pci_segment_single.c @@ -27,6 +27,6 @@ enum cb_err data_fabric_get_pci_bus_numbers(struct device *domain, uint8_t *segm } printk(BIOS_ERR, "No valid DF PCI CFG register found for domain %x.\n", - domain->path.domain.domain); + dev_get_domain_id(domain)); return CB_ERR; } diff --git a/src/soc/amd/common/block/root_complex/root_complex.c b/src/soc/amd/common/block/root_complex/root_complex.c index 2bcdc1d432..72eba8a358 100644 --- a/src/soc/amd/common/block/root_complex/root_complex.c +++ b/src/soc/amd/common/block/root_complex/root_complex.c @@ -7,7 +7,7 @@ static const struct domain_iohc_info *get_domain_iohc_info(struct device *domain) { - const unsigned int domain_id = domain->path.domain.domain; + const unsigned int domain_id = dev_get_domain_id(domain); const struct domain_iohc_info *iohc; size_t iohc_count; diff --git a/src/soc/amd/genoa_poc/domain.c b/src/soc/amd/genoa_poc/domain.c index 88f386c2c1..b6369a47d0 100644 --- a/src/soc/amd/genoa_poc/domain.c +++ b/src/soc/amd/genoa_poc/domain.c @@ -26,7 +26,7 @@ static void genoa_domain_set_resources(struct device *domain) { if (domain->downstream->bridge_ctrl & PCI_BRIDGE_CTL_VGA) { printk(BIOS_DEBUG, "Setting VGA decoding for domain 0x%x\n", - domain->path.domain.domain); + dev_get_domain_id(domain)); const union df_vga_en vga_en = { .ve = 1, .dst_fabric_id = get_iohc_fabric_id(domain), @@ -48,6 +48,7 @@ static void genoa_domain_set_resources(struct device *domain) static const char *genoa_domain_acpi_name(const struct device *domain) { + const unsigned int domain_id = dev_get_domain_id(domain); const char *domain_acpi_names[4] = { "S0B0", "S0B1", @@ -55,8 +56,8 @@ static const char *genoa_domain_acpi_name(const struct device *domain) "S0B3", }; - if (domain->path.domain.domain < ARRAY_SIZE(domain_acpi_names)) - return domain_acpi_names[domain->path.domain.domain]; + if (domain_id < ARRAY_SIZE(domain_acpi_names)) + return domain_acpi_names[domain_id]; return NULL; } diff --git a/src/soc/intel/xeon_sp/acpi.c b/src/soc/intel/xeon_sp/acpi.c index f66f5e9e99..e5cf9076ec 100644 --- a/src/soc/intel/xeon_sp/acpi.c +++ b/src/soc/intel/xeon_sp/acpi.c @@ -95,7 +95,7 @@ const acpi_cstate_t *soc_get_cstate_map(size_t *entries) void iio_domain_set_acpi_name(struct device *dev, const char *prefix) { const union xeon_domain_path dn = { - .domain_path = dev->path.domain.domain + .domain_path = dev_get_domain_id(dev) }; assert(dn.socket < CONFIG_MAX_SOCKET); diff --git a/src/soc/intel/xeon_sp/chip_common.c b/src/soc/intel/xeon_sp/chip_common.c index d0eab02972..011e1c3297 100644 --- a/src/soc/intel/xeon_sp/chip_common.c +++ b/src/soc/intel/xeon_sp/chip_common.c @@ -49,7 +49,7 @@ static int filter_device_on_stack(struct device *dev, uint8_t socket, uint8_t st return 0; union xeon_domain_path dn; - dn.domain_path = domain->path.domain.domain; + dn.domain_path = dev_get_domain_id(domain); if (socket != XEONSP_SOCKET_MAX && dn.socket != socket) return 0; @@ -140,7 +140,7 @@ int iio_pci_domain_socket_from_dev(const struct device *dev) if (!domain) return -1; - dn.domain_path = domain->path.domain.domain; + dn.domain_path = dev_get_domain_id(domain); return dn.socket; } @@ -162,7 +162,7 @@ int iio_pci_domain_stack_from_dev(const struct device *dev) if (!domain) return -1; - dn.domain_path = domain->path.domain.domain; + dn.domain_path = dev_get_domain_id(domain); return dn.stack; } diff --git a/src/soc/intel/xeon_sp/chip_gen1.c b/src/soc/intel/xeon_sp/chip_gen1.c index a68c764662..ee167e2a0e 100644 --- a/src/soc/intel/xeon_sp/chip_gen1.c +++ b/src/soc/intel/xeon_sp/chip_gen1.c @@ -17,7 +17,7 @@ static const STACK_RES *domain_to_stack_res(const struct device *dev) { assert(dev->path.type == DEVICE_PATH_DOMAIN); const union xeon_domain_path dn = { - .domain_path = dev->path.domain.domain + .domain_path = dev_get_domain_id(dev) }; const IIO_UDS *hob = get_iio_uds(); diff --git a/src/soc/intel/xeon_sp/chip_gen6.c b/src/soc/intel/xeon_sp/chip_gen6.c index 686b3e4dcf..d53b2319ec 100644 --- a/src/soc/intel/xeon_sp/chip_gen6.c +++ b/src/soc/intel/xeon_sp/chip_gen6.c @@ -16,7 +16,7 @@ static const UDS_PCIROOT_RES *domain_to_pciroot_res(const struct device *dev) { assert(dev->path.type == DEVICE_PATH_DOMAIN); const union xeon_domain_path dn = { - .domain_path = dev->path.domain.domain + .domain_path = dev_get_domain_id(dev) }; const IIO_UDS *hob = get_iio_uds(); |