Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef CAIAQ_DEVICE_H
  2 #define CAIAQ_DEVICE_H
  3 
  4 #include "../usbaudio.h"
  5 
  6 #define USB_VID_NATIVEINSTRUMENTS 0x17cc
  7 
  8 #define USB_PID_RIGKONTROL2     0x1969
  9 #define USB_PID_RIGKONTROL3     0x1940
 10 #define USB_PID_KORECONTROLLER  0x4711
 11 #define USB_PID_KORECONTROLLER2 0x4712
 12 #define USB_PID_AK1             0x0815
 13 #define USB_PID_AUDIO2DJ        0x041c
 14 #define USB_PID_AUDIO4DJ        0x0839
 15 #define USB_PID_AUDIO8DJ        0x1978
 16 #define USB_PID_SESSIONIO       0x1915
 17 #define USB_PID_GUITARRIGMOBILE 0x0d8d
 18 
 19 #define EP1_BUFSIZE 64
 20 #define CAIAQ_USB_STR_LEN 0xff
 21 #define MAX_STREAMS 32
 22 
 23 //#define       SND_USB_CAIAQ_DEBUG
 24 
 25 #define MODNAME "snd-usb-caiaq"
 26 #define log(x...) snd_printk(KERN_WARNING MODNAME" log: " x)
 27 
 28 #ifdef SND_USB_CAIAQ_DEBUG
 29 #define debug(x...) snd_printk(KERN_WARNING MODNAME " debug: " x)
 30 #else
 31 #define debug(x...) do { } while(0)
 32 #endif
 33 
 34 #define EP1_CMD_GET_DEVICE_INFO 0x1
 35 #define EP1_CMD_READ_ERP        0x2
 36 #define EP1_CMD_READ_ANALOG     0x3
 37 #define EP1_CMD_READ_IO         0x4
 38 #define EP1_CMD_WRITE_IO        0x5
 39 #define EP1_CMD_MIDI_READ       0x6
 40 #define EP1_CMD_MIDI_WRITE      0x7
 41 #define EP1_CMD_AUDIO_PARAMS    0x9
 42 #define EP1_CMD_AUTO_MSG        0xb
 43 #define EP1_CMD_DIMM_LEDS       0xc
 44 
 45 struct caiaq_device_spec {
 46         unsigned short fw_version;
 47         unsigned char hw_subtype;
 48         unsigned char num_erp;
 49         unsigned char num_analog_in;
 50         unsigned char num_digital_in;
 51         unsigned char num_digital_out;
 52         unsigned char num_analog_audio_out;
 53         unsigned char num_analog_audio_in;
 54         unsigned char num_digital_audio_out;
 55         unsigned char num_digital_audio_in;
 56         unsigned char num_midi_out;
 57         unsigned char num_midi_in;
 58         unsigned char data_alignment;
 59 } __attribute__ ((packed));
 60 
 61 struct snd_usb_caiaq_cb_info;
 62 
 63 struct snd_usb_caiaqdev {
 64         struct snd_usb_audio chip;
 65 
 66         struct urb ep1_in_urb;
 67         struct urb midi_out_urb;
 68         struct urb **data_urbs_in;
 69         struct urb **data_urbs_out;
 70         struct snd_usb_caiaq_cb_info *data_cb_info;
 71 
 72         unsigned char ep1_in_buf[EP1_BUFSIZE];
 73         unsigned char ep1_out_buf[EP1_BUFSIZE];
 74         unsigned char midi_out_buf[EP1_BUFSIZE];
 75 
 76         struct caiaq_device_spec spec;
 77         spinlock_t spinlock;
 78         wait_queue_head_t ep1_wait_queue;
 79         wait_queue_head_t prepare_wait_queue;
 80         int spec_received, audio_parm_answer;
 81         int midi_out_active;
 82 
 83         char vendor_name[CAIAQ_USB_STR_LEN];
 84         char product_name[CAIAQ_USB_STR_LEN];
 85 
 86         int n_streams, n_audio_in, n_audio_out;
 87         int streaming, first_packet, output_running;
 88         int audio_in_buf_pos[MAX_STREAMS];
 89         int audio_out_buf_pos[MAX_STREAMS];
 90         int period_in_count[MAX_STREAMS];
 91         int period_out_count[MAX_STREAMS];
 92         int input_panic, output_panic, warned;
 93         char *audio_in_buf, *audio_out_buf;
 94         unsigned int samplerates, bpp;
 95 
 96         struct snd_pcm_substream *sub_playback[MAX_STREAMS];
 97         struct snd_pcm_substream *sub_capture[MAX_STREAMS];
 98 
 99         /* Controls */
100         unsigned char control_state[64];
101 
102         /* Linux input */
103 #ifdef CONFIG_SND_USB_CAIAQ_INPUT
104         struct input_dev *input_dev;
105         char phys[64];                  /* physical device path */
106         unsigned short keycode[64];
107 #endif
108 
109         /* ALSA */
110         struct snd_pcm *pcm;
111         struct snd_pcm_hardware pcm_info;
112         struct snd_rawmidi *rmidi;
113         struct snd_rawmidi_substream *midi_receive_substream;
114         struct snd_rawmidi_substream *midi_out_substream;
115 };
116 
117 struct snd_usb_caiaq_cb_info {
118         struct snd_usb_caiaqdev *dev;
119         int index;
120 };
121 
122 #define caiaqdev(c) ((struct snd_usb_caiaqdev*)(c)->private_data)
123 
124 int snd_usb_caiaq_set_audio_params (struct snd_usb_caiaqdev *dev, int rate, int depth, int bbp);
125 int snd_usb_caiaq_set_auto_msg (struct snd_usb_caiaqdev *dev, int digital, int analog, int erp);
126 int snd_usb_caiaq_send_command(struct snd_usb_caiaqdev *dev,
127                                unsigned char command,
128                                const unsigned char *buffer,
129                                int len);
130 
131 #endif /* CAIAQ_DEVICE_H */
132 
  This page was automatically generated by the LXR engine.