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

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
...@@ -241,6 +241,7 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream, ...@@ -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 *afe = snd_soc_dai_get_drvdata(dai);
struct mtk_base_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; struct mtk_base_afe_memif *memif = &afe->memif[rtd->cpu_dai->id];
int hd_audio = 0; int hd_audio = 0;
int hd_align = 1;
/* set hd mode */ /* set hd mode */
switch (substream->runtime->format) { switch (substream->runtime->format) {
...@@ -249,9 +250,11 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream, ...@@ -249,9 +250,11 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
break; break;
case SNDRV_PCM_FORMAT_S32_LE: case SNDRV_PCM_FORMAT_S32_LE:
hd_audio = 1; hd_audio = 1;
hd_align = 1;
break; break;
case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_LE:
hd_audio = 1; hd_audio = 1;
hd_align = 0;
break; break;
default: default:
dev_err(afe->dev, "%s() error: unsupported format %d\n", dev_err(afe->dev, "%s() error: unsupported format %d\n",
...@@ -262,6 +265,10 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream, ...@@ -262,6 +265,10 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
mtk_regmap_update_bits(afe->regmap, memif->data->hd_reg, mtk_regmap_update_bits(afe->regmap, memif->data->hd_reg,
1, hd_audio, memif->data->hd_shift); 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; return 0;
} }
EXPORT_SYMBOL_GPL(mtk_afe_fe_prepare); EXPORT_SYMBOL_GPL(mtk_afe_fe_prepare);
......
...@@ -24,7 +24,9 @@ struct mtk_base_memif_data { ...@@ -24,7 +24,9 @@ struct mtk_base_memif_data {
int enable_reg; int enable_reg;
int enable_shift; int enable_shift;
int hd_reg; int hd_reg;
int hd_align_reg;
int hd_shift; int hd_shift;
int hd_align_mshift;
int msb_reg; int msb_reg;
int msb_shift; int msb_shift;
int agent_disable_reg; int agent_disable_reg;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment