1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2/*
3 * Copyright (C) 2007, 2008 Karsten Wiese <fzu@wemgehoertderstaat.de>
4 */
5
6#ifndef _UAPI__SOUND_USB_STREAM_H
7#define _UAPI__SOUND_USB_STREAM_H
8
9#define USB_STREAM_INTERFACE_VERSION 2
10
11#define SNDRV_USB_STREAM_IOCTL_SET_PARAMS \
12	_IOW('H', 0x90, struct usb_stream_config)
13
14struct usb_stream_packet {
15	unsigned offset;
16	unsigned length;
17};
18
19
20struct usb_stream_config {
21	unsigned version;
22	unsigned sample_rate;
23	unsigned period_frames;
24	unsigned frame_size;
25};
26
27struct usb_stream {
28	struct usb_stream_config cfg;
29	unsigned read_size;
30	unsigned write_size;
31
32	int period_size;
33
34	unsigned state;
35
36	int idle_insize;
37	int idle_outsize;
38	int sync_packet;
39	unsigned insize_done;
40	unsigned periods_done;
41	unsigned periods_polled;
42
43	struct usb_stream_packet outpacket[2];
44	unsigned		 inpackets;
45	unsigned		 inpacket_head;
46	unsigned		 inpacket_split;
47	unsigned		 inpacket_split_at;
48	unsigned		 next_inpacket_split;
49	unsigned		 next_inpacket_split_at;
50	struct usb_stream_packet inpacket[];
51};
52
53enum usb_stream_state {
54	usb_stream_invalid,
55	usb_stream_stopped,
56	usb_stream_sync0,
57	usb_stream_sync1,
58	usb_stream_ready,
59	usb_stream_running,
60	usb_stream_xrun,
61};
62
63#endif /* _UAPI__SOUND_USB_STREAM_H */
64