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 */ 64