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>
This commit is contained in:
parent
b27c24f69b
commit
2dc15e9ea8
@ -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)));
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user