• Home
  • Raw
  • Download

Lines Matching +full:over +full:- +full:sampling

1 // SPDX-License-Identifier: GPL-2.0
3 // Renesas R-Car SRC support
28 u32 convert_rate; /* sampling rate convert */
34 #define rsnd_src_get(priv, id) ((struct rsnd_src *)(priv->src) + id)
35 #define rsnd_src_nr(priv) ((priv)->src_nr)
36 #define rsnd_src_sync_is_enabled(mod) (rsnd_mod_to_src(mod)->sen.val)
44 ((pos) = (struct rsnd_src *)(priv)->src + i); \
49 * image of SRC (Sampling Rate Converter)
51 * 96kHz <-> +-----+ 48kHz +-----+ 48kHz +-------+
52 * 48kHz <-> | SRC | <------> | SSI | <-----> | codec |
53 * 44.1kHz <-> +-----+ +-----+ +-------+
92 return src->convert_rate; in rsnd_src_convert_rate()
94 convert_rate = src->sync.val; in rsnd_src_convert_rate()
97 convert_rate = src->convert_rate; in rsnd_src_convert_rate()
100 convert_rate = runtime->rate; in rsnd_src_convert_rate()
116 * runtime_rate -> [SRC] -> convert_rate in rsnd_src_get_rate()
119 * convert_rate -> [SRC] -> runtime_rate in rsnd_src_get_rate()
123 return runtime->rate; in rsnd_src_get_rate()
127 * otherwise, return runtime->rate as usual in rsnd_src_get_rate()
133 rate = runtime->rate; in rsnd_src_get_rate()
144 struct snd_soc_pcm_runtime *fe = substream->private_data; in rsnd_src_hw_params()
148 * sampling rate convert. Then, SRC should be FE. in rsnd_src_hw_params()
155 src->convert_rate = 0; in rsnd_src_hw_params()
156 if (fe->dai_link->dynamic) { in rsnd_src_hw_params()
157 int stream = substream->stream; in rsnd_src_hw_params()
161 list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be) { in rsnd_src_hw_params()
162 be_params = &dpcm->hw_params; in rsnd_src_hw_params()
165 src->convert_rate = params_rate(be_params); in rsnd_src_hw_params()
193 /* 6 - 1/6 are very enough ratio for SRC_BSDSR */ in rsnd_src_set_convert_rate()
251 bsdsr = 0x02400000; /* 6 - 1/6 */ in rsnd_src_set_convert_rate()
252 bsisr = 0x00100060; /* 6 - 1/6 */ in rsnd_src_set_convert_rate()
255 bsdsr = 0x01800000; /* 6 - 1/6 */ in rsnd_src_set_convert_rate()
256 bsisr = 0x00100060 ;/* 6 - 1/6 */ in rsnd_src_set_convert_rate()
291 int irq = src->irq; in rsnd_src_irq()
299 * IRQ is not supported on non-DT in rsnd_src_irq()
311 * ignore over flow error when rsnd_src_sync_is_enabled() in rsnd_src_irq()
344 * ignore over flow error when rsnd_src_sync_is_enabled() in rsnd_src_error_occurred()
397 src->sync.val = 0; in rsnd_src_init()
421 src->sync.val = 0; in rsnd_src_quit()
432 spin_lock(&priv->lock); in __rsnd_src_interrupt()
444 spin_unlock(&priv->lock); in __rsnd_src_interrupt()
447 snd_pcm_stop_xrun(io->substream); in __rsnd_src_interrupt()
465 int irq = src->irq; in rsnd_src_probe_()
470 * IRQ is not supported on non-DT in rsnd_src_probe_()
482 ret = rsnd_dma_attach(io, mod, &src->dma); in rsnd_src_probe_()
514 &src->sen, 1); in rsnd_src_pcm_new()
524 &src->sync, 192000); in rsnd_src_pcm_new()
570 ret = -EINVAL; in rsnd_src_probe()
576 ret = -ENOMEM; in rsnd_src_probe()
580 priv->src_nr = nr; in rsnd_src_probe()
581 priv->src = src; in rsnd_src_probe()
593 src->irq = irq_of_parse_and_map(np, 0); in rsnd_src_probe()
594 if (!src->irq) { in rsnd_src_probe()
595 ret = -EINVAL; in rsnd_src_probe()