]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: qcom: sdw: remove redundant code
authorSrinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Wed, 22 Oct 2025 14:33:47 +0000 (15:33 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 29 Oct 2025 14:54:38 +0000 (14:54 +0000)
remove redundant code and pointers to handle sdw_stream_runtime by
making use of qcom_snd_sdw_get_stream(). This removes need of machine
specific shutdown and hw_params sdw callbacks and also need to store
sdw_stream_runtime pointers in machine drivers.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Tested-by: Steev Klimaszewski <threeway@gmail.com> # Thinkpad X13s
Link: https://patch.msgid.link/20251022143349.1081513-3-srinivas.kandagatla@oss.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/sc8280xp.c
sound/soc/qcom/sdw.c
sound/soc/qcom/sdw.h
sound/soc/qcom/sm8250.c
sound/soc/qcom/x1e80100.c

index ed8b04c6022e9f6c277236294c8db32e0ec92b70..b3f2558c9fb8f07e06f1c69fb4fcb780c4e425d6 100644 (file)
@@ -18,7 +18,6 @@
 struct sc8280xp_snd_data {
        bool stream_prepared[AFE_PORT_MAX];
        struct snd_soc_card *card;
-       struct sdw_stream_runtime *sruntime[AFE_PORT_MAX];
        struct snd_soc_jack jack;
        struct snd_soc_jack dp_jack[8];
        bool jack_setup;
@@ -68,17 +67,6 @@ static int sc8280xp_snd_init(struct snd_soc_pcm_runtime *rtd)
        return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup);
 }
 
-static void sc8280xp_snd_shutdown(struct snd_pcm_substream *substream)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sc8280xp_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = qcom_snd_sdw_get_stream(substream);
-
-       pdata->sruntime[cpu_dai->id] = NULL;
-       sdw_release_stream(sruntime);
-}
-
 static int sc8280xp_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
                                     struct snd_pcm_hw_params *params)
 {
@@ -108,25 +96,13 @@ static int sc8280xp_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
        return 0;
 }
 
-static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream,
-                               struct snd_pcm_hw_params *params)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sc8280xp_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card);
-
-       return qcom_snd_sdw_hw_params(substream, params, &pdata->sruntime[cpu_dai->id]);
-}
-
 static int sc8280xp_snd_prepare(struct snd_pcm_substream *substream)
 {
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
        struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
-       return qcom_snd_sdw_prepare(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_prepare(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static int sc8280xp_snd_hw_free(struct snd_pcm_substream *substream)
@@ -134,16 +110,13 @@ static int sc8280xp_snd_hw_free(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
-       return qcom_snd_sdw_hw_free(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_hw_free(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static const struct snd_soc_ops sc8280xp_be_ops = {
        .startup = qcom_snd_sdw_startup,
-       .shutdown = sc8280xp_snd_shutdown,
-       .hw_params = sc8280xp_snd_hw_params,
+       .shutdown = qcom_snd_sdw_shutdown,
        .hw_free = sc8280xp_snd_hw_free,
        .prepare = sc8280xp_snd_prepare,
 };
index 7b2cae92c812969c886e6b48d1193f47ef5f7069..c44659deea01ae0e951630d06e473f93f01c883b 100644 (file)
@@ -113,19 +113,21 @@ err_set_stream:
 EXPORT_SYMBOL_GPL(qcom_snd_sdw_startup);
 
 int qcom_snd_sdw_prepare(struct snd_pcm_substream *substream,
-                        struct sdw_stream_runtime *sruntime,
                         bool *stream_prepared)
 {
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
+       struct sdw_stream_runtime *sruntime;
        int ret;
 
-       if (!sruntime)
-               return 0;
 
        if (!qcom_snd_is_sdw_dai(cpu_dai->id))
                return 0;
 
+       sruntime = qcom_snd_sdw_get_stream(substream);
+       if (!sruntime)
+               return 0;
+
        if (*stream_prepared)
                return 0;
 
@@ -172,26 +174,24 @@ struct sdw_stream_runtime *qcom_snd_sdw_get_stream(struct snd_pcm_substream *sub
 }
 EXPORT_SYMBOL_GPL(qcom_snd_sdw_get_stream);
 
-int qcom_snd_sdw_hw_params(struct snd_pcm_substream *substream,
-                          struct snd_pcm_hw_params *params,
-                          struct sdw_stream_runtime **psruntime)
+void qcom_snd_sdw_shutdown(struct snd_pcm_substream *substream)
 {
-       *psruntime = qcom_snd_sdw_get_stream(substream);
-
-       return 0;
+       struct sdw_stream_runtime *sruntime = qcom_snd_sdw_get_stream(substream);
 
+       sdw_release_stream(sruntime);
 }
-EXPORT_SYMBOL_GPL(qcom_snd_sdw_hw_params);
+EXPORT_SYMBOL_GPL(qcom_snd_sdw_shutdown);
 
-int qcom_snd_sdw_hw_free(struct snd_pcm_substream *substream,
-                        struct sdw_stream_runtime *sruntime, bool *stream_prepared)
+int qcom_snd_sdw_hw_free(struct snd_pcm_substream *substream, bool *stream_prepared)
 {
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
+       struct sdw_stream_runtime *sruntime;
 
        if (!qcom_snd_is_sdw_dai(cpu_dai->id))
                return 0;
 
+       sruntime = qcom_snd_sdw_get_stream(substream);
        if (sruntime && *stream_prepared) {
                sdw_disable_stream(sruntime);
                sdw_deprepare_stream(sruntime);
index b8bc5beb052230aceb8f0591e22df838ec54020a..061a63f1ac523a0cd7e96f33ebfa5fc396da945b 100644 (file)
@@ -7,14 +7,10 @@
 #include <linux/soundwire/sdw.h>
 
 int qcom_snd_sdw_startup(struct snd_pcm_substream *substream);
+void qcom_snd_sdw_shutdown(struct snd_pcm_substream *substream);
 int qcom_snd_sdw_prepare(struct snd_pcm_substream *substream,
-                        struct sdw_stream_runtime *runtime,
                         bool *stream_prepared);
 struct sdw_stream_runtime *qcom_snd_sdw_get_stream(struct snd_pcm_substream *stream);
-int qcom_snd_sdw_hw_params(struct snd_pcm_substream *substream,
-                          struct snd_pcm_hw_params *params,
-                          struct sdw_stream_runtime **psruntime);
 int qcom_snd_sdw_hw_free(struct snd_pcm_substream *substream,
-                        struct sdw_stream_runtime *sruntime,
                         bool *stream_prepared);
 #endif
index ce5b0059207f1ccc6b1297527abdffb92187adbf..203a8705a42fe24046b588fbaee57aaab01b89f8 100644 (file)
@@ -21,7 +21,6 @@
 struct sm8250_snd_data {
        bool stream_prepared[AFE_PORT_MAX];
        struct snd_soc_card *card;
-       struct sdw_stream_runtime *sruntime[AFE_PORT_MAX];
        struct snd_soc_jack jack;
        struct snd_soc_jack usb_offload_jack;
        bool usb_offload_jack_setup;
@@ -112,36 +111,13 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
        return qcom_snd_sdw_startup(substream);
 }
 
-static void sm8250_snd_shutdown(struct snd_pcm_substream *substream)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sm8250_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = qcom_snd_sdw_get_stream(substream);
-
-       data->sruntime[cpu_dai->id] = NULL;
-       sdw_release_stream(sruntime);
-}
-
-static int sm8250_snd_hw_params(struct snd_pcm_substream *substream,
-                               struct snd_pcm_hw_params *params)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sm8250_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card);
-
-       return qcom_snd_sdw_hw_params(substream, params, &pdata->sruntime[cpu_dai->id]);
-}
-
 static int sm8250_snd_prepare(struct snd_pcm_substream *substream)
 {
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
        struct sm8250_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
-       return qcom_snd_sdw_prepare(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_prepare(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static int sm8250_snd_hw_free(struct snd_pcm_substream *substream)
@@ -149,16 +125,13 @@ static int sm8250_snd_hw_free(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct sm8250_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
-       return qcom_snd_sdw_hw_free(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_hw_free(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static const struct snd_soc_ops sm8250_be_ops = {
        .startup = sm8250_snd_startup,
-       .shutdown = sm8250_snd_shutdown,
-       .hw_params = sm8250_snd_hw_params,
+       .shutdown = qcom_snd_sdw_shutdown,
        .hw_free = sm8250_snd_hw_free,
        .prepare = sm8250_snd_prepare,
 };
index 2e3599516aa2ae3c3ffb2ca1f82ca1e38b569250..a3f4785c4bbe62e7e027deb6d810e0a0275d81c2 100644 (file)
@@ -18,7 +18,6 @@
 struct x1e80100_snd_data {
        bool stream_prepared[AFE_PORT_MAX];
        struct snd_soc_card *card;
-       struct sdw_stream_runtime *sruntime[AFE_PORT_MAX];
        struct snd_soc_jack jack;
        struct snd_soc_jack dp_jack[8];
        bool jack_setup;
@@ -50,17 +49,6 @@ static int x1e80100_snd_init(struct snd_soc_pcm_runtime *rtd)
        return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup);
 }
 
-static void x1e80100_snd_shutdown(struct snd_pcm_substream *substream)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = qcom_snd_sdw_get_stream(substream);
-
-       data->sruntime[cpu_dai->id] = NULL;
-       sdw_release_stream(sruntime);
-}
-
 static int x1e80100_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
                                     struct snd_pcm_hw_params *params)
 {
@@ -85,16 +73,6 @@ static int x1e80100_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
        return 0;
 }
 
-static int x1e80100_snd_hw_params(struct snd_pcm_substream *substream,
-                               struct snd_pcm_hw_params *params)
-{
-       struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-       struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-
-       return qcom_snd_sdw_hw_params(substream, params, &data->sruntime[cpu_dai->id]);
-}
-
 static int x1e80100_snd_hw_map_channels(unsigned int *ch_map, int num)
 {
        switch (num) {
@@ -128,7 +106,6 @@ static int x1e80100_snd_prepare(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
        struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
        unsigned int channels = substream->runtime->channels;
        unsigned int rx_slot[4];
        int ret;
@@ -149,8 +126,7 @@ static int x1e80100_snd_prepare(struct snd_pcm_substream *substream)
                break;
        }
 
-       return qcom_snd_sdw_prepare(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_prepare(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static int x1e80100_snd_hw_free(struct snd_pcm_substream *substream)
@@ -158,16 +134,13 @@ static int x1e80100_snd_hw_free(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
        struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
        struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
-       struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id];
 
-       return qcom_snd_sdw_hw_free(substream, sruntime,
-                                   &data->stream_prepared[cpu_dai->id]);
+       return qcom_snd_sdw_hw_free(substream, &data->stream_prepared[cpu_dai->id]);
 }
 
 static const struct snd_soc_ops x1e80100_be_ops = {
        .startup = qcom_snd_sdw_startup,
-       .shutdown = x1e80100_snd_shutdown,
-       .hw_params = x1e80100_snd_hw_params,
+       .shutdown = qcom_snd_sdw_shutdown,
        .hw_free = x1e80100_snd_hw_free,
        .prepare = x1e80100_snd_prepare,
 };