• Home
  • Raw
  • Download

Lines Matching refs:runtime

566 	struct snd_pcm_runtime *runtime = substream->runtime;  in snd_pcm_oss_plugin_clear()  local
569 plugin = runtime->oss.plugin_first; in snd_pcm_oss_plugin_clear()
575 runtime->oss.plugin_first = runtime->oss.plugin_last = NULL; in snd_pcm_oss_plugin_clear()
581 struct snd_pcm_runtime *runtime = plugin->plug->runtime; in snd_pcm_plugin_insert() local
582 plugin->next = runtime->oss.plugin_first; in snd_pcm_plugin_insert()
584 if (runtime->oss.plugin_first) { in snd_pcm_plugin_insert()
585 runtime->oss.plugin_first->prev = plugin; in snd_pcm_plugin_insert()
586 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_insert()
588 runtime->oss.plugin_last = in snd_pcm_plugin_insert()
589 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_insert()
596 struct snd_pcm_runtime *runtime = plugin->plug->runtime; in snd_pcm_plugin_append() local
598 plugin->prev = runtime->oss.plugin_last; in snd_pcm_plugin_append()
599 if (runtime->oss.plugin_last) { in snd_pcm_plugin_append()
600 runtime->oss.plugin_last->next = plugin; in snd_pcm_plugin_append()
601 runtime->oss.plugin_last = plugin; in snd_pcm_plugin_append()
603 runtime->oss.plugin_last = in snd_pcm_plugin_append()
604 runtime->oss.plugin_first = plugin; in snd_pcm_plugin_append()
612 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_bytes() local
614 long bytes = frames_to_bytes(runtime, frames); in snd_pcm_oss_bytes()
615 if (buffer_size == runtime->oss.buffer_bytes) in snd_pcm_oss_bytes()
618 return runtime->oss.buffer_bytes * bytes / buffer_size; in snd_pcm_oss_bytes()
621 u64 bsize = (u64)runtime->oss.buffer_bytes * (u64)bytes; in snd_pcm_oss_bytes()
629 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_alsa_frames() local
631 if (buffer_size == runtime->oss.buffer_bytes) in snd_pcm_alsa_frames()
632 return bytes_to_frames(runtime, bytes); in snd_pcm_alsa_frames()
633 return bytes_to_frames(runtime, (buffer_size * bytes) / runtime->oss.buffer_bytes); in snd_pcm_alsa_frames()
637 snd_pcm_uframes_t get_hw_ptr_period(struct snd_pcm_runtime *runtime) in get_hw_ptr_period() argument
639 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
731 if (oss_buffer_size > runtime->oss.mmap_bytes) in snd_pcm_oss_period_size()
732 oss_buffer_size = runtime->oss.mmap_bytes; in snd_pcm_oss_period_size()
737 else if (runtime->oss.fragshift) { in snd_pcm_oss_period_size()
738 oss_period_size = 1 << runtime->oss.fragshift; in snd_pcm_oss_period_size()
749 if (runtime->oss.subdivision == 0) { in snd_pcm_oss_period_size()
756 sd = runtime->oss.subdivision; in snd_pcm_oss_period_size()
786 if (s > 0 && runtime->oss.maxfrags && s > runtime->oss.maxfrags) in snd_pcm_oss_period_size()
787 s = runtime->oss.maxfrags; in snd_pcm_oss_period_size()
802 runtime->oss.period_bytes = oss_period_size; in snd_pcm_oss_period_size()
803 runtime->oss.period_frames = 1; in snd_pcm_oss_period_size()
804 runtime->oss.periods = oss_periods; in snd_pcm_oss_period_size()
849 static int lock_params(struct snd_pcm_runtime *runtime) in lock_params() argument
851 if (mutex_lock_interruptible(&runtime->oss.params_lock)) in lock_params()
853 if (atomic_read(&runtime->oss.rw_ref)) { in lock_params()
854 mutex_unlock(&runtime->oss.params_lock); in lock_params()
860 static void unlock_params(struct snd_pcm_runtime *runtime) in unlock_params() argument
862 mutex_unlock(&runtime->oss.params_lock); in unlock_params()
868 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_change_params_locked() local
880 if (!runtime->oss.params) in snd_pcm_oss_change_params_locked()
913 err = choose_rate(substream, sparams, runtime->oss.rate); in snd_pcm_oss_change_params_locked()
918 runtime->oss.channels, NULL); in snd_pcm_oss_change_params_locked()
922 format = snd_pcm_oss_format_from(runtime->oss.format); in snd_pcm_oss_change_params_locked()
956 (__force int)snd_pcm_oss_format_from(runtime->oss.format), 0); in snd_pcm_oss_change_params_locked()
958 runtime->oss.channels, 0); in snd_pcm_oss_change_params_locked()
960 runtime->oss.rate, 0); in snd_pcm_oss_change_params_locked()
976 n = snd_pcm_plug_slave_size(substream, runtime->oss.period_bytes / oss_frame_size); in snd_pcm_oss_change_params_locked()
982 runtime->oss.periods, NULL); in snd_pcm_oss_change_params_locked()
1007 if (runtime->oss.plugin_first) { in snd_pcm_oss_change_params_locked()
1028 if (runtime->oss.trigger) { in snd_pcm_oss_change_params_locked()
1031 sw_params->start_threshold = runtime->boundary; in snd_pcm_oss_change_params_locked()
1035 sw_params->stop_threshold = runtime->boundary; in snd_pcm_oss_change_params_locked()
1037 sw_params->stop_threshold = runtime->buffer_size; in snd_pcm_oss_change_params_locked()
1041 1 : runtime->period_size; in snd_pcm_oss_change_params_locked()
1048 frames = runtime->period_size + 16; in snd_pcm_oss_change_params_locked()
1049 if (frames > runtime->buffer_size) in snd_pcm_oss_change_params_locked()
1050 frames = runtime->buffer_size; in snd_pcm_oss_change_params_locked()
1060 runtime->oss.periods = params_periods(sparams); in snd_pcm_oss_change_params_locked()
1067 if (runtime->oss.plugin_first) { in snd_pcm_oss_change_params_locked()
1075 oss_buffer_size = oss_period_size * runtime->oss.periods; in snd_pcm_oss_change_params_locked()
1081 runtime->oss.period_bytes = oss_period_size; in snd_pcm_oss_change_params_locked()
1082 runtime->oss.buffer_bytes = oss_buffer_size; in snd_pcm_oss_change_params_locked()
1085 runtime->oss.period_bytes, in snd_pcm_oss_change_params_locked()
1086 runtime->oss.buffer_bytes); in snd_pcm_oss_change_params_locked()
1091 runtime->oss.format = snd_pcm_oss_format_to(params_format(params)); in snd_pcm_oss_change_params_locked()
1092 runtime->oss.channels = params_channels(params); in snd_pcm_oss_change_params_locked()
1093 runtime->oss.rate = params_rate(params); in snd_pcm_oss_change_params_locked()
1095 vfree(runtime->oss.buffer); in snd_pcm_oss_change_params_locked()
1096 runtime->oss.buffer = vmalloc(runtime->oss.period_bytes); in snd_pcm_oss_change_params_locked()
1097 if (!runtime->oss.buffer) { in snd_pcm_oss_change_params_locked()
1102 runtime->oss.params = 0; in snd_pcm_oss_change_params_locked()
1103 runtime->oss.prepare = 1; in snd_pcm_oss_change_params_locked()
1104 runtime->oss.buffer_used = 0; in snd_pcm_oss_change_params_locked()
1105 if (runtime->dma_area) in snd_pcm_oss_change_params_locked()
1106 …snd_pcm_format_set_silence(runtime->format, runtime->dma_area, bytes_to_samples(runtime, runtime->… in snd_pcm_oss_change_params_locked()
1108 runtime->oss.period_frames = snd_pcm_alsa_frames(substream, oss_period_size); in snd_pcm_oss_change_params_locked()
1122 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_change_params() local
1126 if (!(mutex_trylock(&runtime->oss.params_lock))) in snd_pcm_oss_change_params()
1128 } else if (mutex_lock_interruptible(&runtime->oss.params_lock)) in snd_pcm_oss_change_params()
1132 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_change_params()
1147 if (substream->runtime->oss.params) { in snd_pcm_oss_get_active_substream()
1167 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_prepare() local
1175 runtime->oss.prepare = 0; in snd_pcm_oss_prepare()
1176 runtime->oss.prev_hw_ptr_period = 0; in snd_pcm_oss_prepare()
1177 runtime->oss.period_ptr = 0; in snd_pcm_oss_prepare()
1178 runtime->oss.buffer_used = 0; in snd_pcm_oss_prepare()
1185 struct snd_pcm_runtime *runtime; in snd_pcm_oss_make_ready() local
1188 runtime = substream->runtime; in snd_pcm_oss_make_ready()
1189 if (runtime->oss.params) { in snd_pcm_oss_make_ready()
1194 if (runtime->oss.prepare) { in snd_pcm_oss_make_ready()
1195 if (mutex_lock_interruptible(&runtime->oss.params_lock)) in snd_pcm_oss_make_ready()
1198 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_make_ready()
1208 struct snd_pcm_runtime *runtime; in snd_pcm_oss_make_ready_locked() local
1211 runtime = substream->runtime; in snd_pcm_oss_make_ready_locked()
1212 if (runtime->oss.params) { in snd_pcm_oss_make_ready_locked()
1217 if (runtime->oss.prepare) { in snd_pcm_oss_make_ready_locked()
1227 struct snd_pcm_runtime *runtime; in snd_pcm_oss_capture_position_fixup() local
1235 runtime = substream->runtime; in snd_pcm_oss_capture_position_fixup()
1236 if (*delay <= (snd_pcm_sframes_t)runtime->buffer_size) in snd_pcm_oss_capture_position_fixup()
1240 frames = (*delay - runtime->buffer_size) + runtime->period_size - 1; in snd_pcm_oss_capture_position_fixup()
1241 frames /= runtime->period_size; in snd_pcm_oss_capture_position_fixup()
1242 frames *= runtime->period_size; in snd_pcm_oss_capture_position_fixup()
1252 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write3() local
1255 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_write3()
1256 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_write3()
1260 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_write3()
1279 if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) in snd_pcm_oss_write3()
1287 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read3() local
1291 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_read3()
1292 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_read3()
1296 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_read3()
1302 } else if (runtime->status->state == SNDRV_PCM_STATE_SETUP) { in snd_pcm_oss_read3()
1319 if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { in snd_pcm_oss_read3()
1334 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_writev3() local
1337 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_writev3()
1338 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_writev3()
1342 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_writev3()
1362 if (runtime->status->state == SNDRV_PCM_STATE_PREPARED) in snd_pcm_oss_writev3()
1370 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_readv3() local
1373 if (runtime->status->state == SNDRV_PCM_STATE_XRUN || in snd_pcm_oss_readv3()
1374 runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { in snd_pcm_oss_readv3()
1378 runtime->status->state == SNDRV_PCM_STATE_XRUN ? in snd_pcm_oss_readv3()
1384 } else if (runtime->status->state == SNDRV_PCM_STATE_SETUP) { in snd_pcm_oss_readv3()
1405 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write2() local
1408 if (runtime->oss.plugin_first) { in snd_pcm_oss_write2()
1410 …size_t oss_frame_bytes = (runtime->oss.plugin_first->src_width * runtime->oss.plugin_first->src_fo… in snd_pcm_oss_write2()
1412 if (copy_from_user(runtime->oss.buffer, (const char __force __user *)buf, bytes)) in snd_pcm_oss_write2()
1414 buf = runtime->oss.buffer; in snd_pcm_oss_write2()
1427 frames = bytes_to_frames(runtime, bytes); in snd_pcm_oss_write2()
1431 bytes = frames_to_bytes(runtime, frames1); in snd_pcm_oss_write2()
1440 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_write1() local
1445 atomic_inc(&runtime->oss.rw_ref); in snd_pcm_oss_write1()
1447 if (mutex_lock_interruptible(&runtime->oss.params_lock)) { in snd_pcm_oss_write1()
1454 if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { in snd_pcm_oss_write1()
1456 if (tmp + runtime->oss.buffer_used > runtime->oss.period_bytes) in snd_pcm_oss_write1()
1457 tmp = runtime->oss.period_bytes - runtime->oss.buffer_used; in snd_pcm_oss_write1()
1459 if (copy_from_user(runtime->oss.buffer + runtime->oss.buffer_used, buf, tmp)) { in snd_pcm_oss_write1()
1464 runtime->oss.buffer_used += tmp; in snd_pcm_oss_write1()
1469 runtime->oss.buffer_used == runtime->oss.period_bytes) { in snd_pcm_oss_write1()
1470 tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer + runtime->oss.period_ptr, in snd_pcm_oss_write1()
1471 runtime->oss.buffer_used - runtime->oss.period_ptr, 1); in snd_pcm_oss_write1()
1474 runtime->oss.bytes += tmp; in snd_pcm_oss_write1()
1475 runtime->oss.period_ptr += tmp; in snd_pcm_oss_write1()
1476 runtime->oss.period_ptr %= runtime->oss.period_bytes; in snd_pcm_oss_write1()
1477 if (runtime->oss.period_ptr == 0 || in snd_pcm_oss_write1()
1478 runtime->oss.period_ptr == runtime->oss.buffer_used) in snd_pcm_oss_write1()
1479 runtime->oss.buffer_used = 0; in snd_pcm_oss_write1()
1488 runtime->oss.period_bytes, 0); in snd_pcm_oss_write1()
1491 runtime->oss.bytes += tmp; in snd_pcm_oss_write1()
1496 tmp != runtime->oss.period_bytes) in snd_pcm_oss_write1()
1500 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_write1()
1509 atomic_dec(&runtime->oss.rw_ref); in snd_pcm_oss_write1()
1515 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read2() local
1519 if (runtime->oss.plugin_first) { in snd_pcm_oss_read2()
1521 …size_t oss_frame_bytes = (runtime->oss.plugin_last->dst_width * runtime->oss.plugin_last->dst_form… in snd_pcm_oss_read2()
1523 buf = runtime->oss.buffer; in snd_pcm_oss_read2()
1537 frames = bytes_to_frames(runtime, bytes); in snd_pcm_oss_read2()
1541 bytes = frames_to_bytes(runtime, frames1); in snd_pcm_oss_read2()
1550 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_read1() local
1555 atomic_inc(&runtime->oss.rw_ref); in snd_pcm_oss_read1()
1557 if (mutex_lock_interruptible(&runtime->oss.params_lock)) { in snd_pcm_oss_read1()
1564 if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { in snd_pcm_oss_read1()
1565 if (runtime->oss.buffer_used == 0) { in snd_pcm_oss_read1()
1566 tmp = snd_pcm_oss_read2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); in snd_pcm_oss_read1()
1569 runtime->oss.bytes += tmp; in snd_pcm_oss_read1()
1570 runtime->oss.period_ptr = tmp; in snd_pcm_oss_read1()
1571 runtime->oss.buffer_used = tmp; in snd_pcm_oss_read1()
1574 if ((size_t) tmp > runtime->oss.buffer_used) in snd_pcm_oss_read1()
1575 tmp = runtime->oss.buffer_used; in snd_pcm_oss_read1()
1576 …if (copy_to_user(buf, runtime->oss.buffer + (runtime->oss.period_ptr - runtime->oss.buffer_used), … in snd_pcm_oss_read1()
1583 runtime->oss.buffer_used -= tmp; in snd_pcm_oss_read1()
1586 runtime->oss.period_bytes, 0); in snd_pcm_oss_read1()
1589 runtime->oss.bytes += tmp; in snd_pcm_oss_read1()
1595 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_read1()
1604 atomic_dec(&runtime->oss.rw_ref); in snd_pcm_oss_read1()
1611 struct snd_pcm_runtime *runtime; in snd_pcm_oss_reset() local
1618 runtime = substream->runtime; in snd_pcm_oss_reset()
1620 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_reset()
1621 runtime->oss.prepare = 1; in snd_pcm_oss_reset()
1622 runtime->oss.buffer_used = 0; in snd_pcm_oss_reset()
1623 runtime->oss.prev_hw_ptr_period = 0; in snd_pcm_oss_reset()
1624 runtime->oss.period_ptr = 0; in snd_pcm_oss_reset()
1625 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_reset()
1648 struct snd_pcm_runtime *runtime; in snd_pcm_oss_sync1() local
1654 runtime = substream->runtime; in snd_pcm_oss_sync1()
1656 add_wait_queue(&runtime->sleep, &wait); in snd_pcm_oss_sync1()
1661 result = snd_pcm_oss_write2(substream, runtime->oss.buffer, size, 1); in snd_pcm_oss_sync1()
1663 runtime->oss.buffer_used = 0; in snd_pcm_oss_sync1()
1672 state = runtime->status->state; in snd_pcm_oss_sync1()
1690 remove_wait_queue(&runtime->sleep, &wait); in snd_pcm_oss_sync1()
1699 struct snd_pcm_runtime *runtime; in snd_pcm_oss_sync() local
1706 runtime = substream->runtime; in snd_pcm_oss_sync()
1711 atomic_inc(&runtime->oss.rw_ref); in snd_pcm_oss_sync()
1712 if (mutex_lock_interruptible(&runtime->oss.params_lock)) { in snd_pcm_oss_sync()
1713 atomic_dec(&runtime->oss.rw_ref); in snd_pcm_oss_sync()
1716 format = snd_pcm_oss_format_from(runtime->oss.format); in snd_pcm_oss_sync()
1718 if (runtime->oss.buffer_used > 0) { in snd_pcm_oss_sync()
1722 size = (8 * (runtime->oss.period_bytes - runtime->oss.buffer_used) + 7) / width; in snd_pcm_oss_sync()
1724 runtime->oss.buffer + runtime->oss.buffer_used, in snd_pcm_oss_sync()
1726 err = snd_pcm_oss_sync1(substream, runtime->oss.period_bytes); in snd_pcm_oss_sync()
1729 } else if (runtime->oss.period_ptr > 0) { in snd_pcm_oss_sync()
1733 size = runtime->oss.period_bytes - runtime->oss.period_ptr; in snd_pcm_oss_sync()
1735 runtime->oss.buffer, in snd_pcm_oss_sync()
1745 size = runtime->control->appl_ptr % runtime->period_size; in snd_pcm_oss_sync()
1747 size = runtime->period_size - size; in snd_pcm_oss_sync()
1748 if (runtime->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) { in snd_pcm_oss_sync()
1749 size = (runtime->frame_bits * size) / 8; in snd_pcm_oss_sync()
1752 size_t size1 = size < runtime->oss.period_bytes ? size : runtime->oss.period_bytes; in snd_pcm_oss_sync()
1755 size1 /= runtime->sample_bits; in snd_pcm_oss_sync()
1756 snd_pcm_format_set_silence(runtime->format, in snd_pcm_oss_sync()
1757 runtime->oss.buffer, in snd_pcm_oss_sync()
1759 size1 /= runtime->channels; /* frames */ in snd_pcm_oss_sync()
1761 snd_pcm_lib_write(substream, (void __force __user *)runtime->oss.buffer, size1); in snd_pcm_oss_sync()
1764 } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) { in snd_pcm_oss_sync()
1765 void __user *buffers[runtime->channels]; in snd_pcm_oss_sync()
1766 memset(buffers, 0, runtime->channels * sizeof(void *)); in snd_pcm_oss_sync()
1771 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1772 atomic_dec(&runtime->oss.rw_ref); in snd_pcm_oss_sync()
1785 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1786 runtime->oss.prepare = 1; in snd_pcm_oss_sync()
1787 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1794 runtime = substream->runtime; in snd_pcm_oss_sync()
1798 mutex_lock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1799 runtime->oss.buffer_used = 0; in snd_pcm_oss_sync()
1800 runtime->oss.prepare = 1; in snd_pcm_oss_sync()
1801 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_sync()
1812 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_rate() local
1817 runtime = substream->runtime; in snd_pcm_oss_set_rate()
1822 err = lock_params(runtime); in snd_pcm_oss_set_rate()
1825 if (runtime->oss.rate != rate) { in snd_pcm_oss_set_rate()
1826 runtime->oss.params = 1; in snd_pcm_oss_set_rate()
1827 runtime->oss.rate = rate; in snd_pcm_oss_set_rate()
1829 unlock_params(runtime); in snd_pcm_oss_set_rate()
1841 return substream->runtime->oss.rate; in snd_pcm_oss_get_rate()
1853 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_channels() local
1858 runtime = substream->runtime; in snd_pcm_oss_set_channels()
1859 err = lock_params(runtime); in snd_pcm_oss_set_channels()
1862 if (runtime->oss.channels != channels) { in snd_pcm_oss_set_channels()
1863 runtime->oss.params = 1; in snd_pcm_oss_set_channels()
1864 runtime->oss.channels = channels; in snd_pcm_oss_set_channels()
1866 unlock_params(runtime); in snd_pcm_oss_set_channels()
1878 return substream->runtime->oss.channels; in snd_pcm_oss_get_channels()
1888 return substream->runtime->oss.period_bytes; in snd_pcm_oss_get_block_size()
1949 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_format() local
1952 runtime = substream->runtime; in snd_pcm_oss_set_format()
1953 err = lock_params(runtime); in snd_pcm_oss_set_format()
1956 if (runtime->oss.format != format) { in snd_pcm_oss_set_format()
1957 runtime->oss.params = 1; in snd_pcm_oss_set_format()
1958 runtime->oss.format = format; in snd_pcm_oss_set_format()
1960 unlock_params(runtime); in snd_pcm_oss_set_format()
1973 return substream->runtime->oss.format; in snd_pcm_oss_get_format()
1978 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_subdivide1() local
1980 runtime = substream->runtime; in snd_pcm_oss_set_subdivide1()
1982 subdivide = runtime->oss.subdivision; in snd_pcm_oss_set_subdivide1()
1987 if (runtime->oss.subdivision || runtime->oss.fragshift) in snd_pcm_oss_set_subdivide1()
1992 runtime->oss.subdivision = subdivide; in snd_pcm_oss_set_subdivide1()
1993 runtime->oss.params = 1; in snd_pcm_oss_set_subdivide1()
2003 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_subdivide() local
2007 runtime = substream->runtime; in snd_pcm_oss_set_subdivide()
2008 err = lock_params(runtime); in snd_pcm_oss_set_subdivide()
2012 unlock_params(runtime); in snd_pcm_oss_set_subdivide()
2021 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_fragment1() local
2024 runtime = substream->runtime; in snd_pcm_oss_set_fragment1()
2025 if (runtime->oss.subdivision || runtime->oss.fragshift) in snd_pcm_oss_set_fragment1()
2030 runtime->oss.fragshift = fragshift; in snd_pcm_oss_set_fragment1()
2031 runtime->oss.maxfrags = (val >> 16) & 0xffff; in snd_pcm_oss_set_fragment1()
2032 if (runtime->oss.fragshift < 4) /* < 16 */ in snd_pcm_oss_set_fragment1()
2033 runtime->oss.fragshift = 4; in snd_pcm_oss_set_fragment1()
2034 if (runtime->oss.maxfrags < 2) in snd_pcm_oss_set_fragment1()
2035 runtime->oss.maxfrags = 2; in snd_pcm_oss_set_fragment1()
2036 runtime->oss.params = 1; in snd_pcm_oss_set_fragment1()
2046 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_fragment() local
2050 runtime = substream->runtime; in snd_pcm_oss_set_fragment()
2051 err = lock_params(runtime); in snd_pcm_oss_set_fragment()
2055 unlock_params(runtime); in snd_pcm_oss_set_fragment()
2086 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_get_caps1() local
2087 if (runtime->info & (SNDRV_PCM_INFO_BLOCK_TRANSFER|SNDRV_PCM_INFO_BATCH)) in snd_pcm_oss_get_caps1()
2110 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_simulate_fill() local
2112 appl_ptr = hw_ptr + runtime->buffer_size; in snd_pcm_oss_simulate_fill()
2113 appl_ptr %= runtime->boundary; in snd_pcm_oss_simulate_fill()
2114 runtime->control->appl_ptr = appl_ptr; in snd_pcm_oss_simulate_fill()
2119 struct snd_pcm_runtime *runtime; in snd_pcm_oss_set_trigger() local
2139 runtime = psubstream->runtime; in snd_pcm_oss_set_trigger()
2141 if (mutex_lock_interruptible(&runtime->oss.params_lock)) in snd_pcm_oss_set_trigger()
2144 if (runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2148 get_hw_ptr_period(runtime)); in snd_pcm_oss_set_trigger()
2149 runtime->oss.trigger = 1; in snd_pcm_oss_set_trigger()
2150 runtime->start_threshold = 1; in snd_pcm_oss_set_trigger()
2153 if (!runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2155 runtime->oss.trigger = 0; in snd_pcm_oss_set_trigger()
2156 runtime->start_threshold = runtime->boundary; in snd_pcm_oss_set_trigger()
2158 runtime->oss.prepare = 1; in snd_pcm_oss_set_trigger()
2161 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_set_trigger()
2169 runtime = csubstream->runtime; in snd_pcm_oss_set_trigger()
2171 if (mutex_lock_interruptible(&runtime->oss.params_lock)) in snd_pcm_oss_set_trigger()
2174 if (runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2176 runtime->oss.trigger = 1; in snd_pcm_oss_set_trigger()
2177 runtime->start_threshold = 1; in snd_pcm_oss_set_trigger()
2180 if (!runtime->oss.trigger) in snd_pcm_oss_set_trigger()
2182 runtime->oss.trigger = 0; in snd_pcm_oss_set_trigger()
2183 runtime->start_threshold = runtime->boundary; in snd_pcm_oss_set_trigger()
2185 runtime->oss.prepare = 1; in snd_pcm_oss_set_trigger()
2188 mutex_unlock(&runtime->oss.params_lock); in snd_pcm_oss_set_trigger()
2205 if (psubstream && psubstream->runtime && psubstream->runtime->oss.trigger) in snd_pcm_oss_get_trigger()
2207 if (csubstream && csubstream->runtime && csubstream->runtime->oss.trigger) in snd_pcm_oss_get_trigger()
2215 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_odelay() local
2224 runtime = substream->runtime; in snd_pcm_oss_get_odelay()
2225 if (runtime->oss.params || runtime->oss.prepare) in snd_pcm_oss_get_odelay()
2238 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_ptr() local
2251 runtime = substream->runtime; in snd_pcm_oss_get_ptr()
2252 if (runtime->oss.params || runtime->oss.prepare) { in snd_pcm_oss_get_ptr()
2265 fixup = runtime->oss.buffer_used; in snd_pcm_oss_get_ptr()
2269 fixup = -runtime->oss.buffer_used; in snd_pcm_oss_get_ptr()
2273 info.ptr = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr % runtime->buffer_size); in snd_pcm_oss_get_ptr()
2276 delay = get_hw_ptr_period(runtime); in snd_pcm_oss_get_ptr()
2277 n = delay - runtime->oss.prev_hw_ptr_period; in snd_pcm_oss_get_ptr()
2279 n += runtime->boundary; in snd_pcm_oss_get_ptr()
2280 info.blocks = n / runtime->period_size; in snd_pcm_oss_get_ptr()
2281 runtime->oss.prev_hw_ptr_period = delay; in snd_pcm_oss_get_ptr()
2284 info.bytes = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr) & INT_MAX; in snd_pcm_oss_get_ptr()
2289 info.blocks = (runtime->oss.buffer_bytes - delay - fixup) / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2291 info.blocks = (delay + fixup) / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2292 info.bytes = (runtime->oss.bytes - delay) & INT_MAX; in snd_pcm_oss_get_ptr()
2295 info.blocks = delay / runtime->oss.period_bytes; in snd_pcm_oss_get_ptr()
2296 info.bytes = (runtime->oss.bytes + delay) & INT_MAX; in snd_pcm_oss_get_ptr()
2307 struct snd_pcm_runtime *runtime; in snd_pcm_oss_get_space() local
2318 runtime = substream->runtime; in snd_pcm_oss_get_space()
2320 if (runtime->oss.params && in snd_pcm_oss_get_space()
2324 info.fragsize = runtime->oss.period_bytes; in snd_pcm_oss_get_space()
2325 info.fragstotal = runtime->periods; in snd_pcm_oss_get_space()
2326 if (runtime->oss.prepare) { in snd_pcm_oss_get_space()
2328 info.bytes = runtime->oss.period_bytes * runtime->oss.periods; in snd_pcm_oss_get_space()
2329 info.fragments = runtime->oss.periods; in snd_pcm_oss_get_space()
2338 avail = runtime->buffer_size; in snd_pcm_oss_get_space()
2342 avail = runtime->buffer_size - avail; in snd_pcm_oss_get_space()
2343 fixup = -runtime->oss.buffer_used; in snd_pcm_oss_get_space()
2347 fixup = runtime->oss.buffer_used; in snd_pcm_oss_get_space()
2352 info.fragments = info.bytes / runtime->oss.period_bytes; in snd_pcm_oss_get_space()
2404 struct snd_pcm_runtime *runtime; in snd_pcm_oss_release_substream() local
2405 runtime = substream->runtime; in snd_pcm_oss_release_substream()
2406 vfree(runtime->oss.buffer); in snd_pcm_oss_release_substream()
2407 runtime->oss.buffer = NULL; in snd_pcm_oss_release_substream()
2418 struct snd_pcm_runtime *runtime; in snd_pcm_oss_init_substream() local
2426 runtime = substream->runtime; in snd_pcm_oss_init_substream()
2427 runtime->oss.params = 1; in snd_pcm_oss_init_substream()
2428 runtime->oss.trigger = 1; in snd_pcm_oss_init_substream()
2429 runtime->oss.rate = 8000; in snd_pcm_oss_init_substream()
2430 mutex_init(&runtime->oss.params_lock); in snd_pcm_oss_init_substream()
2433 runtime->oss.format = AFMT_U8; in snd_pcm_oss_init_substream()
2436 runtime->oss.format = AFMT_S16_LE; in snd_pcm_oss_init_substream()
2439 runtime->oss.format = AFMT_MU_LAW; in snd_pcm_oss_init_substream()
2441 runtime->oss.channels = 1; in snd_pcm_oss_init_substream()
2442 runtime->oss.fragshift = 0; in snd_pcm_oss_init_substream()
2443 runtime->oss.maxfrags = 0; in snd_pcm_oss_init_substream()
2444 runtime->oss.subdivision = 0; in snd_pcm_oss_init_substream()
2446 atomic_set(&runtime->oss.rw_ref, 0); in snd_pcm_oss_init_substream()
2856 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_playback_ready() local
2858 return runtime->oss.prev_hw_ptr_period != in snd_pcm_oss_playback_ready()
2859 get_hw_ptr_period(runtime); in snd_pcm_oss_playback_ready()
2861 return snd_pcm_playback_avail(runtime) >= in snd_pcm_oss_playback_ready()
2862 runtime->oss.period_frames; in snd_pcm_oss_playback_ready()
2867 struct snd_pcm_runtime *runtime = substream->runtime; in snd_pcm_oss_capture_ready() local
2869 return runtime->oss.prev_hw_ptr_period != in snd_pcm_oss_capture_ready()
2870 get_hw_ptr_period(runtime); in snd_pcm_oss_capture_ready()
2872 return snd_pcm_capture_avail(runtime) >= in snd_pcm_oss_capture_ready()
2873 runtime->oss.period_frames; in snd_pcm_oss_capture_ready()
2889 struct snd_pcm_runtime *runtime = psubstream->runtime; in snd_pcm_oss_poll() local
2890 poll_wait(file, &runtime->sleep, wait); in snd_pcm_oss_poll()
2892 if (runtime->status->state != SNDRV_PCM_STATE_DRAINING && in snd_pcm_oss_poll()
2893 (runtime->status->state != SNDRV_PCM_STATE_RUNNING || in snd_pcm_oss_poll()
2899 struct snd_pcm_runtime *runtime = csubstream->runtime; in snd_pcm_oss_poll() local
2901 poll_wait(file, &runtime->sleep, wait); in snd_pcm_oss_poll()
2903 if ((ostate = runtime->status->state) != SNDRV_PCM_STATE_RUNNING || in snd_pcm_oss_poll()
2907 if (ostate != SNDRV_PCM_STATE_RUNNING && runtime->oss.trigger) { in snd_pcm_oss_poll()
2911 runtime->oss.trigger = 0; in snd_pcm_oss_poll()
2923 struct snd_pcm_runtime *runtime; in snd_pcm_oss_mmap() local
2950 runtime = substream->runtime; in snd_pcm_oss_mmap()
2951 if (!(runtime->info & SNDRV_PCM_INFO_MMAP_VALID)) in snd_pcm_oss_mmap()
2953 if (runtime->info & SNDRV_PCM_INFO_INTERLEAVED) in snd_pcm_oss_mmap()
2954 runtime->access = SNDRV_PCM_ACCESS_MMAP_INTERLEAVED; in snd_pcm_oss_mmap()
2958 if (runtime->oss.params) { in snd_pcm_oss_mmap()
2968 if (runtime->oss.plugin_first != NULL) in snd_pcm_oss_mmap()
2978 runtime->oss.mmap_bytes = area->vm_end - area->vm_start; in snd_pcm_oss_mmap()
2979 runtime->silence_threshold = 0; in snd_pcm_oss_mmap()
2980 runtime->silence_size = 0; in snd_pcm_oss_mmap()
2983 runtime->oss.mmap_bytes); in snd_pcm_oss_mmap()
2986 runtime->stop_threshold = runtime->boundary; in snd_pcm_oss_mmap()