Lines Matching refs:runtime
567 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_plugin_clear() local
570 plugin = runtime->oss.plugin_first; in snd_pcm_oss_plugin_clear()
576 runtime->oss.plugin_first = runtime->oss.plugin_last = NULL; in snd_pcm_oss_plugin_clear()
582 struct snd_pcm_runtime *runtime = plugin->plug->runtime; in snd_pcm_plugin_insert() local
583 plugin->next = runtime->oss.plugin_first; in snd_pcm_plugin_insert()
585 if (runtime->oss.plugin_first) { in snd_pcm_plugin_insert()
586 runtime->oss.plugin_first->prev = plugin; in snd_pcm_plugin_insert()
587 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_insert()
589 runtime->oss.plugin_last = in snd_pcm_plugin_insert()
590 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_insert()
597 struct snd_pcm_runtime *runtime = plugin->plug->runtime; in snd_pcm_plugin_append() local
599 plugin->prev = runtime->oss.plugin_last; in snd_pcm_plugin_append()
600 if (runtime->oss.plugin_last) { in snd_pcm_plugin_append()
601 runtime->oss.plugin_last->next = plugin; in snd_pcm_plugin_append()
602 runtime->oss.plugin_last = plugin; in snd_pcm_plugin_append()
604 runtime->oss.plugin_last = in snd_pcm_plugin_append()
605 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_append()
613 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_bytes() local
615 long bytes = frames_to_bytes(runtime, frames); in snd_pcm_oss_bytes()
616 if (buffer_size == runtime->oss.buffer_bytes) in snd_pcm_oss_bytes()
619 return runtime->oss.buffer_bytes * bytes / buffer_size; in snd_pcm_oss_bytes()
622 u64 bsize = (u64)runtime->oss.buffer_bytes * (u64)bytes; in snd_pcm_oss_bytes()
630 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_alsa_frames() local
632 if (buffer_size == runtime->oss.buffer_bytes) in snd_pcm_alsa_frames()
633 return bytes_to_frames(runtime, bytes); in snd_pcm_alsa_frames()
634 return bytes_to_frames(runtime, (buffer_size * bytes) / runtime->oss.buffer_bytes); in snd_pcm_alsa_frames()
638 snd_pcm_uframes_t get_hw_ptr_period(struct snd_pcm_runtime *runtime) in get_hw_ptr_period() argument
640 return runtime->hw_ptr_interrupt; in get_hw_ptr_period()
714 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_period_size() local
724 if (oss_buffer_size > runtime->oss.mmap_bytes) in snd_pcm_oss_period_size()
725 oss_buffer_size = runtime->oss.mmap_bytes; in snd_pcm_oss_period_size()
730 else if (runtime->oss.fragshift) { in snd_pcm_oss_period_size()
731 oss_period_size = 1 << runtime->oss.fragshift; in snd_pcm_oss_period_size()
742 if (runtime->oss.subdivision == 0) { in snd_pcm_oss_period_size()
749 sd = runtime->oss.subdivision; in snd_pcm_oss_period_size()
775 if (runtime->oss.maxfrags && s > runtime->oss.maxfrags) in snd_pcm_oss_period_size()
776 s = runtime->oss.maxfrags; in snd_pcm_oss_period_size()
791 runtime->oss.period_bytes = oss_period_size; in snd_pcm_oss_period_size()
792 runtime->oss.period_frames = 1; in snd_pcm_oss_period_size()
793 runtime->oss.periods = oss_periods; in snd_pcm_oss_period_size()
840 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_change_params() local
853 if (!(mutex_trylock(&runtime->oss.params_lock))) in snd_pcm_oss_change_params()
855 } else if (mutex_lock_interruptible(&runtime->oss.params_lock)) in snd_pcm_oss_change_params()
887 choose_rate(substream, sparams, runtime->oss.rate); in snd_pcm_oss_change_params()
888 …snd_pcm_hw_param_near(substream, sparams, SNDRV_PCM_HW_PARAM_CHANNELS, runtime->oss.channels, NULL… in snd_pcm_oss_change_params()
890 format = snd_pcm_oss_format_from(runtime->oss.format); in snd_pcm_oss_change_params()
924 (__force int)snd_pcm_oss_format_from(runtime->oss.format), 0); in snd_pcm_oss_change_params()
926 runtime->oss.channels, 0); in snd_pcm_oss_change_params()
928 runtime->oss.rate, 0); in snd_pcm_oss_change_params()
953 if (runtime->oss.plugin_first) { in snd_pcm_oss_change_params()
978 n = snd_pcm_plug_slave_size(substream, runtime->oss.period_bytes / oss_frame_size); in snd_pcm_oss_change_params()
984 runtime->oss.periods, NULL); in snd_pcm_oss_change_params()
996 if (runtime->oss.trigger) { in snd_pcm_oss_change_params()
999 sw_params->start_threshold = runtime->boundary; in snd_pcm_oss_change_params()
1003 sw_params->stop_threshold = runtime->boundary; in snd_pcm_oss_change_params()
1005 sw_params->stop_threshold = runtime->buffer_size; in snd_pcm_oss_change_params()
1009 1 : runtime->period_size; in snd_pcm_oss_change_params()
1016 frames = runtime->period_size + 16; in snd_pcm_oss_change_params()
1017 if (frames > runtime->buffer_size) in snd_pcm_oss_change_params()
1018 frames = runtime->buffer_size; in snd_pcm_oss_change_params()
1028 runtime->oss.periods = params_periods(sparams); in snd_pcm_oss_change_params()
1035 if (runtime->oss.plugin_first) { in snd_pcm_oss_change_params()
1043 oss_buffer_size = oss_period_size * runtime->oss.periods; in snd_pcm_oss_change_params()
1049 runtime->oss.period_bytes = oss_period_size; in snd_pcm_oss_change_params()
1050 runtime->oss.buffer_bytes = oss_buffer_size; in snd_pcm_oss_change_params()
1053 runtime->oss.period_bytes, in snd_pcm_oss_change_params()
1054 runtime->oss.buffer_bytes); in snd_pcm_oss_change_params()
1059 runtime->oss.format = snd_pcm_oss_format_to(params_format(params)); in snd_pcm_oss_change_params()
1060 runtime->oss.channels = params_channels(params); in snd_pcm_oss_change_params()
1061 runtime->oss.rate = params_rate(params); in snd_pcm_oss_change_params()
1063 vfree(runtime->oss.buffer); in snd_pcm_oss_change_params()
1064 runtime->oss.buffer = vmalloc(runtime->oss.period_bytes); in snd_pcm_oss_change_params()
1065 if (!runtime->oss.buffer) { in snd_pcm_oss_change_params()
1070 runtime->oss.params = 0; in snd_pcm_oss_change_params()
1071 runtime->oss.prepare = 1; in snd_pcm_oss_change_params()
1072 runtime->oss.buffer_used = 0; in snd_pcm_oss_change_params()
1073 if (runtime->dma_area) in snd_pcm_oss_change_params()
1074 …snd_pcm_format_set_silence(runtime->format, runtime->dma_area, bytes_to_samples(runtime, runtime->… in snd_pcm_oss_change_params()
1076 runtime->oss.period_frames = snd_pcm_alsa_frames(substream, oss_period_size); in snd_pcm_oss_change_params()
1083 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_change_params()
1098 if (substream->runtime->oss.params) { in snd_pcm_oss_get_active_substream()
1114 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_prepare() local
1122 runtime->oss.prepare = 0; in snd_pcm_oss_prepare()
1123 runtime->oss.prev_hw_ptr_period = 0; in snd_pcm_oss_prepare()
1124 runtime->oss.period_ptr = 0; in snd_pcm_oss_prepare()
1125 runtime->oss.buffer_used = 0; in snd_pcm_oss_prepare()
1132 struct snd_pcm_runtime *runtime; in snd_pcm_oss_make_ready() local
1137 runtime = substream->runtime; in snd_pcm_oss_make_ready()
1138 if (runtime->oss.params) { in snd_pcm_oss_make_ready()
1143 if (runtime->oss.prepare) { in snd_pcm_oss_make_ready()
1153 struct snd_pcm_runtime *runtime; in snd_pcm_oss_capture_position_fixup() local
1161 runtime = substream->runtime; in snd_pcm_oss_capture_position_fixup()
1162 if (*delay <= (snd_pcm_sframes_t)runtime->buffer_size) in snd_pcm_oss_capture_position_fixup()
1166 frames = (*delay - runtime->buffer_size) + runtime->period_size - 1; in snd_pcm_oss_capture_position_fixup()
1167 frames /= runtime->period_size; in snd_pcm_oss_capture_position_fixup()
1168 frames *= runtime->period_size; in snd_pcm_oss_capture_position_fixup()
1178 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write3() local
1181 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_write3()
1182 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_write3()
1186 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_write3()
1205 if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) in snd_pcm_oss_write3()
1213 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read3() local
1217 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_read3()
1218 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_read3()
1222 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_read3()
1228 } else if (runtime->status->state == SNDRV_PCM_STATE_SETUP) { in snd_pcm_oss_read3()
1245 if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { in snd_pcm_oss_read3()
1260 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_writev3() local
1263 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_writev3()
1264 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_writev3()
1268 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_writev3()
1288 if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) in snd_pcm_oss_writev3()
1296 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_readv3() local
1299 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_readv3()
1300 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_readv3()
1304 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_readv3()
1310 } else if (runtime->status->state == SNDRV_PCM_STATE_SETUP) { in snd_pcm_oss_readv3()
1331 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write2() local
1334 if (runtime->oss.plugin_first) { in snd_pcm_oss_write2()
1336 …size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_fo… in snd_pcm_oss_write2()
1338 if (copy_from_user(runtime->oss.buffer, (const char __force __user *)buf, bytes)) in snd_pcm_oss_write2()
1340 buf = runtime->oss.buffer; in snd_pcm_oss_write2()
1353 frames = bytes_to_frames(runtime, bytes); in snd_pcm_oss_write2()
1357 bytes = frames_to_bytes(runtime, frames1); in snd_pcm_oss_write2()
1366 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write1() local
1373 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_write1()
1375 if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { in snd_pcm_oss_write1()
1377 if (tmp + runtime->oss.buffer_used > runtime->oss.period_bytes) in snd_pcm_oss_write1()
1378 tmp = runtime->oss.period_bytes - runtime->oss.buffer_used; in snd_pcm_oss_write1()
1380 if (copy_from_user(runtime->oss.buffer + runtime->oss.buffer_used, buf, tmp)) { in snd_pcm_oss_write1()
1385 runtime->oss.buffer_used += tmp; in snd_pcm_oss_write1()
1390 runtime->oss.buffer_used == runtime->oss.period_bytes) { in snd_pcm_oss_write1()
1391 tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer + runtime->oss.period_ptr, in snd_pcm_oss_write1()
1392 runtime->oss.buffer_used - runtime->oss.period_ptr, 1); in snd_pcm_oss_write1()
1395 runtime->oss.bytes += tmp; in snd_pcm_oss_write1()
1396 runtime->oss.period_ptr += tmp; in snd_pcm_oss_write1()
1397 runtime->oss.period_ptr %= runtime->oss.period_bytes; in snd_pcm_oss_write1()
1398 if (runtime->oss.period_ptr == 0 || in snd_pcm_oss_write1()
1399 runtime->oss.period_ptr == runtime->oss.buffer_used) in snd_pcm_oss_write1()
1400 runtime->oss.buffer_used = 0; in snd_pcm_oss_write1()
1409 runtime->oss.period_bytes, 0); in snd_pcm_oss_write1()
1412 runtime->oss.bytes += tmp; in snd_pcm_oss_write1()
1417 tmp != runtime->oss.period_bytes) in snd_pcm_oss_write1()
1421 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_write1()
1425 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_write1()
1431 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read2() local
1435 if (runtime->oss.plugin_first) { in snd_pcm_oss_read2()
1437 …size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_form… in snd_pcm_oss_read2()
1439 buf = runtime->oss.buffer; in snd_pcm_oss_read2()
1453 frames = bytes_to_frames(runtime, bytes); in snd_pcm_oss_read2()
1457 bytes = frames_to_bytes(runtime, frames1); in snd_pcm_oss_read2()
1466 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read1() local
1473 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_read1()
1475 if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { in snd_pcm_oss_read1()
1476 if (runtime->oss.buffer_used == 0) { in snd_pcm_oss_read1()
1477 tmp = snd_pcm_oss_read2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); in snd_pcm_oss_read1()
1480 runtime->oss.bytes += tmp; in snd_pcm_oss_read1()
1481 runtime->oss.period_ptr = tmp; in snd_pcm_oss_read1()
1482 runtime->oss.buffer_used = tmp; in snd_pcm_oss_read1()
1485 if ((size_t) tmp > runtime->oss.buffer_used) in snd_pcm_oss_read1()
1486 tmp = runtime->oss.buffer_used; in snd_pcm_oss_read1()
1487 …if (copy_to_user(buf, runtime->oss.buffer + (runtime->oss.period_ptr - runtime->oss.buffer_used), … in snd_pcm_oss_read1()
1494 runtime->oss.buffer_used -= tmp; in snd_pcm_oss_read1()
1497 runtime->oss.period_bytes, 0); in snd_pcm_oss_read1()
1500 runtime->oss.bytes += tmp; in snd_pcm_oss_read1()
1506 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_read1()
1510 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_read1()
1517 struct snd_pcm_runtime *runtime; in snd_pcm_oss_reset() local
1524 runtime = substream->runtime; in snd_pcm_oss_reset()
1526 runtime->oss.prepare = 1; in snd_pcm_oss_reset()
1527 runtime->oss.buffer_used = 0; in snd_pcm_oss_reset()
1528 runtime->oss.prev_hw_ptr_period = 0; in snd_pcm_oss_reset()
1529 runtime->oss.period_ptr = 0; in snd_pcm_oss_reset()
1552 struct snd_pcm_runtime *runtime; in snd_pcm_oss_sync1() local
1558 runtime = substream->runtime; in snd_pcm_oss_sync1()
1560 add_wait_queue(&runtime->sleep, &wait); in snd_pcm_oss_sync1()
1565 result = snd_pcm_oss_write2(substream, runtime->oss.buffer, size, 1); in snd_pcm_oss_sync1()
1567 runtime->oss.buffer_used = 0; in snd_pcm_oss_sync1()
1576 state = runtime->status->state; in snd_pcm_oss_sync1()
1594 remove_wait_queue(&runtime->sleep, &wait); in snd_pcm_oss_sync1()
1603 struct snd_pcm_runtime *runtime; in snd_pcm_oss_sync() local
1610 runtime = substream->runtime; in snd_pcm_oss_sync()
1615 format = snd_pcm_oss_format_from(runtime->oss.format); in snd_pcm_oss_sync()
1617 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1618 if (runtime->oss.buffer_used > 0) { in snd_pcm_oss_sync()
1622 size = (8 * (runtime->oss.period_bytes - runtime->oss.buffer_used) + 7) / width; in snd_pcm_oss_sync()
1624 runtime->oss.buffer + runtime->oss.buffer_used, in snd_pcm_oss_sync()
1626 err = snd_pcm_oss_sync1(substream, runtime->oss.period_bytes); in snd_pcm_oss_sync()
1628 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1631 } else if (runtime->oss.period_ptr > 0) { in snd_pcm_oss_sync()
1635 size = runtime->oss.period_bytes - runtime->oss.period_ptr; in snd_pcm_oss_sync()
1637 runtime->oss.buffer, in snd_pcm_oss_sync()
1641 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1649 size = runtime->control->appl_ptr % runtime->period_size; in snd_pcm_oss_sync()
1651 size = runtime->period_size - size; in snd_pcm_oss_sync()
1652 if (runtime->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) { in snd_pcm_oss_sync()
1653 size = (runtime->frame_bits * size) / 8; in snd_pcm_oss_sync()
1656 size_t size1 = size < runtime->oss.period_bytes ? size : runtime->oss.period_bytes; in snd_pcm_oss_sync()
1659 size1 /= runtime->sample_bits; in snd_pcm_oss_sync()
1660 snd_pcm_format_set_silence(runtime->format, in snd_pcm_oss_sync()
1661 runtime->oss.buffer, in snd_pcm_oss_sync()
1663 size1 /= runtime->channels; /* frames */ in snd_pcm_oss_sync()
1665 snd_pcm_lib_write(substream, (void __force __user *)runtime->oss.buffer, size1); in snd_pcm_oss_sync()
1668 } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) { in snd_pcm_oss_sync()
1669 void __user *buffers[runtime->channels]; in snd_pcm_oss_sync()
1670 memset(buffers, 0, runtime->channels * sizeof(void *)); in snd_pcm_oss_sync()
1674 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1685 runtime->oss.prepare = 1; in snd_pcm_oss_sync()
1692 runtime = substream->runtime; in snd_pcm_oss_sync()
1696 runtime->oss.buffer_used = 0; in snd_pcm_oss_sync()
1697 runtime->oss.prepare = 1; in snd_pcm_oss_sync()
1708 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_rate() local
1711 runtime = substream->runtime; in snd_pcm_oss_set_rate()
1716 if (runtime->oss.rate != rate) { in snd_pcm_oss_set_rate()
1717 runtime->oss.params = 1; in snd_pcm_oss_set_rate()
1718 runtime->oss.rate = rate; in snd_pcm_oss_set_rate()
1731 return substream->runtime->oss.rate; in snd_pcm_oss_get_rate()
1743 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_channels() local
1746 runtime = substream->runtime; in snd_pcm_oss_set_channels()
1747 if (runtime->oss.channels != channels) { in snd_pcm_oss_set_channels()
1748 runtime->oss.params = 1; in snd_pcm_oss_set_channels()
1749 runtime->oss.channels = channels; in snd_pcm_oss_set_channels()
1762 return substream->runtime->oss.channels; in snd_pcm_oss_get_channels()
1772 return substream->runtime->oss.period_bytes; in snd_pcm_oss_get_block_size()
1830 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_format() local
1833 runtime = substream->runtime; in snd_pcm_oss_set_format()
1834 if (runtime->oss.format != format) { in snd_pcm_oss_set_format()
1835 runtime->oss.params = 1; in snd_pcm_oss_set_format()
1836 runtime->oss.format = format; in snd_pcm_oss_set_format()
1850 return substream->runtime->oss.format; in snd_pcm_oss_get_format()
1855 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_subdivide1() local
1859 runtime = substream->runtime; in snd_pcm_oss_set_subdivide1()
1861 subdivide = runtime->oss.subdivision; in snd_pcm_oss_set_subdivide1()
1866 if (runtime->oss.subdivision || runtime->oss.fragshift) in snd_pcm_oss_set_subdivide1()
1871 runtime->oss.subdivision = subdivide; in snd_pcm_oss_set_subdivide1()
1872 runtime->oss.params = 1; in snd_pcm_oss_set_subdivide1()
1892 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_fragment1() local
1896 runtime = substream->runtime; in snd_pcm_oss_set_fragment1()
1897 if (runtime->oss.subdivision || runtime->oss.fragshift) in snd_pcm_oss_set_fragment1()
1899 runtime->oss.fragshift = val & 0xffff; in snd_pcm_oss_set_fragment1()
1900 runtime->oss.maxfrags = (val >> 16) & 0xffff; in snd_pcm_oss_set_fragment1()
1901 if (runtime->oss.fragshift < 4) /* < 16 */ in snd_pcm_oss_set_fragment1()
1902 runtime->oss.fragshift = 4; in snd_pcm_oss_set_fragment1()
1903 if (runtime->oss.maxfrags < 2) in snd_pcm_oss_set_fragment1()
1904 runtime->oss.maxfrags = 2; in snd_pcm_oss_set_fragment1()
1905 runtime->oss.params = 1; in snd_pcm_oss_set_fragment1()
1947 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_get_caps1() local
1948 if (runtime->info & (SNDRV_PCM_INFO_BLOCK_TRANSFER|SNDRV_PCM_INFO_BATCH)) in snd_pcm_oss_get_caps1()
1971 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_simulate_fill() local
1973 appl_ptr = hw_ptr + runtime->buffer_size; in snd_pcm_oss_simulate_fill()
1974 appl_ptr %= runtime->boundary; in snd_pcm_oss_simulate_fill()
1975 runtime->control->appl_ptr = appl_ptr; in snd_pcm_oss_simulate_fill()
1980 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_trigger() local
2000 runtime = psubstream->runtime; in snd_pcm_oss_set_trigger()
2002 if (runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2006 get_hw_ptr_period(runtime)); in snd_pcm_oss_set_trigger()
2007 runtime->oss.trigger = 1; in snd_pcm_oss_set_trigger()
2008 runtime->start_threshold = 1; in snd_pcm_oss_set_trigger()
2011 if (!runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2013 runtime->oss.trigger = 0; in snd_pcm_oss_set_trigger()
2014 runtime->start_threshold = runtime->boundary; in snd_pcm_oss_set_trigger()
2016 runtime->oss.prepare = 1; in snd_pcm_oss_set_trigger()
2024 runtime = csubstream->runtime; in snd_pcm_oss_set_trigger()
2026 if (runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2028 runtime->oss.trigger = 1; in snd_pcm_oss_set_trigger()
2029 runtime->start_threshold = 1; in snd_pcm_oss_set_trigger()
2032 if (!runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2034 runtime->oss.trigger = 0; in snd_pcm_oss_set_trigger()
2035 runtime->start_threshold = runtime->boundary; in snd_pcm_oss_set_trigger()
2037 runtime->oss.prepare = 1; in snd_pcm_oss_set_trigger()
2054 if (psubstream && psubstream->runtime && psubstream->runtime->oss.trigger) in snd_pcm_oss_get_trigger()
2056 if (csubstream && csubstream->runtime && csubstream->runtime->oss.trigger) in snd_pcm_oss_get_trigger()
2064 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_odelay() local
2073 runtime = substream->runtime; in snd_pcm_oss_get_odelay()
2074 if (runtime->oss.params || runtime->oss.prepare) in snd_pcm_oss_get_odelay()
2087 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_ptr() local
2100 runtime = substream->runtime; in snd_pcm_oss_get_ptr()
2101 if (runtime->oss.params || runtime->oss.prepare) { in snd_pcm_oss_get_ptr()
2114 fixup = runtime->oss.buffer_used; in snd_pcm_oss_get_ptr()
2118 fixup = -runtime->oss.buffer_used; in snd_pcm_oss_get_ptr()
2122 info.ptr = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr % runtime->buffer_size); in snd_pcm_oss_get_ptr()
2125 delay = get_hw_ptr_period(runtime); in snd_pcm_oss_get_ptr()
2126 n = delay - runtime->oss.prev_hw_ptr_period; in snd_pcm_oss_get_ptr()
2128 n += runtime->boundary; in snd_pcm_oss_get_ptr()
2129 info.blocks = n / runtime->period_size; in snd_pcm_oss_get_ptr()
2130 runtime->oss.prev_hw_ptr_period = delay; in snd_pcm_oss_get_ptr()
2133 info.bytes = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr) & INT_MAX; in snd_pcm_oss_get_ptr()
2138 info.blocks = (runtime->oss.buffer_bytes - delay - fixup) / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2140 info.blocks = (delay + fixup) / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2141 info.bytes = (runtime->oss.bytes - delay) & INT_MAX; in snd_pcm_oss_get_ptr()
2144 info.blocks = delay / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2145 info.bytes = (runtime->oss.bytes + delay) & INT_MAX; in snd_pcm_oss_get_ptr()
2156 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_space() local
2167 runtime = substream->runtime; in snd_pcm_oss_get_space()
2169 if (runtime->oss.params && in snd_pcm_oss_get_space()
2173 info.fragsize = runtime->oss.period_bytes; in snd_pcm_oss_get_space()
2174 info.fragstotal = runtime->periods; in snd_pcm_oss_get_space()
2175 if (runtime->oss.prepare) { in snd_pcm_oss_get_space()
2177 info.bytes = runtime->oss.period_bytes * runtime->oss.periods; in snd_pcm_oss_get_space()
2178 info.fragments = runtime->oss.periods; in snd_pcm_oss_get_space()
2187 avail = runtime->buffer_size; in snd_pcm_oss_get_space()
2191 avail = runtime->buffer_size - avail; in snd_pcm_oss_get_space()
2192 fixup = -runtime->oss.buffer_used; in snd_pcm_oss_get_space()
2196 fixup = runtime->oss.buffer_used; in snd_pcm_oss_get_space()
2201 info.fragments = info.bytes / runtime->oss.period_bytes; in snd_pcm_oss_get_space()
2253 struct snd_pcm_runtime *runtime; in snd_pcm_oss_release_substream() local
2254 runtime = substream->runtime; in snd_pcm_oss_release_substream()
2255 vfree(runtime->oss.buffer); in snd_pcm_oss_release_substream()
2256 runtime->oss.buffer = NULL; in snd_pcm_oss_release_substream()
2267 struct snd_pcm_runtime *runtime; in snd_pcm_oss_init_substream() local
2275 runtime = substream->runtime; in snd_pcm_oss_init_substream()
2276 runtime->oss.params = 1; in snd_pcm_oss_init_substream()
2277 runtime->oss.trigger = 1; in snd_pcm_oss_init_substream()
2278 runtime->oss.rate = 8000; in snd_pcm_oss_init_substream()
2279 mutex_init(&runtime->oss.params_lock); in snd_pcm_oss_init_substream()
2282 runtime->oss.format = AFMT_U8; in snd_pcm_oss_init_substream()
2285 runtime->oss.format = AFMT_S16_LE; in snd_pcm_oss_init_substream()
2288 runtime->oss.format = AFMT_MU_LAW; in snd_pcm_oss_init_substream()
2290 runtime->oss.channels = 1; in snd_pcm_oss_init_substream()
2291 runtime->oss.fragshift = 0; in snd_pcm_oss_init_substream()
2292 runtime->oss.maxfrags = 0; in snd_pcm_oss_init_substream()
2293 runtime->oss.subdivision = 0; in snd_pcm_oss_init_substream()
2704 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_playback_ready() local
2706 return runtime->oss.prev_hw_ptr_period != in snd_pcm_oss_playback_ready()
2707 get_hw_ptr_period(runtime); in snd_pcm_oss_playback_ready()
2709 return snd_pcm_playback_avail(runtime) >= in snd_pcm_oss_playback_ready()
2710 runtime->oss.period_frames; in snd_pcm_oss_playback_ready()
2715 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_capture_ready() local
2717 return runtime->oss.prev_hw_ptr_period != in snd_pcm_oss_capture_ready()
2718 get_hw_ptr_period(runtime); in snd_pcm_oss_capture_ready()
2720 return snd_pcm_capture_avail(runtime) >= in snd_pcm_oss_capture_ready()
2721 runtime->oss.period_frames; in snd_pcm_oss_capture_ready()
2737 struct snd_pcm_runtime *runtime = psubstream->runtime; in snd_pcm_oss_poll() local
2738 poll_wait(file, &runtime->sleep, wait); in snd_pcm_oss_poll()
2740 if (runtime->status->state != SNDRV_PCM_STATE_DRAINING && in snd_pcm_oss_poll()
2741 (runtime->status->state != SNDRV_PCM_STATE_RUNNING || in snd_pcm_oss_poll()
2747 struct snd_pcm_runtime *runtime = csubstream->runtime; in snd_pcm_oss_poll() local
2749 poll_wait(file, &runtime->sleep, wait); in snd_pcm_oss_poll()
2751 if ((ostate = runtime->status->state) != SNDRV_PCM_STATE_RUNNING || in snd_pcm_oss_poll()
2755 if (ostate != SNDRV_PCM_STATE_RUNNING && runtime->oss.trigger) { in snd_pcm_oss_poll()
2759 runtime->oss.trigger = 0; in snd_pcm_oss_poll()
2771 struct snd_pcm_runtime *runtime; in snd_pcm_oss_mmap() local
2798 runtime = substream->runtime; in snd_pcm_oss_mmap()
2799 if (!(runtime->info & SNDRV_PCM_INFO_MMAP_VALID)) in snd_pcm_oss_mmap()
2801 if (runtime->info & SNDRV_PCM_INFO_INTERLEAVED) in snd_pcm_oss_mmap()
2802 runtime->access = SNDRV_PCM_ACCESS_MMAP_INTERLEAVED; in snd_pcm_oss_mmap()
2806 if (runtime->oss.params) { in snd_pcm_oss_mmap()
2816 if (runtime->oss.plugin_first != NULL) in snd_pcm_oss_mmap()
2826 runtime->oss.mmap_bytes = area->vm_end - area->vm_start; in snd_pcm_oss_mmap()
2827 runtime->silence_threshold = 0; in snd_pcm_oss_mmap()
2828 runtime->silence_size = 0; in snd_pcm_oss_mmap()
2831 runtime->oss.mmap_bytes); in snd_pcm_oss_mmap()
2834 runtime->stop_threshold = runtime->boundary; in snd_pcm_oss_mmap()