Lines Matching defs:analog

45 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
97 struct analog {
107 struct analog analog[2];
183 * analog_decode() decodes analog joystick data and reports input events.
186 static void analog_decode(struct analog *analog, int *axes, int *initial, int buttons)
188 struct input_dev *dev = analog->dev;
191 if (analog->mask & ANALOG_HAT_FCS)
199 if (analog->mask & (0x10 << i))
200 input_report_key(dev, analog->buttons[j++], (buttons >> i) & 1);
202 if (analog->mask & ANALOG_HBTN_CHF)
204 input_report_key(dev, analog->buttons[j++], (buttons >> (i + 10)) & 1);
206 if (analog->mask & ANALOG_BTN_TL)
208 if (analog->mask & ANALOG_BTN_TR)
210 if (analog->mask & ANALOG_BTN_TL2)
212 if (analog->mask & ANALOG_BTN_TR2)
216 if (analog->mask & (1 << i))
220 if (analog->mask & analog_exts[i]) {
231 * analog_cooked_read() reads analog joystick data.
321 char saitek = !!(port->analog[0].mask & ANALOG_SAITEK);
322 char chf = !!(port->analog[0].mask & ANALOG_ANY_CHF);
342 if (port->analog[i].mask)
343 analog_decode(port->analog + i, port->axes, port->initial, port->buttons);
417 * analog_name() constructs a name for an analog joystick.
420 static void analog_name(struct analog *analog)
422 snprintf(analog->name, sizeof(analog->name), "Analog %d-axis %d-button",
423 hweight8(analog->mask & ANALOG_AXES_STD),
424 hweight8(analog->mask & ANALOG_BTNS_STD) + !!(analog->mask & ANALOG_BTNS_CHF) * 2 +
425 hweight16(analog->mask & ANALOG_BTNS_GAMEPAD) + !!(analog->mask & ANALOG_HBTN_CHF) * 4);
427 if (analog->mask & ANALOG_HATS_ALL)
428 snprintf(analog->name, sizeof(analog->name), "%s %d-hat",
429 analog->name, hweight16(analog->mask & ANALOG_HATS_ALL));
431 if (analog->mask & ANALOG_HAT_FCS)
432 strlcat(analog->name, " FCS", sizeof(analog->name));
433 if (analog->mask & ANALOG_ANY_CHF)
434 strlcat(analog->name, (analog->mask & ANALOG_SAITEK) ? " Saitek" : " CHF",
435 sizeof(analog->name));
437 strlcat(analog->name, (analog->mask & ANALOG_GAMEPAD) ? " gamepad": " joystick",
438 sizeof(analog->name));
445 static int analog_init_device(struct analog_port *port, struct analog *analog, int index)
451 analog_name(analog);
452 snprintf(analog->phys, sizeof(analog->phys),
454 analog->buttons = (analog->mask & ANALOG_GAMEPAD) ? analog_pad_btn : analog_joy_btn;
456 analog->dev = input_dev = input_allocate_device();
460 input_dev->name = analog->name;
461 input_dev->phys = analog->phys;
464 input_dev->id.product = analog->mask >> 4;
476 if (analog->mask & (1 << i)) {
489 if (analog->mask & ANALOG_SAITEK) {
500 if (analog->mask & analog_exts[i])
507 if (analog->mask & (0x10 << i))
508 set_bit(analog->buttons[j++], input_dev->keybit);
510 if (analog->mask & ANALOG_BTNS_CHF)
512 set_bit(analog->buttons[j++], input_dev->keybit);
514 if (analog->mask & ANALOG_HBTN_CHF)
516 set_bit(analog->buttons[j++], input_dev->keybit);
519 if (analog->mask & (ANALOG_BTN_TL << i))
522 analog_decode(analog, port->axes, port->initial, port->buttons);
524 error = input_register_device(analog->dev);
526 input_free_device(analog->dev);
540 struct analog *analog = port->analog;
547 printk(KERN_WARNING "analog.c: Unknown joystick device found "
548 "(data=%#x, %s), probably not analog joystick.\n",
556 analog[0].mask = i & 0xfffff;
558 analog[0].mask &= ~(ANALOG_AXES_STD | ANALOG_HAT_FCS | ANALOG_BTNS_GAMEPAD)
562 analog[0].mask &= ~(ANALOG_HAT2_CHF)
563 | ((analog[0].mask & ANALOG_HBTN_CHF) ? 0 : ANALOG_HAT2_CHF);
565 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_BTN_TR | ANALOG_BTN_TR2)
566 | ((~analog[0].mask & ANALOG_HAT_FCS) >> 8)
567 | ((~analog[0].mask & ANALOG_HAT_FCS) << 2)
568 | ((~analog[0].mask & ANALOG_HAT_FCS) << 4);
570 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_RUDDER)
571 | (((~analog[0].mask & ANALOG_BTNS_TLR ) >> 10)
572 & ((~analog[0].mask & ANALOG_BTNS_TLR2) >> 12));
574 analog[1].mask = ((i >> 20) & 0xff) | ((i >> 12) & 0xf0000);
576 analog[1].mask &= (analog[0].mask & ANALOG_EXTENSIONS) ? ANALOG_GAMEPAD
577 : (((ANALOG_BTNS_STD | port->mask) & ~analog[0].mask) | ANALOG_GAMEPAD);
583 if ((analog[0].mask & 0x7) == 0x7) max[2] = (max[0] + max[1]) >> 1;
584 if ((analog[0].mask & 0xb) == 0xb) max[3] = (max[0] + max[1]) >> 1;
585 if ((analog[0].mask & ANALOG_BTN_TL) && !(analog[0].mask & ANALOG_BTN_TL2)) max[2] >>= 1;
586 if ((analog[0].mask & ANALOG_BTN_TR) && !(analog[0].mask & ANALOG_BTN_TR2)) max[3] >>= 1;
587 if ((analog[0].mask & ANALOG_HAT_FCS)) max[3] >>= 1;
595 return -!(analog[0].mask || analog[1].mask);
682 if (port->analog[i].mask) {
683 err = analog_init_device(port, port->analog + i, i);
691 if (port->analog[i].mask)
692 input_unregister_device(port->analog[i].dev);
705 if (port->analog[i].mask)
706 input_unregister_device(port->analog[i].dev);
709 printk(KERN_INFO "analog.c: %d out of %d reads (%d%%) on %s failed\n",
754 printk(KERN_WARNING "analog.c: Bad config for port %d - \"%s\"\n", i, js[i]);
767 .name = "analog",