Unverified Commit b541cb0a authored by Biju Das's avatar Biju Das Committed by Mark Brown
Browse files

ASoC: renesas: rz-ssi: Move DMA configuration



Move DMA configuration from rz_ssi_dma_request() to rz_ssi_dai_trigger()
for supporting sample widths higher than 16.

Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Link: https://patch.msgid.link/20251114075856.4751-4-biju.das.jz@bp.renesas.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a472f0b1
Loading
Loading
Loading
Loading
+12 −17
Original line number Diff line number Diff line
@@ -774,14 +774,6 @@ static int rz_ssi_dma_request(struct rz_ssi_priv *ssi, struct device *dev)
	if (!rz_ssi_is_dma_enabled(ssi))
		goto no_dma;

	if (ssi->playback.dma_ch &&
	    (rz_ssi_dma_slave_config(ssi, ssi->playback.dma_ch, true) < 0))
		goto no_dma;

	if (ssi->capture.dma_ch &&
	    (rz_ssi_dma_slave_config(ssi, ssi->capture.dma_ch, false) < 0))
		goto no_dma;

	return 0;

no_dma:
@@ -829,23 +821,26 @@ static int rz_ssi_dai_trigger(struct snd_pcm_substream *substream, int cmd,
		if (cmd == SNDRV_PCM_TRIGGER_START)
			rz_ssi_stream_init(strm, substream);

		if (ssi->dma_rt) {
			bool is_playback;
		if (rz_ssi_is_dma_enabled(ssi)) {
			bool is_playback = rz_ssi_stream_is_play(substream);

			is_playback = rz_ssi_stream_is_play(substream);
			if (ssi->dma_rt)
				ret = rz_ssi_dma_slave_config(ssi, ssi->playback.dma_ch,
							      is_playback);
			else
				ret = rz_ssi_dma_slave_config(ssi, strm->dma_ch,
							      is_playback);

			/* Fallback to pio */
			if (ret < 0) {
				ssi->playback.transfer = rz_ssi_pio_send;
				ssi->capture.transfer = rz_ssi_pio_recv;
				rz_ssi_release_dma_channels(ssi);
			}
		}

			} else {
				/* For DMA, queue up multiple DMA descriptors */
		if (rz_ssi_is_dma_enabled(ssi))
				num_transfer = 4;
			}
		}

		for (i = 0; i < num_transfer; i++) {
			ret = strm->transfer(ssi, strm);