Lines Matching +full:rotary +full:- +full:encoder
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
138 #define LOW_PEAK (-7)
149 int range = HIGH_PEAK - LOW_PEAK; in decode_erp()
152 weight_b = abs(mid_value - a) - (range / 2 - 100) / 2; in decode_erp()
160 weight_a = 100 - weight_b; in decode_erp()
164 pos_b = b - LOW_PEAK + DEG270; in decode_erp()
166 pos_b -= DEG360; in decode_erp()
169 pos_b = HIGH_PEAK - b + DEG90; in decode_erp()
174 pos_a = a - LOW_PEAK; in decode_erp()
177 pos_a = HIGH_PEAK - a + DEG180; in decode_erp()
191 ret -= 1000; in decode_erp()
207 input_report_abs(cdev->input_dev, axis, in snd_caiaq_input_report_abs()
215 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_analog()
217 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_analog()
248 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_erp()
251 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_erp()
306 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_io()
307 unsigned short *keycode = input_dev->keycode; in snd_caiaq_input_read_io()
313 if (input_dev->id.product == USB_PID_RIGKONTROL2) in snd_caiaq_input_read_io()
317 for (i = 0; i < input_dev->keycodemax && i < len * 8; i++) in snd_caiaq_input_read_io()
321 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_io()
324 input_report_abs(cdev->input_dev, ABS_MISC, 255 - buf[4]); in snd_caiaq_input_read_io()
327 /* rotary encoders */ in snd_caiaq_input_read_io()
328 input_report_abs(cdev->input_dev, ABS_X, buf[5] & 0xf); in snd_caiaq_input_read_io()
329 input_report_abs(cdev->input_dev, ABS_Y, buf[5] >> 4); in snd_caiaq_input_read_io()
330 input_report_abs(cdev->input_dev, ABS_Z, buf[6] & 0xf); in snd_caiaq_input_read_io()
331 input_report_abs(cdev->input_dev, ABS_MISC, buf[6] >> 4); in snd_caiaq_input_read_io()
353 input_report_key(cdev->input_dev, KONTROLS4_BUTTON(i), in snd_usb_caiaq_tks4_dispatch()
359 input_report_abs(cdev->input_dev, KONTROLS4_ABS(36), buf[9] | ((buf[8] & 0x3) << 8)); in snd_usb_caiaq_tks4_dispatch()
361 input_report_abs(cdev->input_dev, KONTROLS4_ABS(37), buf[13] | ((buf[12] & 0x3) << 8)); in snd_usb_caiaq_tks4_dispatch()
363 /* rotary encoders */ in snd_usb_caiaq_tks4_dispatch()
364 input_report_abs(cdev->input_dev, KONTROLS4_ABS(38), buf[3] & 0xf); in snd_usb_caiaq_tks4_dispatch()
365 input_report_abs(cdev->input_dev, KONTROLS4_ABS(39), buf[4] >> 4); in snd_usb_caiaq_tks4_dispatch()
366 input_report_abs(cdev->input_dev, KONTROLS4_ABS(40), buf[4] & 0xf); in snd_usb_caiaq_tks4_dispatch()
367 input_report_abs(cdev->input_dev, KONTROLS4_ABS(41), buf[5] >> 4); in snd_usb_caiaq_tks4_dispatch()
368 input_report_abs(cdev->input_dev, KONTROLS4_ABS(42), buf[5] & 0xf); in snd_usb_caiaq_tks4_dispatch()
369 input_report_abs(cdev->input_dev, KONTROLS4_ABS(43), buf[6] >> 4); in snd_usb_caiaq_tks4_dispatch()
370 input_report_abs(cdev->input_dev, KONTROLS4_ABS(44), buf[6] & 0xf); in snd_usb_caiaq_tks4_dispatch()
371 input_report_abs(cdev->input_dev, KONTROLS4_ABS(45), buf[7] >> 4); in snd_usb_caiaq_tks4_dispatch()
372 input_report_abs(cdev->input_dev, KONTROLS4_ABS(46), buf[7] & 0xf); in snd_usb_caiaq_tks4_dispatch()
408 /* Channel D EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
410 /* Channel D EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
412 /* Channel D EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
414 /* Channel D EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
416 /* FX2 - dry/wet */ in snd_usb_caiaq_tks4_dispatch()
422 /* FX2 - 1 */ in snd_usb_caiaq_tks4_dispatch()
424 /* FX2 - 2 */ in snd_usb_caiaq_tks4_dispatch()
426 /* FX2 - 3 */ in snd_usb_caiaq_tks4_dispatch()
428 /* Channel B EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
430 /* Channel B EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
432 /* Channel B EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
434 /* Channel B EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
440 /* Channel A EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
442 /* Channel A EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
444 /* Channel A EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
446 /* Channel A EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
448 /* Channel C EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
450 /* Channel C EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
452 /* Channel C EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
458 /* Channel C EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
460 /* FX1 - wet/dry */ in snd_usb_caiaq_tks4_dispatch()
462 /* FX1 - 1 */ in snd_usb_caiaq_tks4_dispatch()
464 /* FX1 - 2 */ in snd_usb_caiaq_tks4_dispatch()
466 /* FX1 - 3 */ in snd_usb_caiaq_tks4_dispatch()
477 len -= TKS4_MSGBLOCK_SIZE; in snd_usb_caiaq_tks4_dispatch()
481 input_sync(cdev->input_dev); in snd_usb_caiaq_tks4_dispatch()
495 input_report_abs(cdev->input_dev, MASCHINE_PAD(pad_id), in snd_usb_caiaq_maschine_dispatch()
500 input_sync(cdev->input_dev); in snd_usb_caiaq_maschine_dispatch()
505 struct snd_usb_caiaqdev *cdev = urb->context; in snd_usb_caiaq_ep4_reply_dispatch()
506 unsigned char *buf = urb->transfer_buffer; in snd_usb_caiaq_ep4_reply_dispatch()
507 struct device *dev = &urb->dev->dev; in snd_usb_caiaq_ep4_reply_dispatch()
510 if (urb->status || !cdev || urb != cdev->ep4_in_urb) in snd_usb_caiaq_ep4_reply_dispatch()
513 switch (cdev->chip.usb_id) { in snd_usb_caiaq_ep4_reply_dispatch()
515 if (urb->actual_length < 24) in snd_usb_caiaq_ep4_reply_dispatch()
527 snd_usb_caiaq_tks4_dispatch(cdev, buf, urb->actual_length); in snd_usb_caiaq_ep4_reply_dispatch()
531 if (urb->actual_length < (MASCHINE_PADS * MASCHINE_MSGBLOCK_SIZE)) in snd_usb_caiaq_ep4_reply_dispatch()
534 snd_usb_caiaq_maschine_dispatch(cdev, buf, urb->actual_length); in snd_usb_caiaq_ep4_reply_dispatch()
539 cdev->ep4_in_urb->actual_length = 0; in snd_usb_caiaq_ep4_reply_dispatch()
540 ret = usb_submit_urb(cdev->ep4_in_urb, GFP_ATOMIC); in snd_usb_caiaq_ep4_reply_dispatch()
550 return -EINVAL; in snd_usb_caiaq_input_open()
552 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_open()
556 if (usb_submit_urb(cdev->ep4_in_urb, GFP_KERNEL) != 0) in snd_usb_caiaq_input_open()
557 return -EIO; in snd_usb_caiaq_input_open()
571 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_close()
575 usb_kill_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_close()
584 if (!cdev->input_dev || len < 1) in snd_usb_caiaq_input_dispatch()
589 snd_caiaq_input_read_analog(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
592 snd_caiaq_input_read_erp(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
595 snd_caiaq_input_read_io(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
602 struct usb_device *usb_dev = cdev->chip.dev; in snd_usb_caiaq_input_init()
608 return -ENOMEM; in snd_usb_caiaq_input_init()
610 usb_make_path(usb_dev, cdev->phys, sizeof(cdev->phys)); in snd_usb_caiaq_input_init()
611 strlcat(cdev->phys, "/input0", sizeof(cdev->phys)); in snd_usb_caiaq_input_init()
613 input->name = cdev->product_name; in snd_usb_caiaq_input_init()
614 input->phys = cdev->phys; in snd_usb_caiaq_input_init()
615 usb_to_input_id(usb_dev, &input->id); in snd_usb_caiaq_input_init()
616 input->dev.parent = &usb_dev->dev; in snd_usb_caiaq_input_init()
620 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_init()
622 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
623 input->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | in snd_usb_caiaq_input_init()
625 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk2)); in snd_usb_caiaq_input_init()
626 memcpy(cdev->keycode, keycode_rk2, sizeof(keycode_rk2)); in snd_usb_caiaq_input_init()
627 input->keycodemax = ARRAY_SIZE(keycode_rk2); in snd_usb_caiaq_input_init()
634 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
635 input->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | in snd_usb_caiaq_input_init()
637 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk3)); in snd_usb_caiaq_input_init()
638 memcpy(cdev->keycode, keycode_rk3, sizeof(keycode_rk3)); in snd_usb_caiaq_input_init()
639 input->keycodemax = ARRAY_SIZE(keycode_rk3); in snd_usb_caiaq_input_init()
646 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
647 input->absbit[0] = BIT_MASK(ABS_X); in snd_usb_caiaq_input_init()
648 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_ak1)); in snd_usb_caiaq_input_init()
649 memcpy(cdev->keycode, keycode_ak1, sizeof(keycode_ak1)); in snd_usb_caiaq_input_init()
650 input->keycodemax = ARRAY_SIZE(keycode_ak1); in snd_usb_caiaq_input_init()
656 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
657 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
663 input->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC); in snd_usb_caiaq_input_init()
664 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_kore)); in snd_usb_caiaq_input_init()
665 memcpy(cdev->keycode, keycode_kore, sizeof(keycode_kore)); in snd_usb_caiaq_input_init()
666 input->keycodemax = ARRAY_SIZE(keycode_kore); in snd_usb_caiaq_input_init()
682 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
683 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
689 input->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC); in snd_usb_caiaq_input_init()
690 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLX1_INPUTS); in snd_usb_caiaq_input_init()
692 cdev->keycode[i] = BTN_MISC + i; in snd_usb_caiaq_input_init()
693 input->keycodemax = KONTROLX1_INPUTS; in snd_usb_caiaq_input_init()
705 /* rotary encoders */ in snd_usb_caiaq_input_init()
711 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
712 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
713 ret = -ENOMEM; in snd_usb_caiaq_input_init()
717 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
719 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
721 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
730 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
731 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLS4_BUTTONS); in snd_usb_caiaq_input_init()
733 cdev->keycode[i] = KONTROLS4_BUTTON(i); in snd_usb_caiaq_input_init()
734 input->keycodemax = KONTROLS4_BUTTONS; in snd_usb_caiaq_input_init()
738 input->absbit[BIT_WORD(axis)] |= BIT_MASK(axis); in snd_usb_caiaq_input_init()
745 /* 2 encoder wheels */ in snd_usb_caiaq_input_init()
749 /* 9 rotary encoders */ in snd_usb_caiaq_input_init()
753 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
754 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
755 ret = -ENOMEM; in snd_usb_caiaq_input_init()
759 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
761 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
763 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
772 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
773 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
780 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_maschine)); in snd_usb_caiaq_input_init()
781 memcpy(cdev->keycode, keycode_maschine, sizeof(keycode_maschine)); in snd_usb_caiaq_input_init()
782 input->keycodemax = ARRAY_SIZE(keycode_maschine); in snd_usb_caiaq_input_init()
785 input->absbit[0] |= MASCHINE_PAD(i); in snd_usb_caiaq_input_init()
801 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
802 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
803 ret = -ENOMEM; in snd_usb_caiaq_input_init()
807 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
809 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
811 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
823 input->open = snd_usb_caiaq_input_open; in snd_usb_caiaq_input_init()
824 input->close = snd_usb_caiaq_input_close; in snd_usb_caiaq_input_init()
825 input->keycode = cdev->keycode; in snd_usb_caiaq_input_init()
826 input->keycodesize = sizeof(unsigned short); in snd_usb_caiaq_input_init()
827 for (i = 0; i < input->keycodemax; i++) in snd_usb_caiaq_input_init()
828 __set_bit(cdev->keycode[i], input->keybit); in snd_usb_caiaq_input_init()
830 cdev->input_dev = input; in snd_usb_caiaq_input_init()
840 cdev->input_dev = NULL; in snd_usb_caiaq_input_init()
846 if (!cdev || !cdev->input_dev) in snd_usb_caiaq_input_free()
849 usb_kill_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_free()
850 usb_free_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_free()
851 cdev->ep4_in_urb = NULL; in snd_usb_caiaq_input_free()
853 input_unregister_device(cdev->input_dev); in snd_usb_caiaq_input_free()
854 cdev->input_dev = NULL; in snd_usb_caiaq_input_free()