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
card.h
Go to the documentation of this file.
1
#ifndef __USBAUDIO_CARD_H
2
#define __USBAUDIO_CARD_H
3
4
#define MAX_NR_RATES 1024
5
#define MAX_PACKS 20
6
#define MAX_PACKS_HS (MAX_PACKS * 8)
/* in high speed mode */
7
#define MAX_URBS 8
8
#define SYNC_URBS 4
/* always four urbs for sync */
9
#define MAX_QUEUE 24
/* try not to exceed this queue length, in ms */
10
11
struct
audioformat
{
12
struct
list_head
list
;
13
u64
formats
;
/* ALSA format bits */
14
unsigned
int
channels
;
/* # channels */
15
unsigned
int
fmt_type
;
/* USB audio format type (1-3) */
16
unsigned
int
frame_size
;
/* samples per frame for non-audio */
17
int
iface
;
/* interface number */
18
unsigned
char
altsetting
;
/* corresponding alternate setting */
19
unsigned
char
altset_idx
;
/* array index of altenate setting */
20
unsigned
char
attributes
;
/* corresponding attributes of cs endpoint */
21
unsigned
char
endpoint
;
/* endpoint */
22
unsigned
char
ep_attr
;
/* endpoint attributes */
23
unsigned
char
datainterval
;
/* log_2 of data packet interval */
24
unsigned
int
maxpacksize
;
/* max. packet size */
25
unsigned
int
rates
;
/* rate bitmasks */
26
unsigned
int
rate_min
,
rate_max
;
/* min/max rates */
27
unsigned
int
nr_rates
;
/* number of rate table entries */
28
unsigned
int
*
rate_table
;
/* rate table */
29
unsigned
char
clock
;
/* associated clock */
30
};
31
32
struct
snd_usb_substream
;
33
struct
snd_usb_endpoint
;
34
35
struct
snd_urb_ctx
{
36
struct
urb
*
urb
;
37
unsigned
int
buffer_size
;
/* size of data buffer, if data URB */
38
struct
snd_usb_substream
*
subs
;
39
struct
snd_usb_endpoint
*
ep
;
40
int
index
;
/* index for urb array */
41
int
packets
;
/* number of packets per urb */
42
int
packet_size
[
MAX_PACKS_HS
];
/* size of packets for next submission */
43
struct
list_head
ready_list
;
44
};
45
46
struct
snd_usb_endpoint
{
47
struct
snd_usb_audio
*
chip
;
48
49
int
use_count
;
50
int
ep_num
;
/* the referenced endpoint number */
51
int
type
;
/* SND_USB_ENDPOINT_TYPE_* */
52
unsigned
long
flags
;
53
54
void
(*
prepare_data_urb
) (
struct
snd_usb_substream
*subs,
55
struct
urb
*
urb
);
56
void
(*
retire_data_urb
) (
struct
snd_usb_substream
*subs,
57
struct
urb
*
urb
);
58
59
struct
snd_usb_substream
*
data_subs
;
60
struct
snd_usb_endpoint
*
sync_master
;
61
struct
snd_usb_endpoint
*
sync_slave
;
62
63
struct
snd_urb_ctx
urb
[
MAX_URBS
];
64
65
struct
snd_usb_packet_info
{
66
uint32_t
packet_size
[
MAX_PACKS_HS
];
67
int
packets
;
68
}
next_packet
[
MAX_URBS
];
69
int
next_packet_read_pos
,
next_packet_write_pos
;
70
struct
list_head
ready_playback_urbs
;
71
72
unsigned
int
nurbs
;
/* # urbs */
73
unsigned
long
active_mask
;
/* bitmask of active urbs */
74
unsigned
long
unlink_mask
;
/* bitmask of unlinked urbs */
75
char
*
syncbuf
;
/* sync buffer for all sync URBs */
76
dma_addr_t
sync_dma
;
/* DMA address of syncbuf */
77
78
unsigned
int
pipe
;
/* the data i/o pipe */
79
unsigned
int
freqn
;
/* nominal sampling rate in fs/fps in Q16.16 format */
80
unsigned
int
freqm
;
/* momentary sampling rate in fs/fps in Q16.16 format */
81
int
freqshift
;
/* how much to shift the feedback value to get Q16.16 */
82
unsigned
int
freqmax
;
/* maximum sampling rate, used for buffer management */
83
unsigned
int
phase
;
/* phase accumulator */
84
unsigned
int
maxpacksize
;
/* max packet size in bytes */
85
unsigned
int
maxframesize
;
/* max packet size in frames */
86
unsigned
int
curpacksize
;
/* current packet size in bytes (for capture) */
87
unsigned
int
curframesize
;
/* current packet size in frames (for capture) */
88
unsigned
int
syncmaxsize
;
/* sync endpoint packet size */
89
unsigned
int
fill_max
:1;
/* fill max packet size always */
90
unsigned
int
datainterval
;
/* log_2 of data packet interval */
91
unsigned
int
syncinterval
;
/* P for adaptive mode, 0 otherwise */
92
unsigned
char
silence_value
;
93
unsigned
int
stride
;
94
int
iface
,
alt_idx
;
95
int
skip_packets
;
/* quirks for devices to ignore the first n packets
96
in a stream */
97
98
spinlock_t
lock
;
99
struct
list_head
list
;
100
};
101
102
struct
snd_usb_substream
{
103
struct
snd_usb_stream
*
stream
;
104
struct
usb_device *
dev
;
105
struct
snd_pcm_substream
*
pcm_substream
;
106
int
direction
;
/* playback or capture */
107
int
interface
;
/* current interface */
108
int
endpoint
;
/* assigned endpoint */
109
struct
audioformat
*
cur_audiofmt
;
/* current audioformat pointer (for hw_params callback) */
110
snd_pcm_format_t
pcm_format
;
/* current audio format (for hw_params callback) */
111
unsigned
int
channels
;
/* current number of channels (for hw_params callback) */
112
unsigned
int
cur_rate
;
/* current rate (for hw_params callback) */
113
unsigned
int
period_bytes
;
/* current period bytes (for hw_params callback) */
114
unsigned
int
altset_idx
;
/* USB data format: index of alternate setting */
115
unsigned
int
txfr_quirk
:1;
/* allow sub-frame alignment */
116
unsigned
int
fmt_type
;
/* USB audio format type (1-3) */
117
118
unsigned
int
running
: 1;
/* running status */
119
120
unsigned
int
hwptr_done
;
/* processed byte position in the buffer */
121
unsigned
int
transfer_done
;
/* processed frames since last period update */
122
123
/* data and sync endpoints for this stream */
124
unsigned
int
ep_num
;
/* the endpoint number */
125
struct
snd_usb_endpoint
*
data_endpoint
;
126
struct
snd_usb_endpoint
*
sync_endpoint
;
127
unsigned
long
flags
;
128
bool
need_setup_ep
;
/* (re)configure EP at prepare? */
129
unsigned
int
speed
;
/* USB_SPEED_XXX */
130
131
u64
formats
;
/* format bitmasks (all or'ed) */
132
unsigned
int
num_formats
;
/* number of supported audio formats (list) */
133
struct
list_head
fmt_list
;
/* format list */
134
struct
snd_pcm_hw_constraint_list
rate_list
;
/* limited rates */
135
spinlock_t
lock
;
136
137
int
last_frame_number
;
/* stored frame number */
138
int
last_delay
;
/* stored delay */
139
};
140
141
struct
snd_usb_stream
{
142
struct
snd_usb_audio
*
chip
;
143
struct
snd_pcm
*
pcm
;
144
int
pcm_index
;
145
unsigned
int
fmt_type
;
/* USB audio format type (1-3) */
146
struct
snd_usb_substream
substream
[2];
147
struct
list_head
list
;
148
};
149
150
#endif
/* __USBAUDIO_CARD_H */
Generated on Thu Jan 10 2013 13:42:46 for Linux Kernel by
1.8.2