Kyösti Mälkki (kyosti.malkki(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8544
-gerrit
commit 64d8bf35635cc8ab4fe2a10e7b163569af13d012
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Fri Feb 20 20:19:16 2015 +0200
devicetree: Extend scans to all bridge devices
When PCI bridge or PCI-e rootport is disabled in devicetree, it
still must be configured if it cannot be hidden.
For purposes of power-management it may be necessary to enable
bridge to put devices on secondary side, before disabling the
bridge itself.
Change-Id: I710a95fd35543bc4e671c9ac18d7ce22c4df2476
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
---
src/device/device.c | 3 ---
src/device/pci_device.c | 3 +++
src/device/root_device.c | 8 ++++++++
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/device/device.c b/src/device/device.c
index 832b3a1..42c1080 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -913,9 +913,6 @@ static void scan_bus(struct device *busdev)
{
int do_scan_bus;
- if (!busdev->enabled)
- return;
-
printk(BIOS_SPEW, "%s scanning...\n", dev_path(busdev));
post_log_path(busdev);
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index c505517..86105e2 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -1224,6 +1224,9 @@ void do_pci_scan_bridge(struct device *dev,
{
struct bus *bus;
+ if (!dev->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(dev));
if (dev->link_list == NULL) {
diff --git a/src/device/root_device.c b/src/device/root_device.c
index a5ecf0e..2620a6c 100644
--- a/src/device/root_device.c
+++ b/src/device/root_device.c
@@ -69,6 +69,11 @@ static void scan_static_bus(device_t bus)
void int scan_lpc_bus(device_t bus)
{
+ struct bus *link;
+
+ if (!bus->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
scan_static_bus(bus);
@@ -81,6 +86,9 @@ void scan_smbus(device_t bus)
device_t child;
struct bus *link;
+ if (!bus->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
max = scan_static_bus(bus, max);
Kyösti Mälkki (kyosti.malkki(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8544
-gerrit
commit f7a07004fab625acae9a80b1605cdb0d610a499f
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Fri Feb 20 20:19:16 2015 +0200
devicetree: Extend scans to all bridge devices
When PCI bridge or PCI-e rootport is disabled in devicetree, it
still must be configured if it cannot be hidden.
For purposes of power-management it may be necessary to enable
bridge to put devices on secondary side, before disabling the
bridge itself.
Change-Id: I710a95fd35543bc4e671c9ac18d7ce22c4df2476
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
---
src/device/device.c | 3 ---
src/device/pci_device.c | 3 +++
src/device/root_device.c | 8 ++++++++
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/device/device.c b/src/device/device.c
index 832b3a1..42c1080 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -913,9 +913,6 @@ static void scan_bus(struct device *busdev)
{
int do_scan_bus;
- if (!busdev->enabled)
- return;
-
printk(BIOS_SPEW, "%s scanning...\n", dev_path(busdev));
post_log_path(busdev);
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index c505517..86105e2 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -1224,6 +1224,9 @@ void do_pci_scan_bridge(struct device *dev,
{
struct bus *bus;
+ if (!dev->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(dev));
if (dev->link_list == NULL) {
diff --git a/src/device/root_device.c b/src/device/root_device.c
index a5ecf0e..2620a6c 100644
--- a/src/device/root_device.c
+++ b/src/device/root_device.c
@@ -69,6 +69,11 @@ static void scan_static_bus(device_t bus)
void int scan_lpc_bus(device_t bus)
{
+ struct bus *link;
+
+ if (!bus->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
scan_static_bus(bus);
@@ -81,6 +86,9 @@ void scan_smbus(device_t bus)
device_t child;
struct bus *link;
+ if (!bus->enabled)
+ return;
+
printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
max = scan_static_bus(bus, max);
Kyösti Mälkki (kyosti.malkki(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8542
-gerrit
commit 0665486615ba4867cc7510a2444e22629e702360
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Fri Feb 27 17:24:00 2015 +0200
devicetree: Remove dev_find_slot() implementation in romstage
PCI tree has not been enumerated yet in romstage, so all bridge devices
found in the static devicetree have their secondary bus number initialized to 0.
Change-Id: Ib797210102c942bad3549b756ab0ebe5870b3ce4
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
---
src/device/device_romstage.c | 24 ------------------------
src/include/device/device.h | 2 --
2 files changed, 26 deletions(-)
diff --git a/src/device/device_romstage.c b/src/device/device_romstage.c
index df0df6a..b28dedf 100644
--- a/src/device/device_romstage.c
+++ b/src/device/device_romstage.c
@@ -31,30 +31,6 @@
ROMSTAGE_CONST struct device * ROMSTAGE_CONST all_devices = &dev_root;
/**
- * Given a PCI bus and a devfn number, find the device structure.
- *
- * @param bus The bus number.
- * @param devfn A device/function number.
- * @return Pointer to the device structure (if found), 0 otherwise.
- */
-ROMSTAGE_CONST struct device *dev_find_slot(unsigned int bus,
- unsigned int devfn)
-{
- ROMSTAGE_CONST struct device *dev, *result;
-
- result = 0;
- for (dev = all_devices; dev; dev = dev->next) {
- if ((dev->path.type == DEVICE_PATH_PCI) &&
- (dev->bus->secondary == bus) &&
- (dev->path.pci.devfn == devfn)) {
- result = dev;
- break;
- }
- }
- return result;
-}
-
-/**
* Given a device pointer, find the next PCI device.
*
* @param previous_dev A pointer to a PCI device structure.
diff --git a/src/include/device/device.h b/src/include/device/device.h
index a09413f..0ead7e2 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -258,8 +258,6 @@ u32 find_pci_tolm(struct bus *bus);
#else /* vv __SIMPLE_DEVICE__ vv */
-ROMSTAGE_CONST struct device * dev_find_slot (unsigned int bus,
- unsigned int devfn);
ROMSTAGE_CONST struct device *dev_find_next_pci_device(
ROMSTAGE_CONST struct device *previous_dev);
ROMSTAGE_CONST struct device * dev_find_slot_on_smbus (unsigned int bus,