Lines Matching defs:kbd

102 	struct usb_kbd *kbd = urb->context;
118 input_report_key(kbd->dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1);
122 if (kbd->old[i] > 3 && memscan(kbd->new + 2, kbd->old[i], 6) == kbd->new + 8) {
123 if (usb_kbd_keycode[kbd->old[i]])
124 input_report_key(kbd->dev, usb_kbd_keycode[kbd->old[i]], 0);
128 kbd->old[i]);
131 if (kbd->new[i] > 3 && memscan(kbd->old + 2, kbd->new[i], 6) == kbd->old + 8) {
132 if (usb_kbd_keycode[kbd->new[i]])
133 input_report_key(kbd->dev, usb_kbd_keycode[kbd->new[i]], 1);
137 kbd->new[i]);
141 input_sync(kbd->dev);
143 memcpy(kbd->old, kbd->new, 8);
149 kbd->usbdev->bus->bus_name,
150 kbd->usbdev->devpath, i);
157 struct usb_kbd *kbd = input_get_drvdata(dev);
162 spin_lock_irqsave(&kbd->leds_lock, flags);
163 kbd->newleds = (!!test_bit(LED_KANA, dev->led) << 3) | (!!test_bit(LED_COMPOSE, dev->led) << 3) |
167 if (kbd->led_urb_submitted){
168 spin_unlock_irqrestore(&kbd->leds_lock, flags);
172 if (*(kbd->leds) == kbd->newleds){
173 spin_unlock_irqrestore(&kbd->leds_lock, flags);
177 *(kbd->leds) = kbd->newleds;
179 kbd->led->dev = kbd->usbdev;
180 if (usb_submit_urb(kbd->led, GFP_ATOMIC))
183 kbd->led_urb_submitted = true;
185 spin_unlock_irqrestore(&kbd->leds_lock, flags);
193 struct usb_kbd *kbd = urb->context;
199 spin_lock_irqsave(&kbd->leds_lock, flags);
201 if (*(kbd->leds) == kbd->newleds){
202 kbd->led_urb_submitted = false;
203 spin_unlock_irqrestore(&kbd->leds_lock, flags);
207 *(kbd->leds) = kbd->newleds;
209 kbd->led->dev = kbd->usbdev;
210 if (usb_submit_urb(kbd->led, GFP_ATOMIC)){
212 kbd->led_urb_submitted = false;
214 spin_unlock_irqrestore(&kbd->leds_lock, flags);
220 struct usb_kbd *kbd = input_get_drvdata(dev);
222 kbd->irq->dev = kbd->usbdev;
223 if (usb_submit_urb(kbd->irq, GFP_KERNEL))
231 struct usb_kbd *kbd = input_get_drvdata(dev);
233 usb_kill_urb(kbd->irq);
236 static int usb_kbd_alloc_mem(struct usb_device *dev, struct usb_kbd *kbd)
238 if (!(kbd->irq = usb_alloc_urb(0, GFP_KERNEL)))
240 if (!(kbd->led = usb_alloc_urb(0, GFP_KERNEL)))
242 if (!(kbd->new = usb_alloc_coherent(dev, 8, GFP_KERNEL, &kbd->new_dma)))
244 if (!(kbd->cr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL)))
246 if (!(kbd->leds = usb_alloc_coherent(dev, 1, GFP_KERNEL, &kbd->leds_dma)))
252 static void usb_kbd_free_mem(struct usb_device *dev, struct usb_kbd *kbd)
254 usb_free_urb(kbd->irq);
255 usb_free_urb(kbd->led);
256 usb_free_coherent(dev, 8, kbd->new, kbd->new_dma);
257 kfree(kbd->cr);
258 usb_free_coherent(dev, 1, kbd->leds, kbd->leds_dma);
267 struct usb_kbd *kbd;
284 kbd = kzalloc(sizeof(struct usb_kbd), GFP_KERNEL);
286 if (!kbd || !input_dev)
289 if (usb_kbd_alloc_mem(dev, kbd))
292 kbd->usbdev = dev;
293 kbd->dev = input_dev;
294 spin_lock_init(&kbd->leds_lock);
297 strscpy(kbd->name, dev->manufacturer, sizeof(kbd->name));
301 strlcat(kbd->name, " ", sizeof(kbd->name));
302 strlcat(kbd->name, dev->product, sizeof(kbd->name));
305 if (!strlen(kbd->name))
306 snprintf(kbd->name, sizeof(kbd->name),
311 usb_make_path(dev, kbd->phys, sizeof(kbd->phys));
312 strlcat(kbd->phys, "/input0", sizeof(kbd->phys));
314 input_dev->name = kbd->name;
315 input_dev->phys = kbd->phys;
319 input_set_drvdata(input_dev, kbd);
335 usb_fill_int_urb(kbd->irq, dev, pipe,
336 kbd->new, (maxp > 8 ? 8 : maxp),
337 usb_kbd_irq, kbd, endpoint->bInterval);
338 kbd->irq->transfer_dma = kbd->new_dma;
339 kbd->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
341 kbd->cr->bRequestType = USB_TYPE_CLASS | USB_RECIP_INTERFACE;
342 kbd->cr->bRequest = 0x09;
343 kbd->cr->wValue = cpu_to_le16(0x200);
344 kbd->cr->wIndex = cpu_to_le16(interface->desc.bInterfaceNumber);
345 kbd->cr->wLength = cpu_to_le16(1);
347 usb_fill_control_urb(kbd->led, dev, usb_sndctrlpipe(dev, 0),
348 (void *) kbd->cr, kbd->leds, 1,
349 usb_kbd_led, kbd);
350 kbd->led->transfer_dma = kbd->leds_dma;
351 kbd->led->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
353 error = input_register_device(kbd->dev);
357 usb_set_intfdata(iface, kbd);
362 usb_kbd_free_mem(dev, kbd);
365 kfree(kbd);
371 struct usb_kbd *kbd = usb_get_intfdata (intf);
374 if (kbd) {
375 usb_kill_urb(kbd->irq);
376 input_unregister_device(kbd->dev);
377 usb_kill_urb(kbd->led);
378 usb_kbd_free_mem(interface_to_usbdev(intf), kbd);
379 kfree(kbd);