Lines Matching refs:data

146 static void usb_kbd_put_queue(struct usb_kbd_pdata *data, u8 c)  in usb_kbd_put_queue()  argument
148 if (data->usb_in_pointer == USB_KBD_BUFFER_LEN - 1) { in usb_kbd_put_queue()
150 if (data->usb_out_pointer == 0) in usb_kbd_put_queue()
153 data->usb_in_pointer = 0; in usb_kbd_put_queue()
156 if (data->usb_in_pointer == data->usb_out_pointer - 1) in usb_kbd_put_queue()
159 data->usb_in_pointer++; in usb_kbd_put_queue()
162 data->usb_kbd_buffer[data->usb_in_pointer] = c; in usb_kbd_put_queue()
172 struct usb_kbd_pdata *data = dev->privptr; in usb_kbd_setled() local
173 struct usb_interface *iface = &dev->config.if_desc[data->ifnum]; in usb_kbd_setled()
176 *leds = data->flags & USB_KBD_LEDMASK; in usb_kbd_setled()
184 static int usb_kbd_translate(struct usb_kbd_pdata *data, unsigned char scancode, in usb_kbd_translate() argument
191 data->repeat_delay = 0; in usb_kbd_translate()
196 data->repeat_delay++; in usb_kbd_translate()
197 if (data->repeat_delay < REPEAT_DELAY) in usb_kbd_translate()
200 data->repeat_delay = REPEAT_DELAY; in usb_kbd_translate()
207 if (data->flags & USB_KBD_CAPSLOCK) in usb_kbd_translate()
231 if (data->flags & USB_KBD_CTRL) in usb_kbd_translate()
236 data->flags ^= USB_KBD_NUMLOCK; in usb_kbd_translate()
241 data->flags ^= USB_KBD_CAPSLOCK; in usb_kbd_translate()
245 data->flags ^= USB_KBD_SCROLLLOCK; in usb_kbd_translate()
253 usb_kbd_put_queue(data, keycode); in usb_kbd_translate()
262 usb_kbd_put_queue(data, 0x1b); in usb_kbd_translate()
265 usb_kbd_put_queue(data, 0x4f); in usb_kbd_translate()
266 usb_kbd_put_queue(data, scancode - 0x3a + 'P'); in usb_kbd_translate()
269 usb_kbd_put_queue(data, '['); in usb_kbd_translate()
272 usb_kbd_put_queue(data, '1'); in usb_kbd_translate()
278 usb_kbd_put_queue(data, '2'); in usb_kbd_translate()
289 usb_kbd_put_queue(data, keycode); in usb_kbd_translate()
291 usb_kbd_put_queue(data, '~'); in usb_kbd_translate()
296 usb_kbd_put_queue(data, 0x1b); in usb_kbd_translate()
297 usb_kbd_put_queue(data, '['); in usb_kbd_translate()
298 usb_kbd_put_queue(data, usb_special_keys[scancode - 0x4f]); in usb_kbd_translate()
308 struct usb_kbd_pdata *data = dev->privptr; in usb_kbd_service_key() local
313 new = data->old; in usb_kbd_service_key()
314 old = data->new; in usb_kbd_service_key()
316 new = data->new; in usb_kbd_service_key()
317 old = data->old; in usb_kbd_service_key()
323 res |= usb_kbd_translate(data, old[i], data->new[0], up); in usb_kbd_service_key()
332 struct usb_kbd_pdata *data = dev->privptr; in usb_kbd_irq_worker() local
336 if (data->new[0] == 0x00) in usb_kbd_irq_worker()
337 data->flags &= ~USB_KBD_CTRL; in usb_kbd_irq_worker()
339 else if ((data->new[0] == LEFT_CNTR) || (data->new[0] == RIGHT_CNTR)) in usb_kbd_irq_worker()
340 data->flags |= USB_KBD_CTRL; in usb_kbd_irq_worker()
348 if ((data->new[2] > 3) && (data->old[2] == data->new[2])) in usb_kbd_irq_worker()
349 res |= usb_kbd_translate(data, data->new[2], data->new[0], 2); in usb_kbd_irq_worker()
354 memcpy(data->old, data->new, USB_KBD_BOOT_REPORT_SIZE); in usb_kbd_irq_worker()
376 struct usb_kbd_pdata *data = dev->privptr; local
379 if (usb_int_msg(dev, data->intpipe, &data->new[0],
380 data->intpktsize, data->intinterval, true) >= 0)
386 struct usb_kbd_pdata *data = dev->privptr;
387 iface = &dev->config.if_desc[data->ifnum];
389 1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE);
390 if (memcmp(data->old, data->new, USB_KBD_BOOT_REPORT_SIZE)) {
393 struct usb_kbd_pdata *data = dev->privptr;
394 if (poll_int_queue(dev, data->intq)) {
397 destroy_int_queue(dev, data->intq);
398 data->intq = create_int_queue(dev, data->intpipe, 1,
399 USB_KBD_BOOT_REPORT_SIZE, data->new,
400 data->intinterval);
402 data->last_report = get_timer(0);
404 } else if (data->last_report != -1 &&
405 get_timer(data->last_report) > REPEAT_RATE) {
407 data->last_report = get_timer(0);
417 struct usb_kbd_pdata *data; local
446 data = usb_kbd_dev->privptr;
453 return !(data->usb_in_pointer == data->usb_out_pointer);
461 struct usb_kbd_pdata *data; local
465 data = usb_kbd_dev->privptr;
467 while (data->usb_in_pointer == data->usb_out_pointer) {
472 if (data->usb_out_pointer == USB_KBD_BUFFER_LEN - 1)
473 data->usb_out_pointer = 0;
475 data->usb_out_pointer++;
477 return data->usb_kbd_buffer[data->usb_out_pointer];
485 struct usb_kbd_pdata *data; local
528 data = malloc(sizeof(struct usb_kbd_pdata));
529 if (!data) {
535 memset(data, 0, sizeof(struct usb_kbd_pdata));
538 data->new = memalign(USB_DMA_MINALIGN,
541 data->ifnum = ifnum;
544 dev->privptr = data;
549 data->intpipe = usb_rcvintpipe(dev, ep->bEndpointAddress);
550 data->intpktsize = min(usb_maxpacket(dev, data->intpipe),
552 data->intinterval = ep->bInterval;
553 data->last_report = -1;
578 data->intq = create_int_queue(dev, data->intpipe, 1,
579 USB_KBD_BOOT_REPORT_SIZE, data->new,
580 data->intinterval);
581 if (!data->intq) {
584 1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE) < 0) {
586 if (usb_int_msg(dev, data->intpipe, data->new, data->intpktsize,
587 data->intinterval, false) < 0) {
661 struct usb_kbd_pdata *data; local
670 data = udev->privptr;
682 destroy_int_queue(udev, data->intq);
684 free(data->new);
685 free(data);