Lines Matching refs:lk
348 static void lkkbd_detection_done(struct lkkbd *lk)
355 lk->keycode[0xb1] = KEY_COMPOSE;
360 switch (lk->id[4]) {
362 strlcpy(lk->name, "DEC LK201 keyboard", sizeof(lk->name));
365 lk->keycode[0xb1] = KEY_LEFTALT;
369 strlcpy(lk->name, "DEC LK401 keyboard", sizeof(lk->name));
373 strlcpy(lk->name, "Unknown DEC keyboard", sizeof(lk->name));
376 "Jan-Benedict Glaw <jbglaw@lug-owl.de>\n", lk->phys);
379 printk(" 0x%02x", lk->id[i]);
385 lk->phys, lk->name);
390 switch (lk->id[2]) {
397 lk->phys);
403 "keyboard may not work properly\n", lk->phys);
409 lk->id[2], lk->phys);
416 if (lk->id[2] == LK_STUCK_KEY && lk->id[3] != 0)
419 lk->id[3], lk->keycode[lk->id[3]]);
429 struct lkkbd *lk = serio_get_drvdata(serio);
430 struct input_dev *input_dev = lk->dev;
436 if (lk->ignore_bytes > 0) {
437 DBG(KERN_INFO "Ignoring a byte on %s\n", lk->name);
438 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data;
440 if (lk->ignore_bytes == 0)
441 lkkbd_detection_done(lk);
449 input_report_key(input_dev, lk->keycode[i], 0);
455 lk->ignore_bytes = LK_NUM_IGNORE_BYTES;
456 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data;
457 schedule_work(&lk->tq);
473 keycode = lk->keycode[data];
481 __FILE__, data, lk->name);
488 static void lkkbd_toggle_leds(struct lkkbd *lk)
490 struct serio *serio = lk->serio;
494 CHECK_LED(lk, leds_on, leds_off, LED_CAPSL, LK_LED_SHIFTLOCK);
495 CHECK_LED(lk, leds_on, leds_off, LED_COMPOSE, LK_LED_COMPOSE);
496 CHECK_LED(lk, leds_on, leds_off, LED_SCROLLL, LK_LED_SCROLLLOCK);
497 CHECK_LED(lk, leds_on, leds_off, LED_SLEEP, LK_LED_WAIT);
508 static void lkkbd_toggle_keyclick(struct lkkbd *lk, bool on)
510 struct serio *serio = lk->serio;
515 serio_write(serio, volume_to_hw(lk->keyclick_volume));
517 serio_write(serio, volume_to_hw(lk->ctrlclick_volume));
532 struct lkkbd *lk = input_get_drvdata(dev);
536 lkkbd_toggle_leds(lk);
542 lkkbd_toggle_keyclick(lk, value);
547 serio_write(lk->serio, LK_CMD_SOUND_BELL);
568 struct lkkbd *lk = container_of(work, struct lkkbd, tq);
572 serio_write(lk->serio, LK_CMD_REQUEST_ID);
575 serio_write(lk->serio, LK_CMD_SET_DEFAULTS);
578 lkkbd_toggle_leds(lk);
585 serio_write(lk->serio, LK_CMD_ENABLE_LK401);
589 serio_write(lk->serio,
593 serio_write(lk->serio, LK_CMD_ENABLE_BELL);
594 serio_write(lk->serio, volume_to_hw(lk->bell_volume));
597 lkkbd_toggle_keyclick(lk, test_bit(SND_CLICK, lk->dev->snd));
600 if (test_bit(SND_BELL, lk->dev->snd))
601 serio_write(lk->serio, LK_CMD_SOUND_BELL);
609 struct lkkbd *lk;
614 lk = kzalloc(sizeof(struct lkkbd), GFP_KERNEL);
616 if (!lk || !input_dev) {
621 lk->serio = serio;
622 lk->dev = input_dev;
623 INIT_WORK(&lk->tq, lkkbd_reinit);
624 lk->bell_volume = bell_volume;
625 lk->keyclick_volume = keyclick_volume;
626 lk->ctrlclick_volume = ctrlclick_volume;
627 memcpy(lk->keycode, lkkbd_keycode, sizeof(lk->keycode));
629 strlcpy(lk->name, "DEC LK keyboard", sizeof(lk->name));
630 snprintf(lk->phys, sizeof(lk->phys), "%s/input0", serio->phys);
632 input_dev->name = lk->name;
633 input_dev->phys = lk->phys;
641 input_set_drvdata(input_dev, lk);
654 input_dev->keycode = lk->keycode;
655 input_dev->keycodesize = sizeof(lk->keycode[0]);
656 input_dev->keycodemax = ARRAY_SIZE(lk->keycode);
659 __set_bit(lk->keycode[i], input_dev->keybit);
662 serio_set_drvdata(serio, lk);
668 err = input_register_device(lk->dev);
672 serio_write(lk->serio, LK_CMD_POWERCYCLE_RESET);
679 kfree(lk);
688 struct lkkbd *lk = serio_get_drvdata(serio);
690 input_get_device(lk->dev);
691 input_unregister_device(lk->dev);
694 input_put_device(lk->dev);
695 kfree(lk);