Lines Matching defs:usbkbmd

381 	usbkbm_state_t	*usbkbmd;
411 usbkbmd = kmem_zalloc(sizeof (usbkbm_state_t), KM_SLEEP);
414 "usbkbm_state= %p", (void *)usbkbmd);
419 usbkbmd->usbkbm_readq = q;
420 usbkbmd->usbkbm_writeq = WR(q);
422 usbkbmd->usbkbm_vkbd_type = KB_USB;
427 q->q_ptr = (caddr_t)usbkbmd;
428 WR(q)->q_ptr = (caddr_t)usbkbmd;
431 (struct kbtrans_hardware *)usbkbmd, &kbd_usb_callbacks,
432 &usbkbmd->usbkbm_kbtrans, usbkbm_led_state, 0);
437 kmem_free(usbkbmd, sizeof (*usbkbmd));
446 usbkbmd->usbkbm_polled_info.cons_polledio_version =
449 usbkbmd->usbkbm_polled_info.cons_polledio_argument =
450 (cons_polledio_arg_t)usbkbmd;
452 usbkbmd->usbkbm_polled_info.cons_polledio_putchar = NULL;
454 usbkbmd->usbkbm_polled_info.cons_polledio_getchar =
457 usbkbmd->usbkbm_polled_info.cons_polledio_ischar =
460 usbkbmd->usbkbm_polled_info.cons_polledio_enter =
463 usbkbmd->usbkbm_polled_info.cons_polledio_exit =
466 usbkbmd->usbkbm_polled_info.cons_polledio_setled =
469 usbkbmd->usbkbm_polled_info.cons_polledio_keycheck =
477 usbkbmd->usbkbm_polled_buffer_head =
478 usbkbmd->usbkbm_polled_scancode_buffer;
479 usbkbmd->usbkbm_polled_buffer_tail =
480 usbkbmd->usbkbm_polled_scancode_buffer;
481 usbkbmd->usbkbm_polled_buffer_num_characters = 0;
491 (void) kbtrans_streams_fini(usbkbmd->usbkbm_kbtrans);
493 kmem_free(usbkbmd, sizeof (*usbkbmd));
499 putnext(usbkbmd->usbkbm_writeq, mctl_ptr);
506 usbkbmd->usbkbm_flags |= USBKBM_QWAIT;
507 while (usbkbmd->usbkbm_flags & USBKBM_QWAIT) {
510 usbkbmd->usbkbm_flags = 0;
511 (void) kbtrans_streams_fini(usbkbmd->usbkbm_kbtrans);
513 kmem_free(usbkbmd, sizeof (*usbkbmd));
521 if (usbkbm_get_input_format(usbkbmd) != USB_SUCCESS) {
537 if (usbkbmd->usbkbm_layout == SUN_JAPANESE_TYPE7) {
539 if ((ret = usbkbm_get_vid_pid(usbkbmd)) != 0) {
544 if ((usbkbmd->usbkbm_vid_pid.VendorId ==
546 (usbkbmd->usbkbm_vid_pid.ProductId ==
548 usbkbmd->usbkbm_layout = SUN_JAPANESE_TYPE6;
552 kbtrans_streams_set_keyboard(usbkbmd->usbkbm_kbtrans, KB_USB,
555 usbkbmd->usbkbm_flags = USBKBM_OPEN;
557 kbtrans_streams_enable(usbkbmd->usbkbm_kbtrans);
571 if (kbtrans_streams_message(usbkbmd->usbkbm_kbtrans, mctl_ptr)
594 usbkbm_state_t *usbkbmd = (usbkbm_state_t *)q->q_ptr;
599 (void) kbtrans_streams_fini(usbkbmd->usbkbm_kbtrans);
607 usbkbmd->usbkbm_flags = 0;
609 kmem_free(usbkbmd, sizeof (usbkbm_state_t));
626 usbkbm_state_t *usbkbmd;
632 usbkbmd = (usbkbm_state_t *)q->q_ptr;
635 ret = kbtrans_streams_message(usbkbmd->usbkbm_kbtrans, mp);
692 usbkbm_state_t *usbkbmd;
706 usbkbmd = (usbkbm_state_t *)q->q_ptr;
720 usbkbmd->usbkbm_vkbd_type = tmp;
731 *(int *)datap->b_wptr = usbkbmd->usbkbm_layout;
750 usbkbmd->usbkbm_layout = *(intptr_t *)mp->b_cont->b_rptr;
760 usbkbm_layout = usbkbmd->usbkbm_layout;
781 if (usbkbmd->usbkbm_setled_second_byte) {
783 usbkbmd, command);
784 usbkbmd->usbkbm_setled_second_byte = 0;
796 err = usbkbm_kioccmd(usbkbmd, mp, command, &ioctlrespsize);
816 usbkbmd->usbkbm_pending_link = mp;
830 putnext(usbkbmd->usbkbm_writeq, mctl_ptr);
843 usbkbmd->usbkbm_pending_link = mp;
857 putnext(usbkbmd->usbkbm_writeq, mctl_ptr);
916 putnext(usbkbmd->usbkbm_readq, mp);
928 freemsg(usbkbmd->usbkbm_streams_iocpending);
929 usbkbmd->usbkbm_streams_iocpending = mp;
931 if (usbkbmd->usbkbm_streams_bufcallid) {
933 qunbufcall(usbkbmd->usbkbm_readq,
934 usbkbmd->usbkbm_streams_bufcallid);
936 usbkbmd->usbkbm_streams_bufcallid =
937 qbufcall(usbkbmd->usbkbm_readq, ioctlrespsize, BPRI_HI,
938 usbkbm_reioctl, usbkbmd);
948 usbkbm_kioccmd(usbkbm_state_t *usbkbmd, register mblk_t *mp,
971 *(int *)datap->b_wptr = usbkbmd->usbkbm_layout;
986 usbkbmd->usbkbm_setled_second_byte = 1;
1032 usbkbm_state_t *usbkbmd;
1034 usbkbmd = (usbkbm_state_t *)q->q_ptr;
1039 if (usbkbmd == 0) {
1066 if (!(usbkbmd->usbkbm_flags & USBKBM_OPEN)) {
1078 usbkbmd->usbkbm_flags &= ~USBKBM_QWAIT;
1102 if (MBLKL(mp) == usbkbmd->usbkbm_report_format.tlen) {
1103 if (usbkbmd->usbkbm_report_format.keyid !=
1106 usbkbmd->usbkbm_report_format.keyid) {
1115 usbkbm_unpack_usb_packet(usbkbmd, usbkbm_streams_callback,
1130 register usbkbm_state_t *usbkbmd = (usbkbm_state_t *)q->q_ptr;
1154 usbkbmd->usbkbm_report_descr =
1157 usbkbmd->usbkbm_report_descr = NULL;
1160 usbkbmd->usbkbm_flags &= ~USBKBM_QWAIT;
1167 bcopy(data, &usbkbmd->usbkbm_vid_pid, iocp->ioc_count);
1170 usbkbmd->usbkbm_flags &= ~USBKBM_QWAIT;
1178 reply_mp = usbkbmd->usbkbm_pending_link;
1186 bcopy(data, &usbkbmd->usbkbm_hid_callback, size);
1195 &usbkbmd->usbkbm_polled_info;
1202 usbkbmd->usbkbm_pending_link = NULL;
1212 bzero(&usbkbmd->usbkbm_hid_callback,
1217 reply_mp = usbkbmd->usbkbm_pending_link;
1228 usbkbmd->usbkbm_pending_link = NULL;
1240 usbkbm_unpack_usb_packet(usbkbmd, usbkbm_streams_callback,
1251 usbkbm_streams_setled((struct kbtrans_hardware *)usbkbmd,
1276 usbkbm_state_t *usbkbmd;
1281 usbkbmd = (usbkbm_state_t *)kbtrans_hw;
1292 led_id = usbkbmd->usbkbm_report_format.keyid;
1327 putnext(usbkbmd->usbkbm_writeq, mctl_ptr);
1351 usbkbm_state_t *usbkbmd;
1356 usbkbmd = (usbkbm_state_t *)hw;
1361 if (usbkbmd->usbkbm_polled_buffer_num_characters != 0) {
1363 usbkbm_get_scancode(usbkbmd, key, state);
1369 usbkbmd->usbkbm_hid_callback.hid_polled_input_handle;
1371 size = (usbkbmd->usbkbm_hid_callback.hid_polled_read)
1378 if (size != usbkbmd->usbkbm_report_format.tlen) {
1387 if (usbkbmd->usbkbm_report_format.keyid != HID_REPORT_ID_UNDEFINED) {
1388 if (*buffer != usbkbmd->usbkbm_report_format.keyid) {
1395 usbkbm_unpack_usb_packet(usbkbmd, usbkbm_poll_callback, buffer);
1401 if (usbkbmd->usbkbm_polled_buffer_num_characters != 0) {
1403 usbkbm_get_scancode(usbkbmd, key, state);
1411 static ushort_t usbkbm_get_state(usbkbm_state_t *usbkbmd)
1415 ASSERT(usbkbmd->usbkbm_vkbd_type == KB_PC ||
1416 usbkbmd->usbkbm_vkbd_type == KB_USB);
1418 if (usbkbmd->usbkbm_vkbd_type == KB_PC)
1439 usbkbm_streams_callback(usbkbm_state_t *usbkbmd, int key, enum keystate state)
1441 ushort_t index = usbkbm_get_state(usbkbmd);
1442 (*usbkbm_xlate[index])(usbkbmd, key, state);
1449 usbkbm_wrap_kbtrans(usbkbm_state_t *usbkbmd, int key, enum keystate state)
1451 kbtrans_streams_key(usbkbmd->usbkbm_kbtrans, key, state);
1458 usbkbm_usb2pc_xlate(usbkbm_state_t *usbkbmd, int key, enum keystate state)
1461 kbtrans_streams_key(usbkbmd->usbkbm_kbtrans, key, state);
1474 usbkbm_poll_callback(usbkbm_state_t *usbkbmd, int key, enum keystate state)
1479 if (usbkbmd->usbkbm_polled_buffer_num_characters ==
1491 usbkbmd->usbkbm_polled_buffer_head->poll_key = key;
1492 usbkbmd->usbkbm_polled_buffer_head->poll_state = state;
1497 usbkbmd->usbkbm_polled_buffer_num_characters++;
1502 usbkbmd->usbkbm_polled_buffer_head++;
1507 if (usbkbmd->usbkbm_polled_buffer_head -
1508 usbkbmd->usbkbm_polled_scancode_buffer ==
1511 usbkbmd->usbkbm_polled_buffer_head =
1512 usbkbmd->usbkbm_polled_scancode_buffer;
1523 usbkbm_get_scancode(usbkbm_state_t *usbkbmd, int *key, enum keystate *state)
1528 *key = usbkbmd->usbkbm_polled_buffer_tail->poll_key;
1529 *state = usbkbmd->usbkbm_polled_buffer_tail->poll_state;
1535 usbkbmd->usbkbm_polled_buffer_tail++;
1540 if (usbkbmd->usbkbm_polled_buffer_tail -
1541 usbkbmd->usbkbm_polled_scancode_buffer ==
1544 usbkbmd->usbkbm_polled_buffer_tail =
1545 usbkbmd->usbkbm_polled_scancode_buffer;
1551 usbkbmd->usbkbm_polled_buffer_num_characters--;
1572 usbkbm_state_t *usbkbmd;
1574 usbkbmd = (usbkbm_state_t *)arg;
1576 return (kbtrans_getchar(usbkbmd->usbkbm_kbtrans));
1586 usbkbm_state_t *usbkbmd;
1588 usbkbmd = (usbkbm_state_t *)arg;
1590 return (kbtrans_ischar(usbkbmd->usbkbm_kbtrans));
1601 usbkbm_state_t *usbkbmd = (usbkbm_state_t *)arg;
1605 kbstart = usbkbmd->usbkbm_report_format.kpos;
1606 kbend = kbstart + usbkbmd->usbkbm_report_format.klen;
1615 usbkbmd->usbkbm_lastusbpacket[uindex] =
1616 usbkbmd->usbkbm_pendingusbpacket[uindex];
1618 usbkbmd->usbkbm_pendingusbpacket[uindex] = 0;
1622 usbkbmd->usbkbm_hid_callback.hid_polled_input_handle;
1624 (void) (usbkbmd->usbkbm_hid_callback.hid_polled_input_enter)
1637 usbkbm_state_t *usbkbmd = (usbkbm_state_t *)arg;
1641 kbstart = usbkbmd->usbkbm_report_format.kpos;
1642 kbend = kbstart + usbkbmd->usbkbm_report_format.klen;
1651 usbkbmd->usbkbm_pendingusbpacket[uindex] =
1652 usbkbmd->usbkbm_lastusbpacket[uindex];
1654 usbkbmd->usbkbm_lastusbpacket[uindex] = 0;
1658 usbkbmd->usbkbm_hid_callback.hid_polled_input_handle;
1660 (void) (usbkbmd->usbkbm_hid_callback.hid_polled_input_exit)
1676 usbkbm_unpack_usb_packet(usbkbm_state_t *usbkbmd, process_key_callback_t func,
1681 uchar_t *lastusbpacket = usbkbmd->usbkbm_lastusbpacket;
1685 packet_size = usbkbmd->usbkbm_report_format.tlen;
1686 kbstart = usbkbmd->usbkbm_report_format.kpos;
1687 kbend = kbstart + usbkbmd->usbkbm_report_format.klen;
1704 (*func)(usbkbmd, USB_LSHIFTKEY, (mkb&USB_LSHIFTBIT) ?
1711 (*func)(usbkbmd, USB_LCTLCKEY, mkb&USB_LCTLBIT ?
1716 (*func)(usbkbmd, USB_LALTKEY, mkb&USB_LALTBIT ?
1721 (*func)(usbkbmd, USB_LMETAKEY, mkb&USB_LMETABIT ?
1726 (*func)(usbkbmd, USB_RMETAKEY, mkb&USB_RMETABIT ?
1731 (*func)(usbkbmd, USB_RALTKEY, mkb&USB_RALTBIT ?
1736 (*func)(usbkbmd, USB_RCTLCKEY, mkb&USB_RCTLBIT ?
1741 (*func)(usbkbmd, USB_RSHIFTKEY, mkb&USB_RSHIFTBIT ?
1781 (*func)(usbkbmd, lastusbpacket[lindex], KEY_RELEASED);
1789 usbkbmd->usbkbm_pendingusbpacket[uindex] = usbpacket[uindex];
1810 (*func)(usbkbmd, usbpacket[uindex],
1813 usbkbmd->usbkbm_pendingusbpacket[uindex] = 0;
1827 usbkbmd->usbkbm_pendingusbpacket[uindex];
1828 usbkbmd->usbkbm_pendingusbpacket[uindex] = 0;
1865 usbkbm_state_t *usbkbmd;
1868 usbkbmd = (usbkbm_state_t *)arg;
1870 usbkbmd->usbkbm_streams_bufcallid = 0;
1872 if ((mp = usbkbmd->usbkbm_streams_iocpending) != NULL) {
1875 usbkbmd->usbkbm_streams_iocpending = NULL;
1877 (void) usbkbm_ioctl(usbkbmd->usbkbm_writeq, mp);
1886 usbkbm_get_vid_pid(usbkbm_state_t *usbkbmd)
1890 queue_t *q = usbkbmd->usbkbm_readq;
1897 (void) kbtrans_streams_fini(usbkbmd->usbkbm_kbtrans);
1899 kmem_free(usbkbmd, sizeof (usbkbm_state_t));
1904 putnext(usbkbmd->usbkbm_writeq, mctl_ptr);
1905 usbkbmd->usbkbm_flags |= USBKBM_QWAIT;
1906 while (usbkbmd->usbkbm_flags & USBKBM_QWAIT) {
1908 usbkbmd->usbkbm_flags = 0;
1909 (void) kbtrans_streams_fini(usbkbmd->usbkbm_kbtrans);
1911 kmem_free(usbkbmd, sizeof (usbkbm_state_t));
1925 usbkbm_get_input_format(usbkbm_state_t *usbkbmd)
1931 usbkbm_report_format_t *kbd_fmt = &usbkbmd->usbkbm_report_format;
1940 if (usbkbmd->usbkbm_report_descr == NULL) {
1945 if (hidparser_get_country_code(usbkbmd->usbkbm_report_descr,
1946 (uint16_t *)&usbkbmd->usbkbm_layout) == HIDPARSER_FAILURE) {
1952 usbkbmd->usbkbm_layout = usbkbm_layout;
1957 usbkbmd->usbkbm_report_descr,
1976 usbkbmd->usbkbm_report_descr,