Lines Matching refs:io

125 struct dma_chan *rsnd_mod_dma_req(struct rsnd_dai_stream *io,  in rsnd_mod_dma_req()  argument
131 return mod->ops->dma_req(io, mod); in rsnd_mod_dma_req()
166 struct rsnd_dai_stream *io, in rsnd_mod_get_status() argument
222 struct rsnd_dai_stream *io)) in rsnd_mod_interrupt() argument
229 struct rsnd_dai_stream *io = &rdai->playback; in rsnd_mod_interrupt() local
231 if (mod == io->mod[mod->type]) in rsnd_mod_interrupt()
232 callback(mod, io); in rsnd_mod_interrupt()
234 io = &rdai->capture; in rsnd_mod_interrupt()
235 if (mod == io->mod[mod->type]) in rsnd_mod_interrupt()
236 callback(mod, io); in rsnd_mod_interrupt()
240 int rsnd_io_is_working(struct rsnd_dai_stream *io) in rsnd_io_is_working() argument
243 if (io->substream) in rsnd_io_is_working()
244 return snd_pcm_running(io->substream); in rsnd_io_is_working()
249 int rsnd_runtime_channel_original_with_params(struct rsnd_dai_stream *io, in rsnd_runtime_channel_original_with_params() argument
252 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_runtime_channel_original_with_params()
267 int rsnd_runtime_channel_after_ctu_with_params(struct rsnd_dai_stream *io, in rsnd_runtime_channel_after_ctu_with_params() argument
270 int chan = rsnd_runtime_channel_original_with_params(io, params); in rsnd_runtime_channel_after_ctu_with_params()
271 struct rsnd_mod *ctu_mod = rsnd_io_to_mod_ctu(io); in rsnd_runtime_channel_after_ctu_with_params()
274 u32 converted_chan = rsnd_io_converted_chan(io); in rsnd_runtime_channel_after_ctu_with_params()
283 if (rsnd_runtime_is_tdm_split(io)) { in rsnd_runtime_channel_after_ctu_with_params()
284 struct device *dev = rsnd_priv_to_dev(rsnd_io_to_priv(io)); in rsnd_runtime_channel_after_ctu_with_params()
308 int rsnd_runtime_channel_for_ssi_with_params(struct rsnd_dai_stream *io, in rsnd_runtime_channel_for_ssi_with_params() argument
311 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_runtime_channel_for_ssi_with_params()
312 int chan = rsnd_io_is_play(io) ? in rsnd_runtime_channel_for_ssi_with_params()
313 rsnd_runtime_channel_after_ctu_with_params(io, params) : in rsnd_runtime_channel_for_ssi_with_params()
314 rsnd_runtime_channel_original_with_params(io, params); in rsnd_runtime_channel_for_ssi_with_params()
317 if (rsnd_runtime_is_multi_ssi(io)) in rsnd_runtime_channel_for_ssi_with_params()
323 int rsnd_runtime_is_multi_ssi(struct rsnd_dai_stream *io) in rsnd_runtime_is_multi_ssi() argument
325 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_runtime_is_multi_ssi()
327 int chan = rsnd_io_is_play(io) ? in rsnd_runtime_is_multi_ssi()
328 rsnd_runtime_channel_after_ctu(io) : in rsnd_runtime_is_multi_ssi()
329 rsnd_runtime_channel_original(io); in rsnd_runtime_is_multi_ssi()
334 int rsnd_runtime_is_tdm(struct rsnd_dai_stream *io) in rsnd_runtime_is_tdm() argument
336 return rsnd_runtime_channel_for_ssi(io) >= 6; in rsnd_runtime_is_tdm()
339 int rsnd_runtime_is_tdm_split(struct rsnd_dai_stream *io) in rsnd_runtime_is_tdm_split() argument
341 return !!rsnd_flags_has(io, RSND_STREAM_TDM_SPLIT); in rsnd_runtime_is_tdm_split()
347 u32 rsnd_get_adinr_bit(struct rsnd_mod *mod, struct rsnd_dai_stream *io) in rsnd_get_adinr_bit() argument
350 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_get_adinr_bit()
370 u32 rsnd_get_dalign(struct rsnd_mod *mod, struct rsnd_dai_stream *io) in rsnd_get_dalign() argument
377 struct rsnd_mod *ssiu = rsnd_io_to_mod_ssiu(io); in rsnd_get_dalign()
379 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_get_dalign()
403 if (rsnd_io_is_play(io)) { in rsnd_get_dalign()
404 struct rsnd_mod *src = rsnd_io_to_mod_src(io); in rsnd_get_dalign()
408 struct rsnd_mod *cmd = rsnd_io_to_mod_cmd(io); in rsnd_get_dalign()
427 u32 rsnd_get_busif_shift(struct rsnd_dai_stream *io, struct rsnd_mod *mod) in rsnd_get_busif_shift() argument
439 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_get_busif_shift()
442 rsnd_io_is_play(io) ? in rsnd_get_busif_shift()
458 tmod = rsnd_io_to_mod(io, mods[i]); in rsnd_get_busif_shift()
466 if (rsnd_io_is_play(io)) in rsnd_get_busif_shift()
478 struct rsnd_dai_stream *io, in rsnd_mod_next() argument
486 struct rsnd_mod *mod = rsnd_io_to_mod(io, type); in rsnd_mod_next()
529 static int rsnd_status_update(struct rsnd_dai_stream *io, in rsnd_status_update() argument
533 u32 *status = mod->ops->get_status(mod, io, type); in rsnd_status_update()
551 #define rsnd_dai_call(fn, io, param...) \ argument
553 struct device *dev = rsnd_priv_to_dev(rsnd_io_to_priv(io)); \
555 int is_play = rsnd_io_is_play(io); \
558 for_each_rsnd_mod_arrays(i, mod, io, types, RSND_MOD_MAX) { \
560 int func_call = rsnd_status_update(io, mod, types[i], \
565 tmp = (mod)->ops->fn(mod, io, param); \
576 struct rsnd_dai_stream *io, in rsnd_dai_connect() argument
585 if (io->mod[type] == mod) in rsnd_dai_connect()
588 if (io->mod[type]) in rsnd_dai_connect()
594 io->mod[type] = mod; in rsnd_dai_connect()
598 rsnd_io_is_play(io) ? "Playback" : "Capture"); in rsnd_dai_connect()
604 struct rsnd_dai_stream *io, in rsnd_dai_disconnect() argument
607 io->mod[type] = NULL; in rsnd_dai_disconnect()
664 void rsnd_dai_period_elapsed(struct rsnd_dai_stream *io) in rsnd_dai_period_elapsed() argument
666 struct snd_pcm_substream *substream = io->substream; in rsnd_dai_period_elapsed()
678 static void rsnd_dai_stream_init(struct rsnd_dai_stream *io, in rsnd_dai_stream_init() argument
681 io->substream = substream; in rsnd_dai_stream_init()
684 static void rsnd_dai_stream_quit(struct rsnd_dai_stream *io) in rsnd_dai_stream_quit() argument
686 io->substream = NULL; in rsnd_dai_stream_quit()
712 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_soc_dai_trigger() local
721 ret = rsnd_dai_call(init, io, priv); in rsnd_soc_dai_trigger()
725 ret = rsnd_dai_call(start, io, priv); in rsnd_soc_dai_trigger()
729 ret = rsnd_dai_call(irq, io, priv, 1); in rsnd_soc_dai_trigger()
736 ret = rsnd_dai_call(irq, io, priv, 0); in rsnd_soc_dai_trigger()
738 ret |= rsnd_dai_call(stop, io, priv); in rsnd_soc_dai_trigger()
740 ret |= rsnd_dai_call(quit, io, priv); in rsnd_soc_dai_trigger()
911 struct rsnd_dai_stream *io = rule->private; in rsnd_soc_hw_rule_rate() local
912 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_soc_hw_rule_rate()
921 ic.max = rsnd_runtime_channel_for_ssi_with_params(io, params); in rsnd_soc_hw_rule_rate()
934 struct rsnd_dai_stream *io = rule->private; in rsnd_soc_hw_rule_channels() local
935 struct rsnd_dai *rdai = rsnd_io_to_rdai(io); in rsnd_soc_hw_rule_channels()
944 ic.max = rsnd_runtime_channel_for_ssi_with_params(io, params); in rsnd_soc_hw_rule_channels()
967 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_soc_dai_startup() local
973 rsnd_dai_stream_init(io, substream); in rsnd_soc_dai_startup()
1022 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_soc_dai_shutdown() local
1027 rsnd_dai_call(cleanup, io, priv); in rsnd_soc_dai_shutdown()
1029 rsnd_dai_stream_quit(io); in rsnd_soc_dai_shutdown()
1037 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_soc_dai_prepare() local
1039 return rsnd_dai_call(prepare, io, priv); in rsnd_soc_dai_prepare()
1079 struct rsnd_dai_stream *io, in rsnd_parse_tdm_split_mode() argument
1085 int is_play = rsnd_io_is_play(io); in rsnd_parse_tdm_split_mode()
1105 rsnd_flags_set(io, RSND_STREAM_TDM_SPLIT); in rsnd_parse_tdm_split_mode()
1106 dev_dbg(dev, "%s is part of TDM Split\n", io->name); in rsnd_parse_tdm_split_mode()
1117 struct rsnd_dai_stream *io, in rsnd_parse_connect_simple() argument
1120 if (!rsnd_io_to_mod_ssi(io)) in rsnd_parse_connect_simple()
1123 rsnd_parse_tdm_split_mode(priv, io, dai_np); in rsnd_parse_connect_simple()
1127 struct rsnd_dai_stream *io, in rsnd_parse_connect_graph() argument
1133 if (!rsnd_io_to_mod_ssi(io)) in rsnd_parse_connect_graph()
1140 rsnd_flags_set(io, RSND_STREAM_HDMI0); in rsnd_parse_connect_graph()
1141 dev_dbg(dev, "%s connected to HDMI0\n", io->name); in rsnd_parse_connect_graph()
1146 rsnd_flags_set(io, RSND_STREAM_HDMI1); in rsnd_parse_connect_graph()
1147 dev_dbg(dev, "%s connected to HDMI1\n", io->name); in rsnd_parse_connect_graph()
1150 rsnd_parse_tdm_split_mode(priv, io, endpoint); in rsnd_parse_connect_graph()
1278 struct rsnd_dai_stream *io, in rsnd_preallocate_pages() argument
1281 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_preallocate_pages()
1290 if (io->dmac_dev) in rsnd_preallocate_pages()
1291 dev = io->dmac_dev; in rsnd_preallocate_pages()
1474 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_hw_update() local
1475 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_hw_update()
1481 ret = rsnd_dai_call(hw_params, io, substream, hw_params); in rsnd_hw_update()
1483 ret = rsnd_dai_call(hw_free, io, substream); in rsnd_hw_update()
1495 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_hw_params() local
1507 io->converted_rate = 0; in rsnd_hw_params()
1508 io->converted_chan = 0; in rsnd_hw_params()
1510 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_hw_params()
1519 io->converted_chan = params_channels(be_params); in rsnd_hw_params()
1521 io->converted_rate = params_rate(be_params); in rsnd_hw_params()
1523 if (io->converted_chan) in rsnd_hw_params()
1524 dev_dbg(dev, "convert channels = %d\n", io->converted_chan); in rsnd_hw_params()
1525 if (io->converted_rate) { in rsnd_hw_params()
1537 struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); in rsnd_hw_params()
1539 dev_dbg(dev, "convert rate = %d\n", io->converted_rate); in rsnd_hw_params()
1541 channel = io->converted_chan ? io->converted_chan : in rsnd_hw_params()
1571 if (params_rate(hw_params) > io->converted_rate * k_down) { in rsnd_hw_params()
1573 io->converted_rate * k_down; in rsnd_hw_params()
1575 io->converted_rate * k_down; in rsnd_hw_params()
1577 } else if (params_rate(hw_params) * k_up < io->converted_rate) { in rsnd_hw_params()
1579 (io->converted_rate + k_up - 1) / k_up; in rsnd_hw_params()
1581 (io->converted_rate + k_up - 1) / k_up; in rsnd_hw_params()
1610 struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream); in rsnd_pointer() local
1613 rsnd_dai_call(pointer, io, &pointer); in rsnd_pointer()
1668 if (!cfg->accept(cfg->io)) in rsnd_kctrl_put()
1682 cfg->update(cfg->io, cfg->mod); in rsnd_kctrl_put()
1687 int rsnd_kctrl_accept_anytime(struct rsnd_dai_stream *io) in rsnd_kctrl_accept_anytime() argument
1692 int rsnd_kctrl_accept_runtime(struct rsnd_dai_stream *io) in rsnd_kctrl_accept_runtime() argument
1694 struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); in rsnd_kctrl_accept_runtime()
1695 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_kctrl_accept_runtime()
1748 struct rsnd_dai_stream *io, in rsnd_kctrl_new() argument
1751 int (*accept)(struct rsnd_dai_stream *io), in rsnd_kctrl_new() argument
1752 void (*update)(struct rsnd_dai_stream *io, in rsnd_kctrl_new() argument
1801 cfg->io = io; in rsnd_kctrl_new()
1819 struct rsnd_dai_stream *io) in rsnd_rdai_continuance_probe() argument
1823 ret = rsnd_dai_call(probe, io, priv); in rsnd_rdai_continuance_probe()
1825 struct rsnd_mod *ssi_mod = rsnd_io_to_mod_ssi(io); in rsnd_rdai_continuance_probe()
1840 rsnd_dai_call(remove, io, priv); in rsnd_rdai_continuance_probe()
1846 for_each_rsnd_mod(i, mod, io) in rsnd_rdai_continuance_probe()
1847 rsnd_dai_disconnect(mod, io, i); in rsnd_rdai_continuance_probe()
1848 rsnd_dai_connect(ssi_mod, io, RSND_MOD_SSI); in rsnd_rdai_continuance_probe()
1853 rsnd_dai_call(fallback, io, priv); in rsnd_rdai_continuance_probe()
1859 ret = rsnd_dai_call(probe, io, priv); in rsnd_rdai_continuance_probe()