~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/usb/line6/pcm.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /sound/usb/line6/pcm.h (Version linux-6.12-rc7) and /sound/usb/line6/pcm.h (Version linux-2.6.32.71)


  1 /* SPDX-License-Identifier: GPL-2.0-only */         1 
  2 /*                                                
  3  * Line 6 Linux USB driver                        
  4  *                                                
  5  * Copyright (C) 2004-2010 Markus Grabner (lin    
  6  */                                               
  7                                                   
  8 /*                                                
  9         PCM interface to POD series devices.      
 10 */                                                
 11                                                   
 12 #ifndef PCM_H                                     
 13 #define PCM_H                                     
 14                                                   
 15 #include <sound/pcm.h>                            
 16                                                   
 17 #include "driver.h"                               
 18                                                   
 19 /*                                                
 20         number of USB frames per URB              
 21         The Line 6 Windows driver always trans    
 22         the Linux driver performs significantl    
 23         with only one frame per packet.           
 24 */                                                
 25 #define LINE6_ISO_PACKETS       1                 
 26                                                   
 27 /* in a "full speed" device (such as the PODxt    
 28  *  for "high speed" it's 1/8ms                   
 29  */                                               
 30 #define LINE6_ISO_INTERVAL      1                 
 31                                                   
 32 #define LINE6_IMPULSE_DEFAULT_PERIOD 100          
 33                                                   
 34 /*                                                
 35         Get substream from Line 6 PCM data str    
 36 */                                                
 37 #define get_substream(line6pcm, stream) \         
 38                 (line6pcm->pcm->streams[stream    
 39                                                   
 40 /*                                                
 41         PCM mode bits.                            
 42                                                   
 43         There are several features of the Line    
 44         data to be exchanged with the device:     
 45         *) PCM playback and capture via ALSA      
 46         *) software monitoring (for devices wi    
 47         *) optional impulse response measureme    
 48         However, from the device's point of vi    
 49         capture and playback stream, which mus    
 50         subsystems. It is therefore necessary     
 51         subsystems with respect to PCM usage.     
 52                                                   
 53         We define two bit flags, "opened" and     
 54         or capture stream.  Both can contain t    
 55         LINE6_STREAM_* type,                      
 56           LINE6_STREAM_PCM = ALSA PCM playback    
 57           LINE6_STREAM_MONITOR = software moni    
 58           IMPULSE = optional impulse response     
 59         The opened flag indicates whether the     
 60         the running flag indicates whether the    
 61                                                   
 62         For monitor or impulse operations, the    
 63         line6_pcm_acquire() or line6_pcm_relea    
 64         LINE6_STREAM_* flag.                      
 65 */                                                
 66                                                   
 67 /* stream types */                                
 68 enum {                                            
 69         LINE6_STREAM_PCM,                         
 70         LINE6_STREAM_MONITOR,                     
 71         LINE6_STREAM_IMPULSE,                     
 72         LINE6_STREAM_CAPTURE_HELPER,              
 73 };                                                
 74                                                   
 75 /* misc bit flags for PCM operation */            
 76 enum {                                            
 77         LINE6_FLAG_PAUSE_PLAYBACK,                
 78         LINE6_FLAG_PREPARED,                      
 79 };                                                
 80                                                   
 81 struct line6_pcm_properties {                     
 82         struct snd_pcm_hardware playback_hw, c    
 83         struct snd_pcm_hw_constraint_ratdens r    
 84         int bytes_per_channel;                    
 85 };                                                
 86                                                   
 87 struct line6_pcm_stream {                         
 88         /* allocated URBs */                      
 89         struct urb **urbs;                        
 90                                                   
 91         /* Temporary buffer;                      
 92          * Since the packet size is not known     
 93          * large enough to store maximum size     
 94          */                                       
 95         unsigned char *buffer;                    
 96                                                   
 97         /* Free frame position in the buffer.     
 98         snd_pcm_uframes_t pos;                    
 99                                                   
100         /* Count processed bytes;                 
101          * This is modulo period size (to dete    
102          */                                       
103         unsigned bytes;                           
104                                                   
105         /* Counter to create desired sample ra    
106         unsigned count;                           
107                                                   
108         /* period size in bytes */                
109         unsigned period;                          
110                                                   
111         /* Processed frame position in the buf    
112          * The contents of the ring buffer hav    
113          * subsystem (i.e., sent to the USB de    
114          */                                       
115         snd_pcm_uframes_t pos_done;               
116                                                   
117         /* Bit mask of active URBs */             
118         unsigned long active_urbs;                
119                                                   
120         /* Bit mask of URBs currently being un    
121         unsigned long unlink_urbs;                
122                                                   
123         /* Spin lock to protect updates of the    
124          */                                       
125         spinlock_t lock;                          
126                                                   
127         /* Bit flags for operational stream ty    
128         unsigned long opened;                     
129                                                   
130         /* Bit flags for running stream types     
131         unsigned long running;                    
132                                                   
133         int last_frame;                           
134 };                                                
135                                                   
136 struct snd_line6_pcm {                            
137         /* Pointer back to the Line 6 driver d    
138         struct usb_line6 *line6;                  
139                                                   
140         /* Properties. */                         
141         struct line6_pcm_properties *propertie    
142                                                   
143         /* ALSA pcm stream */                     
144         struct snd_pcm *pcm;                      
145                                                   
146         /* protection to state changes of in/o    
147         struct mutex state_mutex;                 
148                                                   
149         /* Capture and playback streams */        
150         struct line6_pcm_stream in;               
151         struct line6_pcm_stream out;              
152                                                   
153         /* Previously captured frame (for soft    
154         unsigned char *prev_fbuf;                 
155                                                   
156         /* Size of previously captured frame (    
157         int prev_fsize;                           
158                                                   
159         /* Maximum size of USB packet */          
160         int max_packet_size_in;                   
161         int max_packet_size_out;                  
162                                                   
163         /* PCM playback volume (left and right    
164         int volume_playback[2];                   
165                                                   
166         /* PCM monitor volume */                  
167         int volume_monitor;                       
168                                                   
169         /* Volume of impulse response test sig    
170         int impulse_volume;                       
171                                                   
172         /* Period of impulse response test sig    
173         int impulse_period;                       
174                                                   
175         /* Counter for impulse response test s    
176         int impulse_count;                        
177                                                   
178         /* Several status bits (see LINE6_FLAG    
179         unsigned long flags;                      
180 };                                                
181                                                   
182 extern int line6_init_pcm(struct usb_line6 *li    
183                           struct line6_pcm_pro    
184 extern int snd_line6_trigger(struct snd_pcm_su    
185 extern int snd_line6_prepare(struct snd_pcm_su    
186 extern int snd_line6_hw_params(struct snd_pcm_    
187                                struct snd_pcm_    
188 extern int snd_line6_hw_free(struct snd_pcm_su    
189 extern snd_pcm_uframes_t snd_line6_pointer(str    
190 extern void line6_pcm_disconnect(struct snd_li    
191 extern int line6_pcm_acquire(struct snd_line6_    
192                                bool start);       
193 extern void line6_pcm_release(struct snd_line6    
194                                                   
195 #endif                                            
196                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php