Blame view

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