Lines Matching +full:rotary +full:- +full:encoder
1 // SPDX-License-Identifier: GPL-2.0-or-later
125 #define LOW_PEAK (-7)
136 int range = HIGH_PEAK - LOW_PEAK; in decode_erp()
139 weight_b = abs(mid_value - a) - (range / 2 - 100) / 2; in decode_erp()
147 weight_a = 100 - weight_b; in decode_erp()
151 pos_b = b - LOW_PEAK + DEG270; in decode_erp()
153 pos_b -= DEG360; in decode_erp()
156 pos_b = HIGH_PEAK - b + DEG90; in decode_erp()
161 pos_a = a - LOW_PEAK; in decode_erp()
164 pos_a = HIGH_PEAK - a + DEG180; in decode_erp()
178 ret -= 1000; in decode_erp()
194 input_report_abs(cdev->input_dev, axis, in snd_caiaq_input_report_abs()
202 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_analog()
204 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_analog()
235 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_erp()
238 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_erp()
293 struct input_dev *input_dev = cdev->input_dev; in snd_caiaq_input_read_io()
294 unsigned short *keycode = input_dev->keycode; in snd_caiaq_input_read_io()
300 if (input_dev->id.product == USB_PID_RIGKONTROL2) in snd_caiaq_input_read_io()
304 for (i = 0; i < input_dev->keycodemax && i < len * 8; i++) in snd_caiaq_input_read_io()
308 switch (cdev->chip.usb_id) { in snd_caiaq_input_read_io()
311 input_report_abs(cdev->input_dev, ABS_MISC, 255 - buf[4]); in snd_caiaq_input_read_io()
314 /* rotary encoders */ in snd_caiaq_input_read_io()
315 input_report_abs(cdev->input_dev, ABS_X, buf[5] & 0xf); in snd_caiaq_input_read_io()
316 input_report_abs(cdev->input_dev, ABS_Y, buf[5] >> 4); in snd_caiaq_input_read_io()
317 input_report_abs(cdev->input_dev, ABS_Z, buf[6] & 0xf); in snd_caiaq_input_read_io()
318 input_report_abs(cdev->input_dev, ABS_MISC, buf[6] >> 4); in snd_caiaq_input_read_io()
340 input_report_key(cdev->input_dev, KONTROLS4_BUTTON(i), in snd_usb_caiaq_tks4_dispatch()
346 input_report_abs(cdev->input_dev, KONTROLS4_ABS(36), buf[9] | ((buf[8] & 0x3) << 8)); in snd_usb_caiaq_tks4_dispatch()
348 input_report_abs(cdev->input_dev, KONTROLS4_ABS(37), buf[13] | ((buf[12] & 0x3) << 8)); in snd_usb_caiaq_tks4_dispatch()
350 /* rotary encoders */ in snd_usb_caiaq_tks4_dispatch()
351 input_report_abs(cdev->input_dev, KONTROLS4_ABS(38), buf[3] & 0xf); in snd_usb_caiaq_tks4_dispatch()
352 input_report_abs(cdev->input_dev, KONTROLS4_ABS(39), buf[4] >> 4); in snd_usb_caiaq_tks4_dispatch()
353 input_report_abs(cdev->input_dev, KONTROLS4_ABS(40), buf[4] & 0xf); in snd_usb_caiaq_tks4_dispatch()
354 input_report_abs(cdev->input_dev, KONTROLS4_ABS(41), buf[5] >> 4); in snd_usb_caiaq_tks4_dispatch()
355 input_report_abs(cdev->input_dev, KONTROLS4_ABS(42), buf[5] & 0xf); in snd_usb_caiaq_tks4_dispatch()
356 input_report_abs(cdev->input_dev, KONTROLS4_ABS(43), buf[6] >> 4); in snd_usb_caiaq_tks4_dispatch()
357 input_report_abs(cdev->input_dev, KONTROLS4_ABS(44), buf[6] & 0xf); in snd_usb_caiaq_tks4_dispatch()
358 input_report_abs(cdev->input_dev, KONTROLS4_ABS(45), buf[7] >> 4); in snd_usb_caiaq_tks4_dispatch()
359 input_report_abs(cdev->input_dev, KONTROLS4_ABS(46), buf[7] & 0xf); in snd_usb_caiaq_tks4_dispatch()
395 /* Channel D EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
397 /* Channel D EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
399 /* Channel D EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
401 /* Channel D EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
403 /* FX2 - dry/wet */ in snd_usb_caiaq_tks4_dispatch()
409 /* FX2 - 1 */ in snd_usb_caiaq_tks4_dispatch()
411 /* FX2 - 2 */ in snd_usb_caiaq_tks4_dispatch()
413 /* FX2 - 3 */ in snd_usb_caiaq_tks4_dispatch()
415 /* Channel B EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
417 /* Channel B EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
419 /* Channel B EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
421 /* Channel B EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
427 /* Channel A EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
429 /* Channel A EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
431 /* Channel A EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
433 /* Channel A EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
435 /* Channel C EQ - Filter */ in snd_usb_caiaq_tks4_dispatch()
437 /* Channel C EQ - Low */ in snd_usb_caiaq_tks4_dispatch()
439 /* Channel C EQ - Mid */ in snd_usb_caiaq_tks4_dispatch()
445 /* Channel C EQ - Hi */ in snd_usb_caiaq_tks4_dispatch()
447 /* FX1 - wet/dry */ in snd_usb_caiaq_tks4_dispatch()
449 /* FX1 - 1 */ in snd_usb_caiaq_tks4_dispatch()
451 /* FX1 - 2 */ in snd_usb_caiaq_tks4_dispatch()
453 /* FX1 - 3 */ in snd_usb_caiaq_tks4_dispatch()
464 len -= TKS4_MSGBLOCK_SIZE; in snd_usb_caiaq_tks4_dispatch()
468 input_sync(cdev->input_dev); in snd_usb_caiaq_tks4_dispatch()
482 input_report_abs(cdev->input_dev, MASCHINE_PAD(pad_id), in snd_usb_caiaq_maschine_dispatch()
487 input_sync(cdev->input_dev); in snd_usb_caiaq_maschine_dispatch()
492 struct snd_usb_caiaqdev *cdev = urb->context; in snd_usb_caiaq_ep4_reply_dispatch()
493 unsigned char *buf = urb->transfer_buffer; in snd_usb_caiaq_ep4_reply_dispatch()
494 struct device *dev = &urb->dev->dev; in snd_usb_caiaq_ep4_reply_dispatch()
497 if (urb->status || !cdev || urb != cdev->ep4_in_urb) in snd_usb_caiaq_ep4_reply_dispatch()
500 switch (cdev->chip.usb_id) { in snd_usb_caiaq_ep4_reply_dispatch()
502 if (urb->actual_length < 24) in snd_usb_caiaq_ep4_reply_dispatch()
514 snd_usb_caiaq_tks4_dispatch(cdev, buf, urb->actual_length); in snd_usb_caiaq_ep4_reply_dispatch()
518 if (urb->actual_length < (MASCHINE_PADS * MASCHINE_MSGBLOCK_SIZE)) in snd_usb_caiaq_ep4_reply_dispatch()
521 snd_usb_caiaq_maschine_dispatch(cdev, buf, urb->actual_length); in snd_usb_caiaq_ep4_reply_dispatch()
526 cdev->ep4_in_urb->actual_length = 0; in snd_usb_caiaq_ep4_reply_dispatch()
527 ret = usb_submit_urb(cdev->ep4_in_urb, GFP_ATOMIC); in snd_usb_caiaq_ep4_reply_dispatch()
537 return -EINVAL; in snd_usb_caiaq_input_open()
539 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_open()
543 if (usb_submit_urb(cdev->ep4_in_urb, GFP_KERNEL) != 0) in snd_usb_caiaq_input_open()
544 return -EIO; in snd_usb_caiaq_input_open()
558 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_close()
562 usb_kill_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_close()
571 if (!cdev->input_dev || len < 1) in snd_usb_caiaq_input_dispatch()
576 snd_caiaq_input_read_analog(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
579 snd_caiaq_input_read_erp(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
582 snd_caiaq_input_read_io(cdev, buf + 1, len - 1); in snd_usb_caiaq_input_dispatch()
589 struct usb_device *usb_dev = cdev->chip.dev; in snd_usb_caiaq_input_init()
595 return -ENOMEM; in snd_usb_caiaq_input_init()
597 usb_make_path(usb_dev, cdev->phys, sizeof(cdev->phys)); in snd_usb_caiaq_input_init()
598 strlcat(cdev->phys, "/input0", sizeof(cdev->phys)); in snd_usb_caiaq_input_init()
600 input->name = cdev->product_name; in snd_usb_caiaq_input_init()
601 input->phys = cdev->phys; in snd_usb_caiaq_input_init()
602 usb_to_input_id(usb_dev, &input->id); in snd_usb_caiaq_input_init()
603 input->dev.parent = &usb_dev->dev; in snd_usb_caiaq_input_init()
607 switch (cdev->chip.usb_id) { in snd_usb_caiaq_input_init()
609 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
610 input->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | in snd_usb_caiaq_input_init()
612 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk2)); in snd_usb_caiaq_input_init()
613 memcpy(cdev->keycode, keycode_rk2, sizeof(keycode_rk2)); in snd_usb_caiaq_input_init()
614 input->keycodemax = ARRAY_SIZE(keycode_rk2); in snd_usb_caiaq_input_init()
621 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
622 input->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | in snd_usb_caiaq_input_init()
624 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_rk3)); in snd_usb_caiaq_input_init()
625 memcpy(cdev->keycode, keycode_rk3, sizeof(keycode_rk3)); in snd_usb_caiaq_input_init()
626 input->keycodemax = ARRAY_SIZE(keycode_rk3); in snd_usb_caiaq_input_init()
633 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
634 input->absbit[0] = BIT_MASK(ABS_X); in snd_usb_caiaq_input_init()
635 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_ak1)); in snd_usb_caiaq_input_init()
636 memcpy(cdev->keycode, keycode_ak1, sizeof(keycode_ak1)); in snd_usb_caiaq_input_init()
637 input->keycodemax = ARRAY_SIZE(keycode_ak1); in snd_usb_caiaq_input_init()
643 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
644 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
650 input->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC); in snd_usb_caiaq_input_init()
651 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_kore)); in snd_usb_caiaq_input_init()
652 memcpy(cdev->keycode, keycode_kore, sizeof(keycode_kore)); in snd_usb_caiaq_input_init()
653 input->keycodemax = ARRAY_SIZE(keycode_kore); in snd_usb_caiaq_input_init()
669 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
670 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
676 input->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC); in snd_usb_caiaq_input_init()
677 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLX1_INPUTS); in snd_usb_caiaq_input_init()
679 cdev->keycode[i] = BTN_MISC + i; in snd_usb_caiaq_input_init()
680 input->keycodemax = KONTROLX1_INPUTS; in snd_usb_caiaq_input_init()
692 /* rotary encoders */ in snd_usb_caiaq_input_init()
698 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
699 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
700 ret = -ENOMEM; in snd_usb_caiaq_input_init()
704 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
706 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
708 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
717 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
718 BUILD_BUG_ON(sizeof(cdev->keycode) < KONTROLS4_BUTTONS); in snd_usb_caiaq_input_init()
720 cdev->keycode[i] = KONTROLS4_BUTTON(i); in snd_usb_caiaq_input_init()
721 input->keycodemax = KONTROLS4_BUTTONS; in snd_usb_caiaq_input_init()
725 input->absbit[BIT_WORD(axis)] |= BIT_MASK(axis); in snd_usb_caiaq_input_init()
732 /* 2 encoder wheels */ in snd_usb_caiaq_input_init()
736 /* 9 rotary encoders */ in snd_usb_caiaq_input_init()
740 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
741 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
742 ret = -ENOMEM; in snd_usb_caiaq_input_init()
746 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
748 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
750 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
759 input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in snd_usb_caiaq_input_init()
760 input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) | in snd_usb_caiaq_input_init()
767 BUILD_BUG_ON(sizeof(cdev->keycode) < sizeof(keycode_maschine)); in snd_usb_caiaq_input_init()
768 memcpy(cdev->keycode, keycode_maschine, sizeof(keycode_maschine)); in snd_usb_caiaq_input_init()
769 input->keycodemax = ARRAY_SIZE(keycode_maschine); in snd_usb_caiaq_input_init()
772 input->absbit[0] |= MASCHINE_PAD(i); in snd_usb_caiaq_input_init()
788 cdev->ep4_in_urb = usb_alloc_urb(0, GFP_KERNEL); in snd_usb_caiaq_input_init()
789 if (!cdev->ep4_in_urb) { in snd_usb_caiaq_input_init()
790 ret = -ENOMEM; in snd_usb_caiaq_input_init()
794 usb_fill_bulk_urb(cdev->ep4_in_urb, usb_dev, in snd_usb_caiaq_input_init()
796 cdev->ep4_in_buf, EP4_BUFSIZE, in snd_usb_caiaq_input_init()
798 ret = usb_urb_ep_type_check(cdev->ep4_in_urb); in snd_usb_caiaq_input_init()
807 ret = -EINVAL; in snd_usb_caiaq_input_init()
811 input->open = snd_usb_caiaq_input_open; in snd_usb_caiaq_input_init()
812 input->close = snd_usb_caiaq_input_close; in snd_usb_caiaq_input_init()
813 input->keycode = cdev->keycode; in snd_usb_caiaq_input_init()
814 input->keycodesize = sizeof(unsigned short); in snd_usb_caiaq_input_init()
815 for (i = 0; i < input->keycodemax; i++) in snd_usb_caiaq_input_init()
816 __set_bit(cdev->keycode[i], input->keybit); in snd_usb_caiaq_input_init()
818 cdev->input_dev = input; in snd_usb_caiaq_input_init()
828 cdev->input_dev = NULL; in snd_usb_caiaq_input_init()
834 if (!cdev || !cdev->input_dev) in snd_usb_caiaq_input_disconnect()
837 usb_kill_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_disconnect()
838 input_unregister_device(cdev->input_dev); in snd_usb_caiaq_input_disconnect()
843 if (!cdev || !cdev->input_dev) in snd_usb_caiaq_input_free()
846 usb_free_urb(cdev->ep4_in_urb); in snd_usb_caiaq_input_free()
847 cdev->ep4_in_urb = NULL; in snd_usb_caiaq_input_free()
848 cdev->input_dev = NULL; in snd_usb_caiaq_input_free()