Lines Matching +full:- +full:i

2  *  Copyright (c) 1999-2001 Vojtech Pavlik
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
63 int i, j, ret; in cobra_read_packet() local
67 for (i = 0; i < 2; i++) { in cobra_read_packet()
68 r[i] = buf[i] = 0; in cobra_read_packet()
69 t[i] = COBRA_MAX_STROBE; in cobra_read_packet()
77 t[0]--; t[1]--; in cobra_read_packet()
79 for (i = 0, w = u ^ v; i < 2 && w; i++, w >>= 2) in cobra_read_packet()
81 if ((w & 0x30) < 0x30 && r[i] < COBRA_LENGTH && t[i] > 0) { in cobra_read_packet()
82 buf[i] |= (__u64)((w >> 5) & 1) << r[i]++; in cobra_read_packet()
83 t[i] = strobe; in cobra_read_packet()
85 } else t[i] = 0; in cobra_read_packet()
93 for (i = 0; i < 2; i++) { in cobra_read_packet()
95 if (r[i] != COBRA_LENGTH) continue; in cobra_read_packet()
97 for (j = 0; j < COBRA_LENGTH && (buf[i] & 0x04104107f) ^ 0x041041040; j++) in cobra_read_packet()
98 buf[i] = (buf[i] >> 1) | ((__u64)(buf[i] & 1) << (COBRA_LENGTH - 1)); in cobra_read_packet()
100 if (j < COBRA_LENGTH) ret |= (1 << i); in cobra_read_packet()
102 data[i] = ((buf[i] >> 7) & 0x000001f) | ((buf[i] >> 8) & 0x00003e0) in cobra_read_packet()
103 | ((buf[i] >> 9) & 0x0007c00) | ((buf[i] >> 10) & 0x00f8000) in cobra_read_packet()
104 | ((buf[i] >> 11) & 0x1f00000); in cobra_read_packet()
116 int i, j, r; in cobra_poll() local
118 cobra->reads++; in cobra_poll()
120 if ((r = cobra_read_packet(gameport, data)) != cobra->exists) { in cobra_poll()
121 cobra->bads++; in cobra_poll()
125 for (i = 0; i < 2; i++) in cobra_poll()
126 if (cobra->exists & r & (1 << i)) { in cobra_poll()
128 dev = cobra->dev[i]; in cobra_poll()
130 input_report_abs(dev, ABS_X, ((data[i] >> 4) & 1) - ((data[i] >> 3) & 1)); in cobra_poll()
131 input_report_abs(dev, ABS_Y, ((data[i] >> 2) & 1) - ((data[i] >> 1) & 1)); in cobra_poll()
134 input_report_key(dev, cobra_btn[j], data[i] & (0x20 << j)); in cobra_poll()
145 gameport_start_polling(cobra->gameport); in cobra_open()
153 gameport_stop_polling(cobra->gameport); in cobra_close()
161 int i, j; in cobra_connect() local
166 return -ENOMEM; in cobra_connect()
168 cobra->gameport = gameport; in cobra_connect()
176 cobra->exists = cobra_read_packet(gameport, data); in cobra_connect()
178 for (i = 0; i < 2; i++) in cobra_connect()
179 if ((cobra->exists >> i) & data[i] & 1) { in cobra_connect()
181 " Contact vojtech@ucw.cz\n", i, gameport->phys, (data[i] >> 2) & 7); in cobra_connect()
182 cobra->exists &= ~(1 << i); in cobra_connect()
185 if (!cobra->exists) { in cobra_connect()
186 err = -ENODEV; in cobra_connect()
193 for (i = 0; i < 2; i++) { in cobra_connect()
194 if (~(cobra->exists >> i) & 1) in cobra_connect()
197 cobra->dev[i] = input_dev = input_allocate_device(); in cobra_connect()
199 err = -ENOMEM; in cobra_connect()
203 snprintf(cobra->phys[i], sizeof(cobra->phys[i]), in cobra_connect()
204 "%s/input%d", gameport->phys, i); in cobra_connect()
206 input_dev->name = "Creative Labs Blaster GamePad Cobra"; in cobra_connect()
207 input_dev->phys = cobra->phys[i]; in cobra_connect()
208 input_dev->id.bustype = BUS_GAMEPORT; in cobra_connect()
209 input_dev->id.vendor = GAMEPORT_ID_VENDOR_CREATIVE; in cobra_connect()
210 input_dev->id.product = 0x0008; in cobra_connect()
211 input_dev->id.version = 0x0100; in cobra_connect()
212 input_dev->dev.parent = &gameport->dev; in cobra_connect()
216 input_dev->open = cobra_open; in cobra_connect()
217 input_dev->close = cobra_close; in cobra_connect()
219 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); in cobra_connect()
220 input_set_abs_params(input_dev, ABS_X, -1, 1, 0, 0); in cobra_connect()
221 input_set_abs_params(input_dev, ABS_Y, -1, 1, 0, 0); in cobra_connect()
223 set_bit(cobra_btn[j], input_dev->keybit); in cobra_connect()
225 err = input_register_device(cobra->dev[i]); in cobra_connect()
232 fail4: input_free_device(cobra->dev[i]); in cobra_connect()
233 fail3: while (--i >= 0) in cobra_connect()
234 if (cobra->dev[i]) in cobra_connect()
235 input_unregister_device(cobra->dev[i]); in cobra_connect()
245 int i; in cobra_disconnect() local
247 for (i = 0; i < 2; i++) in cobra_disconnect()
248 if ((cobra->exists >> i) & 1) in cobra_disconnect()
249 input_unregister_device(cobra->dev[i]); in cobra_disconnect()