Lines Matching refs:io

110 #define rsnd_ssi_is_parent(ssi, io) ((ssi) == rsnd_io_to_mod_ssip(io))  argument
111 #define rsnd_ssi_is_multi_slave(mod, io) \ argument
112 (rsnd_ssi_multi_slaves(io) & (1 << rsnd_mod_id(mod)))
113 #define rsnd_ssi_is_run_mods(mod, io) \ argument
114 (rsnd_ssi_run_mods(io) & (1 << rsnd_mod_id(mod)))
117 int rsnd_ssi_hdmi_port(struct rsnd_dai_stream *io) in rsnd_ssi_hdmi_port() argument
119 struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); in rsnd_ssi_hdmi_port()
131 int rsnd_ssi_use_busif(struct rsnd_dai_stream *io) in rsnd_ssi_use_busif() argument
133 struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); in rsnd_ssi_use_busif()
142 if (rsnd_io_to_mod_src(io)) in rsnd_ssi_use_busif()
178 static u32 rsnd_ssi_multi_slaves(struct rsnd_dai_stream *io) in rsnd_ssi_multi_slaves() argument
190 mod = rsnd_io_to_mod(io, types[i]); in rsnd_ssi_multi_slaves()
200 static u32 rsnd_ssi_run_mods(struct rsnd_dai_stream *io) in rsnd_ssi_run_mods() argument
202 struct rsnd_mod *ssi_mod = rsnd_io_to_mod_ssi(io); in rsnd_ssi_run_mods()
203 struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io); in rsnd_ssi_run_mods()
206 mods = rsnd_ssi_multi_slaves_runtime(io) | in rsnd_ssi_run_mods()
215 u32 rsnd_ssi_multi_slaves_runtime(struct rsnd_dai_stream *io) in rsnd_ssi_multi_slaves_runtime() argument
217 if (rsnd_runtime_is_ssi_multi(io)) in rsnd_ssi_multi_slaves_runtime()
218 return rsnd_ssi_multi_slaves(io); in rsnd_ssi_multi_slaves_runtime()
264 struct rsnd_dai_stream *io) in rsnd_ssi_master_clk_start() argument
266 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_ssi_master_clk_start()
268 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_ssi_master_clk_start()
270 int chan = rsnd_runtime_channel_for_ssi(io); in rsnd_ssi_master_clk_start()
273 unsigned int rate = rsnd_io_is_play(io) ? in rsnd_ssi_master_clk_start()
274 rsnd_src_get_out_rate(priv, io) : in rsnd_ssi_master_clk_start()
275 rsnd_src_get_in_rate(priv, io); in rsnd_ssi_master_clk_start()
283 if (rsnd_ssi_is_multi_slave(mod, io)) in rsnd_ssi_master_clk_start()
327 struct rsnd_dai_stream *io) in rsnd_ssi_master_clk_stop() argument
329 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_ssi_master_clk_stop()
348 struct rsnd_dai_stream *io) in rsnd_ssi_config_init() argument
350 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_ssi_config_init()
351 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_ssi_config_init()
358 is_tdm = rsnd_runtime_is_ssi_tdm(io); in rsnd_ssi_config_init()
379 if (rsnd_ssi_is_parent(mod, io)) in rsnd_ssi_config_init()
382 if (rsnd_io_is_play(io)) in rsnd_ssi_config_init()
433 struct rsnd_dai_stream *io, in rsnd_ssi_init() argument
438 if (!rsnd_ssi_is_run_mods(mod, io)) in rsnd_ssi_init()
445 rsnd_ssi_config_init(mod, io); in rsnd_ssi_init()
456 struct rsnd_dai_stream *io, in rsnd_ssi_quit() argument
462 if (!rsnd_ssi_is_run_mods(mod, io)) in rsnd_ssi_quit()
471 rsnd_ssi_master_clk_stop(mod, io); in rsnd_ssi_quit()
487 struct rsnd_dai_stream *io, in rsnd_ssi_hw_params() argument
516 struct rsnd_dai_stream *io, in rsnd_ssi_start() argument
521 if (!rsnd_ssi_is_run_mods(mod, io)) in rsnd_ssi_start()
528 if (rsnd_ssi_multi_slaves_runtime(io)) in rsnd_ssi_start()
535 if (rsnd_ssi_is_parent(mod, io)) in rsnd_ssi_start()
549 struct rsnd_dai_stream *io, in rsnd_ssi_stop() argument
555 if (!rsnd_ssi_is_run_mods(mod, io)) in rsnd_ssi_stop()
558 if (rsnd_ssi_is_parent(mod, io)) in rsnd_ssi_stop()
569 if (rsnd_io_is_play(io)) { in rsnd_ssi_stop()
587 struct rsnd_dai_stream *io, in rsnd_ssi_irq() argument
596 if (rsnd_ssi_is_parent(mod, io)) in rsnd_ssi_irq()
599 if (!rsnd_ssi_is_run_mods(mod, io)) in rsnd_ssi_irq()
611 struct rsnd_dai_stream *io);
613 struct rsnd_dai_stream *io) in __rsnd_ssi_interrupt() argument
625 if (!rsnd_io_is_working(io)) in __rsnd_ssi_interrupt()
632 elapsed = rsnd_ssi_pio_interrupt(mod, io); in __rsnd_ssi_interrupt()
647 rsnd_dai_period_elapsed(io); in __rsnd_ssi_interrupt()
650 snd_pcm_stop_xrun(io->substream); in __rsnd_ssi_interrupt()
667 struct rsnd_dai_stream *io) in rsnd_ssi_parent_attach() argument
669 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_ssi_parent_attach()
681 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 0), io, RSND_MOD_SSIP); in rsnd_ssi_parent_attach()
684 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 3), io, RSND_MOD_SSIP); in rsnd_ssi_parent_attach()
687 rsnd_dai_connect(rsnd_ssi_mod_get(priv, 7), io, RSND_MOD_SSIP); in rsnd_ssi_parent_attach()
693 struct rsnd_dai_stream *io, in rsnd_ssi_pcm_new() argument
701 rsnd_ssi_parent_attach(mod, io); in rsnd_ssi_pcm_new()
707 struct rsnd_dai_stream *io, in rsnd_ssi_common_probe() argument
718 if (rsnd_ssi_is_multi_slave(mod, io)) in rsnd_ssi_common_probe()
726 ret = rsnd_ssiu_attach(io, mod); in rsnd_ssi_common_probe()
754 struct rsnd_dai_stream *io, in rsnd_ssi_common_remove() argument
758 struct rsnd_mod *pure_ssi_mod = rsnd_io_to_mod_ssi(io); in rsnd_ssi_common_remove()
778 struct rsnd_dai_stream *io) in rsnd_ssi_pio_interrupt() argument
780 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_ssi_pio_interrupt()
795 if (rsnd_io_is_play(io)) in rsnd_ssi_pio_interrupt()
821 struct rsnd_dai_stream *io, in rsnd_ssi_pio_init() argument
824 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_ssi_pio_init()
827 if (!rsnd_ssi_is_parent(mod, io)) { in rsnd_ssi_pio_init()
835 return rsnd_ssi_init(mod, io, priv); in rsnd_ssi_pio_init()
839 struct rsnd_dai_stream *io, in rsnd_ssi_pio_pointer() argument
843 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_ssi_pio_pointer()
851 struct rsnd_dai_stream *io, in rsnd_ssi_prepare() argument
854 return rsnd_ssi_master_clk_start(mod, io); in rsnd_ssi_prepare()
873 struct rsnd_dai_stream *io, in rsnd_ssi_dma_probe() argument
883 if (rsnd_ssi_is_multi_slave(mod, io)) in rsnd_ssi_dma_probe()
886 ret = rsnd_ssi_common_probe(mod, io, priv); in rsnd_ssi_dma_probe()
891 ret = rsnd_dma_attach(io, mod, &ssi->dma); in rsnd_ssi_dma_probe()
897 struct rsnd_dai_stream *io, in rsnd_ssi_fallback() argument
917 static struct dma_chan *rsnd_ssi_dma_req(struct rsnd_dai_stream *io, in rsnd_ssi_dma_req() argument
921 int is_play = rsnd_io_is_play(io); in rsnd_ssi_dma_req()
924 if (rsnd_ssi_use_busif(io)) in rsnd_ssi_dma_req()
959 struct rsnd_dai_stream *io) in rsnd_ssi_connect() argument
961 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_ssi_connect()
974 if (!rsnd_io_to_mod(io, type)) { in rsnd_ssi_connect()
975 rsnd_dai_connect(mod, io, type); in rsnd_ssi_connect()
1011 struct rsnd_dai_stream *io, in __rsnd_ssi_parse_hdmi_connection() argument
1015 struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); in __rsnd_ssi_parse_hdmi_connection()
1074 static u32 *rsnd_ssi_get_status(struct rsnd_dai_stream *io, in rsnd_ssi_get_status() argument
1104 return &io->parent_ssi_status; in rsnd_ssi_get_status()
1106 return rsnd_mod_get_status(io, mod, type); in rsnd_ssi_get_status()