36 #ifdef SND_PCM_INDIRECT2_STAT
47 int seconds = (rec->lastbytetime - rec->firstbytetime) /
HZ;
51 rec->mul_elapsed, rec->mul_elapsed_real, rec->irq_occured);
55 "firstzerotime: %lu\n",
56 rec->firstbytetime, rec->lastbytetime, rec->firstzerotime);
61 "rate: %d Bytes/s = %d Frames/s|Hz\n",
65 "STAT: zeros2hw: %u = %d ms ~ %d * %d zero copies\n",
66 rec->zeros2hw, ((rec->zeros2hw / 2 / 2) * 1000) /
71 rec->pointer_calls, rec->lastdifftime);
76 for (j = 0; j < 8; j++) {
77 for (i = j * 8; i < (j + 1) * 8; i++)
78 if (rec->byte_sizes[i] != 0) {
80 i, rec->byte_sizes[i]);
83 if (((k % 8) == 0) && (k != 0)) {
90 for (j = 0; j < 8; j++) {
92 for (i = j * 8; i < (j + 1) * 8; i++)
93 if (rec->zero_sizes[i] != 0)
95 i, rec->zero_sizes[i]);
103 for (j = 0; j < 8; j++) {
104 if (rec->min_adds[j] != 0)
109 for (j = 0; j < 8; j++) {
110 if (rec->mul_adds[j] != 0)
115 "STAT: zero_times_saved: %d, zero_times_notsaved: %d\n",
116 rec->zero_times_saved, rec->zero_times_notsaved);
138 int isplay,
int iscopy,
154 snd_pcm_lib_period_bytes(substream)) {
155 unsigned bytes2hw_aligned =
158 snd_pcm_lib_period_bytes
160 snd_pcm_lib_period_bytes
165 #ifdef SND_PCM_INDIRECT2_STAT
167 "STAT: @re-align: aligned "
168 "bytes2hw to next period "
174 "STAT: @re-align: sw_data "
209 #ifdef SND_PCM_INDIRECT2_STAT
213 "STAT: more than 7 (%d) min_adds "
214 "at once - too big to save!\n",
224 }
else if (isplay && iscopy)
235 #ifdef SND_PCM_INDIRECT2_STAT
236 rec->pointer_calls++;
261 #ifdef SND_PCM_INDIRECT2_STAT
270 rec->
sw_ready += (
int)frames_to_bytes(runtime, diff);
276 #ifdef SND_PCM_INDIRECT2_STAT
277 if (rec->firstzerotime == 0) {
280 "STAT: @firstzerotime: mul_elapsed: %d, "
281 "min_period_count: %d\n",
284 "STAT: @firstzerotime: sw_io: %d, "
285 "sw_data: %d, appl_ptr: %u\n",
287 (
unsigned int)appl_ptr);
289 if ((jiffies - rec->firstzerotime) < 3750) {
290 rec->zero_times[(
jiffies - rec->firstzerotime)]++;
291 rec->zero_times_saved++;
293 rec->zero_times_notsaved++;
295 bytes =
zero(substream, rec);
297 #ifdef SND_PCM_INDIRECT2_STAT
298 rec->zeros2hw +=
bytes;
300 rec->zero_sizes[
bytes]++;
303 "STAT: %d zero Bytes copied to hardware at "
304 "once - too big to save!\n",
307 snd_pcm_indirect2_increase_min_periods(substream, rec, 1, 0,
320 if (sw_to_end < bytes)
325 #ifdef SND_PCM_INDIRECT2_STAT
326 if (rec->firstbytetime == 0)
335 bytes = copy(substream, rec, bytes);
338 #ifdef SND_PCM_INDIRECT2_STAT
340 rec->byte_sizes[
bytes]++;
343 "STAT: %d Bytes copied to hardware at once "
344 "- too big to save!\n",
358 snd_pcm_indirect2_increase_min_periods(substream, rec, 1, 1,
379 #ifdef SND_PCM_INDIRECT2_STAT
388 snd_pcm_indirect2_playback_transfer(substream, rec, copy, zero);
391 #ifdef SND_PCM_INDIRECT2_STAT
394 "STAT: more than 7 (%d) mul_adds - too big "
423 #ifdef SND_PCM_INDIRECT2_STAT
428 rec->
sw_ready -= frames_to_bytes(runtime, diff);
437 #ifdef SND_PCM_INDIRECT2_STAT
438 if (rec->firstzerotime == 0) {
441 "@firstzerotime: mul_elapsed: %d, "
442 "min_period_count: %d\n",
445 "@firstzerotime: sw_io: %d, sw_data: %d, "
448 (
unsigned int)appl_ptr);
450 if ((jiffies - rec->firstzerotime) < 3750) {
451 rec->zero_times[(
jiffies - rec->firstzerotime)]++;
452 rec->zero_times_saved++;
454 rec->zero_times_notsaved++;
456 bytes = null(substream, rec);
458 #ifdef SND_PCM_INDIRECT2_STAT
459 rec->zeros2hw +=
bytes;
461 rec->zero_sizes[
bytes]++;
464 "STAT: (capture) %d zero Bytes copied to "
465 "hardware at once - too big to save!\n",
468 snd_pcm_indirect2_increase_min_periods(substream, rec, 0, 0,
488 if (sw_to_end < bytes)
493 #ifdef SND_PCM_INDIRECT2_STAT
494 if (rec->firstbytetime == 0)
503 bytes = copy(substream, rec, bytes);
506 #ifdef SND_PCM_INDIRECT2_STAT
508 rec->byte_sizes[
bytes]++;
511 "STAT: (capture) %d Bytes copied to "
512 "hardware at once - too big to save!\n",
522 snd_pcm_indirect2_increase_min_periods(substream, rec, 0, 1,
542 #ifdef SND_PCM_INDIRECT2_STAT
553 snd_pcm_indirect2_capture_transfer(substream, rec, copy, null);
557 #ifdef SND_PCM_INDIRECT2_STAT
560 "STAT: more than 7 (%d) mul_adds - "
561 "too big to save!\n",