diff options
Diffstat (limited to 'sound/usb/usx2y/usbusx2y.h')
-rw-r--r-- | sound/usb/usx2y/usbusx2y.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/sound/usb/usx2y/usbusx2y.h b/sound/usb/usx2y/usbusx2y.h new file mode 100644 index 000000000000..f65f3a7194ca --- /dev/null +++ b/sound/usb/usx2y/usbusx2y.h | |||
@@ -0,0 +1,84 @@ | |||
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 | ||
11 | typedef struct { | ||
12 | struct urb* urb[URBS_AsyncSeq]; | ||
13 | char* buffer; | ||
14 | } snd_usX2Y_AsyncSeq_t; | ||
15 | |||
16 | typedef struct { | ||
17 | int submitted; | ||
18 | int len; | ||
19 | struct urb* urb[0]; | ||
20 | } snd_usX2Y_urbSeq_t; | ||
21 | |||
22 | typedef struct snd_usX2Y_substream snd_usX2Y_substream_t; | ||
23 | #include "usx2yhwdeppcm.h" | ||
24 | |||
25 | typedef struct { | ||
26 | snd_usb_audio_t chip; | ||
27 | int stride; | ||
28 | struct urb *In04urb; | ||
29 | void *In04Buf; | ||
30 | char In04Last[24]; | ||
31 | unsigned In04IntCalls; | ||
32 | snd_usX2Y_urbSeq_t *US04; | ||
33 | wait_queue_head_t In04WaitQueue; | ||
34 | snd_usX2Y_AsyncSeq_t AS04; | ||
35 | unsigned int rate, | ||
36 | format; | ||
37 | int chip_status; | ||
38 | struct semaphore prepare_mutex; | ||
39 | us428ctls_sharedmem_t *us428ctls_sharedmem; | ||
40 | int wait_iso_frame; | ||
41 | wait_queue_head_t us428ctls_wait_queue_head; | ||
42 | snd_usX2Y_hwdep_pcm_shm_t *hwdep_pcm_shm; | ||
43 | snd_usX2Y_substream_t *subs[4]; | ||
44 | snd_usX2Y_substream_t * volatile prepare_subs; | ||
45 | wait_queue_head_t prepare_wait_queue; | ||
46 | } usX2Ydev_t; | ||
47 | |||
48 | |||
49 | struct snd_usX2Y_substream { | ||
50 | usX2Ydev_t *usX2Y; | ||
51 | snd_pcm_substream_t *pcm_substream; | ||
52 | |||
53 | int endpoint; | ||
54 | unsigned int maxpacksize; /* max packet size in bytes */ | ||
55 | |||
56 | atomic_t state; | ||
57 | #define state_STOPPED 0 | ||
58 | #define state_STARTING1 1 | ||
59 | #define state_STARTING2 2 | ||
60 | #define state_STARTING3 3 | ||
61 | #define state_PREPARED 4 | ||
62 | #define state_PRERUNNING 6 | ||
63 | #define state_RUNNING 8 | ||
64 | |||
65 | int hwptr; /* free frame position in the buffer (only for playback) */ | ||
66 | int hwptr_done; /* processed frame position in the buffer */ | ||
67 | int transfer_done; /* processed frames since last period update */ | ||
68 | |||
69 | struct urb *urb[NRURBS]; /* data urb table */ | ||
70 | struct urb *completed_urb; | ||
71 | char *tmpbuf; /* temporary buffer for playback */ | ||
72 | }; | ||
73 | |||
74 | |||
75 | #define usX2Y(c) ((usX2Ydev_t*)(c)->private_data) | ||
76 | |||
77 | int usX2Y_audio_create(snd_card_t* card); | ||
78 | |||
79 | int usX2Y_AsyncSeq04_init(usX2Ydev_t* usX2Y); | ||
80 | int usX2Y_In04_init(usX2Ydev_t* usX2Y); | ||
81 | |||
82 | #define NAME_ALLCAPS "US-X2Y" | ||
83 | |||
84 | #endif | ||