ASoC: SOF: intel: hda: support also devices with 1 and 3 dmics
authorJaska Uimonen <jaska.uimonen@linux.intel.com>
Tue, 25 Aug 2020 23:50:36 +0000 (16:50 -0700)
committerMark Brown <broonie@kernel.org>
Wed, 26 Aug 2020 12:19:13 +0000 (13:19 +0100)
Currently the dmic check code supports only devices with 2 or 4 dmics.
With other dmic counts the function will return 0. Lately we've seen
devices with only 1 dmic thus enable also configurations with 1, and
possibly 3, dmics. Add also topology postfix -1ch and -3ch for new dmic
configuration.

Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20200825235040.1586478-4-ranjani.sridharan@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda.c

index b8157c1..0e8285b 100644 (file)
@@ -544,7 +544,7 @@ static int check_nhlt_dmic(struct snd_sof_dev *sdev)
        if (nhlt) {
                dmic_num = intel_nhlt_get_dmic_geo(sdev->dev, nhlt);
                intel_nhlt_free(nhlt);
-               if (dmic_num == 2 || dmic_num == 4)
+               if (dmic_num >= 1 && dmic_num <= 4)
                        return dmic_num;
        }
 
@@ -992,9 +992,15 @@ static int hda_generic_machine_select(struct snd_sof_dev *sdev)
                                dmic_num = hda_dmic_num;
 
                        switch (dmic_num) {
+                       case 1:
+                               dmic_str = "-1ch";
+                               break;
                        case 2:
                                dmic_str = "-2ch";
                                break;
+                       case 3:
+                               dmic_str = "-3ch";
+                               break;
                        case 4:
                                dmic_str = "-4ch";
                                break;