Lines Matching refs:io

113 #define rsnd_ssi_is_parent(ssi, io) ((ssi) == rsnd_io_to_mod_ssip(io))
114 #define rsnd_ssi_is_multi_secondary(mod, io) \
115 (rsnd_ssi_multi_secondaries(io) & (1 << rsnd_mod_id(mod)))
116 #define rsnd_ssi_is_run_mods(mod, io) \
117 (rsnd_ssi_run_mods(io) & (1 << rsnd_mod_id(mod)))
120 int rsnd_ssi_use_busif(struct rsnd_dai_stream *io)
122 struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io);
131 if (rsnd_io_to_mod_src(io))
166 static u32 rsnd_ssi_multi_secondaries(struct rsnd_dai_stream *io)
177 struct rsnd_mod *mod = rsnd_io_to_mod(io, types[i]);
188 static u32 rsnd_ssi_run_mods(struct rsnd_dai_stream *io)
190 struct rsnd_mod *ssi_mod = rsnd_io_to_mod_ssi(io);
191 struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io);
194 mods = rsnd_ssi_multi_secondaries_runtime(io) |
203 u32 rsnd_ssi_multi_secondaries_runtime(struct rsnd_dai_stream *io)
205 if (rsnd_runtime_is_multi_ssi(io))
206 return rsnd_ssi_multi_secondaries(io);
265 struct rsnd_dai_stream *io)
267 struct rsnd_priv *priv = rsnd_io_to_priv(io);
269 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
271 int chan = rsnd_runtime_channel_for_ssi(io);
274 unsigned int rate = rsnd_io_is_play(io) ?
275 rsnd_src_get_out_rate(priv, io) :
276 rsnd_src_get_in_rate(priv, io);
284 if (rsnd_ssi_is_multi_secondary(mod, io))
287 if (rsnd_runtime_is_tdm_split(io))
288 chan = rsnd_io_converted_chan(io);
342 struct rsnd_dai_stream *io)
344 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
364 struct rsnd_dai_stream *io)
366 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
369 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
377 is_tdm = rsnd_runtime_is_tdm(io);
378 is_tdm_split = rsnd_runtime_is_tdm_split(io);
410 if (rsnd_ssi_is_parent(mod, io))
413 if (rsnd_io_is_play(io))
471 struct rsnd_dai_stream *io,
477 if (!rsnd_ssi_is_run_mods(mod, io))
480 ret = rsnd_ssi_master_clk_start(mod, io);
490 rsnd_ssi_config_init(mod, io);
501 struct rsnd_dai_stream *io,
507 if (!rsnd_ssi_is_run_mods(mod, io))
515 rsnd_ssi_master_clk_stop(mod, io);
531 struct rsnd_dai_stream *io,
535 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
539 struct rsnd_priv *priv = rsnd_io_to_priv(io);
550 struct rsnd_dai_stream *io,
555 if (!rsnd_ssi_is_run_mods(mod, io))
562 if (rsnd_ssi_multi_secondaries_runtime(io))
569 if (rsnd_ssi_is_parent(mod, io))
583 struct rsnd_dai_stream *io,
589 if (!rsnd_ssi_is_run_mods(mod, io))
592 if (rsnd_ssi_is_parent(mod, io))
603 if (rsnd_io_is_play(io)) {
611 if (rsnd_ssi_multi_secondaries_runtime(io))
627 struct rsnd_dai_stream *io,
635 is_tdm = rsnd_runtime_is_tdm(io);
636 is_tdm_split = rsnd_runtime_is_tdm_split(io);
641 if (rsnd_ssi_is_parent(mod, io))
644 if (!rsnd_ssi_is_run_mods(mod, io))
669 struct rsnd_dai_stream *io);
671 struct rsnd_dai_stream *io)
683 if (!rsnd_io_is_working(io))
690 elapsed = rsnd_ssi_pio_interrupt(mod, io);
707 rsnd_dai_period_elapsed(io);
710 snd_pcm_stop_xrun(io->substream);
724 struct rsnd_dai_stream *io,
732 * how many SSI requests parent SSI. Thus, it is localed on "io" now.
753 return &io->parent_ssi_status;
755 return rsnd_mod_get_status(mod, io, type);
762 struct rsnd_dai_stream *io)
764 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
773 if (rsnd_ssi_is_multi_secondary(mod, io))
780 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 0), io, RSND_MOD_SSIP);
783 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 3), io, RSND_MOD_SSIP);
786 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 7), io, RSND_MOD_SSIP);
792 struct rsnd_dai_stream *io,
800 rsnd_ssi_parent_attach(mod, io);
806 struct rsnd_dai_stream *io,
817 if (rsnd_ssi_is_multi_secondary(mod, io))
849 struct rsnd_dai_stream *io,
853 struct rsnd_mod *pure_ssi_mod = rsnd_io_to_mod_ssi(io);
873 struct rsnd_dai_stream *io)
875 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
890 if (rsnd_io_is_play(io))
916 struct rsnd_dai_stream *io,
919 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
922 if (!rsnd_ssi_is_parent(mod, io)) {
930 return rsnd_ssi_init(mod, io, priv);
934 struct rsnd_dai_stream *io,
938 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
961 struct rsnd_dai_stream *io,
970 if (rsnd_ssi_is_multi_secondary(mod, io))
973 ret = rsnd_ssi_common_probe(mod, io, priv);
978 ret = rsnd_dma_attach(io, mod, &io->dma);
984 struct rsnd_dai_stream *io,
1003 static struct dma_chan *rsnd_ssi_dma_req(struct rsnd_dai_stream *io,
1007 int is_play = rsnd_io_is_play(io);
1021 if (rsnd_ssi_use_busif(io))
1032 struct rsnd_dai_stream *io,
1035 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
1044 seq_printf(m, "multi secondary: %d\n", rsnd_ssi_is_multi_secondary(mod, io));
1045 seq_printf(m, "tdm: %d, %d\n", rsnd_runtime_is_tdm(io),
1046 rsnd_runtime_is_tdm_split(io));
1084 struct rsnd_dai_stream *io)
1086 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
1099 if (!rsnd_io_to_mod(io, type)) {
1100 rsnd_dai_connect(mod, io, type);