1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 25da7f924STakashi Iwai /* 35da7f924STakashi Iwai * Copyright (C) 2007, 2008 Karsten Wiese <fzu@wemgehoertderstaat.de> 45da7f924STakashi Iwai */ 55da7f924STakashi Iwai 65da7f924STakashi Iwai #ifndef _UAPI__SOUND_USB_STREAM_H 75da7f924STakashi Iwai #define _UAPI__SOUND_USB_STREAM_H 85da7f924STakashi Iwai 95da7f924STakashi Iwai #define USB_STREAM_INTERFACE_VERSION 2 105da7f924STakashi Iwai 115da7f924STakashi Iwai #define SNDRV_USB_STREAM_IOCTL_SET_PARAMS \ 125da7f924STakashi Iwai _IOW('H', 0x90, struct usb_stream_config) 135da7f924STakashi Iwai 145da7f924STakashi Iwai struct usb_stream_packet { 155da7f924STakashi Iwai unsigned offset; 165da7f924STakashi Iwai unsigned length; 175da7f924STakashi Iwai }; 185da7f924STakashi Iwai 195da7f924STakashi Iwai 205da7f924STakashi Iwai struct usb_stream_config { 215da7f924STakashi Iwai unsigned version; 225da7f924STakashi Iwai unsigned sample_rate; 235da7f924STakashi Iwai unsigned period_frames; 245da7f924STakashi Iwai unsigned frame_size; 255da7f924STakashi Iwai }; 265da7f924STakashi Iwai 275da7f924STakashi Iwai struct usb_stream { 285da7f924STakashi Iwai struct usb_stream_config cfg; 295da7f924STakashi Iwai unsigned read_size; 305da7f924STakashi Iwai unsigned write_size; 315da7f924STakashi Iwai 325da7f924STakashi Iwai int period_size; 335da7f924STakashi Iwai 345da7f924STakashi Iwai unsigned state; 355da7f924STakashi Iwai 365da7f924STakashi Iwai int idle_insize; 375da7f924STakashi Iwai int idle_outsize; 385da7f924STakashi Iwai int sync_packet; 395da7f924STakashi Iwai unsigned insize_done; 405da7f924STakashi Iwai unsigned periods_done; 415da7f924STakashi Iwai unsigned periods_polled; 425da7f924STakashi Iwai 435da7f924STakashi Iwai struct usb_stream_packet outpacket[2]; 445da7f924STakashi Iwai unsigned inpackets; 455da7f924STakashi Iwai unsigned inpacket_head; 465da7f924STakashi Iwai unsigned inpacket_split; 475da7f924STakashi Iwai unsigned inpacket_split_at; 485da7f924STakashi Iwai unsigned next_inpacket_split; 495da7f924STakashi Iwai unsigned next_inpacket_split_at; 50*94dfc73eSGustavo A. R. Silva struct usb_stream_packet inpacket[]; 515da7f924STakashi Iwai }; 525da7f924STakashi Iwai 535da7f924STakashi Iwai enum usb_stream_state { 545da7f924STakashi Iwai usb_stream_invalid, 555da7f924STakashi Iwai usb_stream_stopped, 565da7f924STakashi Iwai usb_stream_sync0, 575da7f924STakashi Iwai usb_stream_sync1, 585da7f924STakashi Iwai usb_stream_ready, 595da7f924STakashi Iwai usb_stream_running, 605da7f924STakashi Iwai usb_stream_xrun, 615da7f924STakashi Iwai }; 625da7f924STakashi Iwai 635da7f924STakashi Iwai #endif /* _UAPI__SOUND_USB_STREAM_H */ 64