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 --- |