Lines Matching full:runtime
37 static inline void update_silence_vars(struct snd_pcm_runtime *runtime, in update_silence_vars() argument
47 delta += runtime->boundary; in update_silence_vars()
48 if ((snd_pcm_uframes_t)delta < runtime->silence_filled) in update_silence_vars()
49 runtime->silence_filled -= delta; in update_silence_vars()
51 runtime->silence_filled = 0; in update_silence_vars()
52 runtime->silence_start = new_ptr; in update_silence_vars()
57 * runtime->silence_start: starting pointer to silence area
58 * runtime->silence_filled: size filled with silence
59 * runtime->silence_threshold: threshold from application
60 * runtime->silence_size: maximal size from application
62 * when runtime->silence_size >= runtime->boundary - fill processed area with silence immediately
66 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_playback_silence() local
70 if (runtime->silence_size < runtime->boundary) { in snd_pcm_playback_silence()
72 snd_pcm_uframes_t appl_ptr = READ_ONCE(runtime->control->appl_ptr); in snd_pcm_playback_silence()
73 update_silence_vars(runtime, runtime->silence_start, appl_ptr); in snd_pcm_playback_silence()
76 new_hw_ptr = runtime->status->hw_ptr; in snd_pcm_playback_silence()
80 noise_dist += runtime->boundary; in snd_pcm_playback_silence()
82 noise_dist += runtime->silence_filled; in snd_pcm_playback_silence()
83 if (noise_dist >= (snd_pcm_sframes_t) runtime->silence_threshold) in snd_pcm_playback_silence()
85 frames = runtime->silence_threshold - noise_dist; in snd_pcm_playback_silence()
86 if (frames > runtime->silence_size) in snd_pcm_playback_silence()
87 frames = runtime->silence_size; in snd_pcm_playback_silence()
93 snd_pcm_uframes_t hw_ptr = runtime->status->hw_ptr; in snd_pcm_playback_silence()
101 snd_pcm_sframes_t avail = runtime->control->appl_ptr - hw_ptr; in snd_pcm_playback_silence()
103 avail += runtime->boundary; in snd_pcm_playback_silence()
109 runtime->silence_filled = avail > runtime->buffer_size ? 0 : avail; in snd_pcm_playback_silence()
110 runtime->silence_start = hw_ptr; in snd_pcm_playback_silence()
113 update_silence_vars(runtime, hw_ptr, new_hw_ptr); in snd_pcm_playback_silence()
119 frames = runtime->buffer_size - runtime->silence_filled; in snd_pcm_playback_silence()
121 if (snd_BUG_ON(frames > runtime->buffer_size)) in snd_pcm_playback_silence()
125 ofs = (runtime->silence_start + runtime->silence_filled) % runtime->buffer_size; in snd_pcm_playback_silence()
127 transfer = ofs + frames > runtime->buffer_size ? runtime->buffer_size - ofs : frames; in snd_pcm_playback_silence()
130 runtime->silence_filled += transfer; in snd_pcm_playback_silence()
170 struct snd_pcm_runtime *runtime = substream->runtime; in __snd_pcm_xrun() local
173 if (runtime->tstamp_mode == SNDRV_PCM_TSTAMP_ENABLE) { in __snd_pcm_xrun()
176 snd_pcm_gettime(runtime, &tstamp); in __snd_pcm_xrun()
177 runtime->status->tstamp.tv_sec = tstamp.tv_sec; in __snd_pcm_xrun()
178 runtime->status->tstamp.tv_nsec = tstamp.tv_nsec; in __snd_pcm_xrun()
210 struct snd_pcm_runtime *runtime) in snd_pcm_update_state() argument
215 if (avail > runtime->avail_max) in snd_pcm_update_state()
216 runtime->avail_max = avail; in snd_pcm_update_state()
217 if (runtime->state == SNDRV_PCM_STATE_DRAINING) { in snd_pcm_update_state()
218 if (avail >= runtime->buffer_size) { in snd_pcm_update_state()
223 if (avail >= runtime->stop_threshold) { in snd_pcm_update_state()
228 if (runtime->twake) { in snd_pcm_update_state()
229 if (avail >= runtime->twake) in snd_pcm_update_state()
230 wake_up(&runtime->tsleep); in snd_pcm_update_state()
231 } else if (avail >= runtime->control->avail_min) in snd_pcm_update_state()
232 wake_up(&runtime->sleep); in snd_pcm_update_state()
240 struct snd_pcm_runtime *runtime = substream->runtime; in update_audio_tstamp() local
244 if (runtime->tstamp_mode != SNDRV_PCM_TSTAMP_ENABLE) in update_audio_tstamp()
248 (runtime->audio_tstamp_report.actual_type == in update_audio_tstamp()
256 audio_frames = runtime->hw_ptr_wrap + runtime->status->hw_ptr; in update_audio_tstamp()
258 if (runtime->audio_tstamp_config.report_delay) { in update_audio_tstamp()
260 audio_frames -= runtime->delay; in update_audio_tstamp()
262 audio_frames += runtime->delay; in update_audio_tstamp()
265 runtime->rate); in update_audio_tstamp()
269 if (runtime->status->audio_tstamp.tv_sec != audio_tstamp->tv_sec || in update_audio_tstamp()
270 runtime->status->audio_tstamp.tv_nsec != audio_tstamp->tv_nsec) { in update_audio_tstamp()
271 runtime->status->audio_tstamp.tv_sec = audio_tstamp->tv_sec; in update_audio_tstamp()
272 runtime->status->audio_tstamp.tv_nsec = audio_tstamp->tv_nsec; in update_audio_tstamp()
273 runtime->status->tstamp.tv_sec = curr_tstamp->tv_sec; in update_audio_tstamp()
274 runtime->status->tstamp.tv_nsec = curr_tstamp->tv_nsec; in update_audio_tstamp()
282 snd_pcm_gettime(substream->runtime, &driver_tstamp); in update_audio_tstamp()
283 runtime->driver_tstamp = driver_tstamp; in update_audio_tstamp()
289 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_update_hw_ptr0() local
299 old_hw_ptr = runtime->status->hw_ptr; in snd_pcm_update_hw_ptr0()
309 if (runtime->tstamp_mode == SNDRV_PCM_TSTAMP_ENABLE) { in snd_pcm_update_hw_ptr0()
311 (runtime->audio_tstamp_config.type_requested != SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT)) { in snd_pcm_update_hw_ptr0()
314 &runtime->audio_tstamp_config, in snd_pcm_update_hw_ptr0()
315 &runtime->audio_tstamp_report); in snd_pcm_update_hw_ptr0()
318 if (runtime->audio_tstamp_report.actual_type == SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT) in snd_pcm_update_hw_ptr0()
319 snd_pcm_gettime(runtime, &curr_tstamp); in snd_pcm_update_hw_ptr0()
321 snd_pcm_gettime(runtime, &curr_tstamp); in snd_pcm_update_hw_ptr0()
328 if (pos >= runtime->buffer_size) { in snd_pcm_update_hw_ptr0()
334 name, pos, runtime->buffer_size, in snd_pcm_update_hw_ptr0()
335 runtime->period_size); in snd_pcm_update_hw_ptr0()
339 pos -= pos % runtime->min_align; in snd_pcm_update_hw_ptr0()
341 hw_base = runtime->hw_ptr_base; in snd_pcm_update_hw_ptr0()
346 delta = runtime->hw_ptr_interrupt + runtime->period_size; in snd_pcm_update_hw_ptr0()
349 hdelta = curr_jiffies - runtime->hw_ptr_jiffies; in snd_pcm_update_hw_ptr0()
350 if (hdelta > runtime->hw_ptr_buffer_jiffies/2 + 1) { in snd_pcm_update_hw_ptr0()
351 hw_base += runtime->buffer_size; in snd_pcm_update_hw_ptr0()
352 if (hw_base >= runtime->boundary) { in snd_pcm_update_hw_ptr0()
364 hw_base += runtime->buffer_size; in snd_pcm_update_hw_ptr0()
365 if (hw_base >= runtime->boundary) { in snd_pcm_update_hw_ptr0()
374 delta += runtime->boundary; in snd_pcm_update_hw_ptr0()
376 if (runtime->no_period_wakeup) { in snd_pcm_update_hw_ptr0()
382 jdelta = curr_jiffies - runtime->hw_ptr_jiffies; in snd_pcm_update_hw_ptr0()
383 if (jdelta < runtime->hw_ptr_buffer_jiffies / 2) in snd_pcm_update_hw_ptr0()
385 hdelta = jdelta - delta * HZ / runtime->rate; in snd_pcm_update_hw_ptr0()
386 xrun_threshold = runtime->hw_ptr_buffer_jiffies / 2 + 1; in snd_pcm_update_hw_ptr0()
388 delta += runtime->buffer_size; in snd_pcm_update_hw_ptr0()
389 hw_base += runtime->buffer_size; in snd_pcm_update_hw_ptr0()
390 if (hw_base >= runtime->boundary) { in snd_pcm_update_hw_ptr0()
395 hdelta -= runtime->hw_ptr_buffer_jiffies; in snd_pcm_update_hw_ptr0()
401 if (delta >= runtime->buffer_size + runtime->period_size) { in snd_pcm_update_hw_ptr0()
417 if (runtime->hw.info & SNDRV_PCM_INFO_BATCH) in snd_pcm_update_hw_ptr0()
420 if (hdelta < runtime->delay) in snd_pcm_update_hw_ptr0()
422 hdelta -= runtime->delay; in snd_pcm_update_hw_ptr0()
423 jdelta = curr_jiffies - runtime->hw_ptr_jiffies; in snd_pcm_update_hw_ptr0()
424 if (((hdelta * HZ) / runtime->rate) > jdelta + HZ/100) { in snd_pcm_update_hw_ptr0()
426 (((runtime->period_size * HZ) / runtime->rate) in snd_pcm_update_hw_ptr0()
434 new_hw_ptr += runtime->period_size; in snd_pcm_update_hw_ptr0()
435 if (new_hw_ptr >= runtime->boundary) { in snd_pcm_update_hw_ptr0()
436 new_hw_ptr -= runtime->boundary; in snd_pcm_update_hw_ptr0()
445 (long)runtime->period_size, jdelta, in snd_pcm_update_hw_ptr0()
446 ((hdelta * HZ) / runtime->rate), hw_base, in snd_pcm_update_hw_ptr0()
451 hw_base = new_hw_ptr - (new_hw_ptr % runtime->buffer_size); in snd_pcm_update_hw_ptr0()
454 if (delta > runtime->period_size + runtime->period_size / 2) { in snd_pcm_update_hw_ptr0()
464 if (runtime->status->hw_ptr == new_hw_ptr) { in snd_pcm_update_hw_ptr0()
465 runtime->hw_ptr_jiffies = curr_jiffies; in snd_pcm_update_hw_ptr0()
471 runtime->silence_size > 0) in snd_pcm_update_hw_ptr0()
475 delta = new_hw_ptr - runtime->hw_ptr_interrupt; in snd_pcm_update_hw_ptr0()
477 delta += runtime->boundary; in snd_pcm_update_hw_ptr0()
478 delta -= (snd_pcm_uframes_t)delta % runtime->period_size; in snd_pcm_update_hw_ptr0()
479 runtime->hw_ptr_interrupt += delta; in snd_pcm_update_hw_ptr0()
480 if (runtime->hw_ptr_interrupt >= runtime->boundary) in snd_pcm_update_hw_ptr0()
481 runtime->hw_ptr_interrupt -= runtime->boundary; in snd_pcm_update_hw_ptr0()
483 runtime->hw_ptr_base = hw_base; in snd_pcm_update_hw_ptr0()
484 runtime->status->hw_ptr = new_hw_ptr; in snd_pcm_update_hw_ptr0()
485 runtime->hw_ptr_jiffies = curr_jiffies; in snd_pcm_update_hw_ptr0()
488 runtime->hw_ptr_wrap += runtime->boundary; in snd_pcm_update_hw_ptr0()
493 return snd_pcm_update_state(substream, runtime); in snd_pcm_update_hw_ptr0()
1156 * @runtime: the pcm runtime instance
1165 int snd_pcm_hw_rule_add(struct snd_pcm_runtime *runtime, unsigned int cond, in snd_pcm_hw_rule_add() argument
1170 struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints; in snd_pcm_hw_rule_add()
1211 * @runtime: PCM runtime instance
1219 int snd_pcm_hw_constraint_mask(struct snd_pcm_runtime *runtime, snd_pcm_hw_param_t var, in snd_pcm_hw_constraint_mask() argument
1222 struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints; in snd_pcm_hw_constraint_mask()
1233 * @runtime: PCM runtime instance
1241 int snd_pcm_hw_constraint_mask64(struct snd_pcm_runtime *runtime, snd_pcm_hw_param_t var, in snd_pcm_hw_constraint_mask64() argument
1244 struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints; in snd_pcm_hw_constraint_mask64()
1257 * @runtime: PCM runtime instance
1265 int snd_pcm_hw_constraint_integer(struct snd_pcm_runtime *runtime, snd_pcm_hw_param_t var) in snd_pcm_hw_constraint_integer() argument
1267 struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints; in snd_pcm_hw_constraint_integer()
1274 * @runtime: PCM runtime instance
1284 int snd_pcm_hw_constraint_minmax(struct snd_pcm_runtime *runtime, snd_pcm_hw_param_t var, in snd_pcm_hw_constraint_minmax() argument
1287 struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints; in snd_pcm_hw_constraint_minmax()
1307 * @runtime: PCM runtime instance
1316 int snd_pcm_hw_constraint_list(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_list() argument
1321 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_list()
1338 * @runtime: PCM runtime instance
1347 int snd_pcm_hw_constraint_ranges(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_ranges() argument
1352 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_ranges()
1375 * @runtime: PCM runtime instance
1382 int snd_pcm_hw_constraint_ratnums(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_ratnums() argument
1387 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_ratnums()
1409 * @runtime: PCM runtime instance
1416 int snd_pcm_hw_constraint_ratdens(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_ratdens() argument
1421 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_ratdens()
1448 * @runtime: PCM runtime instance
1460 int snd_pcm_hw_constraint_msbits(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_msbits() argument
1466 return snd_pcm_hw_rule_add(runtime, cond, -1, in snd_pcm_hw_constraint_msbits()
1482 * @runtime: PCM runtime instance
1489 int snd_pcm_hw_constraint_step(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_step() argument
1494 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_step()
1514 * @runtime: PCM runtime instance
1520 int snd_pcm_hw_constraint_pow2(struct snd_pcm_runtime *runtime, in snd_pcm_hw_constraint_pow2() argument
1524 return snd_pcm_hw_rule_add(runtime, cond, var, in snd_pcm_hw_constraint_pow2()
1542 * @runtime: PCM runtime instance
1547 int snd_pcm_hw_rule_noresample(struct snd_pcm_runtime *runtime, in snd_pcm_hw_rule_noresample() argument
1550 return snd_pcm_hw_rule_add(runtime, SNDRV_PCM_HW_PARAMS_NORESAMPLE, in snd_pcm_hw_rule_noresample()
1766 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_lib_ioctl_reset() local
1771 runtime->status->hw_ptr %= runtime->buffer_size; in snd_pcm_lib_ioctl_reset()
1773 runtime->status->hw_ptr = 0; in snd_pcm_lib_ioctl_reset()
1774 runtime->hw_ptr_wrap = 0; in snd_pcm_lib_ioctl_reset()
1783 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_lib_ioctl_channel_info() local
1785 if (!(runtime->info & SNDRV_PCM_INFO_MMAP)) { in snd_pcm_lib_ioctl_channel_info()
1789 width = snd_pcm_format_physical_width(runtime->format); in snd_pcm_lib_ioctl_channel_info()
1793 switch (runtime->access) { in snd_pcm_lib_ioctl_channel_info()
1797 info->step = runtime->channels * width; in snd_pcm_lib_ioctl_channel_info()
1802 size_t size = runtime->dma_bytes / runtime->channels; in snd_pcm_lib_ioctl_channel_info()
1822 params->fifo_size = substream->runtime->hw.fifo_size; in snd_pcm_lib_ioctl_fifo_size()
1823 if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) { in snd_pcm_lib_ioctl_fifo_size()
1840 if (substream->runtime->std_sync_id) in snd_pcm_lib_ioctl_sync_id()
1874 * snd_pcm_period_elapsed_under_stream_lock() - update the status of runtime for the next period
1881 * The call of function updates the status of runtime with the latest position of audio data
1902 struct snd_pcm_runtime *runtime; in snd_pcm_period_elapsed_under_stream_lock() local
1906 runtime = substream->runtime; in snd_pcm_period_elapsed_under_stream_lock()
1917 snd_kill_fasync(runtime->fasync, SIGIO, POLL_IN); in snd_pcm_period_elapsed_under_stream_lock()
1922 * snd_pcm_period_elapsed() - update the status of runtime for the next period by acquiring lock of
1952 struct snd_pcm_runtime *runtime = substream->runtime; in wait_for_avail() local
1961 add_wait_queue(&runtime->tsleep, &wait); in wait_for_avail()
1963 if (runtime->no_period_wakeup) in wait_for_avail()
1972 if (runtime->rate) { in wait_for_avail()
1973 long t = runtime->buffer_size * 1100 / runtime->rate; in wait_for_avail()
1994 if (avail >= runtime->twake) in wait_for_avail()
2002 switch (runtime->state) { in wait_for_avail()
2033 remove_wait_queue(&runtime->tsleep, &wait); in wait_for_avail()
2047 static void *get_dma_ptr(struct snd_pcm_runtime *runtime, in get_dma_ptr() argument
2050 return runtime->dma_area + hwoff + in get_dma_ptr()
2051 channel * (runtime->dma_bytes / runtime->channels); in get_dma_ptr()
2059 if (copy_from_iter(get_dma_ptr(substream->runtime, channel, hwoff), in default_write_copy()
2073 struct snd_pcm_runtime *runtime = substream->runtime; in fill_silence() local
2081 snd_pcm_format_set_silence(runtime->format, in fill_silence()
2082 get_dma_ptr(runtime, channel, hwoff), in fill_silence()
2083 bytes_to_samples(runtime, bytes)); in fill_silence()
2092 if (copy_to_iter(get_dma_ptr(substream->runtime, channel, hwoff), in default_read_copy()
2134 struct snd_pcm_runtime *runtime = substream->runtime; in interleaved_copy() local
2137 hwoff = frames_to_bytes(runtime, hwoff); in interleaved_copy()
2138 off = frames_to_bytes(runtime, off); in interleaved_copy()
2139 frames = frames_to_bytes(runtime, frames); in interleaved_copy()
2155 struct snd_pcm_runtime *runtime = substream->runtime; in noninterleaved_copy() local
2156 int channels = runtime->channels; in noninterleaved_copy()
2164 off = samples_to_bytes(runtime, off); in noninterleaved_copy()
2165 frames = samples_to_bytes(runtime, frames); in noninterleaved_copy()
2166 hwoff = samples_to_bytes(runtime, hwoff); in noninterleaved_copy()
2185 if (substream->runtime->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED || in fill_silence_frames()
2186 substream->runtime->access == SNDRV_PCM_ACCESS_MMAP_INTERLEAVED) in fill_silence_frames()
2197 struct snd_pcm_runtime *runtime; in pcm_sanity_check() local
2200 runtime = substream->runtime; in pcm_sanity_check()
2201 if (snd_BUG_ON(!substream->ops->copy && !runtime->dma_area)) in pcm_sanity_check()
2203 if (runtime->state == SNDRV_PCM_STATE_OPEN) in pcm_sanity_check()
2208 static int pcm_accessible_state(struct snd_pcm_runtime *runtime) in pcm_accessible_state() argument
2210 switch (runtime->state) { in pcm_accessible_state()
2230 struct snd_pcm_runtime *runtime = substream->runtime; in pcm_lib_apply_appl_ptr() local
2231 snd_pcm_uframes_t old_appl_ptr = runtime->control->appl_ptr; in pcm_lib_apply_appl_ptr()
2238 if (appl_ptr >= runtime->boundary) in pcm_lib_apply_appl_ptr()
2243 if (substream->runtime->info & SNDRV_PCM_INFO_NO_REWINDS) { in pcm_lib_apply_appl_ptr()
2246 if (diff > runtime->buffer_size) in pcm_lib_apply_appl_ptr()
2249 if (runtime->boundary + diff > runtime->buffer_size) in pcm_lib_apply_appl_ptr()
2254 runtime->control->appl_ptr = appl_ptr; in pcm_lib_apply_appl_ptr()
2258 runtime->control->appl_ptr = old_appl_ptr; in pcm_lib_apply_appl_ptr()
2275 struct snd_pcm_runtime *runtime = substream->runtime; in __snd_pcm_lib_xfer() local
2291 if (runtime->access != SNDRV_PCM_ACCESS_RW_INTERLEAVED && in __snd_pcm_lib_xfer()
2292 runtime->channels > 1) in __snd_pcm_lib_xfer()
2296 if (runtime->access != SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) in __snd_pcm_lib_xfer()
2320 err = pcm_accessible_state(runtime); in __snd_pcm_lib_xfer()
2324 runtime->twake = runtime->control->avail_min ? : 1; in __snd_pcm_lib_xfer()
2325 if (runtime->state == SNDRV_PCM_STATE_RUNNING) in __snd_pcm_lib_xfer()
2333 runtime->state == SNDRV_PCM_STATE_PREPARED && in __snd_pcm_lib_xfer()
2334 size >= runtime->start_threshold) { in __snd_pcm_lib_xfer()
2347 runtime->state == SNDRV_PCM_STATE_DRAINING) { in __snd_pcm_lib_xfer()
2355 runtime->twake = min_t(snd_pcm_uframes_t, size, in __snd_pcm_lib_xfer()
2356 runtime->control->avail_min ? : 1); in __snd_pcm_lib_xfer()
2364 appl_ptr = READ_ONCE(runtime->control->appl_ptr); in __snd_pcm_lib_xfer()
2365 appl_ofs = appl_ptr % runtime->buffer_size; in __snd_pcm_lib_xfer()
2366 cont = runtime->buffer_size - appl_ofs; in __snd_pcm_lib_xfer()
2373 if (!atomic_inc_unless_negative(&runtime->buffer_accessing)) { in __snd_pcm_lib_xfer()
2385 atomic_dec(&runtime->buffer_accessing); in __snd_pcm_lib_xfer()
2388 err = pcm_accessible_state(runtime); in __snd_pcm_lib_xfer()
2392 if (appl_ptr >= runtime->boundary) in __snd_pcm_lib_xfer()
2393 appl_ptr -= runtime->boundary; in __snd_pcm_lib_xfer()
2403 runtime->state == SNDRV_PCM_STATE_PREPARED && in __snd_pcm_lib_xfer()
2404 snd_pcm_playback_hw_avail(runtime) >= (snd_pcm_sframes_t)runtime->start_threshold) { in __snd_pcm_lib_xfer()
2411 runtime->twake = 0; in __snd_pcm_lib_xfer()
2413 snd_pcm_update_state(substream, runtime); in __snd_pcm_lib_xfer()
2504 if (!substream->runtime) in pcm_chmap_ctl_get()
2508 if (map->channels == substream->runtime->channels && in pcm_chmap_ctl_get()