|
@@ -523,16 +523,24 @@ static int mxs_saif_trigger(struct snd_pcm_substream *substream, int cmd,
|
|
|
|
|
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
|
|
/*
|
|
|
- * write a data to saif data register to trigger
|
|
|
- * the transfer
|
|
|
+ * write data to saif data register to trigger
|
|
|
+ * the transfer.
|
|
|
+ * For 24-bit format the 32-bit FIFO register stores
|
|
|
+ * only one channel, so we need to write twice.
|
|
|
+ * This is also safe for the other non 24-bit formats.
|
|
|
*/
|
|
|
__raw_writel(0, saif->base + SAIF_DATA);
|
|
|
+ __raw_writel(0, saif->base + SAIF_DATA);
|
|
|
} else {
|
|
|
/*
|
|
|
- * read a data from saif data register to trigger
|
|
|
- * the receive
|
|
|
+ * read data from saif data register to trigger
|
|
|
+ * the receive.
|
|
|
+ * For 24-bit format the 32-bit FIFO register stores
|
|
|
+ * only one channel, so we need to read twice.
|
|
|
+ * This is also safe for the other non 24-bit formats.
|
|
|
*/
|
|
|
__raw_readl(saif->base + SAIF_DATA);
|
|
|
+ __raw_readl(saif->base + SAIF_DATA);
|
|
|
}
|
|
|
|
|
|
master_saif->ongoing = 1;
|