Lines Matching refs:analog

39 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
91 struct analog {
101 struct analog analog[2];
116 * analog_decode() decodes analog joystick data and reports input events.
119 static void analog_decode(struct analog *analog, int *axes, int *initial, int buttons)
121 struct input_dev *dev = analog->dev;
124 if (analog->mask & ANALOG_HAT_FCS)
132 if (analog->mask & (0x10 << i))
133 input_report_key(dev, analog->buttons[j++], (buttons >> i) & 1);
135 if (analog->mask & ANALOG_HBTN_CHF)
137 input_report_key(dev, analog->buttons[j++], (buttons >> (i + 10)) & 1);
139 if (analog->mask & ANALOG_BTN_TL)
141 if (analog->mask & ANALOG_BTN_TR)
143 if (analog->mask & ANALOG_BTN_TL2)
145 if (analog->mask & ANALOG_BTN_TR2)
149 if (analog->mask & (1 << i))
153 if (analog->mask & analog_exts[i]) {
164 * analog_cooked_read() reads analog joystick data.
254 char saitek = !!(port->analog[0].mask & ANALOG_SAITEK);
255 char chf = !!(port->analog[0].mask & ANALOG_ANY_CHF);
275 if (port->analog[i].mask)
276 analog_decode(port->analog + i, port->axes, port->initial, port->buttons);
334 * analog_name() constructs a name for an analog joystick.
337 static void analog_name(struct analog *analog)
341 seq_buf_init(&s, analog->name, sizeof(analog->name));
343 hweight8(analog->mask & ANALOG_AXES_STD),
344 hweight8(analog->mask & ANALOG_BTNS_STD) + !!(analog->mask & ANALOG_BTNS_CHF) * 2 +
345 hweight16(analog->mask & ANALOG_BTNS_GAMEPAD) + !!(analog->mask & ANALOG_HBTN_CHF) * 4);
347 if (analog->mask & ANALOG_HATS_ALL)
349 hweight16(analog->mask & ANALOG_HATS_ALL));
351 if (analog->mask & ANALOG_HAT_FCS)
353 if (analog->mask & ANALOG_ANY_CHF)
354 seq_buf_printf(&s, (analog->mask & ANALOG_SAITEK) ? " Saitek" : " CHF");
356 seq_buf_printf(&s, (analog->mask & ANALOG_GAMEPAD) ? " gamepad" : " joystick");
363 static int analog_init_device(struct analog_port *port, struct analog *analog, int index)
369 analog_name(analog);
370 snprintf(analog->phys, sizeof(analog->phys),
372 analog->buttons = (analog->mask & ANALOG_GAMEPAD) ? analog_pad_btn : analog_joy_btn;
374 analog->dev = input_dev = input_allocate_device();
378 input_dev->name = analog->name;
379 input_dev->phys = analog->phys;
382 input_dev->id.product = analog->mask >> 4;
394 if (analog->mask & (1 << i)) {
407 if (analog->mask & ANALOG_SAITEK) {
418 if (analog->mask & analog_exts[i])
425 if (analog->mask & (0x10 << i))
426 set_bit(analog->buttons[j++], input_dev->keybit);
428 if (analog->mask & ANALOG_BTNS_CHF)
430 set_bit(analog->buttons[j++], input_dev->keybit);
432 if (analog->mask & ANALOG_HBTN_CHF)
434 set_bit(analog->buttons[j++], input_dev->keybit);
437 if (analog->mask & (ANALOG_BTN_TL << i))
440 analog_decode(analog, port->axes, port->initial, port->buttons);
442 error = input_register_device(analog->dev);
444 input_free_device(analog->dev);
458 struct analog *analog = port->analog;
465 printk(KERN_WARNING "analog.c: Unknown joystick device found "
466 "(data=%#x, %s), probably not analog joystick.\n",
474 analog[0].mask = i & 0xfffff;
476 analog[0].mask &= ~(ANALOG_AXES_STD | ANALOG_HAT_FCS | ANALOG_BTNS_GAMEPAD)
480 analog[0].mask &= ~(ANALOG_HAT2_CHF)
481 | ((analog[0].mask & ANALOG_HBTN_CHF) ? 0 : ANALOG_HAT2_CHF);
483 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_BTN_TR | ANALOG_BTN_TR2)
484 | ((~analog[0].mask & ANALOG_HAT_FCS) >> 8)
485 | ((~analog[0].mask & ANALOG_HAT_FCS) << 2)
486 | ((~analog[0].mask & ANALOG_HAT_FCS) << 4);
488 analog[0].mask &= ~(ANALOG_THROTTLE | ANALOG_RUDDER)
489 | (((~analog[0].mask & ANALOG_BTNS_TLR ) >> 10)
490 & ((~analog[0].mask & ANALOG_BTNS_TLR2) >> 12));
492 analog[1].mask = ((i >> 20) & 0xff) | ((i >> 12) & 0xf0000);
494 analog[1].mask &= (analog[0].mask & ANALOG_EXTENSIONS) ? ANALOG_GAMEPAD
495 : (((ANALOG_BTNS_STD | port->mask) & ~analog[0].mask) | ANALOG_GAMEPAD);
501 if ((analog[0].mask & 0x7) == 0x7) max[2] = (max[0] + max[1]) >> 1;
502 if ((analog[0].mask & 0xb) == 0xb) max[3] = (max[0] + max[1]) >> 1;
503 if ((analog[0].mask & ANALOG_BTN_TL) && !(analog[0].mask & ANALOG_BTN_TL2)) max[2] >>= 1;
504 if ((analog[0].mask & ANALOG_BTN_TR) && !(analog[0].mask & ANALOG_BTN_TR2)) max[3] >>= 1;
505 if ((analog[0].mask & ANALOG_HAT_FCS)) max[3] >>= 1;
513 return -!(analog[0].mask || analog[1].mask);
600 if (port->analog[i].mask) {
601 err = analog_init_device(port, port->analog + i, i);
609 if (port->analog[i].mask)
610 input_unregister_device(port->analog[i].dev);
623 if (port->analog[i].mask)
624 input_unregister_device(port->analog[i].dev);
627 printk(KERN_INFO "analog.c: %d out of %d reads (%d%%) on %s failed\n",
672 printk(KERN_WARNING "analog.c: Bad config for port %d - \"%s\"\n", i, js[i]);
685 .name = "analog",