diff options
author | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2020-11-04 19:00:07 +0100 |
---|---|---|
committer | Petri Latvala <petri.latvala@intel.com> | 2020-11-05 09:56:01 +0200 |
commit | 93669cadf89d5ef72c7c519f59318be9ec77a574 (patch) | |
tree | 98c2760a530962bf43766712d73af1046a9d23c5 | |
parent | 212e55b9aa9e98a3ef63f37a50fd5b69761fbecd (diff) |
lib/igt_device_scan: Provide function for return integrated card
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@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Cc: Lyude Paul <lyude@redhat.com>
Reviewed-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
-rw-r--r-- | lib/igt_device_scan.c | 29 | ||||
-rw-r--r-- | 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); |