grip_mp.c (292dd876ee765c478b27c93cc51e93a558ed58bf) grip_mp.c (127278ce2254c61f1346500374d61e33f74a8729)
1/*
2 * $Id: grip_mp.c,v 1.9 2002/07/20 19:28:45 bonnland Exp $
3 *
4 * Driver for the Gravis Grip Multiport, a gamepad "hub" that
5 * connects up to four 9-pin digital gamepads/joysticks.
6 * Driver tested on SMP and UP kernel versions 2.4.18-4 and 2.4.18-5.
7 *
8 * Thanks to Chris Gassib for helpful advice.

--- 409 unchanged lines hidden (view full) ---

418
419 if (port->mode == GRIP_MODE_RESET)
420 flags |= IO_SLOT_CHANGE;
421
422 port->mode = GRIP_MODE_GP;
423
424 if (!port->registered) {
425 dbg("New Grip pad in multiport slot %d.\n", slot);
1/*
2 * $Id: grip_mp.c,v 1.9 2002/07/20 19:28:45 bonnland Exp $
3 *
4 * Driver for the Gravis Grip Multiport, a gamepad "hub" that
5 * connects up to four 9-pin digital gamepads/joysticks.
6 * Driver tested on SMP and UP kernel versions 2.4.18-4 and 2.4.18-5.
7 *
8 * Thanks to Chris Gassib for helpful advice.

--- 409 unchanged lines hidden (view full) ---

418
419 if (port->mode == GRIP_MODE_RESET)
420 flags |= IO_SLOT_CHANGE;
421
422 port->mode = GRIP_MODE_GP;
423
424 if (!port->registered) {
425 dbg("New Grip pad in multiport slot %d.\n", slot);
426 register_slot(slot, grip);
426 if (register_slot(slot, grip)) {
427 port->mode = GRIP_MODE_RESET;
428 port->dirty = 0;
429 }
427 }
428 return flags;
429 }
430
431 /* Handle non-grip device codes. For now, just print diagnostics. */
432
433 {
434 static int strange_code = 0;

--- 145 unchanged lines hidden (view full) ---

580 * Tell the linux input layer about a newly plugged-in gamepad.
581 */
582
583static int register_slot(int slot, struct grip_mp *grip)
584{
585 struct grip_port *port = grip->port[slot];
586 struct input_dev *input_dev;
587 int j, t;
430 }
431 return flags;
432 }
433
434 /* Handle non-grip device codes. For now, just print diagnostics. */
435
436 {
437 static int strange_code = 0;

--- 145 unchanged lines hidden (view full) ---

583 * Tell the linux input layer about a newly plugged-in gamepad.
584 */
585
586static int register_slot(int slot, struct grip_mp *grip)
587{
588 struct grip_port *port = grip->port[slot];
589 struct input_dev *input_dev;
590 int j, t;
591 int err;
588
589 port->dev = input_dev = input_allocate_device();
590 if (!input_dev)
591 return -ENOMEM;
592
593 input_dev->name = grip_name[port->mode];
594 input_dev->id.bustype = BUS_GAMEPORT;
595 input_dev->id.vendor = GAMEPORT_ID_VENDOR_GRAVIS;

--- 9 unchanged lines hidden (view full) ---

605
606 for (j = 0; (t = grip_abs[port->mode][j]) >= 0; j++)
607 input_set_abs_params(input_dev, t, -1, 1, 0, 0);
608
609 for (j = 0; (t = grip_btn[port->mode][j]) >= 0; j++)
610 if (t > 0)
611 set_bit(t, input_dev->keybit);
612
592
593 port->dev = input_dev = input_allocate_device();
594 if (!input_dev)
595 return -ENOMEM;
596
597 input_dev->name = grip_name[port->mode];
598 input_dev->id.bustype = BUS_GAMEPORT;
599 input_dev->id.vendor = GAMEPORT_ID_VENDOR_GRAVIS;

--- 9 unchanged lines hidden (view full) ---

609
610 for (j = 0; (t = grip_abs[port->mode][j]) >= 0; j++)
611 input_set_abs_params(input_dev, t, -1, 1, 0, 0);
612
613 for (j = 0; (t = grip_btn[port->mode][j]) >= 0; j++)
614 if (t > 0)
615 set_bit(t, input_dev->keybit);
616
613 input_register_device(port->dev);
617 err = input_register_device(port->dev);
618 if (err) {
619 input_free_device(port->dev);
620 return err;
621 }
622
614 port->registered = 1;
615
616 if (port->dirty) /* report initial state, if any */
617 report_slot(grip, slot);
618
619 return 0;
620}
621

--- 73 unchanged lines hidden ---
623 port->registered = 1;
624
625 if (port->dirty) /* report initial state, if any */
626 report_slot(grip, slot);
627
628 return 0;
629}
630

--- 73 unchanged lines hidden ---