Lines Matching refs:cdev

135 	struct snd_usb_caiaqdev *cdev = urb->context;
138 if (urb->status || !cdev) {
145 memcpy(&cdev->spec, buf+1, sizeof(struct caiaq_device_spec));
146 cdev->spec.fw_version = le16_to_cpu(cdev->spec.fw_version);
149 cdev->spec.fw_version,
150 cdev->spec.num_analog_audio_in,
151 cdev->spec.num_analog_audio_out,
152 cdev->spec.num_midi_in,
153 cdev->spec.num_midi_out,
154 cdev->spec.data_alignment);
156 cdev->spec_received++;
157 wake_up(&cdev->ep1_wait_queue);
160 cdev->audio_parm_answer = buf[1];
161 wake_up(&cdev->ep1_wait_queue);
164 snd_usb_caiaq_midi_handle_input(cdev, buf[1], buf + 3, buf[2]);
167 if (cdev->chip.usb_id ==
169 if (urb->actual_length > sizeof(cdev->control_state))
170 urb->actual_length = sizeof(cdev->control_state);
171 memcpy(cdev->control_state, buf + 1, urb->actual_length);
172 wake_up(&cdev->ep1_wait_queue);
179 snd_usb_caiaq_input_dispatch(cdev, buf, urb->actual_length);
184 cdev->ep1_in_urb.actual_length = 0;
185 ret = usb_submit_urb(&cdev->ep1_in_urb, GFP_ATOMIC);
190 int snd_usb_caiaq_send_command(struct snd_usb_caiaqdev *cdev,
196 struct usb_device *usb_dev = cdev->chip.dev;
205 memcpy(cdev->ep1_out_buf+1, buffer, len);
207 cdev->ep1_out_buf[0] = command;
209 cdev->ep1_out_buf, len+1, &actual_len, 200);
212 int snd_usb_caiaq_send_command_bank(struct snd_usb_caiaqdev *cdev,
219 struct usb_device *usb_dev = cdev->chip.dev;
228 memcpy(cdev->ep1_out_buf+2, buffer, len);
230 cdev->ep1_out_buf[0] = command;
231 cdev->ep1_out_buf[1] = bank;
234 cdev->ep1_out_buf, len+2, &actual_len, 200);
237 int snd_usb_caiaq_set_audio_params (struct snd_usb_caiaqdev *cdev,
242 struct device *dev = caiaqdev_to_dev(cdev);
266 cdev->audio_parm_answer = -1;
267 ret = snd_usb_caiaq_send_command(cdev, EP1_CMD_AUDIO_PARAMS,
273 if (!wait_event_timeout(cdev->ep1_wait_queue,
274 cdev->audio_parm_answer >= 0, HZ))
277 if (cdev->audio_parm_answer != 1)
280 cdev->bpp = bpp;
282 return cdev->audio_parm_answer == 1 ? 0 : -EINVAL;
285 int snd_usb_caiaq_set_auto_msg(struct snd_usb_caiaqdev *cdev,
289 return snd_usb_caiaq_send_command(cdev, EP1_CMD_AUTO_MSG,
293 static void setup_card(struct snd_usb_caiaqdev *cdev)
297 struct device *dev = caiaqdev_to_dev(cdev);
300 switch (cdev->chip.usb_id) {
306 snd_usb_caiaq_send_command(cdev, EP1_CMD_WRITE_IO, val, 3);
314 snd_usb_caiaq_send_command(cdev, EP1_CMD_WRITE_IO, val, 4);
319 snd_usb_caiaq_send_command(cdev, EP1_CMD_WRITE_IO, val, 1);
323 cdev->control_state[0] = 0xff;
324 snd_usb_caiaq_set_auto_msg(cdev, 1, 0, 0);
325 snd_usb_caiaq_send_command(cdev, EP1_CMD_READ_IO, NULL, 0);
327 if (!wait_event_timeout(cdev->ep1_wait_queue,
328 cdev->control_state[0] != 0xff, HZ))
332 if ((cdev->control_state[1] != 2) ||
333 (cdev->control_state[2] != 3) ||
334 (cdev->control_state[4] != 2)) {
335 cdev->control_state[1] = 2;
336 cdev->control_state[2] = 3;
337 cdev->control_state[4] = 2;
338 snd_usb_caiaq_send_command(cdev,
339 EP1_CMD_WRITE_IO, cdev->control_state, 6);
345 if (cdev->spec.num_analog_audio_out +
346 cdev->spec.num_analog_audio_in +
347 cdev->spec.num_digital_audio_out +
348 cdev->spec.num_digital_audio_in > 0) {
349 ret = snd_usb_caiaq_audio_init(cdev);
354 if (cdev->spec.num_midi_in +
355 cdev->spec.num_midi_out > 0) {
356 ret = snd_usb_caiaq_midi_init(cdev);
362 ret = snd_usb_caiaq_input_init(cdev);
368 ret = snd_card_register(cdev->chip.card);
371 snd_card_free(cdev->chip.card);
374 ret = snd_usb_caiaq_control_init(cdev);
386 struct snd_usb_caiaqdev *cdev;
401 cdev = caiaqdev(card);
402 cdev->chip.dev = usb_dev;
403 cdev->chip.card = card;
404 cdev->chip.usb_id = USB_ID(le16_to_cpu(usb_dev->descriptor.idVendor),
406 spin_lock_init(&cdev->spinlock);
412 static int init_card(struct snd_usb_caiaqdev *cdev)
415 struct usb_device *usb_dev = cdev->chip.dev;
416 struct snd_card *card = cdev->chip.card;
417 struct device *dev = caiaqdev_to_dev(cdev);
425 usb_init_urb(&cdev->ep1_in_urb);
426 usb_init_urb(&cdev->midi_out_urb);
428 usb_fill_bulk_urb(&cdev->ep1_in_urb, usb_dev,
430 cdev->ep1_in_buf, EP1_BUFSIZE,
431 usb_ep1_command_reply_dispatch, cdev);
433 usb_fill_bulk_urb(&cdev->midi_out_urb, usb_dev,
435 cdev->midi_out_buf, EP1_BUFSIZE,
436 snd_usb_caiaq_midi_output_done, cdev);
439 if (usb_urb_ep_type_check(&cdev->ep1_in_urb) ||
440 usb_urb_ep_type_check(&cdev->midi_out_urb)) {
445 init_waitqueue_head(&cdev->ep1_wait_queue);
446 init_waitqueue_head(&cdev->prepare_wait_queue);
448 if (usb_submit_urb(&cdev->ep1_in_urb, GFP_KERNEL) != 0)
451 err = snd_usb_caiaq_send_command(cdev, EP1_CMD_GET_DEVICE_INFO, NULL, 0);
455 if (!wait_event_timeout(cdev->ep1_wait_queue, cdev->spec_received, HZ)) {
461 cdev->vendor_name, CAIAQ_USB_STR_LEN);
464 cdev->product_name, CAIAQ_USB_STR_LEN);
467 strscpy(card->shortname, cdev->product_name, sizeof(card->shortname));
468 strscpy(card->mixername, cdev->product_name, sizeof(card->mixername));
489 cdev->vendor_name, cdev->product_name, usbpath);
491 setup_card(cdev);
495 usb_kill_urb(&cdev->ep1_in_urb);
526 struct snd_usb_caiaqdev *cdev;
531 cdev = caiaqdev(card);
537 snd_usb_caiaq_input_free(cdev);
539 snd_usb_caiaq_audio_free(cdev);
541 usb_kill_urb(&cdev->ep1_in_urb);
542 usb_kill_urb(&cdev->midi_out_urb);