Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 1628fc3f authored by Shunli Wang's avatar Shunli Wang Committed by Mark Brown
Browse files

ASoC: Mediatek: add memory interface data align



This supports two data align settings. One is S32_LE and
other is S24_LE.

Signed-off-by: default avatarShunli Wang <shunli.wang@mediatek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent eb1ecadb
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
	struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
	struct mtk_base_afe_memif *memif = &afe->memif[rtd->cpu_dai->id];
	int hd_audio = 0;
	int hd_align = 1;

	/* set hd mode */
	switch (substream->runtime->format) {
@@ -249,9 +250,11 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
		break;
	case SNDRV_PCM_FORMAT_S32_LE:
		hd_audio = 1;
		hd_align = 1;
		break;
	case SNDRV_PCM_FORMAT_S24_LE:
		hd_audio = 1;
		hd_align = 0;
		break;
	default:
		dev_err(afe->dev, "%s() error: unsupported format %d\n",
@@ -262,6 +265,10 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
	mtk_regmap_update_bits(afe->regmap, memif->data->hd_reg,
			       1, hd_audio, memif->data->hd_shift);

	mtk_regmap_update_bits(afe->regmap, memif->data->hd_align_reg,
			       memif->data->hd_align_mshift,
			       hd_align ? memif->data->hd_align_mshift : 0);

	return 0;
}
EXPORT_SYMBOL_GPL(mtk_afe_fe_prepare);
+2 −0
Original line number Diff line number Diff line
@@ -24,7 +24,9 @@ struct mtk_base_memif_data {
	int enable_reg;
	int enable_shift;
	int hd_reg;
	int hd_align_reg;
	int hd_shift;
	int hd_align_mshift;
	int msb_reg;
	int msb_shift;
	int agent_disable_reg;