ASoC: mediatek: mt8192: 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-10-angelogioacchino.delregno@collabora.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
386fe4ceaf
commit
94142cc1ff
@ -389,100 +389,6 @@ static int mt8192_i2s_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mt8192_mt6359_cap1_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
static const unsigned int channels[] = {
|
||||
1, 2, 4
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_channels = {
|
||||
.count = ARRAY_SIZE(channels),
|
||||
.list = channels,
|
||||
.mask = 0,
|
||||
};
|
||||
static const unsigned int rates[] = {
|
||||
8000, 16000, 32000, 48000, 96000, 192000
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_rates = {
|
||||
.count = ARRAY_SIZE(rates),
|
||||
.list = rates,
|
||||
.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_CHANNELS,
|
||||
&constraints_channels);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list channels failed\n");
|
||||
return 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;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops mt8192_mt6359_capture1_ops = {
|
||||
.startup = mt8192_mt6359_cap1_startup,
|
||||
};
|
||||
|
||||
static int
|
||||
mt8192_mt6359_rt5682_startup(struct snd_pcm_substream *substream)
|
||||
{
|
||||
static const unsigned int channels[] = {
|
||||
1, 2
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_channels = {
|
||||
.count = ARRAY_SIZE(channels),
|
||||
.list = channels,
|
||||
.mask = 0,
|
||||
};
|
||||
static const unsigned int rates[] = {
|
||||
48000
|
||||
};
|
||||
static const struct snd_pcm_hw_constraint_list constraints_rates = {
|
||||
.count = ARRAY_SIZE(rates),
|
||||
.list = rates,
|
||||
.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_CHANNELS,
|
||||
&constraints_channels);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "hw_constraint_list channels failed\n");
|
||||
return 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;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct snd_soc_ops mt8192_mt6359_rt5682_ops = {
|
||||
.startup = mt8192_mt6359_rt5682_startup,
|
||||
};
|
||||
|
||||
/* FE */
|
||||
SND_SOC_DAILINK_DEFS(playback1,
|
||||
DAILINK_COMP_ARRAY(COMP_CPU("DL1")),
|
||||
@ -720,7 +626,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
|
||||
SND_SOC_DPCM_TRIGGER_PRE},
|
||||
.dynamic = 1,
|
||||
.dpcm_playback = 1,
|
||||
.ops = &mt8192_mt6359_rt5682_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(playback3),
|
||||
},
|
||||
{
|
||||
@ -784,7 +690,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
|
||||
SND_SOC_DPCM_TRIGGER_PRE},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8192_mt6359_capture1_ops,
|
||||
.ops = &mtk_soundcard_common_capture_ops,
|
||||
SND_SOC_DAILINK_REG(capture1),
|
||||
},
|
||||
{
|
||||
@ -794,7 +700,7 @@ static struct snd_soc_dai_link mt8192_mt6359_dai_links[] = {
|
||||
SND_SOC_DPCM_TRIGGER_PRE},
|
||||
.dynamic = 1,
|
||||
.dpcm_capture = 1,
|
||||
.ops = &mt8192_mt6359_rt5682_ops,
|
||||
.ops = &mtk_soundcard_common_playback_ops,
|
||||
SND_SOC_DAILINK_REG(capture2),
|
||||
},
|
||||
{
|
||||
@ -1146,7 +1052,7 @@ static int mt8192_mt6359_legacy_probe(struct mtk_soc_card_data *soc_card_data)
|
||||
struct device *dev = card->dev;
|
||||
struct device_node *hdmi_codec, *headset_codec, *speaker_codec;
|
||||
struct snd_soc_dai_link *dai_link;
|
||||
int ret, i;
|
||||
int i, ret = 0;
|
||||
|
||||
hdmi_codec = of_parse_phandle(dev->of_node, "mediatek,hdmi-codec", 0);
|
||||
if (!hdmi_codec)
|
||||
@ -1235,11 +1141,44 @@ static int mt8192_mt6359_soc_card_probe(struct mtk_soc_card_data *soc_card_data,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const unsigned int mt8192_pcm_playback_channels[] = { 1, 2 };
|
||||
static const unsigned int mt8192_pcm_playback_rates[] = { 48000 };
|
||||
|
||||
static const unsigned int mt8192_pcm_capture_channels[] = { 1, 2, 4 };
|
||||
static const unsigned int mt8192_pcm_capture_rates[] = {
|
||||
8000, 16000, 32000, 48000, 96000, 192000
|
||||
};
|
||||
|
||||
static const struct mtk_pcm_constraints_data mt8192_pcm_constraints[MTK_CONSTRAINT_CAPTURE + 1] = {
|
||||
[MTK_CONSTRAINT_PLAYBACK] = {
|
||||
.channels = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8192_pcm_playback_channels,
|
||||
.count = ARRAY_SIZE(mt8192_pcm_playback_channels)
|
||||
},
|
||||
.rates = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8192_pcm_playback_rates,
|
||||
.count = ARRAY_SIZE(mt8192_pcm_playback_rates)
|
||||
}
|
||||
},
|
||||
[MTK_CONSTRAINT_CAPTURE] = {
|
||||
.channels = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8192_pcm_capture_channels,
|
||||
.count = ARRAY_SIZE(mt8192_pcm_capture_channels)
|
||||
},
|
||||
.rates = &(const struct snd_pcm_hw_constraint_list) {
|
||||
.list = mt8192_pcm_capture_rates,
|
||||
.count = ARRAY_SIZE(mt8192_pcm_capture_rates)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015_rt5682_pdata = {
|
||||
.card_name = RT1015_RT5682_CARD_NAME,
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8192_mt6359_rt1015_rt5682_card,
|
||||
.num_jacks = MT8192_JACK_MAX,
|
||||
.pcm_constraints = mt8192_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8192_pcm_constraints),
|
||||
},
|
||||
.soc_probe = mt8192_mt6359_soc_card_probe
|
||||
};
|
||||
@ -1249,6 +1188,8 @@ static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015p_rt5682_pdata = {
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8192_mt6359_rt1015p_rt5682x_card,
|
||||
.num_jacks = MT8192_JACK_MAX,
|
||||
.pcm_constraints = mt8192_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8192_pcm_constraints),
|
||||
},
|
||||
.soc_probe = mt8192_mt6359_soc_card_probe
|
||||
};
|
||||
@ -1258,6 +1199,8 @@ static const struct mtk_soundcard_pdata mt8192_mt6359_rt1015p_rt5682s_pdata = {
|
||||
.card_data = &(struct mtk_platform_card_data) {
|
||||
.card = &mt8192_mt6359_rt1015p_rt5682x_card,
|
||||
.num_jacks = MT8192_JACK_MAX,
|
||||
.pcm_constraints = mt8192_pcm_constraints,
|
||||
.num_pcm_constraints = ARRAY_SIZE(mt8192_pcm_constraints),
|
||||
},
|
||||
.soc_probe = mt8192_mt6359_soc_card_probe
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user