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