ALSA: hda/i915: extend connectivity check to cover Intel ARL
authorKai Vehmanen <kai.vehmanen@linux.intel.com>
Wed, 2 Aug 2023 15:01:05 +0000 (10:01 -0500)
committerTakashi Iwai <tiwai@suse.de>
Fri, 4 Aug 2023 10:53:53 +0000 (12:53 +0200)
Expand the HDA/I915 connectivity check to correctly handle
the PCI topology used in some Intel Arrow Lake products.

Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Tested-by: "T, Arun" <arun.t@intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20230802150105.24604-6-pierre-louis.bossart@linux.intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/hdac_i915.c

index 2a451ff4fe6adfe71f86a24ec522c1f67493606b..b428537f284c725f47e4f16f79867a992dcb99e8 100644 (file)
@@ -75,14 +75,20 @@ static bool connectivity_check(struct pci_dev *i915, struct pci_dev *hdac)
        if (bus_a == bus_b)
                return true;
 
-       /*
-        * on i915 discrete GPUs with embedded HDA audio, the two
-        * devices are connected via 2nd level PCI bridge
-        */
        bus_a = bus_a->parent;
        bus_b = bus_b->parent;
+
+       /* connected via parent bus (may be NULL!) */
+       if (bus_a == bus_b)
+               return true;
+
        if (!bus_a || !bus_b)
                return false;
+
+       /*
+        * on i915 discrete GPUs with embedded HDA audio, the two
+        * devices are connected via 2nd level PCI bridge
+        */
        bus_a = bus_a->parent;
        bus_b = bus_b->parent;
        if (bus_a && bus_a == bus_b)