From 7e1c83e31bdd4b0aeebb2ed0916959a472c2369f Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Fri, 9 Aug 2013 07:55:10 -0700 Subject: [PATCH] Add Kconfig options to override Subsystem Vendor and Device ID These can typically be set in the devicetree but we need a way to override those values with a Kconfig setting so as not to expose the Vendor ID before the product has launched. Change-Id: Ib382e6d9359d24b128c693a657ffde52604efad3 Signed-off-by: Duncan Laurie Reviewed-on: https://gerrit.chromium.org/gerrit/65310 Reviewed-by: Aaron Durbin Reviewed-on: http://review.coreboot.org/4455 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- src/device/Kconfig | 16 ++++++++++++++++ src/device/pci_device.c | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/src/device/Kconfig b/src/device/Kconfig index 4087f6fd4a..adbe40f86a 100644 --- a/src/device/Kconfig +++ b/src/device/Kconfig @@ -503,3 +503,19 @@ config PXE_ROM_ID Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices. endmenu + +config SUBSYSTEM_VENDOR_ID + hex "Override PCI Subsystem Vendor ID" + depends on PCI + default "0x0000" + help + This config option will override the devicetree settings for + PCI Subsystem Vendor ID. + +config SUBSYSTEM_DEVICE_ID + hex "Override PCI Subsystem Device ID" + depends on PCI + default "0x0000" + help + This config option will override the devicetree settings for + PCI Subsystem Device ID. diff --git a/src/device/pci_device.c b/src/device/pci_device.c index 1d998ca780..c810483649 100644 --- a/src/device/pci_device.c +++ b/src/device/pci_device.c @@ -599,6 +599,10 @@ void pci_dev_enable_resources(struct device *dev) /* Set the subsystem vendor and device ID for mainboard devices. */ ops = ops_pci(dev); if (dev->on_mainboard && ops && ops->set_subsystem) { + if (CONFIG_SUBSYSTEM_VENDOR_ID) + dev->subsystem_vendor = CONFIG_SUBSYSTEM_VENDOR_ID; + if (CONFIG_SUBSYSTEM_DEVICE_ID) + dev->subsystem_device = CONFIG_SUBSYSTEM_DEVICE_ID; printk(BIOS_DEBUG, "%s subsystem <- %04x/%04x\n", dev_path(dev), dev->subsystem_vendor, dev->subsystem_device);