[d-kernel] [PATCH 4/7] ASoC: Intel: add UCM component for es8336 headset mic + Dmic inverse topology

kovalev на altlinux.org kovalev на altlinux.org
Ср Дек 6 19:44:10 MSK 2023


From: Vasiliy Kovalev <kovalev на altlinux.org>

Signed-off-by: Vasiliy Kovalev <kovalev на altlinux.org>
---
 sound/soc/intel/boards/sof_es8336.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/sound/soc/intel/boards/sof_es8336.c b/sound/soc/intel/boards/sof_es8336.c
index 233a1fc878fe96..51caf5e622b079 100644
--- a/sound/soc/intel/boards/sof_es8336.c
+++ b/sound/soc/intel/boards/sof_es8336.c
@@ -50,6 +50,7 @@
 #define SOF_ES8336_JD_INVERTED			BIT(6)
 #define SOF_ES8336_HEADPHONE_GPIO		BIT(7)
 #define SOC_ES8336_HEADSET_MIC1			BIT(8)
+#define SOC_ES8336_HEADSET_MIC_INV		BIT(21)
 
 static unsigned long quirk;
 
@@ -607,7 +608,7 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
 	return NULL;
 }
 
-static char soc_components[30];
+static char soc_components[40];
 
  /* i2c-<HID>:00 with HID being 8 chars */
 static char codec_name[SND_ACPI_I2C_ID_LEN];
@@ -711,6 +712,13 @@ static int sof_es8336_probe(struct platform_device *pdev)
 	snprintf(soc_components, sizeof(soc_components), "spk:ES83%d6",
 					strstr(codec_name, "ESSX8326")? 2 : 1);
 
+	/* for inverse topology Dmic + HeadsetMic */
+	if (quirk & SOC_ES8336_HEADSET_MIC_INV) {
+		char hmic_component[10];
+		snprintf(hmic_component, sizeof(hmic_component), " hmic-inv");
+		strcat(soc_components,hmic_component);
+	}
+
 	codec_dev = acpi_get_first_physical_node(adev);
 	acpi_dev_put(adev);
 	if (!codec_dev)
-- 
2.33.8



Подробная информация о списке рассылки devel-kernel