Lines Matching refs:kbd

48 #include <dev/kbd/kbdreg.h>
78 atkbd_attach_unit(device_t dev, keyboard_t **kbd, int irq, int flags)
93 *kbd = NULL;
97 error = (*sw->init)(unit, kbd, args, flags);
100 (*sw->enable)(*kbd);
104 error = kbd_attach(*kbd);
113 atkbd_timeout(*kbd);
116 (*sw->diag)(*kbd, bootverbose);
118 EVENTHANDLER_REGISTER(shutdown_final, atkbd_shutdown_final, *kbd,
127 keyboard_t *kbd;
156 kbd = (keyboard_t *)arg;
157 if (kbdd_lock(kbd, TRUE)) {
163 kbdd_lock(kbd, FALSE);
164 if (kbdd_check_char(kbd))
165 kbdd_intr(kbd, NULL);
232 static int set_typematic(keyboard_t *kbd);
250 #include <dev/kbd/kbdtables.h>
271 keyboard_t *kbd;
283 kbd = kbd_get_keyboard(i);
284 kbd_unregister(kbd);
285 kbd->kb_flags &= ~KB_REGISTERED;
297 kbd = NULL;
300 if (atkbd_init(ATKBD_DEFAULT, &kbd, arg, flags))
336 keyboard_t *kbd;
348 *kbdp = kbd = &default_kbd;
349 if (KBD_IS_INITIALIZED(kbd) && KBD_IS_CONFIGURED(kbd))
359 *kbdp = kbd = malloc(sizeof(*kbd), M_DEVBUF, M_NOWAIT | M_ZERO);
367 if ((kbd == NULL) || (state == NULL) || (keymap == NULL)
375 kbd = *kbdp;
376 state = (atkbd_state_t *)kbd->kb_data;
378 keymap = kbd->kb_keymap;
379 accmap = kbd->kb_accentmap;
380 fkeymap = kbd->kb_fkeytab;
381 fkeymap_size = kbd->kb_fkeytab_size;
385 if (!KBD_IS_PROBED(kbd)) {
391 kbd_init_struct(kbd, ATKBD_DRIVER_NAME, KB_OTHER, unit, flags,
397 kbd_set_maps(kbd, keymap, accmap, fkeymap, fkeymap_size);
398 kbd->kb_data = (void *)state;
406 KBD_FOUND_DEVICE(kbd);
408 atkbd_clear_state(kbd);
414 KBD_PROBE_DONE(kbd);
416 if (!KBD_IS_INITIALIZED(kbd) && !(flags & KB_CONF_PROBE_ONLY)) {
417 kbd->kb_config = flags & ~KB_CONF_PROBE_ONLY;
418 if (KBD_HAS_DEVICE(kbd)
419 && init_keyboard(state->kbdc, &kbd->kb_type, kbd->kb_config)
420 && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD)) {
421 kbd_unregister(kbd);
425 atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
426 set_typematic(kbd);
427 delay[0] = kbd->kb_delay1;
428 delay[1] = kbd->kb_delay2;
429 atkbd_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
430 KBD_INIT_DONE(kbd);
432 if (!KBD_IS_CONFIGURED(kbd)) {
433 if (kbd_register(kbd) < 0) {
437 KBD_CONFIG_DONE(kbd);
451 if (kbd != NULL) {
452 free(kbd, M_DEVBUF);
461 atkbd_term(keyboard_t *kbd)
463 kbd_unregister(kbd);
469 atkbd_intr(keyboard_t *kbd, void *arg)
471 atkbd_state_t *state = (atkbd_state_t *)kbd->kb_data;
475 if (!KBD_HAS_DEVICE(kbd)) {
480 init_keyboard(state->kbdc, &kbd->kb_type, kbd->kb_config);
481 KBD_FOUND_DEVICE(kbd);
482 atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
483 set_typematic(kbd);
484 delay[0] = kbd->kb_delay1;
485 delay[1] = kbd->kb_delay2;
486 atkbd_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
492 if (KBD_IS_ACTIVE(kbd) && KBD_IS_BUSY(kbd)) {
494 (*kbd->kb_callback.kc_func)(kbd, KBDIO_KEYINPUT,
495 kbd->kb_callback.kc_arg);
499 c = atkbd_read_char(kbd, FALSE);
507 atkbd_test_if(keyboard_t *kbd)
513 empty_both_buffers(((atkbd_state_t *)kbd->kb_data)->kbdc, 10);
515 if (!test_controller(((atkbd_state_t *)kbd->kb_data)->kbdc))
517 else if (test_kbd_port(((atkbd_state_t *)kbd->kb_data)->kbdc) != 0)
529 atkbd_enable(keyboard_t *kbd)
534 KBD_ACTIVATE(kbd);
541 atkbd_disable(keyboard_t *kbd)
546 KBD_DEACTIVATE(kbd);
553 atkbd_read(keyboard_t *kbd, int wait)
558 c = read_kbd_data(((atkbd_state_t *)kbd->kb_data)->kbdc);
560 c = read_kbd_data_no_wait(((atkbd_state_t *)kbd->kb_data)->kbdc);
562 ++kbd->kb_count;
563 return (KBD_IS_ACTIVE(kbd) ? c : -1);
568 atkbd_check(keyboard_t *kbd)
570 if (!KBD_IS_ACTIVE(kbd))
572 return kbdc_data_ready(((atkbd_state_t *)kbd->kb_data)->kbdc);
577 atkbd_read_char(keyboard_t *kbd, int wait)
584 state = (atkbd_state_t *)kbd->kb_data;
605 ++kbd->kb_count;
733 if (kbd->kb_type == KB_84) {
748 } else if (kbd->kb_type == KB_101) {
814 action = genkbd_keyaction(kbd, keycode, scancode & 0x80,
824 atkbd_check_char(keyboard_t *kbd)
828 if (!KBD_IS_ACTIVE(kbd))
830 state = (atkbd_state_t *)kbd->kb_data;
838 atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
844 atkbd_state_t *state = kbd->kb_data;
872 state->ks_state |= KBD_LED_VAL(kbd);
878 atkbd_clear_state(kbd);
889 *(int *)arg = KBD_LED_VAL(kbd);
907 kbd->kb_keymap->n_keys > ALTGR_OFFSET) {
913 if (KBD_HAS_DEVICE(kbd)) {
921 KBD_LED_VAL(kbd) = *(int *)arg;
943 return atkbd_ioctl(kbd, KDSETLED, arg);
947 if (!KBD_HAS_DEVICE(kbd))
952 kbd->kb_delay1 = typematic_delay(i);
953 kbd->kb_delay2 = typematic_rate(i);
966 if (!KBD_HAS_DEVICE(kbd))
970 kbd->kb_delay1 = typematic_delay(*(int *)arg);
971 kbd->kb_delay2 = typematic_rate(*(int *)arg);
983 return genkbd_commonioctl(kbd, cmd, arg);
992 atkbd_lock(keyboard_t *kbd, int lock)
994 return kbdc_lock(((atkbd_state_t *)kbd->kb_data)->kbdc, lock);
999 atkbd_clear_state(keyboard_t *kbd)
1003 state = (atkbd_state_t *)kbd->kb_data;
1016 atkbd_get_state(keyboard_t *kbd, void *buf, size_t len)
1022 bcopy(kbd->kb_data, buf, sizeof(atkbd_state_t));
1028 atkbd_set_state(keyboard_t *kbd, void *buf, size_t len)
1032 if (((atkbd_state_t *)kbd->kb_data)->kbdc
1035 bcopy(buf, kbd->kb_data, sizeof(atkbd_state_t));
1040 atkbd_poll(keyboard_t *kbd, int on)
1045 state = (atkbd_state_t *)kbd->kb_data;
1059 keyboard_t *kbd = v;
1060 KBDC kbdc = ((atkbd_state_t *)kbd->kb_data)->kbdc;
1082 set_typematic(keyboard_t *kbd)
1085 atkbd_state_t *state = kbd->kb_data;
1090 kbd->kb_delay1 = typematic_delay(val);
1091 kbd->kb_delay2 = typematic_rate(val);
1230 printf("atkbd: the current kbd controller command byte %04x\n",
1325 /* XT kbd doesn't need scan code translation */
1330 * The XT kbd isn't usable unless the proper scan