Lines Matching refs:s

29 	struct usb_stream *s = sk->s;  in usb_stream_next_packet_size()  local
31 return (sk->out_phase_peeked >> 16) * s->cfg.frame_size; in usb_stream_next_packet_size()
36 struct usb_stream *s = sk->s; in playback_prep_freqn() local
41 if (s->idle_outsize + lb + l > s->period_size) in playback_prep_freqn()
54 s->idle_outsize += lb - s->period_size; in playback_prep_freqn()
55 snd_printdd(KERN_DEBUG "idle=%i ul=%i ps=%i\n", s->idle_outsize, in playback_prep_freqn()
56 lb, s->period_size); in playback_prep_freqn()
95 struct usb_stream *s = sk->s; in init_urbs() local
96 char *indata = (char *)s + sizeof(*s) + in init_urbs()
98 s->inpackets; in init_urbs()
132 struct usb_stream *s; in usb_stream_free() local
142 s = sk->s; in usb_stream_free()
143 if (!s) in usb_stream_free()
146 free_pages((unsigned long)sk->write_page, get_order(s->write_size)); in usb_stream_free()
148 free_pages((unsigned long)s, get_order(s->read_size)); in usb_stream_free()
149 sk->s = NULL; in usb_stream_free()
194 sk->s = (void *) __get_free_pages(GFP_KERNEL|__GFP_COMP|__GFP_ZERO, pg); in usb_stream_new()
195 if (!sk->s) { in usb_stream_new()
199 sk->s->cfg.version = USB_STREAM_INTERFACE_VERSION; in usb_stream_new()
201 sk->s->read_size = read_size; in usb_stream_new()
203 sk->s->cfg.sample_rate = sample_rate; in usb_stream_new()
204 sk->s->cfg.frame_size = frame_size; in usb_stream_new()
206 sk->s->inpackets = packets * USB_STREAM_URBDEPTH; in usb_stream_new()
207 sk->s->cfg.period_frames = period_frames; in usb_stream_new()
208 sk->s->period_size = frame_size * period_frames; in usb_stream_new()
210 sk->s->write_size = write_size; in usb_stream_new()
228 sk->s->state = usb_stream_stopped; in usb_stream_new()
230 return sk->s; in usb_stream_new()
276 struct usb_stream *s = sk->s; in usb_stream_prepare_playback() local
284 for (; s->sync_packet < 0; ++p, ++s->sync_packet) { in usb_stream_prepare_playback()
287 ii->number_of_packets + s->sync_packet; in usb_stream_prepare_playback()
296 s->sync_packet < inurb->number_of_packets && p < sk->n_o_ps; in usb_stream_prepare_playback()
297 ++p, ++s->sync_packet) { in usb_stream_prepare_playback()
298 l = inurb->iso_frame_desc[s->sync_packet].actual_length; in usb_stream_prepare_playback()
300 if (s->idle_outsize + lb + l > s->period_size) in usb_stream_prepare_playback()
309 s->sync_packet -= inurb->number_of_packets; in usb_stream_prepare_playback()
310 if (unlikely(s->sync_packet < -2 || s->sync_packet > 0)) { in usb_stream_prepare_playback()
313 s->sync_packet, p, inurb->number_of_packets, in usb_stream_prepare_playback()
314 s->idle_outsize + lb + l, in usb_stream_prepare_playback()
315 s->idle_outsize, lb, l, in usb_stream_prepare_playback()
316 s->period_size); in usb_stream_prepare_playback()
319 if (unlikely(lb % s->cfg.frame_size)) { in usb_stream_prepare_playback()
324 s->idle_outsize += lb - s->period_size; in usb_stream_prepare_playback()
327 if (s->idle_outsize <= 0) in usb_stream_prepare_playback()
330 snd_printk(KERN_WARNING "idle=%i\n", s->idle_outsize); in usb_stream_prepare_playback()
375 static void loop_back(struct usb_stream *s) in loop_back() argument
382 o = s->playback1st_to; in loop_back()
383 ol = s->playback1st_size; in loop_back()
386 if (s->insplit_pack >= 0) { in loop_back()
389 p = s->insplit_pack; in loop_back()
393 for (; p < iu->number_of_packets && l < s->period_size; ++p) { in loop_back()
396 if (l + il > s->period_size) in loop_back()
397 il = s->period_size - l; in loop_back()
405 o = s->playback_to; in loop_back()
408 ol = s->period_size - s->playback1st_size; in loop_back()
413 if (l != s->period_size) in loop_back()
415 l/(int)s->cfg.frame_size); in loop_back()
427 static void loop_back(struct usb_stream *s) in loop_back() argument
435 struct usb_stream *s = sk->s; in stream_idle() local
437 int insize = s->idle_insize; in stream_idle()
440 s->inpacket_split = s->next_inpacket_split; in stream_idle()
441 s->inpacket_split_at = s->next_inpacket_split_at; in stream_idle()
442 s->next_inpacket_split = -1; in stream_idle()
443 s->next_inpacket_split_at = 0; in stream_idle()
453 s->inpacket_head++; in stream_idle()
454 s->inpacket_head %= s->inpackets; in stream_idle()
455 if (s->inpacket_split == -1) in stream_idle()
456 s->inpacket_split = s->inpacket_head; in stream_idle()
458 s->inpacket[s->inpacket_head].offset = in stream_idle()
459 id[p].offset + (inurb->transfer_buffer - (void *)s); in stream_idle()
460 s->inpacket[s->inpacket_head].length = l; in stream_idle()
461 if (insize + l > s->period_size && in stream_idle()
462 s->next_inpacket_split == -1) { in stream_idle()
463 s->next_inpacket_split = s->inpacket_head; in stream_idle()
464 s->next_inpacket_split_at = s->period_size - insize; in stream_idle()
469 s->idle_insize += urb_size - s->period_size; in stream_idle()
470 if (s->idle_insize < 0) { in stream_idle()
472 (s->idle_insize)/(int)s->cfg.frame_size); in stream_idle()
475 s->insize_done += urb_size; in stream_idle()
477 l = s->idle_outsize; in stream_idle()
478 s->outpacket[0].offset = (sk->idle_outurb->transfer_buffer - in stream_idle()
484 s->outpacket[0].length = sk->idle_outurb->transfer_buffer_length + l; in stream_idle()
485 s->outpacket[1].offset = sk->completed_outurb->transfer_buffer - in stream_idle()
491 loop_back(s); in stream_idle()
492 s->periods_done++; in stream_idle()
496 s->state = usb_stream_xrun; in stream_idle()
517 struct usb_stream *s = sk->s; in stream_start() local
518 if (s->state >= usb_stream_sync1) { in stream_start()
522 frames_per_packet = (s->period_size - s->idle_insize); in stream_start()
525 s->cfg.frame_size * inurb->number_of_packets; in stream_start()
528 max_diff_0 = s->cfg.frame_size; in stream_start()
529 if (s->cfg.period_frames >= 256) in stream_start()
531 if (s->cfg.period_frames >= 1024) in stream_start()
541 (min_frames >> 8) * s->cfg.frame_size; in stream_start()
544 s->insize_done, in stream_start()
545 urb_size / (int)s->cfg.frame_size, in stream_start()
550 s->idle_insize -= max_diff - max_diff_0; in stream_start()
551 s->idle_insize += urb_size - s->period_size; in stream_start()
552 if (s->idle_insize < 0) { in stream_start()
554 s->idle_insize, urb_size, s->period_size); in stream_start()
556 } else if (s->idle_insize == 0) { in stream_start()
557 s->next_inpacket_split = in stream_start()
558 (s->inpacket_head + 1) % s->inpackets; in stream_start()
559 s->next_inpacket_split_at = 0; in stream_start()
561 unsigned split = s->inpacket_head; in stream_start()
562 l = s->idle_insize; in stream_start()
563 while (l > s->inpacket[split].length) { in stream_start()
564 l -= s->inpacket[split].length; in stream_start()
566 split = s->inpackets - 1; in stream_start()
570 s->next_inpacket_split = split; in stream_start()
571 s->next_inpacket_split_at = in stream_start()
572 s->inpacket[split].length - l; in stream_start()
575 s->insize_done += urb_size; in stream_start()
586 if (s->state == usb_stream_sync1 && s->insize_done > 360000) { in stream_start()
588 s->state = usb_stream_ready; in stream_start()
598 struct usb_stream *s = sk->s; in i_capture_start() local
609 if (l < s->cfg.frame_size) { in i_capture_start()
611 if (s->state >= usb_stream_sync0) { in i_capture_start()
616 s->inpacket_head++; in i_capture_start()
617 s->inpacket_head %= s->inpackets; in i_capture_start()
618 s->inpacket[s->inpacket_head].offset = in i_capture_start()
619 id[p].offset + (urb->transfer_buffer - (void *)s); in i_capture_start()
620 s->inpacket[s->inpacket_head].length = l; in i_capture_start()
633 if (!empty && s->state < usb_stream_sync1) in i_capture_start()
634 ++s->state; in i_capture_start()
649 struct usb_stream *s = sk->s; in usb_stream_start() local
654 if (s->state != usb_stream_stopped) in usb_stream_start()
659 memset(sk->write_page, 0, s->write_size); in usb_stream_start()
661 s->insize_done = 0; in usb_stream_start()
662 s->idle_insize = 0; in usb_stream_start()
663 s->idle_outsize = 0; in usb_stream_start()
664 s->sync_packet = -1; in usb_stream_start()
665 s->inpacket_head = -1; in usb_stream_start()
729 while (s->state != usb_stream_ready && wait_ms > 0) { in usb_stream_start()
730 snd_printdd(KERN_DEBUG "%i\n", s->state); in usb_stream_start()
736 return s->state == usb_stream_ready ? 0 : -EFAULT; in usb_stream_start()
745 if (!sk->s) in usb_stream_stop()
751 sk->s->state = usb_stream_stopped; in usb_stream_stop()