From c583b038267584398c670df37a7df7ef2aa47c03 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 Subsytem 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. BUG=chrome-os-partner:21614 BRANCH=falco,peppy TEST=emerge-falco chromeos-coreboot-falco Change-Id: Ib382e6d9359d24b128c693a657ffde52604efad3 Signed-off-by: Duncan Laurie Reviewed-on: https://gerrit.chromium.org/gerrit/65310 Reviewed-by: Aaron Durbin --- 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 ca2fb33028..105936f530 100644 --- a/src/device/Kconfig +++ b/src/device/Kconfig @@ -498,3 +498,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 4c5a81451c..86c653240a 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);