This source file includes following definitions.
- atamouse_interrupt
- atamouse_open
- atamouse_close
- atamouse_init
- atamouse_exit
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 #include <linux/module.h>
  39 #include <linux/init.h>
  40 #include <linux/input.h>
  41 #include <linux/interrupt.h>
  42 
  43 #include <asm/irq.h>
  44 #include <asm/setup.h>
  45 #include <linux/uaccess.h>
  46 #include <asm/atarihw.h>
  47 #include <asm/atarikb.h>
  48 #include <asm/atariints.h>
  49 
  50 MODULE_AUTHOR("Michael Schmitz <schmitz@biophys.uni-duesseldorf.de>");
  51 MODULE_DESCRIPTION("Atari mouse driver");
  52 MODULE_LICENSE("GPL");
  53 
  54 static int mouse_threshold[2] = {2, 2};
  55 module_param_array(mouse_threshold, int, NULL, 0);
  56 
  57 #ifdef FIXED_ATARI_JOYSTICK
  58 extern int atari_mouse_buttons;
  59 #endif
  60 
  61 static struct input_dev *atamouse_dev;
  62 
  63 static void atamouse_interrupt(char *buf)
  64 {
  65         int buttons, dx, dy;
  66 
  67         buttons = (buf[0] & 1) | ((buf[0] & 2) << 1);
  68 #ifdef FIXED_ATARI_JOYSTICK
  69         buttons |= atari_mouse_buttons & 2;
  70         atari_mouse_buttons = buttons;
  71 #endif
  72 
  73         
  74         dx = buf[1];
  75         dy = buf[2];
  76 
  77         input_report_rel(atamouse_dev, REL_X, dx);
  78         input_report_rel(atamouse_dev, REL_Y, dy);
  79 
  80         input_report_key(atamouse_dev, BTN_LEFT,   buttons & 0x4);
  81         input_report_key(atamouse_dev, BTN_MIDDLE, buttons & 0x2);
  82         input_report_key(atamouse_dev, BTN_RIGHT,  buttons & 0x1);
  83 
  84         input_sync(atamouse_dev);
  85 
  86         return;
  87 }
  88 
  89 static int atamouse_open(struct input_dev *dev)
  90 {
  91 #ifdef FIXED_ATARI_JOYSTICK
  92         atari_mouse_buttons = 0;
  93 #endif
  94         ikbd_mouse_y0_top();
  95         ikbd_mouse_thresh(mouse_threshold[0], mouse_threshold[1]);
  96         ikbd_mouse_rel_pos();
  97         atari_input_mouse_interrupt_hook = atamouse_interrupt;
  98 
  99         return 0;
 100 }
 101 
 102 static void atamouse_close(struct input_dev *dev)
 103 {
 104         ikbd_mouse_disable();
 105         atari_input_mouse_interrupt_hook = NULL;
 106 }
 107 
 108 static int __init atamouse_init(void)
 109 {
 110         int error;
 111 
 112         if (!MACH_IS_ATARI || !ATARIHW_PRESENT(ST_MFP))
 113                 return -ENODEV;
 114 
 115         error = atari_keyb_init();
 116         if (error)
 117                 return error;
 118 
 119         atamouse_dev = input_allocate_device();
 120         if (!atamouse_dev)
 121                 return -ENOMEM;
 122 
 123         atamouse_dev->name = "Atari mouse";
 124         atamouse_dev->phys = "atamouse/input0";
 125         atamouse_dev->id.bustype = BUS_HOST;
 126         atamouse_dev->id.vendor = 0x0001;
 127         atamouse_dev->id.product = 0x0002;
 128         atamouse_dev->id.version = 0x0100;
 129 
 130         atamouse_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
 131         atamouse_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y);
 132         atamouse_dev->keybit[BIT_WORD(BTN_LEFT)] = BIT_MASK(BTN_LEFT) |
 133                 BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT);
 134 
 135         atamouse_dev->open = atamouse_open;
 136         atamouse_dev->close = atamouse_close;
 137 
 138         error = input_register_device(atamouse_dev);
 139         if (error) {
 140                 input_free_device(atamouse_dev);
 141                 return error;
 142         }
 143 
 144         return 0;
 145 }
 146 
 147 static void __exit atamouse_exit(void)
 148 {
 149         input_unregister_device(atamouse_dev);
 150 }
 151 
 152 module_init(atamouse_init);
 153 module_exit(atamouse_exit);