[d-kernel] [PATCH v2 2/9] ASoC: Intel: sof_es8336: Add quirk for inverted jack detect

nickel на altlinux.org nickel на altlinux.org
Чт Апр 7 14:15:10 MSK 2022


From: Vasily Vinogradov <v.vinogradov at aq.ru>

Backport from 5.17
Based on upstream commit 8e5db49182415b8bfce3b5843fc87e49c83c02aa

Link: https://lore.kernel.org/r/20220308192610.392950-18-pierre-louis.bossart@linux.intel.com
Signed-off-by: Vasily Vinogradov <v.vinogradov at aq.ru>
Signed-off-by: Nikolai Kostrigin <nickel at altlinux.org>
---
 sound/soc/intel/boards/sof_es8336.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/sound/soc/intel/boards/sof_es8336.c b/sound/soc/intel/boards/sof_es8336.c
index 20d577eaab6d..7966a61b22c8 100644
--- a/sound/soc/intel/boards/sof_es8336.c
+++ b/sound/soc/intel/boards/sof_es8336.c
@@ -26,6 +26,7 @@
 
 #define SOF_ES8336_TGL_GPIO_QUIRK		BIT(4)
 #define SOF_ES8336_ENABLE_DMIC			BIT(5)
+#define SOF_ES8336_JD_INVERTED			BIT(6)
 
 static unsigned long quirk;
 
@@ -33,6 +34,9 @@ static int quirk_override = -1;
 module_param_named(quirk, quirk_override, int, 0444);
 MODULE_PARM_DESC(quirk, "Board-specific quirk override");
 
+/* jd-inv + terminating entry */
+#define SOF_ES8336_PROPS_MAX	2
+
 struct sof_es8336_private {
 	struct device *codec_dev;
 	struct gpio_desc *gpio_pa;
@@ -64,6 +68,8 @@ static const struct acpi_gpio_mapping *gpio_mapping = acpi_es8336_gpios;
 static void log_quirks(struct device *dev)
 {
 	dev_info(dev, "quirk SSP%ld",  SOF_ES8336_SSP_CODEC(quirk));
+	dev_info(dev, "quirk JD_INVERTED %s\n",
+		 (quirk & SOF_ES8336_JD_INVERTED) ? "enabled" : "disabled");
 }
 
 static int sof_es8316_speaker_power_event(struct snd_soc_dapm_widget *w,
@@ -459,6 +465,8 @@ static int sof_es8336_probe(struct platform_device *pdev)
 	struct acpi_device *adev;
 	struct snd_soc_dai_link *dai_links;
 	struct device *codec_dev;
+	struct property_entry props[SOF_ES8336_PROPS_MAX] = {};
+	unsigned int cnt = 0;
 	int dmic_be_num = 0;
 	int hdmi_num = 3;
 	int ret;
@@ -511,6 +519,18 @@ static int sof_es8336_probe(struct platform_device *pdev)
 	if (!codec_dev)
 		return -EPROBE_DEFER;
 
+	if (quirk & SOF_ES8336_JD_INVERTED)
+		props[cnt++] = PROPERTY_ENTRY_BOOL("everest,jack-detect-inverted");
+
+	if (cnt) {
+		ret = device_add_properties(codec_dev, props);
+		if (ret) {
+			dev_err(codec_dev, "%s, could not add properties: %d\n",
+				__func__, ret);
+			goto err;
+		}
+	}
+
 	ret = devm_acpi_dev_add_driver_gpios(codec_dev, gpio_mapping);
 	if (ret)
 		dev_warn(codec_dev, "unable to add GPIO mapping table\n");
-- 
2.33.0



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