• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/input/joystick/

Lines Matching defs:sw

115 struct sw {
216 #define GB(pos,num) sw_get_bits(buf, pos, num, sw->bits)
302 static int sw_parse(unsigned char *buf, struct sw *sw)
307 switch (sw->type) {
314 dev = sw->dev[0];
336 for (i = 0; i < sw->number; i ++) {
341 input_report_abs(sw->dev[i], ABS_X, GB(i*15+3,1) - GB(i*15+2,1));
342 input_report_abs(sw->dev[i], ABS_Y, GB(i*15+0,1) - GB(i*15+1,1));
345 input_report_key(sw->dev[i], sw_btn[SW_ID_GP][j], !GB(i*15+j+4,1));
347 input_sync(sw->dev[i]);
358 dev = sw->dev[0];
379 dev = sw->dev[0];
404 dev = sw->dev[0];
426 static int sw_read(struct sw *sw)
431 i = sw_read_packet(sw->gameport, buf, sw->length, 0);
433 if (sw->type == SW_ID_3DP && sw->length == 66 && i != 66) { /* Broken packet, try to fix */
437 " - going to reinitialize.\n", sw->gameport->phys);
438 sw->fail = SW_FAIL; /* Reinitialize */
454 if (i == sw->length && !sw_parse(buf, sw)) { /* Parse data */
456 sw->fail = 0;
457 sw->ok++;
459 if (sw->type == SW_ID_3DP && sw->length == 66 /* Many packets OK */
460 && sw->ok > SW_OK) {
463 " - enabling optimization again.\n", sw->gameport->phys);
464 sw->length = 22;
470 sw->ok = 0;
471 sw->fail++;
473 if (sw->type == SW_ID_3DP && sw->length == 22 && sw->fail > SW_BAD) { /* Consecutive bad packets */
476 " - disabling optimization.\n", sw->gameport->phys);
477 sw->length = 66;
480 if (sw->fail < SW_FAIL)
484 " - reinitializing joystick.\n", sw->gameport->phys);
486 if (!i && sw->type == SW_ID_3DP) { /* 3D Pro can be in analog mode */
488 sw_init_digital(sw->gameport);
492 i = sw_read_packet(sw->gameport, buf, SW_LENGTH, 0); /* Read normal data packet */
494 sw_read_packet(sw->gameport, buf, SW_LENGTH, i); /* Read ID packet, this initializes the stick */
496 sw->fail = SW_FAIL;
503 struct sw *sw = gameport_get_drvdata(gameport);
505 sw->reads++;
506 if (sw_read(sw))
507 sw->bads++;
512 struct sw *sw = input_get_drvdata(dev);
514 gameport_start_polling(sw->gameport);
520 struct sw *sw = input_get_drvdata(dev);
522 gameport_stop_polling(sw->gameport);
589 struct sw *sw;
600 sw = kzalloc(sizeof(struct sw), GFP_KERNEL);
603 if (!sw || !buf || !idbuf) {
608 sw->gameport = gameport;
610 gameport_set_drvdata(gameport, sw);
653 sw->type = -1;
667 sw->number = 1;
668 sw->gameport = gameport;
669 sw->length = i;
670 sw->bits = m;
676 sw->number++;
680 sw->type = SW_ID_FSP;
683 sw->number++;
685 sw->number++;
687 sw->type = SW_ID_GP;
691 sw->type = SW_ID_FFW;
695 sw->type = SW_ID_FFP;
698 sw->type = SW_ID_PP;
701 sw->bits = 3;
703 sw->length = 22;
705 sw->type = SW_ID_3DP;
712 } while (k && sw->type == -1);
714 if (sw->type == -1) {
734 for (i = 0; i < sw->number; i++) {
737 snprintf(sw->name, sizeof(sw->name),
738 "Microsoft SideWinder %s", sw_name[sw->type]);
739 snprintf(sw->phys[i], sizeof(sw->phys[i]),
742 sw->dev[i] = input_dev = input_allocate_device();
748 input_dev->name = sw->name;
749 input_dev->phys = sw->phys[i];
752 input_dev->id.product = sw->type;
756 input_set_drvdata(input_dev, sw);
763 for (j = 0; (bits = sw_bit[sw->type][j]); j++) {
764 code = sw_abs[sw->type][j];
773 for (j = 0; (code = sw_btn[sw->type][j]); j++)
776 dbg("%s%s [%d-bit id %d data %d]\n", sw->name, comment, m, l, k);
778 err = input_register_device(sw->dev[i]);
788 fail4: input_free_device(sw->dev[i]);
790 input_unregister_device(sw->dev[i]);
793 kfree(sw);
799 struct sw *sw = gameport_get_drvdata(gameport);
802 for (i = 0; i < sw->number; i++)
803 input_unregister_device(sw->dev[i]);
806 kfree(sw);