]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: SDCA: Add ASoC jack hookup in class driver
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Mon, 15 Dec 2025 15:36:49 +0000 (15:36 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 22 Dec 2025 09:00:58 +0000 (09:00 +0000)
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

index 0028482a1e75206e372407546a3d6d10a51232a2..416948cfb5cb9641b09d878fccca8e44ed083ecb 100644 (file)
@@ -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);