Lines Matching +full:signed +full:- +full:by

2  *  Copyright (c) 2000-2002 Vojtech Pavlik <vojtech@ucw.cz>
3 * Copyright (c) 2001-2002, 2007 Johann Deneux <johann.deneux@gmail.com>
5 * USB/RS232 I-Force joysticks and wheels.
10 * it under the terms of the GNU General Public License as published by
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 * Should you need to contact me, the author, you can do so either by
24 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
31 MODULE_DESCRIPTION("USB/RS232 I-Force joysticks and wheels driver");
34 static signed short btn_joystick[] =
36 BTN_BASE2, BTN_BASE3, BTN_BASE4, BTN_BASE5, BTN_A, BTN_B, BTN_C, -1 };
38 static signed short btn_avb_pegasus[] =
40 BTN_BASE2, BTN_BASE3, BTN_BASE4, -1 };
42 static signed short btn_wheel[] =
44 BTN_BASE2, BTN_BASE3, BTN_BASE4, BTN_BASE5, BTN_A, BTN_B, BTN_C, -1 };
46 static signed short btn_avb_tw[] =
48 BTN_BASE2, BTN_BASE3, BTN_BASE4, -1 };
50 static signed short btn_avb_wheel[] =
52 BTN_BASE4, BTN_BASE5, BTN_BASE6, -1 };
54 static signed short abs_joystick[] =
55 { ABS_X, ABS_Y, ABS_THROTTLE, ABS_HAT0X, ABS_HAT0Y, -1 };
57 static signed short abs_joystick_rudder[] =
58 { ABS_X, ABS_Y, ABS_THROTTLE, ABS_RUDDER, ABS_HAT0X, ABS_HAT0Y, -1 };
60 static signed short abs_avb_pegasus[] =
62 ABS_HAT1X, ABS_HAT1Y, -1 };
64 static signed short abs_wheel[] =
65 { ABS_WHEEL, ABS_GAS, ABS_BRAKE, ABS_HAT0X, ABS_HAT0Y, -1 };
67 static signed short ff_iforce[] =
70 FF_AUTOCENTER, -1 };
86 { 0x0000, 0x0000, "Unknown I-Force Device [%04x:%04x]", btn_joystick, abs_joystick, ff_iforce }
92 struct iforce_core_effect *core_effect = &iforce->core_effects[effect_id]; in iforce_playback()
95 set_bit(FF_CORE_SHOULD_PLAY, core_effect->flags); in iforce_playback()
97 clear_bit(FF_CORE_SHOULD_PLAY, core_effect->flags); in iforce_playback()
133 struct iforce_core_effect *core_effect = &iforce->core_effects[effect->id]; in iforce_upload_effect()
136 if (__test_and_set_bit(FF_CORE_IS_USED, core_effect->flags)) { in iforce_upload_effect()
138 if (test_bit(FF_CORE_UPDATE, core_effect->flags)) in iforce_upload_effect()
139 return -EAGAIN; in iforce_upload_effect()
145 switch (effect->type) { in iforce_upload_effect()
161 return -EINVAL; in iforce_upload_effect()
168 set_bit(FF_CORE_UPDATE, core_effect->flags); in iforce_upload_effect()
180 struct iforce_core_effect *core_effect = &iforce->core_effects[effect_id]; in iforce_erase_effect()
183 if (test_bit(FF_MOD1_IS_USED, core_effect->flags)) in iforce_erase_effect()
184 err = release_resource(&core_effect->mod1_chunk); in iforce_erase_effect()
186 if (!err && test_bit(FF_MOD2_IS_USED, core_effect->flags)) in iforce_erase_effect()
187 err = release_resource(&core_effect->mod2_chunk); in iforce_erase_effect()
190 core_effect->flags[0] = 0; in iforce_erase_effect()
199 switch (iforce->bus) { in iforce_open()
202 iforce->irq->dev = iforce->usbdev; in iforce_open()
203 if (usb_submit_urb(iforce->irq, GFP_KERNEL)) in iforce_open()
204 return -EIO; in iforce_open()
209 if (test_bit(EV_FF, dev->evbit)) { in iforce_open()
222 if (test_bit(EV_FF, dev->evbit)) { in iforce_close()
224 for (i = 0; i < dev->ff->max_effects; i++) { in iforce_close()
225 if (test_bit(FF_CORE_IS_USED, iforce->core_effects[i].flags)) { in iforce_close()
226 dev_warn(&dev->dev, in iforce_close()
236 wait_event_interruptible(iforce->wait, in iforce_close()
237 !test_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)); in iforce_close()
240 switch (iforce->bus) { in iforce_close()
243 usb_kill_urb(iforce->irq); in iforce_close()
244 usb_kill_urb(iforce->out); in iforce_close()
245 usb_kill_urb(iforce->ctrl); in iforce_close()
266 return -ENOMEM; in iforce_init_device()
268 init_waitqueue_head(&iforce->wait); in iforce_init_device()
269 spin_lock_init(&iforce->xmit_lock); in iforce_init_device()
270 mutex_init(&iforce->mem_mutex); in iforce_init_device()
271 iforce->xmit.buf = iforce->xmit_data; in iforce_init_device()
272 iforce->dev = input_dev; in iforce_init_device()
278 switch (iforce->bus) { in iforce_init_device()
281 input_dev->id.bustype = BUS_USB; in iforce_init_device()
282 input_dev->dev.parent = &iforce->usbdev->dev; in iforce_init_device()
287 input_dev->id.bustype = BUS_RS232; in iforce_init_device()
288 input_dev->dev.parent = &iforce->serio->dev; in iforce_init_device()
295 input_dev->name = "Unknown I-Force device"; in iforce_init_device()
296 input_dev->open = iforce_open; in iforce_init_device()
297 input_dev->close = iforce_close; in iforce_init_device()
300 * On-device memory allocation. in iforce_init_device()
303 iforce->device_memory.name = "I-Force device effect memory"; in iforce_init_device()
304 iforce->device_memory.start = 0; in iforce_init_device()
305 iforce->device_memory.end = 200; in iforce_init_device()
306 iforce->device_memory.flags = IORESOURCE_MEM; in iforce_init_device()
307 iforce->device_memory.parent = NULL; in iforce_init_device()
308 iforce->device_memory.child = NULL; in iforce_init_device()
309 iforce->device_memory.sibling = NULL; in iforce_init_device()
312 * Wait until device ready - until it sends its first response. in iforce_init_device()
321 error = -ENODEV; in iforce_init_device()
330 input_dev->id.vendor = (iforce->edata[2] << 8) | iforce->edata[1]; in iforce_init_device()
332 dev_warn(&iforce->dev->dev, "Device does not respond to id packet M\n"); in iforce_init_device()
335 input_dev->id.product = (iforce->edata[2] << 8) | iforce->edata[1]; in iforce_init_device()
337 dev_warn(&iforce->dev->dev, "Device does not respond to id packet P\n"); in iforce_init_device()
340 iforce->device_memory.end = (iforce->edata[2] << 8) | iforce->edata[1]; in iforce_init_device()
342 dev_warn(&iforce->dev->dev, "Device does not respond to id packet B\n"); in iforce_init_device()
345 ff_effects = iforce->edata[1]; in iforce_init_device()
347 dev_warn(&iforce->dev->dev, "Device does not respond to id packet N\n"); in iforce_init_device()
351 dev_warn(&iforce->dev->dev, "Limiting number of effects to %d (device reports %d)\n", in iforce_init_device()
362 iforce_dump_packet("info", iforce->ecmd, iforce->edata); in iforce_init_device()
374 if (iforce_device[i].idvendor == input_dev->id.vendor && in iforce_init_device()
375 iforce_device[i].idproduct == input_dev->id.product) in iforce_init_device()
378 iforce->type = iforce_device + i; in iforce_init_device()
379 input_dev->name = iforce->type->name; in iforce_init_device()
385 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) | in iforce_init_device()
388 for (i = 0; iforce->type->btn[i] >= 0; i++) in iforce_init_device()
389 set_bit(iforce->type->btn[i], input_dev->keybit); in iforce_init_device()
390 set_bit(BTN_DEAD, input_dev->keybit); in iforce_init_device()
392 for (i = 0; iforce->type->abs[i] >= 0; i++) { in iforce_init_device()
394 signed short t = iforce->type->abs[i]; in iforce_init_device()
402 input_set_abs_params(input_dev, t, -1920, 1920, 16, 128); in iforce_init_device()
403 set_bit(t, input_dev->ffbit); in iforce_init_device()
415 input_set_abs_params(input_dev, t, -128, 127, 0, 0); in iforce_init_device()
423 input_set_abs_params(input_dev, t, -1, 1, 0, 0); in iforce_init_device()
430 for (i = 0; iforce->type->ff[i] >= 0; i++) in iforce_init_device()
431 set_bit(iforce->type->ff[i], input_dev->ffbit); in iforce_init_device()
437 ff = input_dev->ff; in iforce_init_device()
438 ff->upload = iforce_upload_effect; in iforce_init_device()
439 ff->erase = iforce_erase_effect; in iforce_init_device()
440 ff->set_gain = iforce_set_gain; in iforce_init_device()
441 ff->set_autocenter = iforce_set_autocenter; in iforce_init_device()
442 ff->playback = iforce_playback; in iforce_init_device()
448 error = input_register_device(iforce->dev); in iforce_init_device()