ASoC: mxs-saif: fix setting SAIF1 register
If SAIF0 is used in master and SAIF1 in slave mode setting the SAIF1 register in mxs_saif_set_dai_fmt() does not have any effect on the interface as the clk gate needs to be cleared before the register can be written. Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a5de5b74a5
commit
b25658ed7d
|
@ -299,6 +299,16 @@ static int mxs_saif_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If SAIF1 is configured as slave, the clk gate needs to be cleared
|
||||||
|
* before the register can be written.
|
||||||
|
*/
|
||||||
|
if (saif->id != saif->master_id) {
|
||||||
|
__raw_writel(BM_SAIF_CTRL_SFTRST,
|
||||||
|
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
|
||||||
|
__raw_writel(BM_SAIF_CTRL_CLKGATE,
|
||||||
|
saif->base + SAIF_CTRL + MXS_CLR_ADDR);
|
||||||
|
}
|
||||||
|
|
||||||
scr0 = __raw_readl(saif->base + SAIF_CTRL);
|
scr0 = __raw_readl(saif->base + SAIF_CTRL);
|
||||||
scr0 = scr0 & ~BM_SAIF_CTRL_BITCLK_EDGE & ~BM_SAIF_CTRL_LRCLK_POLARITY \
|
scr0 = scr0 & ~BM_SAIF_CTRL_BITCLK_EDGE & ~BM_SAIF_CTRL_LRCLK_POLARITY \
|
||||||
& ~BM_SAIF_CTRL_JUSTIFY & ~BM_SAIF_CTRL_DELAY;
|
& ~BM_SAIF_CTRL_JUSTIFY & ~BM_SAIF_CTRL_DELAY;
|
||||||
|
|
Loading…
Reference in New Issue