Wrap CONFIG_MAINBOARD_PCI_SUBSYSTEM_{VENDOR,DEVICE}_ID in weak functions
authorPatrick Georgi <patrick.georgi@secunet.com>
Thu, 3 Feb 2011 09:14:40 +0000 (09:14 +0000)
committerPatrick Georgi <patrick.georgi@coresystems.de>
Thu, 3 Feb 2011 09:14:40 +0000 (09:14 +0000)
This is so that boards can determine them on runtime based on hardware
properties, if so desired.

Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Acked-by: Joseph Kellermann <Joseph.Kellermann@heitec.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6329 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/devices/pci_device.c
src/include/device/pci.h
src/southbridge/intel/i82801gx/pci.c

index 0b39faa8b24bb917995c5b4a2e13f7165bc24607..b6a8078be7ded026f9cad6b63328dec7d1f9b248 100644 (file)
@@ -586,6 +586,16 @@ void pci_dev_set_resources(struct device *dev)
        pci_write_config8(dev, PCI_CACHE_LINE_SIZE, 64 >> 2);
 }
 
+unsigned __attribute__((weak)) mainboard_pci_subsystem_vendor_id(__attribute__((unused)) struct device *dev)
+{
+               return CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID;
+}
+
+unsigned __attribute__((weak)) mainboard_pci_subsystem_device_id(__attribute__((unused)) struct device *dev)
+{
+               return CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID;
+}
+
 void pci_dev_enable_resources(struct device *dev)
 {
        const struct pci_operations *ops;
@@ -595,11 +605,11 @@ void pci_dev_enable_resources(struct device *dev)
        ops = ops_pci(dev);
        if (dev->on_mainboard && ops && ops->set_subsystem) {
                printk(BIOS_DEBUG, "%s subsystem <- %02x/%02x\n", dev_path(dev),
-                      CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID,
-                      CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID);
+                      mainboard_pci_subsystem_vendor_id(dev),
+                      mainboard_pci_subsystem_device_id(dev));
                ops->set_subsystem(dev,
-                                  CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID,
-                                  CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID);
+                                  mainboard_pci_subsystem_vendor_id(dev),
+                                  mainboard_pci_subsystem_device_id(dev));
        }
        command = pci_read_config16(dev, PCI_COMMAND);
        command |= dev->command;
index 6af723d7453964ba849938706697ccacddf44448..d4cfb8558cbca43d9c0f6654d22a14403db18623 100644 (file)
@@ -103,4 +103,7 @@ static inline const struct pci_bus_operations *ops_pci_bus(struct bus *bus)
        return bops;
 }
 
+unsigned mainboard_pci_subsystem_vendor_id(struct device *dev);
+unsigned mainboard_pci_subsystem_device_id(struct device *dev);
+
 #endif /* PCI_H */
index 4c44e1e15358d818aeca6b92250a9ef530a0d364..a8e8988d5772307e5038ddfc673fc9677bd6e5de 100644 (file)
@@ -73,11 +73,11 @@ static void ich_pci_dev_enable_resources(struct device *dev)
        if (dev->on_mainboard && ops && ops->set_subsystem) {
                printk(BIOS_DEBUG, "%s subsystem <- %02x/%02x\n",
                        dev_path(dev),
-                       CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID,
-                       CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID);
+                       mainboard_pci_subsystem_vendor_id(dev),
+                       mainboard_pci_subsystem_device_id(dev));
                ops->set_subsystem(dev,
-                       CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID,
-                       CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID);
+                       mainboard_pci_subsystem_vendor_id(dev),
+                       mainboard_pci_subsystem_device_id(dev));
        }
 
        command = pci_read_config16(dev, PCI_COMMAND);