Lines Matching defs:conskbd

39  * same system. All the keyboards are linked under conskbd, and act as a
46 * of this kind under conskbd. So we do as the follows:
48 * A new ioctl CONSSETKBDTYPE interface between conskbd and lower
49 * keyboard drivers is added. When conskbd receives I_LINK or I_PLINK
51 * requesting to be linked under conskbd. If the lower driver does't
53 * only one keyboard instance could be linked under conskbd.
79 #include <sys/conskbd.h>
106 "conskbd", /* mi_idname */
212 "conskbd multiplexer driver",
341 static conskbd_state_t conskbd = { 0 };
431 * "conskbd" node, which is an internal node. consconfig_dacf module will
432 * open this internal node, and link the conskbd under the wc (workstaion
459 (ddi_create_internal_pathname(devi, "conskbd", S_IFCHR,
466 ksp = kstat_create("conskbd", 0, "activity", "misc", KSTAT_TYPE_NAMED,
476 conskbd.conskbd_layout = -1; /* invalid layout */
477 conskbd.conskbd_led_state = -1;
478 conskbd.conskbd_bypassed = B_FALSE;
488 * Detach an instance of the conskbd driver. In fact, the driver can not
570 * initialize kbtrans module for conskbd
573 &conskbd, &conskbd_callbacks, &conskbd.conskbd_kbtrans, 0, 0);
576 kbtrans_streams_set_keyboard(conskbd.conskbd_kbtrans, KB_USB,
579 conskbd.conskbd_polledio.cons_polledio_version = CONSPOLLEDIO_V1;
580 conskbd.conskbd_polledio.cons_polledio_argument =
581 (cons_polledio_arg_t)&conskbd;
582 conskbd.conskbd_polledio.cons_polledio_putchar = NULL;
583 conskbd.conskbd_polledio.cons_polledio_getchar =
585 conskbd.conskbd_polledio.cons_polledio_ischar =
587 conskbd.conskbd_polledio.cons_polledio_enter = conskbd_polledio_enter;
588 conskbd.conskbd_polledio.cons_polledio_exit = conskbd_polledio_exit;
606 conskbd.conskbd_directio = B_FALSE;
608 kbtrans_streams_untimeout(conskbd.conskbd_kbtrans);
609 kbtrans_streams_set_queue(conskbd.conskbd_kbtrans,
615 * If there are any pending ioctls which conskbd hasn't
681 if (conskbd.conskbd_bypassed == B_FALSE) {
686 * The conskbd driver is a psaudo driver. It has two
708 conskbd.conskbd_kbtrans);
710 conskbd.conskbd_kbtrans, RD(q));
712 conskbd.conskbd_kbtrans, mp);
714 conskbd.conskbd_kbtrans, oldq);
749 if ((conskbd.conskbd_bypassed) &&
750 (conskbd.conskbd_lqueue_nums > 0)) {
751 if (putq(conskbd.conskbd_lqueue_list->
834 if (conskbd.conskbd_bypassed == B_TRUE) {
836 * A legacy keyboard can NOT be connected to conskbd together
885 if (conskbd.conskbd_bypassed == B_TRUE) {
912 if (conskbd.conskbd_layout == -1)
915 *(int *)datap->b_wptr = conskbd.conskbd_layout;
929 kbd_layout_bak = conskbd.conskbd_layout;
930 conskbd.conskbd_layout = *(intptr_t *)(mp->b_cont->b_rptr);
931 if (conskbd.conskbd_layout != kbd_layout_bak) {
936 conskbd.conskbd_layout)) != NULL) {
937 if (conskbd.conskbd_directio) {
953 if (conskbd.conskbd_lqueue_list == NULL) {
961 if (conskbd.conskbd_lqueue_list == NULL) {
974 * messages up to conskbd, so that when key STOP(or F1) is
990 if (conskbd.conskbd_lqueue_list == NULL ||
1003 if (conskbd.conskbd_layout == -1)
1007 *(int *)datap->b_wptr = conskbd.conskbd_layout;
1032 ASSERT(conskbd.conskbd_lqueue_nums == 1);
1043 *(int *)datap->b_wptr = conskbd.conskbd_directio;
1060 conskbd.conskbd_directio = *(int *)mp->b_cont->b_rptr;
1067 if (conskbd.conskbd_lqueue_nums > 0) {
1068 lq = conskbd.conskbd_lqueue_list;
1085 if (conskbd.conskbd_lqueue_nums > 0) {
1086 lq = conskbd.conskbd_lqueue_list;
1146 if (conskbd.conskbd_bypassed == B_FALSE) {
1182 * keyboard. When a keyboard is umplumbed from conskbd,
1195 kbtrans_streams_key(conskbd.conskbd_kbtrans,
1199 if (conskbd.conskbd_directio)
1249 * which are plumbed into conskbd. And then, when receives responses
1269 if (conskbd.conskbd_lqueue_nums == 0) {
1277 lqs = conskbd.conskbd_lqueue_list;
1289 msg->kpm_req_nums = conskbd.conskbd_lqueue_nums;
1292 for (retry = 0, lqs = conskbd.conskbd_lqueue_list; lqs; ) {
1367 cmn_err(CE_WARN, "conskbd: "
1376 cmn_err(CE_WARN, "conskbd: "
1460 prev = conskbd.conskbd_lqueue_list;
1464 conskbd.conskbd_lqueue_list =
1471 conskbd.conskbd_lqueue_nums --;
1472 if (conskbd.conskbd_lqueue_nums == 0) {
1473 kbd_layout_bak = conskbd.conskbd_layout;
1474 conskbd.conskbd_layout = -1;
1480 conskbd.conskbd_kbtrans,
1497 * queue lower queue. Every lower queue has a state, refer to conskbd.h file
1541 cmn_err(CE_WARN, "conskbd: lqs_ack_complete() state error");
1594 * will bypass the conskbd module.
1599 * conskbd, we reject the current one.
1601 if (conskbd.conskbd_lqueue_nums > 0) {
1608 * link this keyboard under conskbd.
1710 * requesting to be linked under conskbd. If current
1712 * layout from it, we set conskbd's layout
1714 if (layout != -1 && conskbd.conskbd_layout == -1) {
1716 conskbd.conskbd_layout = kbd_layout_bak;
1718 conskbd.conskbd_layout = layout;
1725 if (conskbd.conskbd_directio) {
1744 /* if fail, leave conskbd's layout as it is */
1751 if (conskbd.conskbd_led_state == -1)
1759 if (conskbd.conskbd_led_state != -1) {
1761 conskbd.conskbd_led_state;
1782 * current keyboard under conskbd. Thus, even if fails
1802 if (conskbd.conskbd_led_state == -1) {
1807 conskbd.conskbd_led_state = led_state;
1808 kbtrans_streams_setled(conskbd.conskbd_kbtrans,
1813 /* if fail, leave conskbd's led_state as it is */
1821 * error, so we will plumb the lower queue into conskbd whether
1916 * as conskbd.
1930 cmn_err(CE_WARN, "conskbd: keyboard is"
1944 &conskbd.conskbd_polledio;
1961 cmn_err(CE_WARN, "conskbd: keyboard is"
1988 cmn_err(CE_WARN, "conskbd: unexpected ioctl reply");
2015 * under conskbd
2017 conskbd.conskbd_bypassed = B_TRUE;
2020 * Link the lower queue under conskbd
2024 lqs->lqs_next = conskbd.conskbd_lqueue_list;
2025 conskbd.conskbd_lqueue_list = lqs;
2026 conskbd.conskbd_lqueue_nums++;
2047 * Now, link the lower queue under conskbd
2052 lqs->lqs_next = conskbd.conskbd_lqueue_list;
2054 conskbd.conskbd_lqueue_nums++;
2055 conskbd.conskbd_lqueue_list = lqs;
2117 * When conskbd works in TR_ASCII translation mode, if anyone of
2133 ASSERT(&conskbd == conskbdp);
2203 if (conskbd.conskbd_bypassed == B_TRUE)
2261 *(int *)datap->b_wptr = conskbd.conskbd_directio;
2287 conskbd.conskbd_directio = directio;
2289 if (conskbd.conskbd_directio) {
2291 conskbd.conskbd_kbtrans, conskbd_regqueue);
2294 conskbd.conskbd_kbtrans, conskbd_consqueue);
2438 cmn_err(CE_CONT, "conskbd: %s", buf);