summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2016-02-04 18:59:48 +0100
committerMartin Roth <martinroth@google.com>2016-02-09 20:02:36 +0100
commit2dc15e9ea8522959e90def168e459e629ccec12f (patch)
tree575cb8f40c3cc4464f02bdb83c9acee7f0dcbba4
parentb27c24f69b89aca3203d56522663a546811cbfb8 (diff)
downloadcoreboot-2dc15e9ea8522959e90def168e459e629ccec12f.tar.xz
Revert "northbridge/intel/peg: Disable unused ports"
This reverts commit 0e06f5bd70b45fd330d8dfb1dc77cce043caf841. It breaks gm45 and also does some magic without being asked too. It disables bridge devices permanently if no device was found on the se- condary bus. In a simple notebook world this might be ok, but it breaks hot-plugging and late detection (if a secondary bus device comes up too slow for the firmware to detect and the OS has to enumerate it). Change-Id: Ia2010640d7c55b0bdd44164b81c75dd4be50410b Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: https://review.coreboot.org/13609 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Rudolph <siro@das-labor.org>
-rw-r--r--src/northbridge/intel/gm45/northbridge.c14
-rw-r--r--src/northbridge/intel/sandybridge/northbridge.c26
2 files changed, 6 insertions, 34 deletions
diff --git a/src/northbridge/intel/gm45/northbridge.c b/src/northbridge/intel/gm45/northbridge.c
index 84df62dd32..ce75aea442 100644
--- a/src/northbridge/intel/gm45/northbridge.c
+++ b/src/northbridge/intel/gm45/northbridge.c
@@ -243,17 +243,6 @@ static void enable_dev(device_t dev)
}
}
-static u8 scan_bus_unused(struct bus *link)
-{
- struct device *dev;
-
- for (dev = link->children; dev; dev = dev->sibling) {
- if (dev->enabled)
- return 0;
- }
- return 1;
-}
-
static void gm45_init(void *const chip_info)
{
int dev, fn, bit_base;
@@ -279,8 +268,7 @@ static void gm45_init(void *const chip_info)
for (; fn >= 0; --fn) {
const struct device *const d =
dev_find_slot(0, PCI_DEVFN(dev, fn));
- if (d && d->enabled && d->link_list && !scan_bus_unused(d->link_list))
- continue;
+ if (!d || d->enabled) continue;
const u32 deven = pci_read_config32(d0f0, D0F0_DEVEN);
pci_write_config32(d0f0, D0F0_DEVEN,
deven & ~(1 << (bit_base + fn)));
diff --git a/src/northbridge/intel/sandybridge/northbridge.c b/src/northbridge/intel/sandybridge/northbridge.c
index 3974fe895c..53d93a2501 100644
--- a/src/northbridge/intel/sandybridge/northbridge.c
+++ b/src/northbridge/intel/sandybridge/northbridge.c
@@ -368,17 +368,6 @@ static void northbridge_dmi_init(struct device *dev)
DMIBAR32(0x88) = reg32;
}
-static u8 scan_bus_unused(struct bus *link)
-{
- struct device *dev;
-
- for (dev = link->children; dev; dev = dev->sibling) {
- if (dev->enabled)
- return 0;
- }
- return 1;
-}
-
/* Disable unused PEG devices based on devicetree */
static void disable_peg(void)
{
@@ -389,32 +378,27 @@ static void disable_peg(void)
reg = pci_read_config32(dev, DEVEN);
dev = dev_find_slot(0, PCI_DEVFN(1, 2));
- if (!dev || !dev->enabled ||
- (dev->link_list && scan_bus_unused(dev->link_list))) {
+ if (!dev || !dev->enabled) {
printk(BIOS_DEBUG, "Disabling PEG12.\n");
reg &= ~DEVEN_PEG12;
}
dev = dev_find_slot(0, PCI_DEVFN(1, 1));
- if (!dev || !dev->enabled ||
- (dev->link_list && scan_bus_unused(dev->link_list))) {
+ if (!dev || !dev->enabled) {
printk(BIOS_DEBUG, "Disabling PEG11.\n");
reg &= ~DEVEN_PEG11;
}
dev = dev_find_slot(0, PCI_DEVFN(1, 0));
- if (!dev || !dev->enabled ||
- (dev->link_list && scan_bus_unused(dev->link_list))) {
+ if (!dev || !dev->enabled) {
printk(BIOS_DEBUG, "Disabling PEG10.\n");
reg &= ~DEVEN_PEG10;
}
dev = dev_find_slot(0, PCI_DEVFN(2, 0));
- if (!dev || !dev->enabled ||
- (dev->link_list && scan_bus_unused(dev->link_list))) {
+ if (!dev || !dev->enabled) {
printk(BIOS_DEBUG, "Disabling IGD.\n");
reg &= ~DEVEN_IGD;
}
dev = dev_find_slot(0, PCI_DEVFN(6, 0));
- if (!dev || !dev->enabled ||
- (dev->link_list && scan_bus_unused(dev->link_list))) {
+ if (!dev || !dev->enabled) {
printk(BIOS_DEBUG, "Disabling PEG60.\n");
reg &= ~DEVEN_PEG60;
}