• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/joystick/

Lines Matching defs:gc

89 struct gc {
102 static struct gc *gc_base[3];
148 static void gc_n64_send_command(struct gc *gc, unsigned long cmd,
151 struct parport *port = gc->pd->port;
162 static void gc_n64_send_stop_bit(struct gc *gc, unsigned char target)
164 struct parport *port = gc->pd->port;
180 static void gc_n64_read_packet(struct gc *gc, unsigned char *data)
190 gc_n64_send_command(gc, GC_N64_REQUEST_DATA, GC_N64_OUT);
191 gc_n64_send_stop_bit(gc, GC_N64_OUT);
206 parport_write_data(gc->pd->port, GC_N64_POWER_R);
208 data[i] = parport_read_status(gc->pd->port);
209 parport_write_data(gc->pd->port, GC_N64_POWER_R | GC_N64_CLOCK);
220 static void gc_n64_process_packet(struct gc *gc)
227 gc_n64_read_packet(gc, data);
231 if (gc->pads[i].type != GC_N64)
234 dev = gc->pads[i].dev;
270 struct gc *gc = input_get_drvdata(dev);
283 gc_n64_send_command(gc, GC_N64_CMD_03, target);
284 gc_n64_send_command(gc, GC_N64_CMD_80, target);
285 gc_n64_send_command(gc, GC_N64_CMD_01, target);
287 gc_n64_send_command(gc, GC_N64_CMD_80, target);
288 gc_n64_send_stop_bit(gc, target);
293 gc_n64_send_command(gc, GC_N64_CMD_03, target);
294 gc_n64_send_command(gc, GC_N64_CMD_c0, target);
295 gc_n64_send_command(gc, GC_N64_CMD_1b, target);
297 gc_n64_send_command(gc, cmd, target);
298 gc_n64_send_stop_bit(gc, target);
356 static void gc_nes_read_packet(struct gc *gc, int length, unsigned char *data)
360 parport_write_data(gc->pd->port, GC_NES_POWER | GC_NES_CLOCK | GC_NES_LATCH);
362 parport_write_data(gc->pd->port, GC_NES_POWER | GC_NES_CLOCK);
366 parport_write_data(gc->pd->port, GC_NES_POWER);
367 data[i] = parport_read_status(gc->pd->port) ^ 0x7f;
369 parport_write_data(gc->pd->port, GC_NES_POWER | GC_NES_CLOCK);
373 static void gc_nes_process_packet(struct gc *gc)
381 len = gc->pad_count[GC_SNESMOUSE] ? GC_SNESMOUSE_LENGTH :
382 (gc->pad_count[GC_SNES] ? GC_SNES_LENGTH : GC_NES_LENGTH);
384 gc_nes_read_packet(gc, len, data);
388 pad = &gc->pads[i];
475 static void gc_multi_read_packet(struct gc *gc, int length, unsigned char *data)
480 parport_write_data(gc->pd->port, ~(1 << i));
481 data[i] = parport_read_status(gc->pd->port) ^ 0x7f;
485 static void gc_multi_process_packet(struct gc *gc)
488 int data_len = gc->pad_count[GC_MULTI2] ? GC_MULTI2_LENGTH : GC_MULTI_LENGTH;
493 gc_multi_read_packet(gc, data_len, data);
496 pad = &gc->pads[i];
566 static void gc_psx_command(struct gc *gc, int b, unsigned char *data)
568 struct parport *port = gc->pd->port;
581 struct gc_pad *pad = &gc->pads[j];
587 parport_write_data(gc->pd->port, cmd | GC_PSX_CLOCK | GC_PSX_POWER);
597 static void gc_psx_read_packet(struct gc *gc,
606 parport_write_data(gc->pd->port, GC_PSX_CLOCK | GC_PSX_SELECT | GC_PSX_POWER);
609 parport_write_data(gc->pd->port, GC_PSX_CLOCK | GC_PSX_POWER);
614 gc_psx_command(gc, 0x01, data2); /* Access pad */
615 gc_psx_command(gc, 0x42, id); /* Get device ids */
616 gc_psx_command(gc, 0, data2); /* Dump status */
620 struct gc_pad *pad = &gc->pads[i];
631 gc_psx_command(gc, 0, data2);
638 parport_write_data(gc->pd->port, GC_PSX_CLOCK | GC_PSX_SELECT | GC_PSX_POWER);
725 static void gc_psx_process_packet(struct gc *gc)
732 gc_psx_read_packet(gc, data, id);
735 pad = &gc->pads[i];
747 struct gc *gc = (void *) private;
753 if (gc->pad_count[GC_N64])
754 gc_n64_process_packet(gc);
760 if (gc->pad_count[GC_NES] ||
761 gc->pad_count[GC_SNES] ||
762 gc->pad_count[GC_SNESMOUSE]) {
763 gc_nes_process_packet(gc);
770 if (gc->pad_count[GC_MULTI] || gc->pad_count[GC_MULTI2])
771 gc_multi_process_packet(gc);
777 if (gc->pad_count[GC_PSX] || gc->pad_count[GC_DDR])
778 gc_psx_process_packet(gc);
780 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME);
785 struct gc *gc = input_get_drvdata(dev);
788 err = mutex_lock_interruptible(&gc->mutex);
792 if (!gc->used++) {
793 parport_claim(gc->pd);
794 parport_write_control(gc->pd->port, 0x04);
795 mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME);
798 mutex_unlock(&gc->mutex);
804 struct gc *gc = input_get_drvdata(dev);
806 mutex_lock(&gc->mutex);
807 if (!--gc->used) {
808 del_timer_sync(&gc->timer);
809 parport_write_control(gc->pd->port, 0x00);
810 parport_release(gc->pd);
812 mutex_unlock(&gc->mutex);
815 static int __init gc_setup_pad(struct gc *gc, int idx, int pad_type)
817 struct gc_pad *pad = &gc->pads[idx];
836 "%s/input%d", gc->pd->port->name, idx);
845 input_set_drvdata(input_dev, gc);
858 gc->pad_count[pad_type]++;
930 static struct gc __init *gc_probe(int parport, int *pads, int n_pads)
932 struct gc *gc;
953 gc = kzalloc(sizeof(struct gc), GFP_KERNEL);
954 if (!gc) {
960 mutex_init(&gc->mutex);
961 gc->pd = pd;
962 setup_timer(&gc->timer, gc_timer, (long) gc);
968 err = gc_setup_pad(gc, i, pads[i]);
982 return gc;
986 if (gc->pads[i].dev)
987 input_unregister_device(gc->pads[i].dev);
989 kfree(gc);
998 static void gc_remove(struct gc *gc)
1003 if (gc->pads[i].dev)
1004 input_unregister_device(gc->pads[i].dev);
1005 parport_unregister_device(gc->pd);
1006 kfree(gc);