diff options
Diffstat (limited to 'drivers/input/mouse/maplemouse.c')
-rw-r--r-- | drivers/input/mouse/maplemouse.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/drivers/input/mouse/maplemouse.c b/drivers/input/mouse/maplemouse.c deleted file mode 100644 index b5b34fe4fee8..000000000000 --- a/drivers/input/mouse/maplemouse.c +++ /dev/null | |||
@@ -1,101 +0,0 @@ | |||
1 | /* | ||
2 | * $Id: maplemouse.c,v 1.2 2004/03/22 01:18:15 lethal Exp $ | ||
3 | * SEGA Dreamcast mouse driver | ||
4 | * Based on drivers/usb/usbmouse.c | ||
5 | */ | ||
6 | |||
7 | #include <linux/kernel.h> | ||
8 | #include <linux/slab.h> | ||
9 | #include <linux/input.h> | ||
10 | #include <linux/module.h> | ||
11 | #include <linux/init.h> | ||
12 | #include <linux/timer.h> | ||
13 | #include <linux/maple.h> | ||
14 | |||
15 | MODULE_AUTHOR("YAEGASHI Takeshi <t@keshi.org>"); | ||
16 | MODULE_DESCRIPTION("SEGA Dreamcast mouse driver"); | ||
17 | |||
18 | static void dc_mouse_callback(struct mapleq *mq) | ||
19 | { | ||
20 | int buttons, relx, rely, relz; | ||
21 | struct maple_device *mapledev = mq->dev; | ||
22 | struct input_dev *dev = mapledev->private_data; | ||
23 | unsigned char *res = mq->recvbuf; | ||
24 | |||
25 | buttons = ~res[8]; | ||
26 | relx = *(unsigned short *)(res + 12) - 512; | ||
27 | rely = *(unsigned short *)(res + 14) - 512; | ||
28 | relz = *(unsigned short *)(res + 16) - 512; | ||
29 | |||
30 | input_report_key(dev, BTN_LEFT, buttons & 4); | ||
31 | input_report_key(dev, BTN_MIDDLE, buttons & 9); | ||
32 | input_report_key(dev, BTN_RIGHT, buttons & 2); | ||
33 | input_report_rel(dev, REL_X, relx); | ||
34 | input_report_rel(dev, REL_Y, rely); | ||
35 | input_report_rel(dev, REL_WHEEL, relz); | ||
36 | input_sync(dev); | ||
37 | } | ||
38 | |||
39 | static int dc_mouse_connect(struct maple_device *dev) | ||
40 | { | ||
41 | unsigned long data = be32_to_cpu(dev->devinfo.function_data[0]); | ||
42 | struct input_dev *input_dev; | ||
43 | |||
44 | dev->private_data = input_dev = input_allocate_device(); | ||
45 | if (!input_dev) | ||
46 | return -ENOMEM; | ||
47 | |||
48 | dev->private_data = input_dev; | ||
49 | |||
50 | input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REL); | ||
51 | input_dev->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE); | ||
52 | input_dev->relbit[0] = BIT(REL_X) | BIT(REL_Y) | BIT(REL_WHEEL); | ||
53 | |||
54 | input_dev->name = dev->product_name; | ||
55 | input_dev->id.bustype = BUS_MAPLE; | ||
56 | |||
57 | input_register_device(input_dev); | ||
58 | |||
59 | maple_getcond_callback(dev, dc_mouse_callback, 1, MAPLE_FUNC_MOUSE); | ||
60 | |||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | |||
65 | static void dc_mouse_disconnect(struct maple_device *dev) | ||
66 | { | ||
67 | struct input_dev *input_dev = dev->private_data; | ||
68 | |||
69 | input_unregister_device(input_dev); | ||
70 | } | ||
71 | |||
72 | |||
73 | static struct maple_driver dc_mouse_driver = { | ||
74 | .function = MAPLE_FUNC_MOUSE, | ||
75 | .name = "Dreamcast mouse", | ||
76 | .connect = dc_mouse_connect, | ||
77 | .disconnect = dc_mouse_disconnect, | ||
78 | }; | ||
79 | |||
80 | |||
81 | static int __init dc_mouse_init(void) | ||
82 | { | ||
83 | maple_register_driver(&dc_mouse_driver); | ||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | |||
88 | static void __exit dc_mouse_exit(void) | ||
89 | { | ||
90 | maple_unregister_driver(&dc_mouse_driver); | ||
91 | } | ||
92 | |||
93 | |||
94 | module_init(dc_mouse_init); | ||
95 | module_exit(dc_mouse_exit); | ||
96 | |||
97 | /* | ||
98 | * Local variables: | ||
99 | * c-basic-offset: 8 | ||
100 | * End: | ||
101 | */ | ||