Lines Matching refs:a3d

38 struct a3d {  struct
97 static void a3d_read(struct a3d *a3d, unsigned char *data) in a3d_read() argument
99 struct input_dev *dev = a3d->dev; in a3d_read()
101 switch (a3d->mode) { in a3d_read()
116 a3d->axes[0] = ((signed char)((data[11] << 6) | (data[12] << 3) | (data[13]))) + 128; in a3d_read()
117 a3d->axes[1] = ((signed char)((data[14] << 6) | (data[15] << 3) | (data[16]))) + 128; in a3d_read()
118 a3d->axes[2] = ((signed char)((data[17] << 6) | (data[18] << 3) | (data[19]))) + 128; in a3d_read()
119 a3d->axes[3] = ((signed char)((data[20] << 6) | (data[21] << 3) | (data[22]))) + 128; in a3d_read()
121 a3d->buttons = ((data[3] << 3) | data[4]) & 0xf; in a3d_read()
164 struct a3d *a3d = gameport_get_drvdata(gameport); in a3d_poll() local
167 a3d->reads++; in a3d_poll()
168 if (a3d_read_packet(a3d->gameport, a3d->length, data) != a3d->length || in a3d_poll()
169 data[0] != a3d->mode || a3d_csum(data, a3d->length)) in a3d_poll()
170 a3d->bads++; in a3d_poll()
172 a3d_read(a3d, data); in a3d_poll()
183 struct a3d *a3d = gameport->port_data; in a3d_adc_cooked_read() local
187 axes[i] = (a3d->axes[i] < 254) ? a3d->axes[i] : -1; in a3d_adc_cooked_read()
188 *buttons = a3d->buttons; in a3d_adc_cooked_read()
199 struct a3d *a3d = gameport->port_data; in a3d_adc_open() local
204 gameport_start_polling(a3d->gameport); in a3d_adc_open()
214 struct a3d *a3d = gameport->port_data; in a3d_adc_close() local
216 gameport_stop_polling(a3d->gameport); in a3d_adc_close()
225 struct a3d *a3d = input_get_drvdata(dev); in a3d_open() local
227 gameport_start_polling(a3d->gameport); in a3d_open()
237 struct a3d *a3d = input_get_drvdata(dev); in a3d_close() local
239 gameport_stop_polling(a3d->gameport); in a3d_close()
248 struct a3d *a3d; in a3d_connect() local
255 a3d = kzalloc(sizeof(struct a3d), GFP_KERNEL); in a3d_connect()
257 if (!a3d || !input_dev) { in a3d_connect()
262 a3d->dev = input_dev; in a3d_connect()
263 a3d->gameport = gameport; in a3d_connect()
265 gameport_set_drvdata(gameport, a3d); in a3d_connect()
278 a3d->mode = data[0]; in a3d_connect()
280 if (!a3d->mode || a3d->mode > 5) { in a3d_connect()
282 "(%s, id=%d), contact <vojtech@ucw.cz>\n", gameport->phys, a3d->mode); in a3d_connect()
290 snprintf(a3d->phys, sizeof(a3d->phys), "%s/input0", gameport->phys); in a3d_connect()
292 input_dev->name = a3d_names[a3d->mode]; in a3d_connect()
293 input_dev->phys = a3d->phys; in a3d_connect()
296 input_dev->id.product = a3d->mode; in a3d_connect()
302 input_set_drvdata(input_dev, a3d); in a3d_connect()
304 if (a3d->mode == A3D_MODE_PXL) { in a3d_connect()
308 a3d->length = 33; in a3d_connect()
324 a3d_read(a3d, data); in a3d_connect()
336 a3d->length = 29; in a3d_connect()
343 a3d_read(a3d, data); in a3d_connect()
345 if (!(a3d->adc = adc = gameport_allocate_port())) in a3d_connect()
348 adc->port_data = a3d; in a3d_connect()
354 gameport_set_name(adc, a3d_names[a3d->mode]); in a3d_connect()
362 err = input_register_device(a3d->dev); in a3d_connect()
368 fail3: if (a3d->adc) in a3d_connect()
369 gameport_unregister_port(a3d->adc); in a3d_connect()
373 kfree(a3d); in a3d_connect()
379 struct a3d *a3d = gameport_get_drvdata(gameport); in a3d_disconnect() local
381 input_unregister_device(a3d->dev); in a3d_disconnect()
382 if (a3d->adc) in a3d_disconnect()
383 gameport_unregister_port(a3d->adc); in a3d_disconnect()
386 kfree(a3d); in a3d_disconnect()