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

2  *  Copyright (c) 1998-2001 Vojtech Pavlik
6 * FP-Gaming Assassin 3D joystick driver for Linux
11 * it under the terms of the GNU General Public License as published by
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 * Should you need to contact me, the author, you can do so either by
25 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
37 #define DRIVER_DESC "FP-Gaming Assassin 3D joystick driver"
52 static char *a3d_names[] = { NULL, "FP-Gaming Assassin 3D", "MadCatz Panther", "OEM Panther",
88 t--; in a3d_read_packet()
109 for (i = 0; i < count - 2; i++) in a3d_csum()
111 return (csum & 0x3f) != ((data[count - 2] << 3) | data[count - 1]); in a3d_csum()
116 struct input_dev *dev = a3d->dev; in a3d_read()
118 switch (a3d->mode) { in a3d_read()
124 … input_report_rel(dev, REL_X, ((data[5] << 6) | (data[6] << 3) | data[ 7]) - ((data[5] & 4) << 7)); in a3d_read()
125 … input_report_rel(dev, REL_Y, ((data[8] << 6) | (data[9] << 3) | data[10]) - ((data[8] & 4) << 7)); in a3d_read()
133 a3d->axes[0] = ((signed char)((data[11] << 6) | (data[12] << 3) | (data[13]))) + 128; in a3d_read()
134 a3d->axes[1] = ((signed char)((data[14] << 6) | (data[15] << 3) | (data[16]))) + 128; in a3d_read()
135 a3d->axes[2] = ((signed char)((data[17] << 6) | (data[18] << 3) | (data[19]))) + 128; in a3d_read()
136 a3d->axes[3] = ((signed char)((data[20] << 6) | (data[21] << 3) | (data[22]))) + 128; in a3d_read()
138 a3d->buttons = ((data[3] << 3) | data[4]) & 0xf; in a3d_read()
144 …input_report_rel(dev, REL_X, ((data[ 9] << 6) | (data[10] << 3) | data[11]) - ((data[ 9] & 4) << 7… in a3d_read()
145 …input_report_rel(dev, REL_Y, ((data[12] << 6) | (data[13] << 3) | data[14]) - ((data[12] & 4) << 7… in a3d_read()
153 …input_report_abs(dev, ABS_X, ((signed char)((data[15] << 6) | (data[16] << 3) | (data[17]))… in a3d_read()
154 …input_report_abs(dev, ABS_Y, ((signed char)((data[18] << 6) | (data[19] << 3) | (data[20]))… in a3d_read()
155 …input_report_abs(dev, ABS_RUDDER, ((signed char)((data[21] << 6) | (data[22] << 3) | (data[23]))… in a3d_read()
156 …input_report_abs(dev, ABS_THROTTLE, ((signed char)((data[24] << 6) | (data[25] << 3) | (data[26]))… in a3d_read()
158 input_report_abs(dev, ABS_HAT0X, ( data[5] & 1) - ((data[5] >> 2) & 1)); in a3d_read()
159 input_report_abs(dev, ABS_HAT0Y, ((data[5] >> 1) & 1) - ((data[6] >> 2) & 1)); in a3d_read()
160 input_report_abs(dev, ABS_HAT1X, ((data[4] >> 1) & 1) - ( data[3] & 1)); in a3d_read()
161 input_report_abs(dev, ABS_HAT1Y, ((data[4] >> 2) & 1) - ( data[4] & 1)); in a3d_read()
184 a3d->reads++; in a3d_poll()
185 if (a3d_read_packet(a3d->gameport, a3d->length, data) != a3d->length || in a3d_poll()
186 data[0] != a3d->mode || a3d_csum(data, a3d->length)) in a3d_poll()
187 a3d->bads++; in a3d_poll()
200 struct a3d *a3d = gameport->port_data; in a3d_adc_cooked_read()
204 axes[i] = (a3d->axes[i] < 254) ? a3d->axes[i] : -1; in a3d_adc_cooked_read()
205 *buttons = a3d->buttons; in a3d_adc_cooked_read()
216 struct a3d *a3d = gameport->port_data; in a3d_adc_open()
219 return -1; in a3d_adc_open()
221 gameport_start_polling(a3d->gameport); in a3d_adc_open()
231 struct a3d *a3d = gameport->port_data; in a3d_adc_close()
233 gameport_stop_polling(a3d->gameport); in a3d_adc_close()
244 gameport_start_polling(a3d->gameport); in a3d_open()
256 gameport_stop_polling(a3d->gameport); in a3d_close()
275 err = -ENOMEM; in a3d_connect()
279 a3d->dev = input_dev; in a3d_connect()
280 a3d->gameport = gameport; in a3d_connect()
291 err = -ENODEV; in a3d_connect()
295 a3d->mode = data[0]; in a3d_connect()
297 if (!a3d->mode || a3d->mode > 5) { in a3d_connect()
299 "(%s, id=%d), contact <vojtech@ucw.cz>\n", gameport->phys, a3d->mode); in a3d_connect()
300 err = -ENODEV; in a3d_connect()
307 snprintf(a3d->phys, sizeof(a3d->phys), "%s/input0", gameport->phys); in a3d_connect()
309 input_dev->name = a3d_names[a3d->mode]; in a3d_connect()
310 input_dev->phys = a3d->phys; in a3d_connect()
311 input_dev->id.bustype = BUS_GAMEPORT; in a3d_connect()
312 input_dev->id.vendor = GAMEPORT_ID_VENDOR_MADCATZ; in a3d_connect()
313 input_dev->id.product = a3d->mode; in a3d_connect()
314 input_dev->id.version = 0x0100; in a3d_connect()
315 input_dev->dev.parent = &gameport->dev; in a3d_connect()
316 input_dev->open = a3d_open; in a3d_connect()
317 input_dev->close = a3d_close; in a3d_connect()
321 if (a3d->mode == A3D_MODE_PXL) { in a3d_connect()
325 a3d->length = 33; in a3d_connect()
327 input_dev->evbit[0] |= BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY) | in a3d_connect()
329 input_dev->relbit[0] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y); in a3d_connect()
330 input_dev->absbit[0] |= BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | in a3d_connect()
334 input_dev->keybit[BIT_WORD(BTN_MOUSE)] |= BIT_MASK(BTN_RIGHT) | in a3d_connect()
337 input_dev->keybit[BIT_WORD(BTN_JOYSTICK)] |= in a3d_connect()
346 48, input_abs_get_val(input_dev, axes[i]) * 2 - 48, 0, 8); in a3d_connect()
349 input_set_abs_params(input_dev, ABS_HAT0X + i, -1, 1, 0, 0); in a3d_connect()
353 a3d->length = 29; in a3d_connect()
355 input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); in a3d_connect()
356 input_dev->relbit[0] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y); in a3d_connect()
357 input_dev->keybit[BIT_WORD(BTN_MOUSE)] |= BIT_MASK(BTN_RIGHT) | in a3d_connect()
362 if (!(a3d->adc = adc = gameport_allocate_port())) in a3d_connect()
365 adc->port_data = a3d; in a3d_connect()
366 adc->open = a3d_adc_open; in a3d_connect()
367 adc->close = a3d_adc_close; in a3d_connect()
368 adc->cooked_read = a3d_adc_cooked_read; in a3d_connect()
369 adc->fuzz = 1; in a3d_connect()
371 gameport_set_name(adc, a3d_names[a3d->mode]); in a3d_connect()
372 gameport_set_phys(adc, "%s/gameport0", gameport->phys); in a3d_connect()
373 adc->dev.parent = &gameport->dev; in a3d_connect()
379 err = input_register_device(a3d->dev); in a3d_connect()
385 fail3: if (a3d->adc) in a3d_connect()
386 gameport_unregister_port(a3d->adc); in a3d_connect()
398 input_unregister_device(a3d->dev); in a3d_disconnect()
399 if (a3d->adc) in a3d_disconnect()
400 gameport_unregister_port(a3d->adc); in a3d_disconnect()