[igt-dev] [PATCH i-g-t 1/2] lib/igt_device_scan: Provide function for return integrated card
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Wed Nov 4 18:00:07 UTC 2020
Sometimes we need to get integrated card (like in intel_gpu_top)
so add function which does it.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Petri Latvala <petri.latvala at intel.com>
Cc: Ayaz A Siddiqui <ayaz.siddiqui at intel.com>
Cc: Lyude Paul <lyude at redhat.com>
---
lib/igt_device_scan.c | 29 +++++++++++++++++++++++++----
lib/igt_device_scan.h | 1 +
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/lib/igt_device_scan.c b/lib/igt_device_scan.c
index 0967c645..c581a31a 100644
--- a/lib/igt_device_scan.c
+++ b/lib/igt_device_scan.c
@@ -465,12 +465,13 @@ __copy_dev_to_card(struct igt_device *dev, struct igt_device_card *card)
}
/*
- * Iterate over all igt_devices array and find first discrete card.
- * card->pci_slot_name will be updated only if a discrete card is present.
+ * Iterate over all igt_devices array and find first discrete/integrated card.
+ * card->pci_slot_name will be updated only if a card is found.
*/
-bool igt_device_find_first_i915_discrete_card(struct igt_device_card *card)
+static bool __find_first_i915_card(struct igt_device_card *card, bool discrete)
{
struct igt_device *dev;
+ int cmp;
memset(card, 0, sizeof(*card));
@@ -479,7 +480,13 @@ bool igt_device_find_first_i915_discrete_card(struct igt_device_card *card)
if (!is_pci_subsystem(dev) || !is_vendor_matched(dev, "intel"))
continue;
- if ((strncmp(dev->pci_slot_name, INTEGRATED_I915_GPU_PCI_ID, PCI_SLOT_NAME_SIZE)) != 0) {
+ cmp = strncmp(dev->pci_slot_name, INTEGRATED_I915_GPU_PCI_ID,
+ PCI_SLOT_NAME_SIZE);
+
+ if (discrete && cmp) {
+ __copy_dev_to_card(dev, card);
+ return true;
+ } else if (!discrete && !cmp) {
__copy_dev_to_card(dev, card);
return true;
}
@@ -488,6 +495,20 @@ bool igt_device_find_first_i915_discrete_card(struct igt_device_card *card)
return false;
}
+bool igt_device_find_first_i915_discrete_card(struct igt_device_card *card)
+{
+ igt_assert(card);
+
+ return __find_first_i915_card(card, true);
+}
+
+bool igt_device_find_integrated_card(struct igt_device_card *card)
+{
+ igt_assert(card);
+
+ return __find_first_i915_card(card, false);
+}
+
static struct igt_device *igt_device_from_syspath(const char *syspath)
{
struct igt_device *dev;
diff --git a/lib/igt_device_scan.h b/lib/igt_device_scan.h
index 544e982c..99daee0c 100644
--- a/lib/igt_device_scan.h
+++ b/lib/igt_device_scan.h
@@ -71,6 +71,7 @@ bool igt_device_card_match(const char *filter, struct igt_device_card *card);
bool igt_device_card_match_pci(const char *filter,
struct igt_device_card *card);
bool igt_device_find_first_i915_discrete_card(struct igt_device_card *card);
+bool igt_device_find_integrated_card(struct igt_device_card *card);
int igt_open_card(struct igt_device_card *card);
int igt_open_render(struct igt_device_card *card);
--
2.26.0
More information about the igt-dev
mailing list