Lines Matching defs:a3d

35 struct a3d {
94 static void a3d_read(struct a3d *a3d, unsigned char *data)
96 struct input_dev *dev = a3d->dev;
98 switch (a3d->mode) {
113 a3d->axes[0] = ((signed char)((data[11] << 6) | (data[12] << 3) | (data[13]))) + 128;
114 a3d->axes[1] = ((signed char)((data[14] << 6) | (data[15] << 3) | (data[16]))) + 128;
115 a3d->axes[2] = ((signed char)((data[17] << 6) | (data[18] << 3) | (data[19]))) + 128;
116 a3d->axes[3] = ((signed char)((data[20] << 6) | (data[21] << 3) | (data[22]))) + 128;
118 a3d->buttons = ((data[3] << 3) | data[4]) & 0xf;
161 struct a3d *a3d = gameport_get_drvdata(gameport);
164 a3d->reads++;
165 if (a3d_read_packet(a3d->gameport, a3d->length, data) != a3d->length ||
166 data[0] != a3d->mode || a3d_csum(data, a3d->length))
167 a3d->bads++;
169 a3d_read(a3d, data);
180 struct a3d *a3d = gameport->port_data;
184 axes[i] = (a3d->axes[i] < 254) ? a3d->axes[i] : -1;
185 *buttons = a3d->buttons;
196 struct a3d *a3d = gameport->port_data;
201 gameport_start_polling(a3d->gameport);
211 struct a3d *a3d = gameport->port_data;
213 gameport_stop_polling(a3d->gameport);
222 struct a3d *a3d = input_get_drvdata(dev);
224 gameport_start_polling(a3d->gameport);
234 struct a3d *a3d = input_get_drvdata(dev);
236 gameport_stop_polling(a3d->gameport);
245 struct a3d *a3d;
252 a3d = kzalloc(sizeof(struct a3d), GFP_KERNEL);
254 if (!a3d || !input_dev) {
259 a3d->dev = input_dev;
260 a3d->gameport = gameport;
262 gameport_set_drvdata(gameport, a3d);
275 a3d->mode = data[0];
277 if (!a3d->mode || a3d->mode > 5) {
278 printk(KERN_WARNING "a3d.c: Unknown A3D device detected "
279 "(%s, id=%d), contact <vojtech@ucw.cz>\n", gameport->phys, a3d->mode);
287 snprintf(a3d->phys, sizeof(a3d->phys), "%s/input0", gameport->phys);
289 input_dev->name = a3d_names[a3d->mode];
290 input_dev->phys = a3d->phys;
293 input_dev->id.product = a3d->mode;
299 input_set_drvdata(input_dev, a3d);
301 if (a3d->mode == A3D_MODE_PXL) {
305 a3d->length = 33;
321 a3d_read(a3d, data);
333 a3d->length = 29;
340 a3d_read(a3d, data);
342 if (!(a3d->adc = adc = gameport_allocate_port()))
343 printk(KERN_ERR "a3d: Not enough memory for ADC port\n");
345 adc->port_data = a3d;
351 gameport_set_name(adc, a3d_names[a3d->mode]);
359 err = input_register_device(a3d->dev);
365 fail3: if (a3d->adc)
366 gameport_unregister_port(a3d->adc);
370 kfree(a3d);
376 struct a3d *a3d = gameport_get_drvdata(gameport);
378 input_unregister_device(a3d->dev);
379 if (a3d->adc)
380 gameport_unregister_port(a3d->adc);
383 kfree(a3d);