• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/input/joystick/

Lines Matching refs:analog

2  * $Id: analog.c,v 1.1.1.1 2007/08/03 18:52:33 Exp $
59 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
111 struct analog {
121 struct analog analog[2];
178 * analog_decode() decodes analog joystick data and reports input events.
181 static void analog_decode(struct analog *analog, int *axes, int *initial, int buttons)
183 struct input_dev *dev = analog->dev;
186 if (analog->mask & ANALOG_HAT_FCS)
194 if (analog->mask & (0x10 << i))
195 input_report_key(dev, analog->buttons[j++], (buttons >> i) & 1);
197 if (analog->mask & ANALOG_HBTN_CHF)
199 input_report_key(dev, analog->buttons[j++], (buttons >> (i + 10)) & 1);
201 if (analog->mask & ANALOG_BTN_TL)
203 if (analog->mask & ANALOG_BTN_TR)
205 if (analog->mask & ANALOG_BTN_TL2)
207 if (analog->mask & ANALOG_BTN_TR2)
211 if (analog->mask & (1 << i))
215 if (analog->mask & analog_exts[i]) {
226 * analog_cooked_read() reads analog joystick data.
315 char saitek = !!(port->analog[0].mask & ANALOG_SAITEK);
316 char chf = !!(port->analog[0].mask & ANALOG_ANY_CHF);
336 if (port->analog[i].mask)
337 analog_decode(port->analog + i, port->axes, port->initial, port->buttons);
403 * analog_name() constructs a name for an analog joystick.
406 static void analog_name(struct analog *analog)
408 snprintf(analog->name, sizeof(analog->name), "Analog %d-axis %d-button",
409 hweight8(analog->mask & ANALOG_AXES_STD),
410 hweight8(analog->mask & ANALOG_BTNS_STD) + !!(analog->mask & ANALOG_BTNS_CHF) * 2 +
411 hweight16(analog->mask & ANALOG_BTNS_GAMEPAD) + !!(analog->mask & ANALOG_HBTN_CHF) * 4);
413 if (analog->mask & ANALOG_HATS_ALL)
414 snprintf(analog->name, sizeof(analog->name), "%s %d-hat",
415 analog->name, hweight16(analog->mask & ANALOG_HATS_ALL));
417 if (analog->mask & ANALOG_HAT_FCS)
418 strlcat(analog->name, " FCS", sizeof(analog->name));
419 if (analog->mask & ANALOG_ANY_CHF)
420 strlcat(analog->name, (analog->mask & ANALOG_SAITEK) ? " Saitek" : " CHF",
421 sizeof(analog->name));
423 strlcat(analog->name, (analog->mask & ANALOG_GAMEPAD) ? " gamepad": " joystick",
424 sizeof(analog->name));
431 static int analog_init_device(struct analog_port *port, struct analog *analog, int index)
437 analog_name(analog);
438 snprintf(analog->phys, sizeof(analog->phys),
440 analog->buttons = (analog->mask & ANALOG_GAMEPAD) ? analog_pad_btn : analog_joy_btn;
442 analog->dev = input_dev = input_allocate_device();
446 input_dev->name = analog->name;
447 input_dev->phys = analog->phys;
450 input_dev->id.product = analog->mask >> 4;
462 if (analog->mask & (1 << i)) {
475 if (analog->mask & ANALOG_SAITEK) {
486 if (analog->mask & analog_exts[i])
493 if (analog->mask & (0x10 << i))
494 set_bit(analog->buttons[j++], input_dev->keybit);
496 if (analog->mask & ANALOG_BTNS_CHF)
498 set_bit(analog->buttons[j++], input_dev->keybit);
500 if (analog->mask & ANALOG_HBTN_CHF)
502 set_bit(analog->buttons[j++], input_dev->keybit);
505 if (analog->mask & (ANALOG_BTN_TL << i))
508 analog_decode(analog, port->axes, port->initial, port->buttons);
510 error = input_register_device(analog->dev);
512 input_free_device(analog->dev);
526 struct analog *analog = port->analog;
533 printk(KERN_WARNING "analog.c: Unknown joystick device found "
534 "(data=%#x, %s), probably not analog joystick.\n",
542 analog[0].mask = i & 0xfffff;
544 analog[0].mask &= ~(ANALOG_AXES_STD | ANALOG_HAT_FCS | ANALOG_BTNS_GAMEPAD)
548 analog[0].mask &= ~(ANALOG_HAT2_CHF)
549 | ((analog[0].mask & ANALOG_HBTN_CHF) ? 0 : ANALOG_HAT2_CHF);
551 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_BTN_TR | ANALOG_BTN_TR2)
552 | ((~analog[0].mask & ANALOG_HAT_FCS) >> 8)
553 | ((~analog[0].mask & ANALOG_HAT_FCS) << 2)
554 | ((~analog[0].mask & ANALOG_HAT_FCS) << 4);
556 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_RUDDER)
557 | (((~analog[0].mask & ANALOG_BTNS_TLR ) >> 10)
558 & ((~analog[0].mask & ANALOG_BTNS_TLR2) >> 12));
560 analog[1].mask = ((i >> 20) & 0xff) | ((i >> 12) & 0xf0000);
562 analog[1].mask &= (analog[0].mask & ANALOG_EXTENSIONS) ? ANALOG_GAMEPAD
563 : (((ANALOG_BTNS_STD | port->mask) & ~analog[0].mask) | ANALOG_GAMEPAD);
569 if ((analog[0].mask & 0x7) == 0x7) max[2] = (max[0] + max[1]) >> 1;
570 if ((analog[0].mask & 0xb) == 0xb) max[3] = (max[0] + max[1]) >> 1;
571 if ((analog[0].mask & ANALOG_BTN_TL) && !(analog[0].mask & ANALOG_BTN_TL2)) max[2] >>= 1;
572 if ((analog[0].mask & ANALOG_BTN_TR) && !(analog[0].mask & ANALOG_BTN_TR2)) max[3] >>= 1;
573 if ((analog[0].mask & ANALOG_HAT_FCS)) max[3] >>= 1;
581 return -!(analog[0].mask || analog[1].mask);
668 if (port->analog[i].mask) {
669 err = analog_init_device(port, port->analog + i, i);
677 if (port->analog[i].mask)
678 input_unregister_device(port->analog[i].dev);
691 if (port->analog[i].mask)
692 input_unregister_device(port->analog[i].dev);
695 printk(KERN_INFO "analog.c: %d out of %d reads (%d%%) on %s failed\n",
740 printk(KERN_WARNING "analog.c: Bad config for port %d - \"%s\"\n", i, js[i]);
753 .name = "analog",