From 6a73b2466f388b34086a941572d0af7d0614da3f Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Fri, 3 Sep 2021 12:18:10 +0200 Subject: SMBIOS: Allow skipping default SMBIOS generation The call to the `get_smbios_data` device operation is followed by calls to unconditional default functions, which lacks flexibility. Instead, have devices that implement `get_smbios_data` call these default functions as needed. Most `get_smbios_data` implementations are in mainboard code, and are bound to the root device. The default functions only operate with PCI devices because of the `dev->path.type != DEVICE_PATH_PCI` checks, so calling these functions for non-PCI devices is unnecessary. QEMU also implements `get_smbios_data` but binds it to the domain device, which isn't PCI either. Change-Id: Iefbf072b1203d04a98c9d26a30f22cfebe769eb4 Signed-off-by: Angel Pons Reviewed-on: https://review.coreboot.org/c/coreboot/+/57366 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber Reviewed-by: Tim Wawrzynczak Reviewed-by: Felix Held --- src/drivers/wifi/generic/smbios.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/drivers/wifi/generic/smbios.c') diff --git a/src/drivers/wifi/generic/smbios.c b/src/drivers/wifi/generic/smbios.c index 793349dad0..db22de9793 100644 --- a/src/drivers/wifi/generic/smbios.c +++ b/src/drivers/wifi/generic/smbios.c @@ -9,6 +9,9 @@ static int smbios_write_intel_wifi(struct device *dev, int *handle, unsigned long *current) { + if (dev->vendor != PCI_VENDOR_ID_INTEL) + return 0; + struct smbios_type_intel_wifi { struct smbios_header header; u8 str; @@ -29,10 +32,9 @@ static int smbios_write_intel_wifi(struct device *dev, int *handle, unsigned lon int smbios_write_wifi_pcie(struct device *dev, int *handle, unsigned long *current) { - if (dev->vendor == PCI_VENDOR_ID_INTEL) - return smbios_write_intel_wifi(dev, handle, current); - - return 0; + int len = smbios_write_intel_wifi(dev, handle, current); + len += get_smbios_data(dev, handle, current); + return len; } int smbios_write_wifi_cnvi(struct device *dev, int *handle, unsigned long *current) -- cgit v1.2.3