[coreboot-gerrit] New patch to review for coreboot: b414e82 pnp: Allow searching PNP device by port and device ID.

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Thu Dec 18 22:06:18 CET 2014


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7868

-gerrit

commit b414e828f7aae2d8483efb39a5f02295036f3c5f
Author: Hung-Te Lin <hungte at chromium.org>
Date:   Thu Mar 20 12:04:33 2014 +0800

    pnp: Allow searching PNP device by port and device ID.
    
    To access superio in ramstage, we need to find the device by PNP path.
    
    Original-Change-Id: Iea4451381545f7c401e212ac7d7567a32aa92b25
    Original-Reviewed-on: https://chromium-review.googlesource.com/190841
    
    BRANCH=zako
    BUG=chrome-os-partner:25024
    TEST=emerge-zako chromeos-coreboot-zako
    
    Original-Change-Id: I6118177e5d62b32596caeb119800e8716c998a90
    Original-Signed-off-by: Hung-Te Lin <hungte at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/190972
    Original-Reviewed-by: Stefan Reinauer <reinauer at chromium.org>
    (cherry picked from commit 997f005737aeb5a1e96b9e8e00e77297e3c6fb8a)
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    
    Change-Id: I13a6b6550ac4bf0fea9ffab636966e15745e3bb3
---
 src/device/device_util.c    | 23 +++++++++++++++++++++++
 src/include/device/device.h |  1 +
 2 files changed, 24 insertions(+)

diff --git a/src/device/device_util.c b/src/device/device_util.c
index d5466cb..77ed46d 100644
--- a/src/device/device_util.c
+++ b/src/device/device_util.c
@@ -135,6 +135,29 @@ device_t dev_find_lapic(unsigned apic_id)
 }
 
 /**
+ * Find a PNP device of given port and device ID.
+ *
+ * @param port A PNP port ID.
+ * @param device A PNP device ID.
+ * @return Pointer to the device struct.
+ */
+struct device *dev_find_pnp(unsigned int port, unsigned int device)
+{
+	struct device *dev, *result;
+
+	result = NULL;
+	for (dev = all_devices; dev; dev = dev->next) {
+		if ((dev->path.type == DEVICE_PATH_PNP) &&
+		    (dev->path.pnp.port == port) &&
+		    (dev->path.pnp.device == device)) {
+			result = dev;
+			break;
+		}
+	}
+	return result;
+}
+
+/**
  * Find a device of a given vendor and type.
  *
  * @param vendor A PCI vendor ID (e.g. 0x8086 for Intel).
diff --git a/src/include/device/device.h b/src/include/device/device.h
index c67205c..571291f 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -194,6 +194,7 @@ device_t dev_find_slot (unsigned int bus, unsigned int devfn);
 device_t dev_find_slot_on_smbus (unsigned int bus, unsigned int addr);
 device_t dev_find_slot_pnp(u16 port, u16 device);
 device_t dev_find_lapic(unsigned apic_id);
+device_t dev_find_pnp(unsigned int port, unsigned int device);
 int dev_count_cpu(void);
 
 void remap_bsp_lapic(struct bus *cpu_bus);



More information about the coreboot-gerrit mailing list