2 * linux/kernel/chr_drv/mouse.c
4 * Generic mouse open routine by Johan Myreen
6 * Based on code from Linus
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.
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.
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>
25 * note that you can remove any or all of the drivers by undefining
26 * the minor values in <linux/mouse.h>
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
;
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);
38 static int mouse_open(struct inode
* inode
, struct file
* file
)
40 int minor
= MINOR(inode
->i_rdev
);
43 #ifdef CONFIG_BUSMOUSE
45 file
->f_op
= &bus_mouse_fops
;
48 #if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE
50 file
->f_op
= &psaux_fops
;
53 #ifdef CONFIG_MS_BUSMOUSE
54 case MS_BUSMOUSE_MINOR
:
55 file
->f_op
= &ms_bus_mouse_fops
;
58 #ifdef CONFIG_ATIXL_BUSMOUSE
59 case ATIXL_BUSMOUSE_MINOR
:
60 file
->f_op
= &atixl_busmouse_fops
;
66 return file
->f_op
->open(inode
,file
);
69 static struct file_operations mouse_fops
= {
81 unsigned long mouse_init(unsigned long kmem_start
)
83 #ifdef CONFIG_BUSMOUSE
84 kmem_start
= bus_mouse_init(kmem_start
);
86 #if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE
87 kmem_start
= psaux_init(kmem_start
);
89 #ifdef CONFIG_MS_BUSMOUSE
90 kmem_start
= ms_bus_mouse_init(kmem_start
);
92 #ifdef CONFIG_ATIXL_BUSMOUSE
93 kmem_start
= atixl_busmouse_init(kmem_start
);
95 if (register_chrdev(MOUSE_MAJOR
,"mouse",&mouse_fops
))
96 printk("unable to get major %d for mouse devices\n",