root/drivers/char/mouse.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mouse_open
  2. mouse_init

   1 /*
   2  * linux/kernel/chr_drv/mouse.c
   3  *
   4  * Generic mouse open routine by Johan Myreen
   5  *
   6  * Based on code from Linus
   7  *
   8  * Teemu Rantanen's Microsoft Busmouse support and Derrick Cole's
   9  *   changes incorporated into 0.97pl4
  10  *   by Peter Cervasio (pete%q106fm.uucp@wupost.wustl.edu) (08SEP92)
  11  *   See busmouse.c for particulars.
  12  *
  13  * Made things a lot mode modular - easy to compile in just one or two
  14  * of the mouse drivers, as they are now completely independent. Linus.
  15  */
  16 
  17 #include <linux/fs.h>
  18 #include <linux/errno.h>
  19 #include <linux/mouse.h>
  20 #include <linux/config.h>
  21 #include <linux/kernel.h>
  22 #include <linux/major.h>
  23 
  24 /*
  25  * note that you can remove any or all of the drivers by undefining
  26  * the minor values in <linux/mouse.h>
  27  */
  28 extern struct file_operations bus_mouse_fops;
  29 extern struct file_operations psaux_fops;
  30 extern struct file_operations ms_bus_mouse_fops;
  31 extern struct file_operations atixl_busmouse_fops;
  32 
  33 extern unsigned long bus_mouse_init(unsigned long);
  34 extern unsigned long psaux_init(unsigned long);
  35 extern unsigned long ms_bus_mouse_init(unsigned long);
  36 extern unsigned long atixl_busmouse_init(unsigned long);
  37 
  38 static int mouse_open(struct inode * inode, struct file * file)
     /* [previous][next][first][last][top][bottom][index][help] */
  39 {
  40         int minor = MINOR(inode->i_rdev);
  41 
  42         switch (minor) {
  43 #ifdef CONFIG_BUSMOUSE
  44                 case BUSMOUSE_MINOR:
  45                         file->f_op = &bus_mouse_fops;
  46                         break;
  47 #endif
  48 #if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE
  49                 case PSMOUSE_MINOR:
  50                         file->f_op = &psaux_fops;
  51                         break;
  52 #endif
  53 #ifdef CONFIG_MS_BUSMOUSE
  54                 case MS_BUSMOUSE_MINOR:
  55                         file->f_op = &ms_bus_mouse_fops;
  56                         break;
  57 #endif
  58 #ifdef CONFIG_ATIXL_BUSMOUSE
  59                 case ATIXL_BUSMOUSE_MINOR:
  60                         file->f_op = &atixl_busmouse_fops;
  61                         break;
  62 #endif
  63                 default:
  64                         return -ENODEV;
  65         }
  66         return file->f_op->open(inode,file);
  67 }
  68 
  69 static struct file_operations mouse_fops = {
  70         NULL,           /* seek */
  71         NULL,           /* read */
  72         NULL,           /* write */
  73         NULL,           /* readdir */
  74         NULL,           /* select */
  75         NULL,           /* ioctl */
  76         NULL,           /* mmap */
  77         mouse_open,
  78         NULL            /* release */
  79 };
  80 
  81 unsigned long mouse_init(unsigned long kmem_start)
     /* [previous][next][first][last][top][bottom][index][help] */
  82 {
  83 #ifdef CONFIG_BUSMOUSE
  84         kmem_start = bus_mouse_init(kmem_start);
  85 #endif
  86 #if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE
  87         kmem_start = psaux_init(kmem_start);
  88 #endif
  89 #ifdef CONFIG_MS_BUSMOUSE
  90         kmem_start = ms_bus_mouse_init(kmem_start);
  91 #endif
  92 #ifdef CONFIG_ATIXL_BUSMOUSE
  93         kmem_start = atixl_busmouse_init(kmem_start);
  94 #endif
  95         if (register_chrdev(MOUSE_MAJOR,"mouse",&mouse_fops))
  96                 printk("unable to get major %d for mouse devices\n",
  97                        MOUSE_MAJOR);
  98         return kmem_start;
  99 }

/* [previous][next][first][last][top][bottom][index][help] */