mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
ASoC: qcom: sdw: remove redundant code
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>
This commit is contained in:
committed by
Mark Brown
parent
bcba172793
commit
d02460317e
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user