GNU Linux-libre 6.1.90-gnu
[releases.git] / include / uapi / sound / usb_stream.h
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
14 struct usb_stream_packet {
15         unsigned offset;
16         unsigned length;
17 };
18
19
20 struct usb_stream_config {
21         unsigned version;
22         unsigned sample_rate;
23         unsigned period_frames;
24         unsigned frame_size;
25 };
26
27 struct 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
53 enum 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 */