Lines Matching refs:rec

41 			    struct snd_pcm_indirect2 *rec)  in snd_pcm_indirect2_stat()  argument
47 int seconds = (rec->lastbytetime - rec->firstbytetime) / HZ; in snd_pcm_indirect2_stat()
51 rec->mul_elapsed, rec->mul_elapsed_real, rec->irq_occured); in snd_pcm_indirect2_stat()
53 rec->min_multiple); in snd_pcm_indirect2_stat()
56 rec->firstbytetime, rec->lastbytetime, rec->firstzerotime); in snd_pcm_indirect2_stat()
59 rec->bytes2hw, rec->bytes2hw / 2 / 2 / runtime->rate); in snd_pcm_indirect2_stat()
62 seconds, rec->bytes2hw / seconds, in snd_pcm_indirect2_stat()
63 rec->bytes2hw / 2 / 2 / seconds); in snd_pcm_indirect2_stat()
66 rec->zeros2hw, ((rec->zeros2hw / 2 / 2) * 1000) / in snd_pcm_indirect2_stat()
68 rec->zeros2hw / (rec->hw_buffer_size / 2), in snd_pcm_indirect2_stat()
69 (rec->hw_buffer_size / 2)); in snd_pcm_indirect2_stat()
71 rec->pointer_calls, rec->lastdifftime); in snd_pcm_indirect2_stat()
72 snd_printk(KERN_DEBUG "STAT: sw_io: %d, sw_data: %d\n", rec->sw_io, in snd_pcm_indirect2_stat()
73 rec->sw_data); in snd_pcm_indirect2_stat()
78 if (rec->byte_sizes[i] != 0) { in snd_pcm_indirect2_stat()
80 i, rec->byte_sizes[i]); in snd_pcm_indirect2_stat()
93 if (rec->zero_sizes[i] != 0) in snd_pcm_indirect2_stat()
95 i, rec->zero_sizes[i]); in snd_pcm_indirect2_stat()
104 if (rec->min_adds[j] != 0) in snd_pcm_indirect2_stat()
105 snd_printk(KERN_DEBUG "%u: %u", j, rec->min_adds[j]); in snd_pcm_indirect2_stat()
110 if (rec->mul_adds[j] != 0) in snd_pcm_indirect2_stat()
111 snd_printk(KERN_DEBUG "%u: %u", j, rec->mul_adds[j]); in snd_pcm_indirect2_stat()
116 rec->zero_times_saved, rec->zero_times_notsaved); in snd_pcm_indirect2_stat()
137 struct snd_pcm_indirect2 *rec, in snd_pcm_indirect2_increase_min_periods() argument
141 if (rec->min_periods >= 0) { in snd_pcm_indirect2_increase_min_periods()
143 rec->sw_io += bytes; in snd_pcm_indirect2_increase_min_periods()
144 if (rec->sw_io >= rec->sw_buffer_size) in snd_pcm_indirect2_increase_min_periods()
145 rec->sw_io -= rec->sw_buffer_size; in snd_pcm_indirect2_increase_min_periods()
152 if (!rec->check_alignment) { in snd_pcm_indirect2_increase_min_periods()
153 if (rec->bytes2hw % in snd_pcm_indirect2_increase_min_periods()
157 (rec->bytes2hw / in snd_pcm_indirect2_increase_min_periods()
162 rec->sw_data = in snd_pcm_indirect2_increase_min_periods()
164 rec->sw_buffer_size; in snd_pcm_indirect2_increase_min_periods()
172 rec->bytes2hw); in snd_pcm_indirect2_increase_min_periods()
176 rec->sw_data); in snd_pcm_indirect2_increase_min_periods()
179 rec->check_alignment = 1; in snd_pcm_indirect2_increase_min_periods()
187 if (rec->sw_io != rec->sw_data) { in snd_pcm_indirect2_increase_min_periods()
189 if (rec->sw_data > rec->sw_io) in snd_pcm_indirect2_increase_min_periods()
190 diff = rec->sw_data - rec->sw_io; in snd_pcm_indirect2_increase_min_periods()
192 diff = (rec->sw_buffer_size - in snd_pcm_indirect2_increase_min_periods()
193 rec->sw_io) + in snd_pcm_indirect2_increase_min_periods()
194 rec->sw_data; in snd_pcm_indirect2_increase_min_periods()
196 rec->sw_io = rec->sw_data; in snd_pcm_indirect2_increase_min_periods()
198 rec->sw_io += bytes; in snd_pcm_indirect2_increase_min_periods()
199 if (rec->sw_io >= rec->sw_buffer_size) in snd_pcm_indirect2_increase_min_periods()
200 rec->sw_io -= in snd_pcm_indirect2_increase_min_periods()
201 rec->sw_buffer_size; in snd_pcm_indirect2_increase_min_periods()
205 rec->min_period_count += bytes; in snd_pcm_indirect2_increase_min_periods()
206 if (rec->min_period_count >= (rec->hw_buffer_size / 2)) { in snd_pcm_indirect2_increase_min_periods()
207 rec->min_periods += (rec->min_period_count / in snd_pcm_indirect2_increase_min_periods()
208 (rec->hw_buffer_size / 2)); in snd_pcm_indirect2_increase_min_periods()
210 if ((rec->min_period_count / in snd_pcm_indirect2_increase_min_periods()
211 (rec->hw_buffer_size / 2)) > 7) in snd_pcm_indirect2_increase_min_periods()
215 (rec->min_period_count / in snd_pcm_indirect2_increase_min_periods()
216 (rec->hw_buffer_size / 2))); in snd_pcm_indirect2_increase_min_periods()
218 rec->min_adds[(rec->min_period_count / in snd_pcm_indirect2_increase_min_periods()
219 (rec->hw_buffer_size / 2))]++; in snd_pcm_indirect2_increase_min_periods()
221 rec->min_period_count = (rec->min_period_count % in snd_pcm_indirect2_increase_min_periods()
222 (rec->hw_buffer_size / 2)); in snd_pcm_indirect2_increase_min_periods()
225 rec->min_periods = 0; in snd_pcm_indirect2_increase_min_periods()
233 struct snd_pcm_indirect2 *rec) in snd_pcm_indirect2_pointer() argument
236 rec->pointer_calls++; in snd_pcm_indirect2_pointer()
238 return bytes_to_frames(substream->runtime, rec->sw_io); in snd_pcm_indirect2_pointer()
246 struct snd_pcm_indirect2 *rec, in snd_pcm_indirect2_playback_transfer() argument
258 snd_pcm_sframes_t diff = appl_ptr - rec->appl_ptr; in snd_pcm_indirect2_playback_transfer()
262 rec->lastdifftime = jiffies; in snd_pcm_indirect2_playback_transfer()
270 rec->sw_ready += (int)frames_to_bytes(runtime, diff); in snd_pcm_indirect2_playback_transfer()
271 rec->appl_ptr = appl_ptr; in snd_pcm_indirect2_playback_transfer()
273 if (rec->hw_ready && (rec->sw_ready <= 0)) { in snd_pcm_indirect2_playback_transfer()
277 if (rec->firstzerotime == 0) { in snd_pcm_indirect2_playback_transfer()
278 rec->firstzerotime = jiffies; in snd_pcm_indirect2_playback_transfer()
282 rec->mul_elapsed, rec->min_period_count); in snd_pcm_indirect2_playback_transfer()
286 rec->sw_io, rec->sw_data, in snd_pcm_indirect2_playback_transfer()
289 if ((jiffies - rec->firstzerotime) < 3750) { in snd_pcm_indirect2_playback_transfer()
290 rec->zero_times[(jiffies - rec->firstzerotime)]++; in snd_pcm_indirect2_playback_transfer()
291 rec->zero_times_saved++; in snd_pcm_indirect2_playback_transfer()
293 rec->zero_times_notsaved++; in snd_pcm_indirect2_playback_transfer()
295 bytes = zero(substream, rec); in snd_pcm_indirect2_playback_transfer()
298 rec->zeros2hw += bytes; in snd_pcm_indirect2_playback_transfer()
300 rec->zero_sizes[bytes]++; in snd_pcm_indirect2_playback_transfer()
307 snd_pcm_indirect2_increase_min_periods(substream, rec, 1, 0, in snd_pcm_indirect2_playback_transfer()
311 while (rec->hw_ready && (rec->sw_ready > 0)) { in snd_pcm_indirect2_playback_transfer()
315 unsigned int sw_to_end = rec->sw_buffer_size - rec->sw_data; in snd_pcm_indirect2_playback_transfer()
318 unsigned int bytes = rec->sw_ready; in snd_pcm_indirect2_playback_transfer()
326 if (rec->firstbytetime == 0) in snd_pcm_indirect2_playback_transfer()
327 rec->firstbytetime = jiffies; in snd_pcm_indirect2_playback_transfer()
328 rec->lastbytetime = jiffies; in snd_pcm_indirect2_playback_transfer()
335 bytes = copy(substream, rec, bytes); in snd_pcm_indirect2_playback_transfer()
336 rec->bytes2hw += bytes; in snd_pcm_indirect2_playback_transfer()
340 rec->byte_sizes[bytes]++; in snd_pcm_indirect2_playback_transfer()
350 rec->sw_data += bytes; in snd_pcm_indirect2_playback_transfer()
351 if (rec->sw_data == rec->sw_buffer_size) in snd_pcm_indirect2_playback_transfer()
352 rec->sw_data = 0; in snd_pcm_indirect2_playback_transfer()
358 snd_pcm_indirect2_increase_min_periods(substream, rec, 1, 1, in snd_pcm_indirect2_playback_transfer()
365 rec->sw_ready -= bytes; in snd_pcm_indirect2_playback_transfer()
375 struct snd_pcm_indirect2 *rec, in snd_pcm_indirect2_playback_interrupt() argument
380 rec->irq_occured++; in snd_pcm_indirect2_playback_interrupt()
383 rec->hw_ready = 1; in snd_pcm_indirect2_playback_interrupt()
388 snd_pcm_indirect2_playback_transfer(substream, rec, copy, zero); in snd_pcm_indirect2_playback_interrupt()
390 if (rec->min_periods >= rec->min_multiple) { in snd_pcm_indirect2_playback_interrupt()
392 if ((rec->min_periods / rec->min_multiple) > 7) in snd_pcm_indirect2_playback_interrupt()
396 (rec->min_periods / rec->min_multiple)); in snd_pcm_indirect2_playback_interrupt()
398 rec->mul_adds[(rec->min_periods / in snd_pcm_indirect2_playback_interrupt()
399 rec->min_multiple)]++; in snd_pcm_indirect2_playback_interrupt()
400 rec->mul_elapsed_real += (rec->min_periods / in snd_pcm_indirect2_playback_interrupt()
401 rec->min_multiple); in snd_pcm_indirect2_playback_interrupt()
402 rec->mul_elapsed++; in snd_pcm_indirect2_playback_interrupt()
404 rec->min_periods = (rec->min_periods % rec->min_multiple); in snd_pcm_indirect2_playback_interrupt()
414 struct snd_pcm_indirect2 *rec, in snd_pcm_indirect2_capture_transfer() argument
420 snd_pcm_sframes_t diff = appl_ptr - rec->appl_ptr; in snd_pcm_indirect2_capture_transfer()
424 rec->lastdifftime = jiffies; in snd_pcm_indirect2_capture_transfer()
428 rec->sw_ready -= frames_to_bytes(runtime, diff); in snd_pcm_indirect2_capture_transfer()
429 rec->appl_ptr = appl_ptr; in snd_pcm_indirect2_capture_transfer()
434 if (rec->hw_ready && (rec->sw_ready >= (int)rec->sw_buffer_size)) { in snd_pcm_indirect2_capture_transfer()
438 if (rec->firstzerotime == 0) { in snd_pcm_indirect2_capture_transfer()
439 rec->firstzerotime = jiffies; in snd_pcm_indirect2_capture_transfer()
443 rec->mul_elapsed, rec->min_period_count); in snd_pcm_indirect2_capture_transfer()
447 rec->sw_io, rec->sw_data, in snd_pcm_indirect2_capture_transfer()
450 if ((jiffies - rec->firstzerotime) < 3750) { in snd_pcm_indirect2_capture_transfer()
451 rec->zero_times[(jiffies - rec->firstzerotime)]++; in snd_pcm_indirect2_capture_transfer()
452 rec->zero_times_saved++; in snd_pcm_indirect2_capture_transfer()
454 rec->zero_times_notsaved++; in snd_pcm_indirect2_capture_transfer()
456 bytes = null(substream, rec); in snd_pcm_indirect2_capture_transfer()
459 rec->zeros2hw += bytes; in snd_pcm_indirect2_capture_transfer()
461 rec->zero_sizes[bytes]++; in snd_pcm_indirect2_capture_transfer()
468 snd_pcm_indirect2_increase_min_periods(substream, rec, 0, 0, in snd_pcm_indirect2_capture_transfer()
471 rec->sw_io = SNDRV_PCM_POS_XRUN; in snd_pcm_indirect2_capture_transfer()
474 while (rec->hw_ready && (rec->sw_ready < (int)rec->sw_buffer_size)) { in snd_pcm_indirect2_capture_transfer()
478 size_t sw_to_end = rec->sw_buffer_size - rec->sw_data; in snd_pcm_indirect2_capture_transfer()
483 size_t bytes = rec->sw_buffer_size - rec->sw_ready; in snd_pcm_indirect2_capture_transfer()
494 if (rec->firstbytetime == 0) in snd_pcm_indirect2_capture_transfer()
495 rec->firstbytetime = jiffies; in snd_pcm_indirect2_capture_transfer()
496 rec->lastbytetime = jiffies; in snd_pcm_indirect2_capture_transfer()
503 bytes = copy(substream, rec, bytes); in snd_pcm_indirect2_capture_transfer()
504 rec->bytes2hw += bytes; in snd_pcm_indirect2_capture_transfer()
508 rec->byte_sizes[bytes]++; in snd_pcm_indirect2_capture_transfer()
518 rec->sw_data += bytes; in snd_pcm_indirect2_capture_transfer()
519 if (rec->sw_data == rec->sw_buffer_size) in snd_pcm_indirect2_capture_transfer()
520 rec->sw_data = 0; in snd_pcm_indirect2_capture_transfer()
522 snd_pcm_indirect2_increase_min_periods(substream, rec, 0, 1, in snd_pcm_indirect2_capture_transfer()
528 rec->sw_ready += bytes; in snd_pcm_indirect2_capture_transfer()
538 struct snd_pcm_indirect2 *rec, in snd_pcm_indirect2_capture_interrupt() argument
543 rec->irq_occured++; in snd_pcm_indirect2_capture_interrupt()
548 rec->hw_ready = 1; in snd_pcm_indirect2_capture_interrupt()
553 snd_pcm_indirect2_capture_transfer(substream, rec, copy, null); in snd_pcm_indirect2_capture_interrupt()
555 if (rec->min_periods >= rec->min_multiple) { in snd_pcm_indirect2_capture_interrupt()
558 if ((rec->min_periods / rec->min_multiple) > 7) in snd_pcm_indirect2_capture_interrupt()
562 (rec->min_periods / rec->min_multiple)); in snd_pcm_indirect2_capture_interrupt()
564 rec->mul_adds[(rec->min_periods / in snd_pcm_indirect2_capture_interrupt()
565 rec->min_multiple)]++; in snd_pcm_indirect2_capture_interrupt()
566 rec->mul_elapsed_real += (rec->min_periods / in snd_pcm_indirect2_capture_interrupt()
567 rec->min_multiple); in snd_pcm_indirect2_capture_interrupt()
568 rec->mul_elapsed++; in snd_pcm_indirect2_capture_interrupt()
570 rec->min_periods = (rec->min_periods % rec->min_multiple); in snd_pcm_indirect2_capture_interrupt()