Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
usb
usx2y
usb_stream.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2007, 2008 Karsten Wiese <
[email protected]
>
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software Foundation,
16
* Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
*/
18
19
#define USB_STREAM_INTERFACE_VERSION 2
20
21
#define SNDRV_USB_STREAM_IOCTL_SET_PARAMS \
22
_IOW('H', 0x90, struct usb_stream_config)
23
24
struct
usb_stream_packet
{
25
unsigned
offset
;
26
unsigned
length
;
27
};
28
29
30
struct
usb_stream_config
{
31
unsigned
version
;
32
unsigned
sample_rate
;
33
unsigned
period_frames
;
34
unsigned
frame_size
;
35
};
36
37
struct
usb_stream
{
38
struct
usb_stream_config
cfg
;
39
unsigned
read_size
;
40
unsigned
write_size
;
41
42
int
period_size
;
43
44
unsigned
state
;
45
46
int
idle_insize
;
47
int
idle_outsize
;
48
int
sync_packet
;
49
unsigned
insize_done
;
50
unsigned
periods_done
;
51
unsigned
periods_polled
;
52
53
struct
usb_stream_packet
outpacket
[2];
54
unsigned
inpackets
;
55
unsigned
inpacket_head
;
56
unsigned
inpacket_split
;
57
unsigned
inpacket_split_at
;
58
unsigned
next_inpacket_split
;
59
unsigned
next_inpacket_split_at
;
60
struct
usb_stream_packet
inpacket
[0];
61
};
62
63
enum
usb_stream_state
{
64
usb_stream_invalid
,
65
usb_stream_stopped
,
66
usb_stream_sync0
,
67
usb_stream_sync1
,
68
usb_stream_ready
,
69
usb_stream_running
,
70
usb_stream_xrun
,
71
};
72
73
#if __KERNEL__
74
75
#define USB_STREAM_NURBS 4
76
#define USB_STREAM_URBDEPTH 4
77
78
struct
usb_stream_kernel {
79
struct
usb_stream
*
s
;
80
81
void
*write_page;
82
83
unsigned
n_o_ps;
84
85
struct
urb
*inurb[USB_STREAM_NURBS];
86
struct
urb
*idle_inurb;
87
struct
urb
*completed_inurb;
88
struct
urb
*outurb[USB_STREAM_NURBS];
89
struct
urb
*idle_outurb;
90
struct
urb
*completed_outurb;
91
struct
urb
*i_urb;
92
93
int
iso_frame_balance;
94
95
wait_queue_head_t
sleep;
96
97
unsigned
out_phase;
98
unsigned
out_phase_peeked;
99
unsigned
freqn;
100
};
101
102
struct
usb_stream
*
usb_stream_new
(
struct
usb_stream_kernel *
sk
,
103
struct
usb_device *
dev
,
104
unsigned
in_endpoint,
unsigned
out_endpoint,
105
unsigned
sample_rate,
unsigned
use_packsize,
106
unsigned
period_frames,
unsigned
frame_size);
107
void
usb_stream_free
(
struct
usb_stream_kernel *);
108
int
usb_stream_start
(
struct
usb_stream_kernel *);
109
void
usb_stream_stop
(
struct
usb_stream_kernel *);
110
111
112
#endif
Generated on Thu Jan 10 2013 15:08:58 for Linux Kernel by
1.8.2