Lines Matching refs:ms
1 /* $NetBSD: ms.c,v 1.43 2022/08/01 01:32:15 rin Exp $ */
42 * @(#)ms.c 8.1 (Berkeley) 6/11/93
44 * Header: ms.c,v 1.5 92/11/26 01:28:47 torek Exp (LBL)
48 __KERNEL_RCSID(0, "$NetBSD: ms.c,v 1.43 2022/08/01 01:32:15 rin Exp $");
57 * - When somebody has opened a ms device directly wsmouse cannot be activated.
59 * - When feeding events to wsmouse open of ms device will fail.
117 CFATTACH_DECL_NEW(ms, sizeof(struct ms_softc),
179 if (!matchname((char *)aux, "ms") || ms_matched)
223 ms_enable(struct ms_port *ms)
230 ms->ms_ready = 1;
232 callout_reset(&ms->ms_intr_ch, 2, msintr, ms);
240 ms_disable(struct ms_port *ms)
245 ms->ms_ready = 0;
249 tsleep(ms, PZERO - 1, "mouse-disable", 0);
262 struct ms_port *ms = arg;
269 port = ms->ms_portno;
295 dx = *horc - ms->ms_horc;
300 dy = *verc - ms->ms_verc;
309 ms->ms_horc = *horc;
310 ms->ms_verc = *verc;
312 ms->ms_dx = dx;
313 ms->ms_dy = dy;
314 ms->ms_mb = mb;
321 if (ms->ms_wsmousedev && ms->ms_wsenabled)
332 wsmouse_input(ms->ms_wsmousedev,
339 if (dx || dy || ms->ms_ub != ms->ms_mb) {
348 get = ms->ms_events.ev_get;
349 put = ms->ms_events.ev_put;
350 fe = &ms->ms_events.ev_q[put];
352 mb = ms->ms_mb;
353 ub = ms->ms_ub;
373 fe = &ms->ms_events.ev_q[0];
379 if (ms->ms_dx) {
386 fe->value = ms->ms_dx;
392 fe = &ms->ms_events.ev_q[0];
396 ms->ms_dx = 0;
398 if (ms->ms_dy) {
405 fe->value = ms->ms_dy;
411 fe = &ms->ms_events.ev_q[0];
415 ms->ms_dy = 0;
419 ms->ms_ub = ub;
420 ms->ms_events.ev_put = put;
421 EV_WAKEUP(&ms->ms_events);
429 if (ms->ms_ready)
430 callout_reset(&ms->ms_intr_ch, 2, msintr, ms);
432 wakeup(ms);
439 struct ms_port *ms;
449 ms = &sc->sc_ports[port];
451 if (ms->ms_events.ev_io)
456 if (ms->ms_wsenabled)
462 ms->ms_events.ev_io = l->l_proc;
463 ev_init(&ms->ms_events); /* may cause sleep */
464 ms_enable(ms);
471 struct ms_port *ms;
473 ms = MS_DEV2MSPORT(dev);
475 ms_disable(ms);
476 ev_fini(&ms->ms_events);
477 ms->ms_events.ev_io = NULL;
484 struct ms_port *ms;
486 ms = MS_DEV2MSPORT(dev);
488 return(ev_read(&ms->ms_events, uio, flags));
495 struct ms_port *ms;
497 ms = MS_DEV2MSPORT(dev);
503 ms->ms_events.ev_async = *(int *)data != 0;
506 if (-*(int *)data != ms->ms_events.ev_io->p_pgid
507 && *(int *)data != ms->ms_events.ev_io->p_pid)
511 if (*(int *)data != ms->ms_events.ev_io->p_pgid)
528 struct ms_port *ms;
530 ms = MS_DEV2MSPORT(dev);
532 return(ev_poll(&ms->ms_events, events, l));
538 struct ms_port *ms;
540 ms = MS_DEV2MSPORT(dev);
542 return (ev_kqfilter(&ms->ms_events, kn));