29 #include <linux/types.h>
30 #include <linux/errno.h>
31 #include <linux/kernel.h>
32 #include <linux/module.h>
34 #include <linux/input.h>
45 static int amijoy[2] = { 0, 1 };
49 static int amijoy_used;
51 static struct input_dev *amijoy_dev[2];
52 static char *amijoy_phys[2] = {
"amijoy/input0",
"amijoy/input1" };
58 for (i = 0; i < 2; i++)
68 input_report_abs(amijoy_dev[i],
ABS_X, ((data >> 1) & 1) - ((data >> 9) & 1));
69 data = ~(data ^ (data << 1));
70 input_report_abs(amijoy_dev[i],
ABS_Y, ((data >> 1) & 1) - ((data >> 9) & 1));
72 input_sync(amijoy_dev[i]);
77 static int amijoy_open(
struct input_dev *
dev)
97 static void amijoy_close(
struct input_dev *dev)
105 static int __init amijoy_init(
void)
113 for (i = 0; i < 2; i++) {
117 amijoy_dev[
i] = input_allocate_device();
118 if (!amijoy_dev[i]) {
124 input_free_device(amijoy_dev[i]);
129 amijoy_dev[
i]->name =
"Amiga joystick";
130 amijoy_dev[
i]->phys = amijoy_phys[
i];
132 amijoy_dev[
i]->id.vendor = 0x0001;
133 amijoy_dev[
i]->id.product = 0x0003;
134 amijoy_dev[
i]->id.version = 0x0100;
136 amijoy_dev[
i]->open = amijoy_open;
137 amijoy_dev[
i]->close = amijoy_close;
143 for (j = 0; j < 2; j++) {
144 input_set_abs_params(amijoy_dev[i],
ABS_X + j,
148 err = input_register_device(amijoy_dev[i]);
150 input_free_device(amijoy_dev[i]);
156 fail:
while (--i >= 0)
158 input_unregister_device(amijoy_dev[i]);
164 static void __exit amijoy_exit(
void)
168 for (i = 0; i < 2; i++)
170 input_unregister_device(amijoy_dev[i]);