Lines Matching refs:global

399 static void i8042_send(struct i8042 *global, int reg, unsigned char cmd);
405 i8042_discard_junk_data(struct i8042 *global) in i8042_discard_junk_data() argument
411 stat = ddi_get8(global->io_handle, in i8042_discard_junk_data()
412 global->io_addr + I8042_STAT); in i8042_discard_junk_data()
415 (void) ddi_get8(global->io_handle, in i8042_discard_junk_data()
416 global->io_addr + I8042_DATA); in i8042_discard_junk_data()
422 i8042_cleanup(struct i8042 *global) in i8042_cleanup() argument
427 ASSERT(global != NULL); in i8042_cleanup()
429 if (global->initialized == B_TRUE) { in i8042_cleanup()
434 mutex_enter(&global->i8042_mutex); in i8042_cleanup()
437 port = &global->i8042_ports[which_port]; in i8042_cleanup()
440 mutex_exit(&global->i8042_mutex); in i8042_cleanup()
445 mutex_exit(&global->i8042_mutex); in i8042_cleanup()
452 mutex_exit(&global->i8042_mutex); in i8042_cleanup()
458 global->initialized = B_FALSE; in i8042_cleanup()
460 mutex_exit(&global->i8042_mutex); in i8042_cleanup()
465 if (global->timeout_id != 0) { in i8042_cleanup()
466 (void) untimeout(global->timeout_id); in i8042_cleanup()
471 if (global->init_state & I8042_INIT_INTRS_ENABLED) in i8042_cleanup()
472 i8042_write_command_byte(global, I8042_CMD_DISABLE_ALL); in i8042_cleanup()
474 if (global->intrs_added) { in i8042_cleanup()
479 for (i = global->nintrs - 1; i >= 0; i--) { in i8042_cleanup()
480 if (global->intrs_added & (1 << i)) in i8042_cleanup()
481 ddi_remove_intr(global->dip, i, in i8042_cleanup()
482 global->iblock_cookies[i]); in i8042_cleanup()
487 if (global->init_state & I8042_INIT_MUTEXES) { in i8042_cleanup()
490 port = &global->i8042_ports[which_port]; in i8042_cleanup()
494 cv_destroy(&global->glock_cv); in i8042_cleanup()
495 mutex_destroy(&global->i8042_out_mutex); in i8042_cleanup()
496 mutex_destroy(&global->i8042_mutex); in i8042_cleanup()
499 if (global->init_state & I8042_INIT_REGS_MAPPED) in i8042_cleanup()
500 ddi_regs_map_free(&global->io_handle); in i8042_cleanup()
502 if (global->init_state & I8042_INIT_BASIC) { in i8042_cleanup()
503 ddi_set_driver_private(global->dip, (caddr_t)NULL); in i8042_cleanup()
504 if (global->nintrs > 0) { in i8042_cleanup()
505 kmem_free(global->iblock_cookies, global->nintrs * in i8042_cleanup()
508 kmem_free(global, sizeof (struct i8042)); in i8042_cleanup()
523 i8042_wait_obf(struct i8042 *global) in i8042_wait_obf() argument
527 while (!(ddi_get8(global->io_handle, global->io_addr + I8042_STAT) & in i8042_wait_obf()
542 i8042_purge_outbuf(struct i8042 *global) in i8042_purge_outbuf() argument
547 if (i8042_wait_obf(global)) in i8042_purge_outbuf()
549 (void) ddi_get8(global->io_handle, in i8042_purge_outbuf()
550 global->io_addr + I8042_DATA); in i8042_purge_outbuf()
575 struct i8042 *global; in i8042_attach() local
582 global = (struct i8042 *)ddi_get_driver_private(dip); in i8042_attach()
583 i8042_discard_junk_data(global); in i8042_attach()
584 i8042_write_command_byte(global, I8042_CMD_ENABLE_ALL); in i8042_attach()
599 global = (struct i8042 *)kmem_zalloc(sizeof (struct i8042), KM_SLEEP); in i8042_attach()
600 ddi_set_driver_private(dip, (caddr_t)global); in i8042_attach()
601 global->dip = dip; in i8042_attach()
602 global->initialized = B_FALSE; in i8042_attach()
604 global->init_state |= I8042_INIT_BASIC; in i8042_attach()
606 if (ddi_regs_map_setup(dip, 0, (caddr_t *)&global->io_addr, in i8042_attach()
607 (offset_t)0, (offset_t)0, &attr, &global->io_handle) in i8042_attach()
611 global->init_state |= I8042_INIT_REGS_MAPPED; in i8042_attach()
616 if (ddi_dev_nintrs(dip, &global->nintrs) == DDI_FAILURE) in i8042_attach()
628 global->nintrs = 0; in i8042_attach()
629 } else if (global->nintrs == 0) { in i8042_attach()
641 ddi_dev_nintrs(dip, &global->nintrs) == DDI_FAILURE || in i8042_attach()
642 global->nintrs == 0) { in i8042_attach()
644 ddi_get_instance(global->dip)); in i8042_attach()
649 if (global->nintrs == 0) { in i8042_attach()
651 ddi_get_instance(global->dip)); in i8042_attach()
656 if (global->nintrs > MAX_INTERRUPTS) in i8042_attach()
657 global->nintrs = MAX_INTERRUPTS; in i8042_attach()
659 if (global->nintrs > 0) { in i8042_attach()
660 global->iblock_cookies = kmem_zalloc(global->nintrs * in i8042_attach()
663 for (i = 0; i < global->nintrs; i++) { in i8042_attach()
665 &global->iblock_cookies[i]) != DDI_SUCCESS) in i8042_attach()
669 global->iblock_cookies = NULL; in i8042_attach()
671 mutex_init(&global->i8042_mutex, NULL, MUTEX_DRIVER, in i8042_attach()
672 (global->nintrs > 0) ? global->iblock_cookies[0] : NULL); in i8042_attach()
674 mutex_init(&global->i8042_out_mutex, NULL, MUTEX_DRIVER, NULL); in i8042_attach()
676 cv_init(&global->glock_cv, NULL, CV_DRIVER, NULL); in i8042_attach()
679 port = &global->i8042_ports[which_port]; in i8042_attach()
681 port->i8042_global = global; in i8042_attach()
693 if (global->nintrs > 0) { in i8042_attach()
694 cookie = global->iblock_cookies[ in i8042_attach()
695 (which_port < global->nintrs) ? which_port : 0]; in i8042_attach()
707 global->init_state |= I8042_INIT_MUTEXES; in i8042_attach()
723 i8042_write_command_byte(global, I8042_CMD_DISABLE_ALL); in i8042_attach()
725 global->init_state &= ~I8042_INIT_INTRS_ENABLED; in i8042_attach()
728 if (i8042_purge_outbuf(global) != 0) in i8042_attach()
737 ASSERT(global->nintrs <= (sizeof (global->intrs_added) * NBBY)); in i8042_attach()
739 for (i = 0; i < global->nintrs; i++) { in i8042_attach()
747 i8042_intr, (caddr_t)global) != DDI_SUCCESS) in i8042_attach()
750 global->intrs_added |= (1 << i); in i8042_attach()
753 global->initialized = B_TRUE; in i8042_attach()
758 i8042_write_command_byte(global, I8042_CMD_ENABLE_ALL); in i8042_attach()
759 global->init_state |= I8042_INIT_INTRS_ENABLED; in i8042_attach()
774 global->timeout_id = timeout(i8042_timeout, global, in i8042_attach()
783 (void) i8042_cleanup(global); in i8042_attach()
791 struct i8042 *global = (struct i8042 *)ddi_get_driver_private(dip); in i8042_detach() local
793 ASSERT(global != NULL); in i8042_detach()
804 i8042_write_command_byte(global, I8042_CMD_DISABLE_ALL); in i8042_detach()
810 return (i8042_cleanup(global)); in i8042_detach()
832 struct i8042 *global; in i8042_map() local
840 global = ddi_get_driver_private(dip); in i8042_map()
906 port = &global->i8042_ports[which_port]; in i8042_map()
1005 struct i8042 *global = (struct i8042 *)arg; in i8042_intr() local
1012 mutex_enter(&global->i8042_mutex); in i8042_intr()
1014 stat = ddi_get8(global->io_handle, global->io_addr + I8042_STAT); in i8042_intr()
1018 mutex_exit(&global->i8042_mutex); in i8042_intr()
1022 byte = ddi_get8(global->io_handle, global->io_addr + I8042_DATA); in i8042_intr()
1026 port = &global->i8042_ports[which_port]; in i8042_intr()
1029 mutex_exit(&global->i8042_mutex); in i8042_intr()
1043 mutex_exit(&global->i8042_mutex); in i8042_intr()
1056 mutex_exit(&global->i8042_mutex); in i8042_intr()
1069 i8042_write_command_byte(struct i8042 *global, unsigned char cb) in i8042_write_command_byte() argument
1071 mutex_enter(&global->i8042_out_mutex); in i8042_write_command_byte()
1072 i8042_send(global, I8042_CMD, I8042_CMD_WCB); in i8042_write_command_byte()
1073 i8042_send(global, I8042_DATA, cb); in i8042_write_command_byte()
1074 mutex_exit(&global->i8042_out_mutex); in i8042_write_command_byte()
1082 i8042_send(struct i8042 *global, int reg, unsigned char val) in i8042_send() argument
1092 stat = ddi_get8(global->io_handle, in i8042_send()
1093 global->io_addr + I8042_STAT); in i8042_send()
1096 ddi_put8(global->io_handle, global->io_addr+reg, val); in i8042_send()
1141 struct i8042 *global; in i8042_get8() local
1149 global = port->i8042_global; in i8042_get8()
1154 mutex_enter(&global->i8042_out_mutex); in i8042_get8()
1159 while (global->glock) { in i8042_get8()
1160 cv_wait(&global->glock_cv, &global->i8042_out_mutex); in i8042_get8()
1163 global->glock = 1; in i8042_get8()
1164 mutex_exit(&global->i8042_out_mutex); in i8042_get8()
1169 mutex_enter(&global->i8042_out_mutex); in i8042_get8()
1170 ASSERT(global->glock != 0); in i8042_get8()
1173 global->glock = 0; in i8042_get8()
1178 cv_signal(&global->glock_cv); in i8042_get8()
1179 mutex_exit(&global->i8042_out_mutex); in i8042_get8()
1184 mutex_enter(&global->i8042_mutex); in i8042_get8()
1186 mutex_exit(&global->i8042_mutex); in i8042_get8()
1190 mutex_enter(&global->i8042_mutex); in i8042_get8()
1204 mutex_exit(&global->i8042_mutex); in i8042_get8()
1221 stat = ddi_get8(global->io_handle, in i8042_get8()
1222 global->io_addr + I8042_STAT); in i8042_get8()
1241 (void) ddi_get8(global->io_handle, in i8042_get8()
1242 global->io_addr + I8042_DATA); in i8042_get8()
1254 stat = ddi_get8(global->io_handle, in i8042_get8()
1255 global->io_addr + I8042_STAT); in i8042_get8()
1262 ret = ddi_get8(global->io_handle, in i8042_get8()
1263 global->io_addr + I8042_DATA); in i8042_get8()
1293 struct i8042 *global; in i8042_put8() local
1299 global = port->i8042_global; in i8042_put8()
1306 mutex_enter(&global->i8042_out_mutex); in i8042_put8()
1316 while (global->glock && !port->has_glock) { in i8042_put8()
1317 cv_wait(&global->glock_cv, in i8042_put8()
1318 &global->i8042_out_mutex); in i8042_put8()
1323 i8042_send(global, I8042_CMD, I8042_CMD_WRITE_AUX); in i8042_put8()
1325 i8042_send(global, I8042_DATA, value); in i8042_put8()
1328 mutex_exit(&global->i8042_out_mutex); in i8042_put8()
1357 struct i8042 *global; in i8042_intr_ops() local
1387 global = port->i8042_global; in i8042_intr_ops()
1413 global = port->i8042_global; in i8042_intr_ops()
1414 mutex_enter(&global->i8042_mutex); in i8042_intr_ops()
1416 mutex_exit(&global->i8042_mutex); in i8042_intr_ops()
1426 global = port->i8042_global; in i8042_intr_ops()
1427 mutex_enter(&global->i8042_mutex); in i8042_intr_ops()
1432 mutex_exit(&global->i8042_mutex); in i8042_intr_ops()
1443 global = port->i8042_global; in i8042_intr_ops()
1444 mutex_enter(&global->i8042_mutex); in i8042_intr_ops()
1447 mutex_exit(&global->i8042_mutex); in i8042_intr_ops()
1465 struct i8042 *global; in i8042_ctlops() local
1468 global = ddi_get_driver_private(dip); in i8042_ctlops()
1489 (caddr_t)&global->i8042_ports[which_port]); in i8042_ctlops()