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

TOMOYO Linux Cross Reference
Linux/sound/usb/line6/driver.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/driver.h (Version linux-6.12-rc7) and /sound/usb/line6/driver.h (Version linux-2.4.37.11)


  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 #ifndef DRIVER_H                                  
  9 #define DRIVER_H                                  
 10                                                   
 11 #include <linux/usb.h>                            
 12 #include <linux/mutex.h>                          
 13 #include <linux/kfifo.h>                          
 14 #include <sound/core.h>                           
 15                                                   
 16 #include "midi.h"                                 
 17                                                   
 18 /* USB 1.1 speed configuration */                 
 19 #define USB_LOW_INTERVALS_PER_SECOND 1000         
 20 #define USB_LOW_ISO_BUFFERS 2                     
 21                                                   
 22 /* USB 2.0+ speed configuration */                
 23 #define USB_HIGH_INTERVALS_PER_SECOND 8000        
 24 #define USB_HIGH_ISO_BUFFERS 16                   
 25                                                   
 26 /* Fallback USB interval and max packet size v    
 27 #define LINE6_FALLBACK_INTERVAL 10                
 28 #define LINE6_FALLBACK_MAXPACKETSIZE 16           
 29                                                   
 30 #define LINE6_TIMEOUT 1000                        
 31 #define LINE6_BUFSIZE_LISTEN 64                   
 32 #define LINE6_MIDI_MESSAGE_MAXLEN 256             
 33                                                   
 34 #define LINE6_RAW_MESSAGES_MAXCOUNT_ORDER 7       
 35 /* 4k packets are common, BUFSIZE * MAXCOUNT s    
 36 #define LINE6_RAW_MESSAGES_MAXCOUNT (1 << LINE    
 37                                                   
 38                                                   
 39 #if LINE6_BUFSIZE_LISTEN > 65535                  
 40 #error "Use dynamic fifo instead"                 
 41 #endif                                            
 42                                                   
 43 /*                                                
 44         Line 6 MIDI control commands              
 45 */                                                
 46 #define LINE6_PARAM_CHANGE   0xb0                 
 47 #define LINE6_PROGRAM_CHANGE 0xc0                 
 48 #define LINE6_SYSEX_BEGIN    0xf0                 
 49 #define LINE6_SYSEX_END      0xf7                 
 50 #define LINE6_RESET          0xff                 
 51                                                   
 52 /*                                                
 53         MIDI channel for messages initiated by    
 54         (and eventually echoed back by the dev    
 55 */                                                
 56 #define LINE6_CHANNEL_HOST   0x00                 
 57                                                   
 58 /*                                                
 59         MIDI channel for messages initiated by    
 60 */                                                
 61 #define LINE6_CHANNEL_DEVICE 0x02                 
 62                                                   
 63 #define LINE6_CHANNEL_UNKNOWN 5 /* don't know     
 64                                                   
 65 #define LINE6_CHANNEL_MASK 0x0f                   
 66                                                   
 67 extern const unsigned char line6_midi_id[3];      
 68                                                   
 69 #define SYSEX_DATA_OFS (sizeof(line6_midi_id)     
 70 #define SYSEX_EXTRA_SIZE (sizeof(line6_midi_id    
 71                                                   
 72 /*                                                
 73          Common properties of Line 6 devices.     
 74 */                                                
 75 struct line6_properties {                         
 76         /* Card id string (maximum 16 characte    
 77          * This can be used to address the dev    
 78          * "default:CARD=<id>"                    
 79          */                                       
 80         const char *id;                           
 81                                                   
 82         /* Card short name (maximum 32 charact    
 83         const char *name;                         
 84                                                   
 85         /* Bit vector defining this device's c    
 86         int capabilities;                         
 87                                                   
 88         int altsetting;                           
 89                                                   
 90         unsigned int ctrl_if;                     
 91         unsigned int ep_ctrl_r;                   
 92         unsigned int ep_ctrl_w;                   
 93         unsigned int ep_audio_r;                  
 94         unsigned int ep_audio_w;                  
 95 };                                                
 96                                                   
 97 /* Capability bits */                             
 98 enum {                                            
 99         /* device supports settings parameter     
100         LINE6_CAP_CONTROL =     1 << 0,           
101         /* device supports PCM input/output vi    
102         LINE6_CAP_PCM =         1 << 1,           
103         /* device supports hardware monitoring    
104         LINE6_CAP_HWMON =       1 << 2,           
105         /* device requires output data when in    
106         LINE6_CAP_IN_NEEDS_OUT = 1 << 3,          
107         /* device uses raw MIDI via USB (data     
108         LINE6_CAP_CONTROL_MIDI = 1 << 4,          
109         /* device provides low-level informati    
110         LINE6_CAP_CONTROL_INFO = 1 << 5,          
111         /* device provides hardware monitoring    
112         LINE6_CAP_HWMON_CTL =   1 << 6,           
113 };                                                
114                                                   
115 /*                                                
116          Common data shared by all Line 6 devi    
117          Corresponds to a pair of USB endpoint    
118 */                                                
119 struct usb_line6 {                                
120         /* USB device */                          
121         struct usb_device *usbdev;                
122                                                   
123         /* Properties */                          
124         const struct line6_properties *propert    
125                                                   
126         /* Interval for data USB packets */       
127         int interval;                             
128         /* ...for isochronous transfers framin    
129         int intervals_per_second;                 
130                                                   
131         /* Number of isochronous URBs used for    
132         int iso_buffers;                          
133                                                   
134         /* Maximum size of data USB packet */     
135         int max_packet_size;                      
136                                                   
137         /* Device representing the USB interfa    
138         struct device *ifcdev;                    
139                                                   
140         /* Line 6 sound card data structure.      
141          * Each device has at least MIDI or PC    
142          */                                       
143         struct snd_card *card;                    
144                                                   
145         /* Line 6 PCM device data structure */    
146         struct snd_line6_pcm *line6pcm;           
147                                                   
148         /* Line 6 MIDI device data structure *    
149         struct snd_line6_midi *line6midi;         
150                                                   
151         /* URB for listening to POD data endpo    
152         struct urb *urb_listen;                   
153                                                   
154         /* Buffer for incoming data from POD d    
155         unsigned char *buffer_listen;             
156                                                   
157         /* Buffer for message to be processed,    
158         unsigned char *buffer_message;            
159                                                   
160         /* Length of message to be processed,     
161         int message_length;                       
162                                                   
163         /* Circular buffer for non-MIDI contro    
164         struct {                                  
165                 struct mutex read_lock;           
166                 wait_queue_head_t wait_queue;     
167                 unsigned int active:1;            
168                 unsigned int nonblock:1;          
169                 STRUCT_KFIFO_REC_2(LINE6_BUFSI    
170                         fifo;                     
171         } messages;                               
172                                                   
173         /* Work for delayed PCM startup */        
174         struct delayed_work startup_work;         
175                                                   
176         /* If MIDI is supported, buffer_messag    
177          * otherwise the data is only in urb_l    
178          */                                       
179         void (*process_message)(struct usb_lin    
180         void (*disconnect)(struct usb_line6 *l    
181         void (*startup)(struct usb_line6 *line    
182 };                                                
183                                                   
184 extern char *line6_alloc_sysex_buffer(struct u    
185                                       int code    
186 extern int line6_read_data(struct usb_line6 *l    
187                            void *data, unsigne    
188 extern int line6_read_serial_number(struct usb    
189                                     u32 *seria    
190 extern int line6_send_raw_message(struct usb_l    
191                                         const     
192 extern int line6_send_raw_message_async(struct    
193                                         const     
194 extern int line6_send_sysex_message(struct usb    
195                                     const char    
196 extern int line6_version_request_async(struct     
197 extern int line6_write_data(struct usb_line6 *    
198                             void *data, unsign    
199                                                   
200 int line6_probe(struct usb_interface *interfac    
201                 const struct usb_device_id *id    
202                 const char *driver_name,          
203                 const struct line6_properties     
204                 int (*private_init)(struct usb    
205                 size_t data_size);                
206                                                   
207 void line6_disconnect(struct usb_interface *in    
208                                                   
209 #ifdef CONFIG_PM                                  
210 int line6_suspend(struct usb_interface *interf    
211 int line6_resume(struct usb_interface *interfa    
212 #endif                                            
213                                                   
214 #endif                                            
215                                                   

~ [ 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