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