ASoC: Intel: sof_cirrus_common: Guard against missing buses
authorCurtis Malainey <cujomalainey@chromium.org>
Wed, 19 Apr 2023 19:55:18 +0000 (14:55 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 20 Apr 2023 11:51:48 +0000 (12:51 +0100)
Even if we find a acpi device we can still be missing the physical node.

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230419195524.46995-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_cirrus_common.c

index 851c516..8b8b07e 100644 (file)
@@ -168,11 +168,16 @@ static int cs35l41_compute_codec_conf(void)
                        continue;
                }
                physdev = get_device(acpi_get_first_physical_node(adev));
+               acpi_dev_put(adev);
+               if (!physdev) {
+                       pr_devel("Cannot find physical node for HID %s UID %u (%s)\n", CS35L41_HID,
+                                       uid, cs35l41_name_prefixes[uid]);
+                       return 0;
+               }
                cs35l41_components[sz].name = dev_name(physdev);
                cs35l41_components[sz].dai_name = CS35L41_CODEC_DAI;
                cs35l41_codec_conf[sz].dlc.name = dev_name(physdev);
                cs35l41_codec_conf[sz].name_prefix = cs35l41_name_prefixes[uid];
-               acpi_dev_put(adev);
                sz++;
        }