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)))
122 int rsnd_ssi_use_busif(struct rsnd_dai_stream *io)
124 struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io);
133 if (rsnd_io_to_mod_src(io))
168 static u32 rsnd_ssi_multi_secondaries(struct rsnd_dai_stream *io)
180 mod = rsnd_io_to_mod(io, types[i]);
190 static u32 rsnd_ssi_run_mods(struct rsnd_dai_stream *io)
192 struct rsnd_mod *ssi_mod = rsnd_io_to_mod_ssi(io);
193 struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io);
196 mods = rsnd_ssi_multi_secondaries_runtime(io) |
205 u32 rsnd_ssi_multi_secondaries_runtime(struct rsnd_dai_stream *io)
207 if (rsnd_runtime_is_multi_ssi(io))
208 return rsnd_ssi_multi_secondaries(io);
267 struct rsnd_dai_stream *io)
269 struct rsnd_priv *priv = rsnd_io_to_priv(io);
271 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
273 int chan = rsnd_runtime_channel_for_ssi(io);
276 unsigned int rate = rsnd_io_is_play(io) ?
277 rsnd_src_get_out_rate(priv, io) :
278 rsnd_src_get_in_rate(priv, io);
286 if (rsnd_ssi_is_multi_secondary(mod, io))
289 if (rsnd_runtime_is_tdm_split(io))
290 chan = rsnd_io_converted_chan(io);
341 struct rsnd_dai_stream *io)
343 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
363 struct rsnd_dai_stream *io)
365 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
368 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
379 is_tdm = rsnd_runtime_is_tdm(io);
380 is_tdm_split = rsnd_runtime_is_tdm_split(io);
413 if (rsnd_ssi_is_parent(mod, io))
416 if (rsnd_io_is_play(io))
506 struct rsnd_dai_stream *io,
512 if (!rsnd_ssi_is_run_mods(mod, io))
515 ret = rsnd_ssi_master_clk_start(mod, io);
525 rsnd_ssi_config_init(mod, io);
536 struct rsnd_dai_stream *io,
546 is_tdm = rsnd_runtime_is_tdm(io);
547 is_tdm_split = rsnd_runtime_is_tdm_split(io);
549 if (!rsnd_ssi_is_run_mods(mod, io))
557 rsnd_ssi_master_clk_stop(mod, io);
605 struct rsnd_dai_stream *io,
609 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
613 struct rsnd_priv *priv = rsnd_io_to_priv(io);
624 struct rsnd_dai_stream *io,
629 if (!rsnd_ssi_is_run_mods(mod, io))
636 if (rsnd_ssi_multi_secondaries_runtime(io))
643 if (rsnd_ssi_is_parent(mod, io))
657 struct rsnd_dai_stream *io,
663 if (!rsnd_ssi_is_run_mods(mod, io))
666 if (rsnd_ssi_is_parent(mod, io))
677 if (rsnd_io_is_play(io)) {
685 if (rsnd_ssi_multi_secondaries_runtime(io))
701 struct rsnd_dai_stream *io,
709 is_tdm = rsnd_runtime_is_tdm(io);
710 is_tdm_split = rsnd_runtime_is_tdm_split(io);
715 if (rsnd_ssi_is_parent(mod, io))
718 if (!rsnd_ssi_is_run_mods(mod, io))
743 struct rsnd_dai_stream *io);
745 struct rsnd_dai_stream *io)
757 is_tdm = rsnd_runtime_is_tdm(io);
758 is_tdm_split = rsnd_runtime_is_tdm_split(io);
763 if (!rsnd_io_is_working(io))
770 elapsed = rsnd_ssi_pio_interrupt(mod, io);
830 rsnd_dai_period_elapsed(io);
833 snd_pcm_stop_xrun(io->substream);
847 struct rsnd_dai_stream *io,
855 * how many SSI requests parent SSI. Thus, it is localed on "io" now.
876 return &io->parent_ssi_status;
878 return rsnd_mod_get_status(mod, io, type);
885 struct rsnd_dai_stream *io)
887 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
896 if (rsnd_ssi_is_multi_secondary(mod, io))
903 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 0), io, RSND_MOD_SSIP);
906 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 3), io, RSND_MOD_SSIP);
909 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 7), io, RSND_MOD_SSIP);
915 struct rsnd_dai_stream *io,
923 rsnd_ssi_parent_attach(mod, io);
929 struct rsnd_dai_stream *io,
940 if (rsnd_ssi_is_multi_secondary(mod, io))
972 struct rsnd_dai_stream *io,
976 struct rsnd_mod *pure_ssi_mod = rsnd_io_to_mod_ssi(io);
996 struct rsnd_dai_stream *io)
998 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
1013 if (rsnd_io_is_play(io))
1039 struct rsnd_dai_stream *io,
1042 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
1045 if (!rsnd_ssi_is_parent(mod, io)) {
1053 return rsnd_ssi_init(mod, io, priv);
1057 struct rsnd_dai_stream *io,
1061 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
1084 struct rsnd_dai_stream *io,
1093 if (rsnd_ssi_is_multi_secondary(mod, io))
1096 ret = rsnd_ssi_common_probe(mod, io, priv);
1101 ret = rsnd_dma_attach(io, mod, &io->dma);
1107 struct rsnd_dai_stream *io,
1126 static struct dma_chan *rsnd_ssi_dma_req(struct rsnd_dai_stream *io,
1130 int is_play = rsnd_io_is_play(io);
1144 if (rsnd_ssi_use_busif(io))
1178 struct rsnd_dai_stream *io)
1180 struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
1193 if (!rsnd_io_to_mod(io, type)) {
1194 rsnd_dai_connect(mod, io, type);