gamecon.c (5a84d159061d914c8dd4aa372ac6e9529c2be453) | gamecon.c (8715c1cfadf8cce24e79d254f95bd4a84c7741f0) |
---|---|
1/* 2 * NES, SNES, N64, MultiSystem, PSX gamepad driver for Linux 3 * 4 * Copyright (c) 1999-2004 Vojtech Pavlik <vojtech@suse.cz> 5 * Copyright (c) 2004 Peter Nelson <rufus-kernel@hackish.org> 6 * 7 * Based on the work of: 8 * Andree Borrmann John Dahlstrom --- 577 unchanged lines hidden (view full) --- 586 if (gc->pads[GC_PSX] || gc->pads[GC_DDR]) 587 gc_psx_process_packet(gc); 588 589 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME); 590} 591 592static int gc_open(struct input_dev *dev) 593{ | 1/* 2 * NES, SNES, N64, MultiSystem, PSX gamepad driver for Linux 3 * 4 * Copyright (c) 1999-2004 Vojtech Pavlik <vojtech@suse.cz> 5 * Copyright (c) 2004 Peter Nelson <rufus-kernel@hackish.org> 6 * 7 * Based on the work of: 8 * Andree Borrmann John Dahlstrom --- 577 unchanged lines hidden (view full) --- 586 if (gc->pads[GC_PSX] || gc->pads[GC_DDR]) 587 gc_psx_process_packet(gc); 588 589 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME); 590} 591 592static int gc_open(struct input_dev *dev) 593{ |
594 struct gc *gc = dev->private; | 594 struct gc *gc = input_get_drvdata(dev); |
595 int err; 596 597 err = mutex_lock_interruptible(&gc->mutex); 598 if (err) 599 return err; 600 601 if (!gc->used++) { 602 parport_claim(gc->pd); 603 parport_write_control(gc->pd->port, 0x04); 604 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME); 605 } 606 607 mutex_unlock(&gc->mutex); 608 return 0; 609} 610 611static void gc_close(struct input_dev *dev) 612{ | 595 int err; 596 597 err = mutex_lock_interruptible(&gc->mutex); 598 if (err) 599 return err; 600 601 if (!gc->used++) { 602 parport_claim(gc->pd); 603 parport_write_control(gc->pd->port, 0x04); 604 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME); 605 } 606 607 mutex_unlock(&gc->mutex); 608 return 0; 609} 610 611static void gc_close(struct input_dev *dev) 612{ |
613 struct gc *gc = dev->private; | 613 struct gc *gc = input_get_drvdata(dev); |
614 615 mutex_lock(&gc->mutex); 616 if (!--gc->used) { 617 del_timer_sync(&gc->timer); 618 parport_write_control(gc->pd->port, 0x00); 619 parport_release(gc->pd); 620 } 621 mutex_unlock(&gc->mutex); --- 19 unchanged lines hidden (view full) --- 641 } 642 643 input_dev->name = gc_names[pad_type]; 644 input_dev->phys = gc->phys[idx]; 645 input_dev->id.bustype = BUS_PARPORT; 646 input_dev->id.vendor = 0x0001; 647 input_dev->id.product = pad_type; 648 input_dev->id.version = 0x0100; | 614 615 mutex_lock(&gc->mutex); 616 if (!--gc->used) { 617 del_timer_sync(&gc->timer); 618 parport_write_control(gc->pd->port, 0x00); 619 parport_release(gc->pd); 620 } 621 mutex_unlock(&gc->mutex); --- 19 unchanged lines hidden (view full) --- 641 } 642 643 input_dev->name = gc_names[pad_type]; 644 input_dev->phys = gc->phys[idx]; 645 input_dev->id.bustype = BUS_PARPORT; 646 input_dev->id.vendor = 0x0001; 647 input_dev->id.product = pad_type; 648 input_dev->id.version = 0x0100; |
649 input_dev->private = gc; | |
650 | 649 |
650 input_set_drvdata(input_dev, gc); 651 |
|
651 input_dev->open = gc_open; 652 input_dev->close = gc_close; 653 654 if (pad_type != GC_SNESMOUSE) { 655 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); 656 657 for (i = 0; i < 2; i++) 658 input_set_abs_params(input_dev, ABS_X + i, -1, 1, 0, 0); --- 192 unchanged lines hidden --- | 652 input_dev->open = gc_open; 653 input_dev->close = gc_close; 654 655 if (pad_type != GC_SNESMOUSE) { 656 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); 657 658 for (i = 0; i < 2; i++) 659 input_set_abs_params(input_dev, ABS_X + i, -1, 1, 0, 0); --- 192 unchanged lines hidden --- |