Lines Matching defs:cdev
190 static inline void snd_caiaq_input_report_abs(struct snd_usb_caiaqdev *cdev,
194 input_report_abs(cdev->input_dev, axis,
198 static void snd_caiaq_input_read_analog(struct snd_usb_caiaqdev *cdev,
202 struct input_dev *input_dev = cdev->input_dev;
204 switch (cdev->chip.usb_id) {
206 snd_caiaq_input_report_abs(cdev, ABS_X, buf, 2);
207 snd_caiaq_input_report_abs(cdev, ABS_Y, buf, 0);
208 snd_caiaq_input_report_abs(cdev, ABS_Z, buf, 1);
213 snd_caiaq_input_report_abs(cdev, ABS_X, buf, 0);
214 snd_caiaq_input_report_abs(cdev, ABS_Y, buf, 1);
215 snd_caiaq_input_report_abs(cdev, ABS_Z, buf, 2);
218 snd_caiaq_input_report_abs(cdev, ABS_HAT0X, buf, 4);
219 snd_caiaq_input_report_abs(cdev, ABS_HAT0Y, buf, 2);
220 snd_caiaq_input_report_abs(cdev, ABS_HAT1X, buf, 6);
221 snd_caiaq_input_report_abs(cdev, ABS_HAT1Y, buf, 1);
222 snd_caiaq_input_report_abs(cdev, ABS_HAT2X, buf, 7);
223 snd_caiaq_input_report_abs(cdev, ABS_HAT2Y, buf, 0);
224 snd_caiaq_input_report_abs(cdev, ABS_HAT3X, buf, 5);
225 snd_caiaq_input_report_abs(cdev, ABS_HAT3Y, buf, 3);
232 static void snd_caiaq_input_read_erp(struct snd_usb_caiaqdev *cdev,
235 struct input_dev *input_dev = cdev->input_dev;
238 switch (cdev->chip.usb_id) {
290 static void snd_caiaq_input_read_io(struct snd_usb_caiaqdev *cdev,
293 struct input_dev *input_dev = cdev->input_dev;
308 switch (cdev->chip.usb_id) {
311 input_report_abs(cdev->input_dev, ABS_MISC, 255 - buf[4]);
315 input_report_abs(cdev->input_dev, ABS_X, buf[5] & 0xf);
316 input_report_abs(cdev->input_dev, ABS_Y, buf[5] >> 4);
317 input_report_abs(cdev->input_dev, ABS_Z, buf[6] & 0xf);
318 input_report_abs(cdev->input_dev, ABS_MISC, buf[6] >> 4);
327 static void snd_usb_caiaq_tks4_dispatch(struct snd_usb_caiaqdev *cdev,
331 struct device *dev = caiaqdev_to_dev(cdev);
340 input_report_key(cdev->input_dev, KONTROLS4_BUTTON(i),
346 input_report_abs(cdev->input_dev, KONTROLS4_ABS(36), buf[9] | ((buf[8] & 0x3) << 8));
348 input_report_abs(cdev->input_dev, KONTROLS4_ABS(37), buf[13] | ((buf[12] & 0x3) << 8));
351 input_report_abs(cdev->input_dev, KONTROLS4_ABS(38), buf[3] & 0xf);
352 input_report_abs(cdev->input_dev, KONTROLS4_ABS(39), buf[4] >> 4);
353 input_report_abs(cdev->input_dev, KONTROLS4_ABS(40), buf[4] & 0xf);
354 input_report_abs(cdev->input_dev, KONTROLS4_ABS(41), buf[5] >> 4);
355 input_report_abs(cdev->input_dev, KONTROLS4_ABS(42), buf[5] & 0xf);
356 input_report_abs(cdev->input_dev, KONTROLS4_ABS(43), buf[6] >> 4);
357 input_report_abs(cdev->input_dev, KONTROLS4_ABS(44), buf[6] & 0xf);
358 input_report_abs(cdev->input_dev, KONTROLS4_ABS(45), buf[7] >> 4);
359 input_report_abs(cdev->input_dev, KONTROLS4_ABS(46), buf[7] & 0xf);
364 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(0), buf, 1);
366 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(1), buf, 2);
368 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(2), buf, 3);
370 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(3), buf, 4);
372 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(4), buf, 6);
374 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(7), buf, 7);
380 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(6), buf, 3);
382 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(5), buf, 4);
384 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(8), buf, 6);
386 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(9), buf, 7);
392 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(10), buf, 1);
394 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(11), buf, 2);
396 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(12), buf, 3);
398 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(13), buf, 4);
400 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(14), buf, 5);
402 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(15), buf, 6);
404 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(16), buf, 7);
410 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(17), buf, 1);
412 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(18), buf, 2);
414 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(19), buf, 3);
416 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(20), buf, 4);
418 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(21), buf, 5);
420 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(22), buf, 6);
422 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(23), buf, 7);
428 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(24), buf, 1);
430 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(25), buf, 2);
432 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(26), buf, 3);
434 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(27), buf, 4);
436 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(28), buf, 5);
438 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(29), buf, 6);
440 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(30), buf, 7);
446 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(31), buf, 1);
448 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(32), buf, 2);
450 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(33), buf, 3);
452 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(34), buf, 4);
454 snd_caiaq_input_report_abs(cdev, KONTROLS4_ABS(35), buf, 5);
468 input_sync(cdev->input_dev);
473 static void snd_usb_caiaq_maschine_dispatch(struct snd_usb_caiaqdev *cdev,
482 input_report_abs(cdev->input_dev, MASCHINE_PAD(pad_id),
487 input_sync(cdev->input_dev);
492 struct snd_usb_caiaqdev *cdev = urb->context;
497 if (urb->status || !cdev || urb != cdev->ep4_in_urb)
500 switch (cdev->chip.usb_id) {
506 snd_caiaq_input_read_io(cdev, buf + 1, 7);
509 snd_caiaq_input_read_analog(cdev, buf + 8, 16);
514 snd_usb_caiaq_tks4_dispatch(cdev, buf, urb->actual_length);
521 snd_usb_caiaq_maschine_dispatch(cdev, buf, urb->actual_length);
526 cdev->ep4_in_urb->actual_length = 0;
527 ret = usb_submit_urb(cdev->ep4_in_urb, GFP_ATOMIC);
534 struct snd_usb_caiaqdev *cdev = input_get_drvdata(idev);
536 if (!cdev)
539 switch (cdev->chip.usb_id) {
543 if (usb_submit_urb(cdev->ep4_in_urb, GFP_KERNEL) != 0)
553 struct snd_usb_caiaqdev *cdev = input_get_drvdata(idev);
555 if (!cdev)
558 switch (cdev->chip.usb_id) {
562 usb_kill_urb(cdev->ep4_in_urb);
567 void snd_usb_caiaq_input_dispatch(struct snd_usb_caiaqdev *cdev,
571 if (!cdev->input_dev || len < 1)
576 snd_caiaq_input_read_analog(cdev, buf + 1, len - 1);
579 snd_caiaq_input_read_erp(cdev, buf + 1, len - 1);
582 snd_caiaq_input_read_io(cdev, buf + 1, len - 1);
587 int snd_usb_caiaq_input_init(struct snd_usb_caiaqdev *cdev)
589 struct usb_device *usb_dev = cdev->chip.dev;
597 usb_make_path(usb_dev, cdev->phys, sizeof(cdev->phys));
598 strlcat(cdev->phys, "/input0", sizeof(cdev->phys));
600 input->name = cdev->product_name;
601 input->phys = cdev->phys;
605 input_set_drvdata(input, cdev);
607 switch (cdev->chip.usb_id) {
612 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk2));
613 memcpy(cdev->keycode, keycode_rk2, sizeof(keycode_rk2));
618 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 0);
624 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk3));
625 memcpy(cdev->keycode, keycode_rk3, sizeof(keycode_rk3));
630 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 0);
635 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_ak1));
636 memcpy(cdev->keycode, keycode_ak1, sizeof(keycode_ak1));
639 snd_usb_caiaq_set_auto_msg(cdev, 1, 0, 5);
651 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_kore));
652 memcpy(cdev->keycode, keycode_kore, sizeof(keycode_kore));
666 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 5);
677 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLX1_INPUTS);
679 cdev->keycode[i] = BTN_MISC + i;
698 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL);
699 if (!cdev->ep4_in_urb) {
704 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev,
706 cdev->ep4_in_buf, EP4_BUFSIZE,
707 snd_usb_caiaq_ep4_reply_dispatch, cdev);
708 ret = usb_urb_ep_type_check(cdev->ep4_in_urb);
712 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 5);
718 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLS4_BUTTONS);
720 cdev->keycode[i] = KONTROLS4_BUTTON(i);
740 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL);
741 if (!cdev->ep4_in_urb) {
746 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev,
748 cdev->ep4_in_buf, EP4_BUFSIZE,
749 snd_usb_caiaq_ep4_reply_dispatch, cdev);
750 ret = usb_urb_ep_type_check(cdev->ep4_in_urb);
754 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 5);
767 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_maschine));
768 memcpy(cdev->keycode, keycode_maschine, sizeof(keycode_maschine));
788 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL);
789 if (!cdev->ep4_in_urb) {
794 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev,
796 cdev->ep4_in_buf, EP4_BUFSIZE,
797 snd_usb_caiaq_ep4_reply_dispatch, cdev);
798 ret = usb_urb_ep_type_check(cdev->ep4_in_urb);
802 snd_usb_caiaq_set_auto_msg(cdev, 1, 10, 5);
813 input->keycode = cdev->keycode;
816 __set_bit(cdev->keycode[i], input->keybit);
818 cdev->input_dev = input;
828 cdev->input_dev = NULL;
832 void snd_usb_caiaq_input_free(struct snd_usb_caiaqdev *cdev)
834 if (!cdev || !cdev->input_dev)
837 usb_kill_urb(cdev->ep4_in_urb);
838 usb_free_urb(cdev->ep4_in_urb);
839 cdev->ep4_in_urb = NULL;
841 input_unregister_device(cdev->input_dev);
842 cdev->input_dev = NULL;