Lines Matching +full:connected +full:- +full:ground

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (C) 2004 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
19 * 1 - RxD <----> Pin 3 (TxD) <-> Pin 2 (TxD)
20 * 2 - GND <----> Pin 5 (GND) <-> Pin 7 (GND)
21 * 4 - TxD <----> Pin 2 (RxD) <-> Pin 3 (RxD)
22 * 3 - +12V (from HDD drive connector), DON'T connect to DE9 or DB25!!!
33 * || So the adaptor consists of three connected cables
34 * || for data transmission (RxD and TxD) and signal ground.
37 * It's the yellow cable there (black is ground and red is +5V).
40 * "VCB02 Video Subsystem - Technical Manual", EK-104AA-TM-001. This
46 * http://www.vt100.net/manx/details?pn=EK-104AA-TM-001;id=21;cp=1
59 MODULE_AUTHOR("Jan-Benedict Glaw <jbglaw@lug-owl.de>");
86 "If set non-zero, LK201' Compose key will act as an Alt key");
252 if (test_bit(LED, (LK)->dev->led)) \
259 * Per-keyboard data
352 lk->keycode[0xb1] = KEY_COMPOSE; in lkkbd_detection_done()
357 switch (lk->id[4]) { in lkkbd_detection_done()
359 strscpy(lk->name, "DEC LK201 keyboard", sizeof(lk->name)); in lkkbd_detection_done()
362 lk->keycode[0xb1] = KEY_LEFTALT; in lkkbd_detection_done()
366 strscpy(lk->name, "DEC LK401 keyboard", sizeof(lk->name)); in lkkbd_detection_done()
370 strscpy(lk->name, "Unknown DEC keyboard", sizeof(lk->name)); in lkkbd_detection_done()
373 "Jan-Benedict Glaw <jbglaw@lug-owl.de>\n", lk->phys); in lkkbd_detection_done()
376 printk(" 0x%02x", lk->id[i]); in lkkbd_detection_done()
382 lk->phys, lk->name); in lkkbd_detection_done()
385 * Report errors during keyboard boot-up. in lkkbd_detection_done()
387 switch (lk->id[2]) { in lkkbd_detection_done()
394 lk->phys); in lkkbd_detection_done()
400 "keyboard may not work properly\n", lk->phys); in lkkbd_detection_done()
406 lk->id[2], lk->phys); in lkkbd_detection_done()
413 if (lk->id[2] == LK_STUCK_KEY && lk->id[3] != 0) in lkkbd_detection_done()
416 lk->id[3], lk->keycode[lk->id[3]]); in lkkbd_detection_done()
427 struct input_dev *input_dev = lk->dev; in lkkbd_interrupt()
433 if (lk->ignore_bytes > 0) { in lkkbd_interrupt()
434 DBG(KERN_INFO "Ignoring a byte on %s\n", lk->name); in lkkbd_interrupt()
435 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data; in lkkbd_interrupt()
437 if (lk->ignore_bytes == 0) in lkkbd_interrupt()
446 input_report_key(input_dev, lk->keycode[i], 0); in lkkbd_interrupt()
451 DBG(KERN_INFO "Got 0x01, scheduling re-initialization\n"); in lkkbd_interrupt()
452 lk->ignore_bytes = LK_NUM_IGNORE_BYTES; in lkkbd_interrupt()
453 lk->id[LK_NUM_IGNORE_BYTES - lk->ignore_bytes--] = data; in lkkbd_interrupt()
454 schedule_work(&lk->tq); in lkkbd_interrupt()
470 keycode = lk->keycode[data]; in lkkbd_interrupt()
473 !test_bit(keycode, input_dev->key)); in lkkbd_interrupt()
478 __FILE__, data, lk->name); in lkkbd_interrupt()
487 struct serio *serio = lk->serio; in lkkbd_toggle_leds()
507 struct serio *serio = lk->serio; in lkkbd_toggle_keyclick()
512 serio_write(serio, volume_to_hw(lk->keyclick_volume)); in lkkbd_toggle_keyclick()
514 serio_write(serio, volume_to_hw(lk->ctrlclick_volume)); in lkkbd_toggle_keyclick()
544 serio_write(lk->serio, LK_CMD_SOUND_BELL); in lkkbd_event()
556 return -1; in lkkbd_event()
569 serio_write(lk->serio, LK_CMD_REQUEST_ID); in lkkbd_reinit()
572 serio_write(lk->serio, LK_CMD_SET_DEFAULTS); in lkkbd_reinit()
582 serio_write(lk->serio, LK_CMD_ENABLE_LK401); in lkkbd_reinit()
586 serio_write(lk->serio, in lkkbd_reinit()
590 serio_write(lk->serio, LK_CMD_ENABLE_BELL); in lkkbd_reinit()
591 serio_write(lk->serio, volume_to_hw(lk->bell_volume)); in lkkbd_reinit()
594 lkkbd_toggle_keyclick(lk, test_bit(SND_CLICK, lk->dev->snd)); in lkkbd_reinit()
597 if (test_bit(SND_BELL, lk->dev->snd)) in lkkbd_reinit()
598 serio_write(lk->serio, LK_CMD_SOUND_BELL); in lkkbd_reinit()
614 err = -ENOMEM; in lkkbd_connect()
618 lk->serio = serio; in lkkbd_connect()
619 lk->dev = input_dev; in lkkbd_connect()
620 INIT_WORK(&lk->tq, lkkbd_reinit); in lkkbd_connect()
621 lk->bell_volume = bell_volume; in lkkbd_connect()
622 lk->keyclick_volume = keyclick_volume; in lkkbd_connect()
623 lk->ctrlclick_volume = ctrlclick_volume; in lkkbd_connect()
624 memcpy(lk->keycode, lkkbd_keycode, sizeof(lk->keycode)); in lkkbd_connect()
626 strscpy(lk->name, "DEC LK keyboard", sizeof(lk->name)); in lkkbd_connect()
627 snprintf(lk->phys, sizeof(lk->phys), "%s/input0", serio->phys); in lkkbd_connect()
629 input_dev->name = lk->name; in lkkbd_connect()
630 input_dev->phys = lk->phys; in lkkbd_connect()
631 input_dev->id.bustype = BUS_RS232; in lkkbd_connect()
632 input_dev->id.vendor = SERIO_LKKBD; in lkkbd_connect()
633 input_dev->id.product = 0; in lkkbd_connect()
634 input_dev->id.version = 0x0100; in lkkbd_connect()
635 input_dev->dev.parent = &serio->dev; in lkkbd_connect()
636 input_dev->event = lkkbd_event; in lkkbd_connect()
640 __set_bit(EV_KEY, input_dev->evbit); in lkkbd_connect()
641 __set_bit(EV_LED, input_dev->evbit); in lkkbd_connect()
642 __set_bit(EV_SND, input_dev->evbit); in lkkbd_connect()
643 __set_bit(EV_REP, input_dev->evbit); in lkkbd_connect()
644 __set_bit(LED_CAPSL, input_dev->ledbit); in lkkbd_connect()
645 __set_bit(LED_SLEEP, input_dev->ledbit); in lkkbd_connect()
646 __set_bit(LED_COMPOSE, input_dev->ledbit); in lkkbd_connect()
647 __set_bit(LED_SCROLLL, input_dev->ledbit); in lkkbd_connect()
648 __set_bit(SND_BELL, input_dev->sndbit); in lkkbd_connect()
649 __set_bit(SND_CLICK, input_dev->sndbit); in lkkbd_connect()
651 input_dev->keycode = lk->keycode; in lkkbd_connect()
652 input_dev->keycodesize = sizeof(lk->keycode[0]); in lkkbd_connect()
653 input_dev->keycodemax = ARRAY_SIZE(lk->keycode); in lkkbd_connect()
656 __set_bit(lk->keycode[i], input_dev->keybit); in lkkbd_connect()
657 __clear_bit(KEY_RESERVED, input_dev->keybit); in lkkbd_connect()
665 err = input_register_device(lk->dev); in lkkbd_connect()
669 serio_write(lk->serio, LK_CMD_POWERCYCLE_RESET); in lkkbd_connect()
687 input_get_device(lk->dev); in lkkbd_disconnect()
688 input_unregister_device(lk->dev); in lkkbd_disconnect()
691 input_put_device(lk->dev); in lkkbd_disconnect()