/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __USB_STREAM_H #define __USB_STREAM_H #include #define USB_STREAM_NURBS 4 #define USB_STREAM_URBDEPTH 4 struct usb_stream_kernel { struct usb_stream *s; void *write_page; unsigned n_o_ps; struct urb *inurb[USB_STREAM_NURBS]; struct urb *idle_inurb; struct urb *completed_inurb; struct urb *outurb[USB_STREAM_NURBS]; struct urb *idle_outurb; struct urb *completed_outurb; struct urb *i_urb; int iso_frame_balance; wait_queue_head_t sleep; unsigned out_phase; unsigned out_phase_peeked; unsigned freqn; }; struct usb_stream *usb_stream_new(struct usb_stream_kernel *sk, struct usb_device *dev, unsigned in_endpoint, unsigned out_endpoint, unsigned sample_rate, unsigned use_packsize, unsigned period_frames, unsigned frame_size); void usb_stream_free(struct usb_stream_kernel *); int usb_stream_start(struct usb_stream_kernel *); void usb_stream_stop(struct usb_stream_kernel *); #endif /* __USB_STREAM_H */