Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef USBUSX2Y_H |
2 | #define USBUSX2Y_H | |
3 | #include "../usbaudio.h" | |
e5779998 | 4 | #include "../midi.h" |
1da177e4 LT |
5 | #include "usbus428ctldefs.h" |
6 | ||
7 | #define NRURBS 2 | |
8 | ||
9 | ||
10 | #define URBS_AsyncSeq 10 | |
11 | #define URB_DataLen_AsyncSeq 32 | |
bbe85bbd TI |
12 | struct snd_usX2Y_AsyncSeq { |
13 | struct urb *urb[URBS_AsyncSeq]; | |
14 | char *buffer; | |
15 | }; | |
1da177e4 | 16 | |
bbe85bbd | 17 | struct snd_usX2Y_urbSeq { |
1da177e4 LT |
18 | int submitted; |
19 | int len; | |
bbe85bbd TI |
20 | struct urb *urb[0]; |
21 | }; | |
1da177e4 | 22 | |
1da177e4 LT |
23 | #include "usx2yhwdeppcm.h" |
24 | ||
bbe85bbd | 25 | struct usX2Ydev { |
a014bbad CL |
26 | struct usb_device *dev; |
27 | int card_index; | |
1da177e4 LT |
28 | int stride; |
29 | struct urb *In04urb; | |
30 | void *In04Buf; | |
31 | char In04Last[24]; | |
32 | unsigned In04IntCalls; | |
bbe85bbd | 33 | struct snd_usX2Y_urbSeq *US04; |
1da177e4 | 34 | wait_queue_head_t In04WaitQueue; |
bbe85bbd | 35 | struct snd_usX2Y_AsyncSeq AS04; |
1da177e4 LT |
36 | unsigned int rate, |
37 | format; | |
38 | int chip_status; | |
e2439a54 | 39 | struct mutex pcm_mutex; |
bbe85bbd | 40 | struct us428ctls_sharedmem *us428ctls_sharedmem; |
1da177e4 LT |
41 | int wait_iso_frame; |
42 | wait_queue_head_t us428ctls_wait_queue_head; | |
bbe85bbd TI |
43 | struct snd_usX2Y_hwdep_pcm_shm *hwdep_pcm_shm; |
44 | struct snd_usX2Y_substream *subs[4]; | |
45 | struct snd_usX2Y_substream * volatile prepare_subs; | |
1da177e4 | 46 | wait_queue_head_t prepare_wait_queue; |
d82af9f9 | 47 | struct list_head midi_list; |
a014bbad CL |
48 | struct list_head pcm_list; |
49 | int pcm_devs; | |
bbe85bbd | 50 | }; |
1da177e4 LT |
51 | |
52 | ||
53 | struct snd_usX2Y_substream { | |
bbe85bbd TI |
54 | struct usX2Ydev *usX2Y; |
55 | struct snd_pcm_substream *pcm_substream; | |
1da177e4 LT |
56 | |
57 | int endpoint; | |
58 | unsigned int maxpacksize; /* max packet size in bytes */ | |
59 | ||
60 | atomic_t state; | |
61 | #define state_STOPPED 0 | |
62 | #define state_STARTING1 1 | |
63 | #define state_STARTING2 2 | |
64 | #define state_STARTING3 3 | |
65 | #define state_PREPARED 4 | |
66 | #define state_PRERUNNING 6 | |
67 | #define state_RUNNING 8 | |
68 | ||
69 | int hwptr; /* free frame position in the buffer (only for playback) */ | |
70 | int hwptr_done; /* processed frame position in the buffer */ | |
71 | int transfer_done; /* processed frames since last period update */ | |
72 | ||
73 | struct urb *urb[NRURBS]; /* data urb table */ | |
74 | struct urb *completed_urb; | |
75 | char *tmpbuf; /* temporary buffer for playback */ | |
76 | }; | |
77 | ||
78 | ||
bbe85bbd | 79 | #define usX2Y(c) ((struct usX2Ydev *)(c)->private_data) |
1da177e4 | 80 | |
bbe85bbd | 81 | int usX2Y_audio_create(struct snd_card *card); |
1da177e4 | 82 | |
bbe85bbd TI |
83 | int usX2Y_AsyncSeq04_init(struct usX2Ydev *usX2Y); |
84 | int usX2Y_In04_init(struct usX2Ydev *usX2Y); | |
1da177e4 LT |
85 | |
86 | #define NAME_ALLCAPS "US-X2Y" | |
87 | ||
88 | #endif |