Alternative kernel package based on Arch Linux 6.19.9 with 12 upstream SDCA backport patches that enable audio on Intel Panther Lake systems (Dell XPS 2026 and similar hardware with CS35L57 SoundWire amps). The stock 6.19.9 kernel lacks the SDCA class/function topology driver code needed for PTL audio. These patches backport the SDCA support from mainline v7.0 to the stable 6.19.x series. Tested on Dell XPS 16 (Panther Lake): all 4 CS35L57 amps probe with calibration, SDCA jack detection works, sof-soundwire sound card registers successfully. CONFIG_RUST is disabled to avoid build failures with newer Rust toolchain versions. Rust is not required for audio functionality.
58 lines
2.1 KiB
Diff
58 lines
2.1 KiB
Diff
From 09b0835977b5fa955e35147513ed770e6bf0229d Mon Sep 17 00:00:00 2001
|
|
From: Charles Keepax <ckeepax@opensource.cirrus.com>
|
|
Date: Mon, 15 Dec 2025 15:36:49 +0000
|
|
Subject: [PATCH 02/17] ASoC: SDCA: Add ASoC jack hookup in class driver
|
|
|
|
Add the necessary calls to the class driver to connect the ASoC jack
|
|
from the machine driver.
|
|
|
|
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
|
|
Link: https://patch.msgid.link/20251215153650.3913117-4-ckeepax@opensource.cirrus.com
|
|
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
sound/soc/sdca/sdca_class_function.c | 13 +++++++++++++
|
|
1 file changed, 13 insertions(+)
|
|
|
|
diff --git a/sound/soc/sdca/sdca_class_function.c b/sound/soc/sdca/sdca_class_function.c
|
|
index 0028482a1e75..416948cfb5cb 100644
|
|
--- a/sound/soc/sdca/sdca_class_function.c
|
|
+++ b/sound/soc/sdca/sdca_class_function.c
|
|
@@ -19,6 +19,7 @@
|
|
#include <sound/sdca_fdl.h>
|
|
#include <sound/sdca_function.h>
|
|
#include <sound/sdca_interrupts.h>
|
|
+#include <sound/sdca_jack.h>
|
|
#include <sound/sdca_regmap.h>
|
|
#include <sound/sdw.h>
|
|
#include <sound/soc-component.h>
|
|
@@ -195,6 +196,15 @@ static int class_function_component_probe(struct snd_soc_component *component)
|
|
return sdca_irq_populate(drv->function, component, core->irq_info);
|
|
}
|
|
|
|
+static int class_function_set_jack(struct snd_soc_component *component,
|
|
+ struct snd_soc_jack *jack, void *d)
|
|
+{
|
|
+ struct class_function_drv *drv = snd_soc_component_get_drvdata(component);
|
|
+ struct sdca_class_drv *core = drv->core;
|
|
+
|
|
+ return sdca_jack_set_jack(core->irq_info, jack);
|
|
+}
|
|
+
|
|
static const struct snd_soc_component_driver class_function_component_drv = {
|
|
.probe = class_function_component_probe,
|
|
.endianness = 1,
|
|
@@ -351,6 +361,9 @@ static int class_function_probe(struct auxiliary_device *auxdev,
|
|
return dev_err_probe(dev, PTR_ERR(drv->regmap),
|
|
"failed to create regmap");
|
|
|
|
+ if (desc->type == SDCA_FUNCTION_TYPE_UAJ)
|
|
+ cmp_drv->set_jack = class_function_set_jack;
|
|
+
|
|
ret = sdca_asoc_populate_component(dev, drv->function, cmp_drv,
|
|
&dais, &num_dais,
|
|
&class_function_sdw_ops);
|
|
--
|
|
2.43.0
|
|
|