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

TOMOYO Linux Cross Reference
Linux/sound/usb/caiaq/device.h

Version: ~ [ linux-5.6.3 ] ~ [ linux-5.5.16 ] ~ [ linux-5.4.31 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.114 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.175 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.218 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.218 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.82 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 #define USB_PID_TRAKTORKONTROLX1        0x2305
 19 #define USB_PID_TRAKTORKONTROLS4        0xbaff
 20 #define USB_PID_TRAKTORAUDIO2           0x041d
 21 #define USB_PID_MASCHINECONTROLLER  0x0808
 22 
 23 #define EP1_BUFSIZE 64
 24 #define EP4_BUFSIZE 512
 25 #define CAIAQ_USB_STR_LEN 0xff
 26 #define MAX_STREAMS 32
 27 
 28 #define MODNAME "snd-usb-caiaq"
 29 
 30 #define EP1_CMD_GET_DEVICE_INFO 0x1
 31 #define EP1_CMD_READ_ERP        0x2
 32 #define EP1_CMD_READ_ANALOG     0x3
 33 #define EP1_CMD_READ_IO         0x4
 34 #define EP1_CMD_WRITE_IO        0x5
 35 #define EP1_CMD_MIDI_READ       0x6
 36 #define EP1_CMD_MIDI_WRITE      0x7
 37 #define EP1_CMD_AUDIO_PARAMS    0x9
 38 #define EP1_CMD_AUTO_MSG        0xb
 39 #define EP1_CMD_DIMM_LEDS       0xc
 40 
 41 struct caiaq_device_spec {
 42         unsigned short fw_version;
 43         unsigned char hw_subtype;
 44         unsigned char num_erp;
 45         unsigned char num_analog_in;
 46         unsigned char num_digital_in;
 47         unsigned char num_digital_out;
 48         unsigned char num_analog_audio_out;
 49         unsigned char num_analog_audio_in;
 50         unsigned char num_digital_audio_out;
 51         unsigned char num_digital_audio_in;
 52         unsigned char num_midi_out;
 53         unsigned char num_midi_in;
 54         unsigned char data_alignment;
 55 } __attribute__ ((packed));
 56 
 57 struct snd_usb_caiaq_cb_info;
 58 
 59 struct snd_usb_caiaqdev {
 60         struct snd_usb_audio chip;
 61 
 62         struct urb ep1_in_urb;
 63         struct urb midi_out_urb;
 64         struct urb **data_urbs_in;
 65         struct urb **data_urbs_out;
 66         struct snd_usb_caiaq_cb_info *data_cb_info;
 67 
 68         unsigned char ep1_in_buf[EP1_BUFSIZE];
 69         unsigned char ep1_out_buf[EP1_BUFSIZE];
 70         unsigned char midi_out_buf[EP1_BUFSIZE];
 71 
 72         struct caiaq_device_spec spec;
 73         spinlock_t spinlock;
 74         wait_queue_head_t ep1_wait_queue;
 75         wait_queue_head_t prepare_wait_queue;
 76         int spec_received, audio_parm_answer;
 77         int midi_out_active;
 78 
 79         char vendor_name[CAIAQ_USB_STR_LEN];
 80         char product_name[CAIAQ_USB_STR_LEN];
 81 
 82         int n_streams, n_audio_in, n_audio_out;
 83         int streaming, first_packet, output_running;
 84         int audio_in_buf_pos[MAX_STREAMS];
 85         int audio_out_buf_pos[MAX_STREAMS];
 86         int period_in_count[MAX_STREAMS];
 87         int period_out_count[MAX_STREAMS];
 88         int input_panic, output_panic, warned;
 89         char *audio_in_buf, *audio_out_buf;
 90         unsigned int samplerates, bpp;
 91         unsigned long outurb_active_mask;
 92 
 93         struct snd_pcm_substream *sub_playback[MAX_STREAMS];
 94         struct snd_pcm_substream *sub_capture[MAX_STREAMS];
 95 
 96         /* Controls */
 97         unsigned char control_state[256];
 98         unsigned char ep8_out_buf[2];
 99 
100         /* Linux input */
101 #ifdef CONFIG_SND_USB_CAIAQ_INPUT
102         struct input_dev *input_dev;
103         char phys[64];                  /* physical device path */
104         unsigned short keycode[128];
105         struct urb *ep4_in_urb;
106         unsigned char ep4_in_buf[EP4_BUFSIZE];
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 *cdev;
119         int index;
120 };
121 
122 #define caiaqdev(c) ((struct snd_usb_caiaqdev*)(c)->private_data)
123 #define caiaqdev_to_dev(d)      (d->chip.card->dev)
124 
125 int snd_usb_caiaq_set_audio_params (struct snd_usb_caiaqdev *cdev, int rate, int depth, int bbp);
126 int snd_usb_caiaq_set_auto_msg (struct snd_usb_caiaqdev *cdev, int digital, int analog, int erp);
127 int snd_usb_caiaq_send_command(struct snd_usb_caiaqdev *cdev,
128                                unsigned char command,
129                                const unsigned char *buffer,
130                                int len);
131 int snd_usb_caiaq_send_command_bank(struct snd_usb_caiaqdev *cdev,
132                                unsigned char command,
133                                unsigned char bank,
134                                const unsigned char *buffer,
135                                int len);
136 
137 #endif /* CAIAQ_DEVICE_H */
138 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp