Lines Matching refs:ms
65 hidms_stylus_hid_parse(struct hidms *ms, struct hid_data *d, in hidms_stylus_hid_parse() argument
83 if (ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_stylus_hid_parse()
85 loc_stylus_btn[ms->sc_num_stylus_buttons++] = h.loc; in hidms_stylus_hid_parse()
86 ms->sc_flags |= HIDMS_TIP; in hidms_stylus_hid_parse()
90 if (ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_stylus_hid_parse()
92 loc_stylus_btn[ms->sc_num_stylus_buttons++] = h.loc; in hidms_stylus_hid_parse()
93 ms->sc_flags |= HIDMS_BARREL; in hidms_stylus_hid_parse()
98 if (ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_stylus_hid_parse()
100 loc_stylus_btn[ms->sc_num_stylus_buttons++] = h.loc; in hidms_stylus_hid_parse()
101 ms->sc_flags |= HIDMS_SEC_BARREL; in hidms_stylus_hid_parse()
105 if (ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_stylus_hid_parse()
107 loc_stylus_btn[ms->sc_num_stylus_buttons++] = h.loc; in hidms_stylus_hid_parse()
111 if (ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_stylus_hid_parse()
113 loc_stylus_btn[ms->sc_num_stylus_buttons++] = h.loc; in hidms_stylus_hid_parse()
118 ms->sc_loc_x = h.loc; in hidms_stylus_hid_parse()
119 ms->sc_tsscale.minx = h.logical_minimum; in hidms_stylus_hid_parse()
120 ms->sc_tsscale.maxx = h.logical_maximum; in hidms_stylus_hid_parse()
121 ms->sc_flags |= HIDMS_ABSX; in hidms_stylus_hid_parse()
125 ms->sc_loc_y = h.loc; in hidms_stylus_hid_parse()
126 ms->sc_tsscale.miny = h.logical_minimum; in hidms_stylus_hid_parse()
127 ms->sc_tsscale.maxy = h.logical_maximum; in hidms_stylus_hid_parse()
128 ms->sc_flags |= HIDMS_ABSY; in hidms_stylus_hid_parse()
132 ms->sc_loc_z = h.loc; in hidms_stylus_hid_parse()
133 ms->sc_tsscale.minz = h.logical_minimum; in hidms_stylus_hid_parse()
134 ms->sc_tsscale.maxz = h.logical_maximum; in hidms_stylus_hid_parse()
135 ms->sc_flags |= HIDMS_Z; in hidms_stylus_hid_parse()
139 ms->sc_loc_w = h.loc; in hidms_stylus_hid_parse()
140 ms->sc_tsscale.minw = h.logical_minimum; in hidms_stylus_hid_parse()
141 ms->sc_tsscale.maxw = h.logical_maximum; in hidms_stylus_hid_parse()
142 ms->sc_flags |= HIDMS_W; in hidms_stylus_hid_parse()
155 hidms_pad_buttons_hid_parse(struct hidms *ms, struct hid_data *d, in hidms_pad_buttons_hid_parse() argument
165 HUD_WACOM_PAD_BUTTONS00 | ms->sc_num_pad_buttons)) { in hidms_pad_buttons_hid_parse()
166 if (ms->sc_num_pad_buttons >= MAX_BUTTONS) in hidms_pad_buttons_hid_parse()
168 loc_pad_btn[ms->sc_num_pad_buttons++] = h.loc; in hidms_pad_buttons_hid_parse()
174 hidms_wacom_setup(struct device *self, struct hidms *ms, void *desc, int dlen) in hidms_wacom_setup() argument
181 ms->sc_flags = 0; in hidms_wacom_setup()
184 ms->sc_loc_x.size = 0; in hidms_wacom_setup()
185 ms->sc_loc_y.size = 0; in hidms_wacom_setup()
186 ms->sc_loc_z.size = 0; in hidms_wacom_setup()
187 ms->sc_loc_w.size = 0; in hidms_wacom_setup()
198 hidms_stylus_hid_parse(ms, hd, loc_stylus_btn); in hidms_wacom_setup()
205 hidms_pad_buttons_hid_parse(ms, hd, loc_pad_btn); in hidms_wacom_setup()
226 for (i = 0; i < ms->sc_num_stylus_buttons; i++) in hidms_wacom_setup()
227 memcpy(&ms->sc_loc_btn[i], &loc_stylus_btn[i], in hidms_wacom_setup()
229 if (ms->sc_num_pad_buttons + ms->sc_num_stylus_buttons >= MAX_BUTTONS) in hidms_wacom_setup()
230 ms->sc_num_pad_buttons = in hidms_wacom_setup()
231 MAX_BUTTONS - ms->sc_num_stylus_buttons; in hidms_wacom_setup()
232 for (; i < ms->sc_num_pad_buttons + ms->sc_num_stylus_buttons; i++) in hidms_wacom_setup()
233 memcpy(&ms->sc_loc_btn[i], &loc_pad_btn[i], in hidms_wacom_setup()
235 ms->sc_num_buttons = i; in hidms_wacom_setup()
238 for (i = 0; i < ms->sc_num_buttons; i++) in hidms_wacom_setup()
240 ms->sc_loc_btn[i].size, ms->sc_loc_btn[i].pos, in hidms_wacom_setup()
241 ms->sc_loc_btn[i].count); in hidms_wacom_setup()
247 hidms_setup(struct device *self, struct hidms *ms, uint32_t quirks, in hidms_setup() argument
255 ms->sc_device = self; in hidms_setup()
256 ms->sc_rawmode = 1; in hidms_setup()
258 ms->sc_flags = quirks; in hidms_setup()
262 return hidms_wacom_setup(self, ms, desc, dlen); in hidms_setup()
265 hid_input, &ms->sc_loc_x, &flags)) in hidms_setup()
266 ms->sc_loc_x.size = 0; in hidms_setup()
270 ms->sc_flags |= HIDMS_ABSX; in hidms_setup()
281 hid_input, &ms->sc_loc_y, &flags)) in hidms_setup()
282 ms->sc_loc_y.size = 0; in hidms_setup()
286 ms->sc_flags |= HIDMS_ABSY; in hidms_setup()
303 hid_input, &ms->sc_loc_z, &flags); in hidms_setup()
307 hid_input, &ms->sc_loc_z, &flags); in hidms_setup()
315 ms->sc_loc_z.size = 0; /* Bad Z coord, ignore it */ in hidms_setup()
317 ms->sc_flags |= HIDMS_Z; in hidms_setup()
319 ms->sc_flags ^= HIDMS_REVZ; in hidms_setup()
330 hid_input, &ms->sc_loc_w, &flags)) { in hidms_setup()
335 ms->sc_loc_w.size = 0; in hidms_setup()
338 ms->sc_flags |= HIDMS_W; in hidms_setup()
341 &ms->sc_loc_w, &flags)) { in hidms_setup()
342 ms->sc_flags |= HIDMS_W; in hidms_setup()
346 hid_input, &ms->sc_loc_z, &flags)) { in hidms_setup()
350 ms->sc_loc_z.size = 0; /* Bad Z coord, ignore it */ in hidms_setup()
352 ms->sc_flags |= HIDMS_Z; in hidms_setup()
364 ms->sc_loc_w = ms->sc_loc_z; in hidms_setup()
365 ms->sc_loc_w.pos = ms->sc_loc_w.pos + 8; in hidms_setup()
366 ms->sc_flags |= HIDMS_W | HIDMS_LEADINGBYTE; in hidms_setup()
368 ms->sc_flags ^= HIDMS_REVW; in hidms_setup()
374 hid_input, &ms->sc_loc_btn[i - 1], NULL)) in hidms_setup()
376 ms->sc_num_buttons = i - 1; in hidms_setup()
383 if (ms->sc_flags & HIDMS_VENDOR_BUTTONS) { in hidms_setup()
384 for (i = 1; ms->sc_num_buttons < MAX_BUTTONS; i++) { in hidms_setup()
387 &ms->sc_loc_btn[ms->sc_num_buttons], NULL)) in hidms_setup()
389 ms->sc_num_buttons++; in hidms_setup()
393 if (ms->sc_num_buttons < MAX_BUTTONS && in hidms_setup()
396 &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){ in hidms_setup()
397 ms->sc_flags |= HIDMS_TIP; in hidms_setup()
398 ms->sc_num_buttons++; in hidms_setup()
401 if (ms->sc_num_buttons < MAX_BUTTONS && in hidms_setup()
404 &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){ in hidms_setup()
405 ms->sc_flags |= HIDMS_ERASER; in hidms_setup()
406 ms->sc_num_buttons++; in hidms_setup()
409 if (ms->sc_num_buttons < MAX_BUTTONS && in hidms_setup()
412 &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){ in hidms_setup()
413 ms->sc_flags |= HIDMS_BARREL; in hidms_setup()
414 ms->sc_num_buttons++; in hidms_setup()
423 if (ms->sc_flags & HIDMS_MS_BAD_CLASS) { in hidms_setup()
425 ms->sc_flags = HIDMS_Z | HIDMS_SPUR_BUT_UP; in hidms_setup()
426 ms->sc_num_buttons = 3; in hidms_setup()
429 ms->sc_loc_x.pos = 16; in hidms_setup()
430 ms->sc_loc_y.pos = 24; in hidms_setup()
431 ms->sc_loc_z.pos = 32; in hidms_setup()
432 ms->sc_loc_btn[0].pos = 8; in hidms_setup()
433 ms->sc_loc_btn[1].pos = 9; in hidms_setup()
434 ms->sc_loc_btn[2].pos = 10; in hidms_setup()
446 if (ms->sc_flags & HIDMS_ABSX) { in hidms_setup()
447 ms->sc_tsscale.minx = h.logical_minimum; in hidms_setup()
448 ms->sc_tsscale.maxx = h.logical_maximum; in hidms_setup()
452 if (ms->sc_flags & HIDMS_ABSY) { in hidms_setup()
453 ms->sc_tsscale.miny = h.logical_minimum; in hidms_setup()
454 ms->sc_tsscale.maxy = h.logical_maximum; in hidms_setup()
464 hidms_attach(struct hidms *ms, const struct wsmouse_accessops *ops) in hidms_attach() argument
472 ms->sc_num_buttons, ms->sc_num_buttons == 1 ? "" : "s"); in hidms_attach()
473 switch (ms->sc_flags & (HIDMS_Z | HIDMS_W)) { in hidms_attach()
485 if (ms->sc_flags & HIDMS_TIP) in hidms_attach()
487 if (ms->sc_flags & HIDMS_BARREL) in hidms_attach()
489 if (ms->sc_flags & HIDMS_ERASER) in hidms_attach()
495 DPRINTF(("hidms_attach: ms=%p\n", ms)); in hidms_attach()
497 ms->sc_loc_x.pos, ms->sc_loc_x.size)); in hidms_attach()
499 ms->sc_loc_y.pos, ms->sc_loc_y.size)); in hidms_attach()
500 if (ms->sc_flags & HIDMS_Z) in hidms_attach()
502 ms->sc_loc_z.pos, ms->sc_loc_z.size)); in hidms_attach()
503 if (ms->sc_flags & HIDMS_W) in hidms_attach()
505 ms->sc_loc_w.pos, ms->sc_loc_w.size)); in hidms_attach()
506 for (i = 1; i <= ms->sc_num_buttons; i++) { in hidms_attach()
508 i, ms->sc_loc_btn[i - 1].pos, ms->sc_loc_btn[i - 1].size)); in hidms_attach()
513 a.accesscookie = ms->sc_device; in hidms_attach()
514 ms->sc_wsmousedev = config_found(ms->sc_device, &a, wsmousedevprint); in hidms_attach()
518 hidms_detach(struct hidms *ms, int flags) in hidms_detach() argument
522 DPRINTF(("hidms_detach: ms=%p flags=%d\n", ms, flags)); in hidms_detach()
525 if (ms->sc_wsmousedev != NULL) in hidms_detach()
526 rv = config_detach(ms->sc_wsmousedev, flags); in hidms_detach()
532 hidms_input(struct hidms *ms, uint8_t *data, u_int len) in hidms_input() argument
553 if (ms->sc_flags & HIDMS_LEADINGBYTE) { in hidms_input()
557 } else if (ms->sc_flags & HIDMS_SPUR_BUT_UP) { in hidms_input()
562 dx = hid_get_data(data, len, &ms->sc_loc_x); in hidms_input()
563 dy = -hid_get_data(data, len, &ms->sc_loc_y); in hidms_input()
564 dz = hid_get_data(data, len, &ms->sc_loc_z); in hidms_input()
565 dw = hid_get_data(data, len, &ms->sc_loc_w); in hidms_input()
567 if (ms->sc_flags & HIDMS_ABSY) in hidms_input()
569 if (ms->sc_flags & HIDMS_REVZ) in hidms_input()
571 if (ms->sc_flags & HIDMS_REVW) in hidms_input()
574 if (ms->sc_tsscale.swapxy && !ms->sc_rawmode) { in hidms_input()
580 if (!ms->sc_rawmode && in hidms_input()
581 (ms->sc_tsscale.maxx - ms->sc_tsscale.minx) != 0 && in hidms_input()
582 (ms->sc_tsscale.maxy - ms->sc_tsscale.miny) != 0) { in hidms_input()
584 dx = ((dx - ms->sc_tsscale.minx) * ms->sc_tsscale.resx) / in hidms_input()
585 (ms->sc_tsscale.maxx - ms->sc_tsscale.minx); in hidms_input()
586 dy = ((dy - ms->sc_tsscale.miny) * ms->sc_tsscale.resy) / in hidms_input()
587 (ms->sc_tsscale.maxy - ms->sc_tsscale.miny); in hidms_input()
590 for (i = 0; i < ms->sc_num_buttons; i++) in hidms_input()
591 if (hid_get_data(data, len, &ms->sc_loc_btn[i])) in hidms_input()
595 buttons != ms->sc_buttons) { in hidms_input()
598 ms->sc_buttons = buttons; in hidms_input()
599 if (ms->sc_wsmousedev != NULL) { in hidms_input()
601 if (ms->sc_flags & HIDMS_ABSX) { in hidms_input()
602 wsmouse_set(ms->sc_wsmousedev, in hidms_input()
606 if (ms->sc_flags & HIDMS_ABSY) { in hidms_input()
607 wsmouse_set(ms->sc_wsmousedev, in hidms_input()
611 WSMOUSE_INPUT(ms->sc_wsmousedev, in hidms_input()
619 hidms_enable(struct hidms *ms) in hidms_enable() argument
621 if (ms->sc_enabled) in hidms_enable()
624 ms->sc_enabled = 1; in hidms_enable()
625 ms->sc_buttons = 0; in hidms_enable()
630 hidms_ioctl(struct hidms *ms, u_long cmd, caddr_t data, int flag, in hidms_ioctl() argument
649 ms->sc_tsscale.minx = wsmc->minx; in hidms_ioctl()
650 ms->sc_tsscale.maxx = wsmc->maxx; in hidms_ioctl()
651 ms->sc_tsscale.miny = wsmc->miny; in hidms_ioctl()
652 ms->sc_tsscale.maxy = wsmc->maxy; in hidms_ioctl()
653 ms->sc_tsscale.swapxy = wsmc->swapxy; in hidms_ioctl()
654 ms->sc_tsscale.resx = wsmc->resx; in hidms_ioctl()
655 ms->sc_tsscale.resy = wsmc->resy; in hidms_ioctl()
656 ms->sc_rawmode = wsmc->samplelen; in hidms_ioctl()
659 wsmc->minx = ms->sc_tsscale.minx; in hidms_ioctl()
660 wsmc->maxx = ms->sc_tsscale.maxx; in hidms_ioctl()
661 wsmc->miny = ms->sc_tsscale.miny; in hidms_ioctl()
662 wsmc->maxy = ms->sc_tsscale.maxy; in hidms_ioctl()
663 wsmc->swapxy = ms->sc_tsscale.swapxy; in hidms_ioctl()
664 wsmc->resx = ms->sc_tsscale.resx; in hidms_ioctl()
665 wsmc->resy = ms->sc_tsscale.resy; in hidms_ioctl()
666 wsmc->samplelen = ms->sc_rawmode; in hidms_ioctl()
669 if (ms->sc_flags & HIDMS_ABSX && ms->sc_flags & HIDMS_ABSY) { in hidms_ioctl()
680 hidms_disable(struct hidms *ms) in hidms_disable() argument
682 ms->sc_enabled = 0; in hidms_disable()