1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __USB_STREAM_H 3 #define __USB_STREAM_H 4 5 #include <uapi/sound/usb_stream.h> 6 7 #define USB_STREAM_NURBS 4 8 #define USB_STREAM_URBDEPTH 4 9 10 struct usb_stream_kernel { 11 struct usb_stream *s; 12 13 void *write_page; 14 15 unsigned n_o_ps; 16 17 struct urb *inurb[USB_STREAM_NURBS]; 18 struct urb *idle_inurb; 19 struct urb *completed_inurb; 20 struct urb *outurb[USB_STREAM_NURBS]; 21 struct urb *idle_outurb; 22 struct urb *completed_outurb; 23 struct urb *i_urb; 24 25 int iso_frame_balance; 26 27 wait_queue_head_t sleep; 28 29 unsigned out_phase; 30 unsigned out_phase_peeked; 31 unsigned freqn; 32 }; 33 34 struct usb_stream *usb_stream_new(struct usb_stream_kernel *sk, 35 struct usb_device *dev, 36 unsigned in_endpoint, unsigned out_endpoint, 37 unsigned sample_rate, unsigned use_packsize, 38 unsigned period_frames, unsigned frame_size); 39 void usb_stream_free(struct usb_stream_kernel *); 40 int usb_stream_start(struct usb_stream_kernel *); 41 void usb_stream_stop(struct usb_stream_kernel *); 42 43 #endif /* __USB_STREAM_H */ 44