mirror of
https://abf.rosa.ru/djam/kernel-5.15.git
synced 2025-02-23 18:42:55 +00:00
73 lines
2.4 KiB
Diff
73 lines
2.4 KiB
Diff
![]() |
From dbcf5bacadce817447500064768c7e9b97b93d12 Mon Sep 17 00:00:00 2001
|
||
|
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||
|
Date: Tue, 8 Mar 2022 13:25:55 -0600
|
||
|
Subject: [PATCH 426/429] ASoC: SOF: Intel: hda: report SSP link mask to
|
||
|
machine driver
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
For devices designed for Windows, the SSP information should be listed
|
||
|
in the NHLT, and when present can be used to set quirks automatically
|
||
|
in the machine driver.
|
||
|
|
||
|
The NHLT information exposes BT and analog audio connections
|
||
|
separately, for now we are only interested in the analog audio parts.
|
||
|
|
||
|
The use of dev_info() for the SSP mask is intentional so that we can
|
||
|
immediately flag devices with an ES8336 codec. Since NHLT is not used
|
||
|
for recent Chromebooks these messages should be rare.
|
||
|
|
||
|
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||
|
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
|
||
|
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
|
||
|
Link: https://lore.kernel.org/r/20220308192610.392950-6-pierre-louis.bossart@linux.intel.com
|
||
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||
|
---
|
||
|
sound/soc/sof/intel/hda.c | 22 ++++++++++++++++++++++
|
||
|
1 file changed, 22 insertions(+)
|
||
|
|
||
|
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
|
||
|
index 35cbef171..0606ab264 100644
|
||
|
--- a/sound/soc/sof/intel/hda.c
|
||
|
+++ b/sound/soc/sof/intel/hda.c
|
||
|
@@ -534,6 +534,25 @@ static int hda_init(struct snd_sof_dev *sdev)
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
+static int check_nhlt_ssp_mask(struct snd_sof_dev *sdev)
|
||
|
+{
|
||
|
+ struct nhlt_acpi_table *nhlt;
|
||
|
+ int ssp_mask = 0;
|
||
|
+
|
||
|
+ nhlt = intel_nhlt_init(sdev->dev);
|
||
|
+ if (!nhlt)
|
||
|
+ return ssp_mask;
|
||
|
+
|
||
|
+ if (intel_nhlt_has_endpoint_type(nhlt, NHLT_LINK_SSP)) {
|
||
|
+ ssp_mask = intel_nhlt_ssp_endpoint_mask(nhlt, NHLT_DEVICE_I2S);
|
||
|
+ if (ssp_mask)
|
||
|
+ dev_info(sdev->dev, "NHLT_DEVICE_I2S detected, ssp_mask %#x\n", ssp_mask);
|
||
|
+ }
|
||
|
+ intel_nhlt_free(nhlt);
|
||
|
+
|
||
|
+ return ssp_mask;
|
||
|
+}
|
||
|
+
|
||
|
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) || IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE)
|
||
|
|
||
|
static int check_nhlt_dmic(struct snd_sof_dev *sdev)
|
||
|
@@ -1287,6 +1306,9 @@ void hda_machine_select(struct snd_sof_dev *sdev)
|
||
|
mach->mach_params.links = mach->links;
|
||
|
mach->mach_params.link_mask = mach->link_mask;
|
||
|
}
|
||
|
+
|
||
|
+ /* report SSP link mask to machine driver */
|
||
|
+ mach->mach_params.i2s_link_mask = check_nhlt_ssp_mask(sdev);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
--
|
||
|
2.35.2
|
||
|
|