ASoC: mediatek: mt8195: Migrate to the common mtk_soundcard_startup
Add a const mtk_pcm_constraints_data struct array with all of the (again, constant) constraints for all of the supported usecases, remove the duplicated functions and call mtk_soundcard_startup() instead in all of the .startup() callbacks. Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20240416071410.75620-9-angelogioacchino.delregno@collabora.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
fe071237de
commit
386fe4ceaf
@ -328,44 +328,7 @@ static int mt8195_mt6359_init(struct snd_soc_pcm_runtime *rtd)
|
||||
|
||||
static int mt8195_hdmitx_dptx_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
static const unsigned int rates[] = {
|
||||
48000
|
||||
};
|
||||
static const unsigned int channels[] = {
|
||||
2, 4, 6, 8
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_rates = {
|
||||
.count = ARRAY_SIZE(rates),
|
||||
.list = rates,
|
||||
.mask = 0,
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_channels = {
|
||||
.count = ARRAY_SIZE(channels),
|
||||
.list = channels,
|
||||
.mask = 0,
|
||||
};
|
||||
|
||||
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
|
||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||
int ret;
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE,
|
||||
&constraints_rates);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list rate failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_CHANNELS,
|
||||
&constraints_channels);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list channel failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return mtk_soundcard_startup(substream, MTK_CONSTRAINT_HDMIDP);
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops mt8195_hdmitx_dptx_playback_ops = {
|
||||
@ -428,98 +391,6 @@ static int mt8195_dptx_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mt8195_playback_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
static const unsigned int rates[] = {
|
||||
48000
|
||||
};
|
||||
static const unsigned int channels[] = {
|
||||
2
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_rates = {
|
||||
.count = ARRAY_SIZE(rates),
|
||||
.list = rates,
|
||||
.mask = 0,
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_channels = {
|
||||
.count = ARRAY_SIZE(channels),
|
||||
.list = channels,
|
||||
.mask = 0,
|
||||
};
|
||||
|
||||
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
|
||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||
int ret;
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE,
|
||||
&constraints_rates);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list rate failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_CHANNELS,
|
||||
&constraints_channels);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list channel failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops mt8195_playback_ops = {
|
||||
.startup = mt8195_playback_startup,
|
||||
};
|
||||
|
||||
static int mt8195_capture_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
static const unsigned int rates[] = {
|
||||
48000
|
||||
};
|
||||
static const unsigned int channels[] = {
|
||||
1, 2
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_rates = {
|
||||
.count = ARRAY_SIZE(rates),
|
||||
.list = rates,
|
||||
.mask = 0,
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_channels = {
|
||||
.count = ARRAY_SIZE(channels),
|
||||
.list = channels,
|
||||
.mask = 0,
|
||||
};
|
||||
|
||||
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
|
||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||
int ret;
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_RATE,
|
||||
&constraints_rates);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list rate failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_pcm_hw_constraint_list(runtime, 0,
|
||||
SNDRV_PCM_HW_PARAM_CHANNELS,
|
||||
&constraints_channels);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list channel failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops mt8195_capture_ops = {
|
||||
.startup = mt8195_capture_startup,
|
||||
};
|
||||
|
||||
static int mt8195_rt5682_etdm_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
@ -1042,7 +913,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8195_playback_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(DL2_FE),
|
||||
},
|
||||
[DAI_LINK_DL3_FE] = {
|
||||
@ -1054,7 +925,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8195_playback_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(DL3_FE),
|
||||
},
|
||||
[DAI_LINK_DL6_FE] = {
|
||||
@ -1066,7 +937,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8195_playback_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(DL6_FE),
|
||||
},
|
||||
[DAI_LINK_DL7_FE] = {
|
||||
@ -1089,7 +960,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8195_playback_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(DL8_FE),
|
||||
},
|
||||
[DAI_LINK_DL10_FE] = {
|
||||
@ -1113,7 +984,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8195_playback_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(DL11_FE),
|
||||
},
|
||||
[DAI_LINK_UL1_FE] = {
|
||||
@ -1136,7 +1007,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL2_FE),
|
||||
},
|
||||
[DAI_LINK_UL3_FE] = {
|
||||
@ -1148,7 +1019,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL3_FE),
|
||||
},
|
||||
[DAI_LINK_UL4_FE] = {
|
||||
@ -1160,7 +1031,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL4_FE),
|
||||
},
|
||||
[DAI_LINK_UL5_FE] = {
|
||||
@ -1172,7 +1043,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL5_FE),
|
||||
},
|
||||
[DAI_LINK_UL6_FE] = {
|
||||
@ -1195,7 +1066,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL8_FE),
|
||||
},
|
||||
[DAI_LINK_UL9_FE] = {
|
||||
@ -1207,7 +1078,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL9_FE),
|
||||
},
|
||||
[DAI_LINK_UL10_FE] = {
|
||||
@ -1219,7 +1090,7 @@ static struct snd_soc_dai_link mt8195_mt6359_dai_links[] = {
|
||||
},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8195_capture_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(UL10_FE),
|
||||
},
|
||||
/* BE */
|
||||
@ -1561,6 +1432,40 @@ static int mt8195_mt6359_soc_card_probe(struct mtk_soc_card_data *soc_card_data,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const unsigned int mt8195_pcm_playback_channels[] = { 2 };
|
||||
static const unsigned int mt8195_pcm_capture_channels[] = { 1, 2 };
|
||||
static const unsigned int mt8195_pcm_hdmidp_channels[] = { 2, 4, 6, 8 };
|
||||
static const unsigned int mt8195_pcm_rates[] = { 48000 };
|
||||
|
||||
static const struct snd_pcm_hw_constraint_list mt8195_rate_constraint = {
|
||||
.list = mt8195_pcm_rates,
|
||||
.count = ARRAY_SIZE(mt8195_pcm_rates)
|
||||
};
|
||||
|
||||
static const struct mtk_pcm_constraints_data mt8195_pcm_constraints[MTK_CONSTRAINT_HDMIDP + 1] = {
|
||||
[MTK_CONSTRAINT_PLAYBACK] = {
|
||||
.channels = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8195_pcm_playback_channels,
|
||||
.count = ARRAY_SIZE(mt8195_pcm_playback_channels)
|
||||
},
|
||||
.rates = &mt8195_rate_constraint,
|
||||
},
|
||||
[MTK_CONSTRAINT_CAPTURE] = {
|
||||
.channels = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8195_pcm_capture_channels,
|
||||
.count = ARRAY_SIZE(mt8195_pcm_capture_channels)
|
||||
},
|
||||
.rates = &mt8195_rate_constraint,
|
||||
},
|
||||
[MTK_CONSTRAINT_HDMIDP] = {
|
||||
.channels = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8195_pcm_hdmidp_channels,
|
||||
.count = ARRAY_SIZE(mt8195_pcm_hdmidp_channels)
|
||||
},
|
||||
.rates = &mt8195_rate_constraint,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct mtk_sof_priv mt8195_sof_priv = {
|
||||
.conn_streams = g_sof_conn_streams,
|
||||
.num_streams = ARRAY_SIZE(g_sof_conn_streams),
|
||||
@ -1572,6 +1477,8 @@ static const struct mtk_soundcard_pdata mt8195_mt6359_rt1019_rt5682_card = {
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8195_mt6359_soc_card,
|
||||
.num_jacks = MT8195_JACK_MAX,
|
||||
.pcm_constraints = mt8195_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8195_pcm_constraints),
|
||||
.flags = RT1019_SPEAKER_AMP_PRESENT
|
||||
},
|
||||
.sof_priv = &mt8195_sof_priv,
|
||||
@ -1583,6 +1490,8 @@ static const struct mtk_soundcard_pdata mt8195_mt6359_rt1011_rt5682_card = {
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8195_mt6359_soc_card,
|
||||
.num_jacks = MT8195_JACK_MAX,
|
||||
.pcm_constraints = mt8195_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8195_pcm_constraints),
|
||||
.flags = RT1011_SPEAKER_AMP_PRESENT
|
||||
},
|
||||
.sof_priv = &mt8195_sof_priv,
|
||||
@ -1594,6 +1503,8 @@ static const struct mtk_soundcard_pdata mt8195_mt6359_max98390_rt5682_card = {
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8195_mt6359_soc_card,
|
||||
.num_jacks = MT8195_JACK_MAX,
|
||||
.pcm_constraints = mt8195_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8195_pcm_constraints),
|
||||
.flags = MAX98390_SPEAKER_AMP_PRESENT
|
||||
},
|
||||
.sof_priv = &mt8195_sof_priv,
|
||||
|
Loading…
x
Reference in New Issue
Block a user