Lines Matching refs:lk
345 static void lkkbd_detection_done(struct lkkbd *lk)
352 lk->keycode[0xb1] = KEY_COMPOSE;
357 switch (lk->id[4]) {
359 strscpy(lk->name, "DEC LK201 keyboard", sizeof(lk->name));
362 lk->keycode[0xb1] = KEY_LEFTALT;
366 strscpy(lk->name, "DEC LK401 keyboard", sizeof(lk->name));
370 strscpy(lk->name, "Unknown DEC keyboard", sizeof(lk->name));
373 "Jan-Benedict Glaw <jbglaw@lug-owl.de>\n", lk->phys);
376 printk(" 0x%02x", lk->id[i]);
382 lk->phys, lk->name);
387 switch (lk->id[2]) {
394 lk->phys);
400 "keyboard may not work properly\n", lk->phys);
406 lk->id[2], lk->phys);
413 if (lk->id[2] == LK_STUCK_KEY && lk->id[3] != 0)
416 lk->id[3], lk->keycode[lk->id[3]]);
426 struct lkkbd *lk = serio_get_drvdata(serio);
427 struct input_dev *input_dev = lk->dev;
433 if (lk->ignore_bytes > 0) {
434 DBG(KERN_INFO "Ignoring a byte on %s\n", lk->name);
435 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data;
437 if (lk->ignore_bytes == 0)
438 lkkbd_detection_done(lk);
446 input_report_key(input_dev, lk->keycode[i], 0);
452 lk->ignore_bytes = LK_NUM_IGNORE_BYTES;
453 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data;
454 schedule_work(&lk->tq);
470 keycode = lk->keycode[data];
478 __FILE__, data, lk->name);
485 static void lkkbd_toggle_leds(struct lkkbd *lk)
487 struct serio *serio = lk->serio;
491 CHECK_LED(lk, leds_on, leds_off, LED_CAPSL, LK_LED_SHIFTLOCK);
492 CHECK_LED(lk, leds_on, leds_off, LED_COMPOSE, LK_LED_COMPOSE);
493 CHECK_LED(lk, leds_on, leds_off, LED_SCROLLL, LK_LED_SCROLLLOCK);
494 CHECK_LED(lk, leds_on, leds_off, LED_SLEEP, LK_LED_WAIT);
505 static void lkkbd_toggle_keyclick(struct lkkbd *lk, bool on)
507 struct serio *serio = lk->serio;
512 serio_write(serio, volume_to_hw(lk->keyclick_volume));
514 serio_write(serio, volume_to_hw(lk->ctrlclick_volume));
529 struct lkkbd *lk = input_get_drvdata(dev);
533 lkkbd_toggle_leds(lk);
539 lkkbd_toggle_keyclick(lk, value);
544 serio_write(lk->serio, LK_CMD_SOUND_BELL);
565 struct lkkbd *lk = container_of(work, struct lkkbd, tq);
569 serio_write(lk->serio, LK_CMD_REQUEST_ID);
572 serio_write(lk->serio, LK_CMD_SET_DEFAULTS);
575 lkkbd_toggle_leds(lk);
582 serio_write(lk->serio, LK_CMD_ENABLE_LK401);
586 serio_write(lk->serio,
590 serio_write(lk->serio, LK_CMD_ENABLE_BELL);
591 serio_write(lk->serio, volume_to_hw(lk->bell_volume));
594 lkkbd_toggle_keyclick(lk, test_bit(SND_CLICK, lk->dev->snd));
597 if (test_bit(SND_BELL, lk->dev->snd))
598 serio_write(lk->serio, LK_CMD_SOUND_BELL);
606 struct lkkbd *lk;
611 lk = kzalloc(sizeof(struct lkkbd), GFP_KERNEL);
613 if (!lk || !input_dev) {
618 lk->serio = serio;
619 lk->dev = input_dev;
620 INIT_WORK(&lk->tq, lkkbd_reinit);
621 lk->bell_volume = bell_volume;
622 lk->keyclick_volume = keyclick_volume;
623 lk->ctrlclick_volume = ctrlclick_volume;
624 memcpy(lk->keycode, lkkbd_keycode, sizeof(lk->keycode));
626 strscpy(lk->name, "DEC LK keyboard", sizeof(lk->name));
627 snprintf(lk->phys, sizeof(lk->phys), "%s/input0", serio->phys);
629 input_dev->name = lk->name;
630 input_dev->phys = lk->phys;
638 input_set_drvdata(input_dev, lk);
651 input_dev->keycode = lk->keycode;
652 input_dev->keycodesize = sizeof(lk->keycode[0]);
653 input_dev->keycodemax = ARRAY_SIZE(lk->keycode);
656 __set_bit(lk->keycode[i], input_dev->keybit);
659 serio_set_drvdata(serio, lk);
665 err = input_register_device(lk->dev);
669 serio_write(lk->serio, LK_CMD_POWERCYCLE_RESET);
676 kfree(lk);
685 struct lkkbd *lk = serio_get_drvdata(serio);
687 input_get_device(lk->dev);
688 input_unregister_device(lk->dev);
691 input_put_device(lk->dev);
692 kfree(lk);