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 struct snd_usX2Y_AsyncSeq { 12 struct urb *urb[URBS_AsyncSeq]; 13 char *buffer; 14 }; 15 16 struct snd_usX2Y_urbSeq { 17 int submitted; 18 int len; 19 struct urb *urb[0]; 20 }; 21 22 #include "usx2yhwdeppcm.h" 23 24 struct usX2Ydev { 25 struct snd_usb_audio chip; 26 int stride; 27 struct urb *In04urb; 28 void *In04Buf; 29 char In04Last[24]; 30 unsigned In04IntCalls; 31 struct snd_usX2Y_urbSeq *US04; 32 wait_queue_head_t In04WaitQueue; 33 struct snd_usX2Y_AsyncSeq AS04; 34 unsigned int rate, 35 format; 36 int chip_status; 37 struct mutex prepare_mutex; 38 struct us428ctls_sharedmem *us428ctls_sharedmem; 39 int wait_iso_frame; 40 wait_queue_head_t us428ctls_wait_queue_head; 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; 44 wait_queue_head_t prepare_wait_queue; 45 }; 46 47 48 struct snd_usX2Y_substream { 49 struct usX2Ydev *usX2Y; 50 struct snd_pcm_substream *pcm_substream; 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 74 #define usX2Y(c) ((struct usX2Ydev *)(c)->private_data) 75 76 int usX2Y_audio_create(struct snd_card *card); 77 78 int usX2Y_AsyncSeq04_init(struct usX2Ydev *usX2Y); 79 int usX2Y_In04_init(struct usX2Ydev *usX2Y); 80 81 #define NAME_ALLCAPS "US-X2Y" 82 83 #endif 84