On Fri, Aug 09, 2013 at 08:35:49AM +0200, Matthieu Herrb wrote: > And you can also do the next step and tedu uhts
The following diff "tedus" uhts(4). This is the first driver I have "tedued", so please check carefully. Index: share/man/man4/Makefile =================================================================== RCS file: /cvs/src/share/man/man4/Makefile,v retrieving revision 1.550 diff -u -p -r1.550 Makefile --- share/man/man4/Makefile 6 Jun 2013 15:30:51 -0000 1.550 +++ share/man/man4/Makefile 10 Aug 2013 11:26:34 -0000 @@ -57,7 +57,7 @@ MAN= aac.4 ac97.4 acphy.4 \ tlphy.4 thmc.4 tqphy.4 trm.4 trunk.4 tsl.4 tty.4 tun.4 twe.4 txp.4 \ txphy.4 uaudio.4 uark.4 uath.4 uberry.4 ubsa.4 ubsec.4 ubt.4 \ ucom.4 uchcom.4 ucycom.4 udav.4 udcf.4 udfu.4 udl.4 udp.4 udsbr.4 \ - ueagle.4 uftdi.4 ugen.4 uguru.4 uhci.4 uhid.4 uhidev.4 uhts.4 \ + ueagle.4 uftdi.4 ugen.4 uguru.4 uhci.4 uhid.4 uhidev.4 \ uipaq.4 uk.4 ukbd.4 \ ukphy.4 ulpt.4 umass.4 umbg.4 umct.4 umidi.4 umodem.4 ums.4 umsm.4 \ unix.4 uow.4 uoaklux.4 uoakrh.4 uoakv.4 \ Index: share/man/man4/uhts.4 =================================================================== RCS file: share/man/man4/uhts.4 diff -N share/man/man4/uhts.4 --- share/man/man4/uhts.4 10 Dec 2009 16:25:41 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,71 +0,0 @@ -.\" $OpenBSD: uhts.4,v 1.2 2009/12/10 16:25:41 deraadt Exp $ -.\" -.\" Copyright (c) 2009 Matthieu Herrb <matth...@herrb.eu> -.\" Copyright (c) 2005 Robert Nagy <rob...@openbsd.org> -.\" -.\" Permission to use, copy, modify, and distribute this software for any -.\" purpose with or without fee is hereby granted, provided that the above -.\" copyright notice and this permission notice appear in all copies. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.\" -.Dd $Mdocdate: December 10 2009 $ -.Dt UHTS 4 -.Os -.Sh NAME -.Nm uhts -.Nd USB HID touchscreen support -.Sh SYNOPSIS -.Cd "uhts* at uhidev?" -.Cd "wsmouse* at uhts? mux 0" -.Sh DESCRIPTION -The -.Nm -driver provides support for USB Human Interface Device touchscreens. -Access to the touchscreen is provided through the -.Xr wscons 4 -framework. -.Pp -Touching the screen will emulate mouse button 0 being pressed. -.Pp -The touchscreen sensor is poorly aligned, therefore -.Xr xtsscale 1 -should be used to provide calibration results to the -.Nm -driver. -.Pp -The -.Nm -driver works with the following touchscreens and panels: -.Pp -.Bl -dash -offset indent -compact -.It -Iyama ProLite T1530SR-B2 -.It -Iyama ProLite T1730SR-B2 -.El -.Sh SEE ALSO -.Xr xtsscale 1 , -.Xr uhub 4 , -.Xr usb 4 , -.Xr wscons 4 , -.Xr wsmouse 4 -.Sh HISTORY -The -.Nm -driver first appeared in -.Ox 4.7 . -.Sh AUTHORS -.An -nosplit -The -.Nm -driver was written by -.An Robert Nagy -and -.An Matthieu Herrb . Index: share/man/man4/usb.4 =================================================================== RCS file: /cvs/src/share/man/man4/usb.4,v retrieving revision 1.141 diff -u -p -r1.141 usb.4 --- share/man/man4/usb.4 9 Aug 2013 22:10:17 -0000 1.141 +++ share/man/man4/usb.4 10 Aug 2013 11:26:34 -0000 @@ -244,9 +244,6 @@ D-Link DSB-R100 USB radio device Generic driver for Human Interface Devices .It Xr uhidev 4 Base driver for all Human Interface Devices -.It Xr uhts 4 -.Tn USB -HID touchscreen support .It Xr ukbd 4 .Tn USB keyboards that follow the boot protocol Index: sys/arch/amd64/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v retrieving revision 1.342 diff -u -p -r1.342 GENERIC --- sys/arch/amd64/conf/GENERIC 1 Jun 2013 01:13:33 -0000 1.342 +++ sys/arch/amd64/conf/GENERIC 10 Aug 2013 11:26:35 -0000 @@ -207,8 +207,6 @@ umass* at uhub? # USB Mass Storage devi uhidev* at uhub? # Human Interface Devices ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 -uhts* at uhidev? # USB HID touch screen -wsmouse* at uhts? mux 0 uts* at uhub? # USB touchscreen wsmouse* at uts? mux 0 ukbd* at uhidev? # USB keyboard Index: sys/arch/i386/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/i386/conf/GENERIC,v retrieving revision 1.747 diff -u -p -r1.747 GENERIC --- sys/arch/i386/conf/GENERIC 1 Jun 2013 01:13:34 -0000 1.747 +++ sys/arch/i386/conf/GENERIC 10 Aug 2013 11:26:36 -0000 @@ -260,8 +260,6 @@ ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 uts* at uhub? # USB touchscreen wsmouse* at uts? mux 0 -uhts* at uhidev? # USB HID touch screen -wsmouse* at uhts? mux 0 ukbd* at uhidev? # USB keyboard wskbd* at ukbd? mux 1 ucycom* at uhidev? # Cypress serial Index: sys/arch/macppc/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/arch/macppc/conf/GENERIC,v retrieving revision 1.220 diff -u -p -r1.220 GENERIC --- sys/arch/macppc/conf/GENERIC 6 Jul 2013 17:40:01 -0000 1.220 +++ sys/arch/macppc/conf/GENERIC 10 Aug 2013 11:26:36 -0000 @@ -254,8 +254,6 @@ ums* at uhidev? # USB mouse wsmouse* at ums? mux 0 uts* at uhub? # USB touchscreen wsmouse* at uts? mux 0 -uhts* at uhidev? # USB HID touch screen -wsmouse* at uhts? mux 0 ukbd* at uhidev? # USB keyboard wskbd* at ukbd? mux 1 ucycom* at uhidev? # Cypress serial Index: sys/dev/usb/files.usb =================================================================== RCS file: /cvs/src/sys/dev/usb/files.usb,v retrieving revision 1.105 diff -u -p -r1.105 files.usb --- sys/dev/usb/files.usb 31 May 2013 19:32:30 -0000 1.105 +++ sys/dev/usb/files.usb 10 Aug 2013 11:26:39 -0000 @@ -99,10 +99,6 @@ device uts: wsmousedev attach uts at uhub file dev/usb/uts.c uts -device uhts: wsmousedev -attach uhts at uhidbus -file dev/usb/uhts.c uhts - # Apple USB Touchpad device utpms: hid, wsmousedev attach utpms at uhidbus Index: sys/dev/usb/uhts.c =================================================================== RCS file: sys/dev/usb/uhts.c diff -N sys/dev/usb/uhts.c --- sys/dev/usb/uhts.c 9 Jul 2013 10:16:48 -0000 1.8 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,443 +0,0 @@ -/* $OpenBSD: uhts.c,v 1.8 2013/07/09 10:16:48 edd Exp $ */ -/* - * Copyright (c) 2009 Matthieu Herrb <matth...@herrb.eu> - * Copyright (c) 2007 Robert Nagy <rob...@openbsd.org> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -/* - * Copyright (c) 1998 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Lennart Augustsson (lenn...@augustsson.net) at - * Carlstedt Research & Technology. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/device.h> -#include <sys/ioctl.h> -#include <sys/tty.h> -#include <sys/file.h> -#include <sys/selinfo.h> -#include <sys/poll.h> - -#include <dev/usb/usb.h> -#include <dev/usb/usbhid.h> - -#include <dev/usb/usbdi.h> -#include <dev/usb/usbdi_util.h> -#include <dev/usb/usbdevs.h> -#include <dev/usb/uhidev.h> -#include <dev/usb/hid.h> - -#include <dev/wscons/wsconsio.h> -#include <dev/wscons/wsmousevar.h> - -#ifdef USB_DEBUG -#define DPRINTF(x) do { if (uhtsdebug) printf x; } while (0) -#define DPRINTFN(n,x) do { if (uhtsdebug>(n)) printf x; } while (0) -int uhtsdebug = 0; -#else -#define DPRINTF(x) -#define DPRINTFN(n,x) -#endif - -#define UHTSUNIT(s) (minor(s)) - -/* defined in such a way as to aid merge of hidms.c */ -#define UHTS_TIP 0x100 -#define UHTS_BARELL 0x200 -#define UHTS_ERASER 0x400 - -struct tsscale { - int minx, maxx; - int miny, maxy; - int swapxy; - int resx, resy; -}; - -struct uhts_softc { - struct uhidev sc_hdev; - struct hid_location sc_loc_x, sc_loc_y; -#define UHTS_MAX_BUTTONS 31 - struct hid_location sc_loc_btn[UHTS_MAX_BUTTONS]; - int sc_num_buttons; - int sc_enabled; - u_int32_t sc_buttons; /* mouse button status */ - int sc_rawmode; - struct tsscale sc_tsscale; - struct device *sc_wsmousedev; - char sc_dying; -}; - -struct uhts_pos { - int down; - int x, y; - int z; /* touch pressure */ -}; - -void uhts_intr(struct uhidev *, void *, u_int); -int uhts_enable(void *); -void uhts_disable(void *); -int uhts_ioctl(void *, u_long, caddr_t, int, struct proc *); - -const struct wsmouse_accessops uhts_accessops = { - uhts_enable, - uhts_ioctl, - uhts_disable -}; - -int uhts_match(struct device *, void *, void *); -void uhts_attach(struct device *, struct device *, void *); -int uhts_detach(struct device *, int); -int uhts_activate(struct device *, int); -void uhts_parse_desc(struct uhts_softc *); - -struct cfdriver uhts_cd = { - NULL, "uhts", DV_DULL -}; - -const struct cfattach uhts_ca = { - sizeof(struct uhts_softc), - uhts_match, - uhts_attach, - uhts_detach, - uhts_activate -}; - -int -uhts_match(struct device *parent, void *match, void *aux) -{ - struct usb_attach_arg *uaa = aux; - struct uhidev_attach_arg *uha = (struct uhidev_attach_arg *)uaa; - int size; - void *desc; - - uhidev_get_report_desc(uha->parent, &desc, &size); - - if (hid_is_collection(desc, size, uha->reportid, - HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHSCREEN))) - return (UMATCH_IFACECLASS); - - if (hid_is_collection(desc, size, uha->reportid, - HID_USAGE2(HUP_DIGITIZERS, HUD_PEN))) - return (UMATCH_IFACECLASS); - - return (UMATCH_NONE); -} - -void -uhts_parse_desc(struct uhts_softc *sc) -{ - struct hid_data *d; - struct hid_item h; - int size; - void *desc; - - uhidev_get_report_desc(sc->sc_hdev.sc_parent, &desc, &size); - d = hid_start_parse(desc, size, hid_input); - while (hid_get_item(d, &h)) { - if (h.kind != hid_input || - HID_GET_USAGE_PAGE(h.usage) != HUP_GENERIC_DESKTOP || - h.report_ID != sc->sc_hdev.sc_report_id) - continue; - DPRINTF(("uhts: usage=0x%x range %d..%d\n", - h.usage, h.logical_minimum, h.logical_maximum)); - switch (HID_GET_USAGE(h.usage)) { - case HUG_X: - sc->sc_tsscale.minx = h.logical_minimum; - sc->sc_tsscale.maxx = h.logical_maximum; - break; - case HUG_Y: - sc->sc_tsscale.miny = h.logical_minimum; - sc->sc_tsscale.maxy = h.logical_maximum; - break; - } - } -} - -void -uhts_attach(struct device *parent, struct device *self, void *aux) -{ - struct uhts_softc *sc = (struct uhts_softc *)self; - struct usb_attach_arg *uaa = aux; - struct uhidev_attach_arg *uha = (struct uhidev_attach_arg *)uaa; - struct wsmousedev_attach_args a; - void *desc; - int size; - u_int32_t flags, buttons_flags = 0; - - sc->sc_hdev.sc_intr = uhts_intr; - sc->sc_hdev.sc_parent = uha->parent; - sc->sc_hdev.sc_report_id = uha->reportid; - - uhidev_get_report_desc(uha->parent, &desc, &size); - - if (!hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X), - uha->reportid, hid_input, &sc->sc_loc_x, &flags)) { - printf("\n%s: touchscreen has no X report\n", - sc->sc_hdev.sc_dev.dv_xname); - return; - } - if (!hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y), - uha->reportid, hid_input, &sc->sc_loc_y, &flags)) { - printf("\n%s: touchscreen has no Y report\n", - sc->sc_hdev.sc_dev.dv_xname); - return; - } - - if (hid_locate(desc, size, HID_USAGE2(HUP_DIGITIZERS, - HUD_TIP_SWITCH), uha->reportid, hid_input, - &sc->sc_loc_btn[sc->sc_num_buttons], NULL)){ - buttons_flags |= UHTS_TIP; - sc->sc_num_buttons++; - } - - if (hid_locate(desc, size, HID_USAGE2(HUP_DIGITIZERS, - HUD_BARREL_SWITCH), uha->reportid, hid_input, - &sc->sc_loc_btn[sc->sc_num_buttons], NULL)){ - buttons_flags |= UHTS_BARELL; - sc->sc_num_buttons++; - } - - if (hid_locate(desc, size, HID_USAGE2(HUP_DIGITIZERS, - HUD_ERASER), uha->reportid, hid_input, - &sc->sc_loc_btn[sc->sc_num_buttons], NULL)){ - buttons_flags |= UHTS_ERASER; - sc->sc_num_buttons++; - } - - printf(": %d button%s", - sc->sc_num_buttons, sc->sc_num_buttons <= 1 ? "" : "s"); - if (buttons_flags & UHTS_TIP) - printf(", tip"); - if (buttons_flags & UHTS_BARELL) - printf(", barrel"); - if (buttons_flags & UHTS_ERASER) - printf(", eraser"); - printf("\n"); - - a.accessops = &uhts_accessops; - a.accesscookie = sc; - - uhts_parse_desc(sc); - sc->sc_rawmode = 0; - /* wild guess */ - sc->sc_tsscale.swapxy = 0; - sc->sc_tsscale.resx = 1024; - sc->sc_tsscale.resy = 768; - - sc->sc_wsmousedev = config_found(self, &a, wsmousedevprint); -} - -int -uhts_activate(struct device *self, int act) -{ - struct uhts_softc *sc = (struct uhts_softc *)self; - int rv = 0; - - switch (act) { - case DVACT_DEACTIVATE: - if (sc->sc_wsmousedev != NULL) - rv = config_deactivate(sc->sc_wsmousedev); - sc->sc_dying = 1; - break; - } - return (rv); -} - -int -uhts_detach(struct device *self, int flags) -{ - struct uhts_softc *sc = (struct uhts_softc *)self; - int rv = 0; - - DPRINTF(("uhts_detach: sc=%p flags=%d\n", sc, flags)); - - /* wsmouse takes care of reference counting */ - if (sc->sc_wsmousedev != NULL) - rv = config_detach(sc->sc_wsmousedev, flags); - return (rv); -} - -void -uhts_intr(struct uhidev *addr, void *buf, u_int len) -{ - struct uhts_softc *sc = (struct uhts_softc *)addr; - u_char *ibuf = (u_char *)buf; - struct uhts_pos tp; - int x, y, s, i; - u_int32_t buttons = 0; - - DPRINTFN(5, ("uhts_intr: len=%d\n", len)); - - x = hid_get_data(ibuf, &sc->sc_loc_x); - y = hid_get_data(ibuf, &sc->sc_loc_y); - - for (i = 0; i < sc->sc_num_buttons; i++) { - if (hid_get_data(ibuf, &sc->sc_loc_btn[i])) - buttons |= 1 << i; - } - - DPRINTFN(10, ("uhts_intr: x:%d y:%d buttons:0x%x\n", - x, y, buttons)); - - if (sc->sc_tsscale.swapxy && !sc->sc_rawmode) { - /* Swap X/Y-Axis */ - tp.y = x; - tp.x = y; - } else { - tp.x = x; - tp.y = y; - } - if (!sc->sc_rawmode && - (sc->sc_tsscale.maxx - sc->sc_tsscale.minx) != 0 && - (sc->sc_tsscale.maxy - sc->sc_tsscale.miny) != 0) { - /* Scale down to the screen resolution. */ - tp.x = ((tp.x - sc->sc_tsscale.minx) * - sc->sc_tsscale.resx) / - (sc->sc_tsscale.maxx - sc->sc_tsscale.minx); - tp.y = ((tp.y - sc->sc_tsscale.miny) * - sc->sc_tsscale.resy) / - (sc->sc_tsscale.maxy - sc->sc_tsscale.miny); - } - - sc->sc_buttons = buttons; - tp.z = buttons; - - if (sc->sc_wsmousedev != NULL) { - s = spltty(); - wsmouse_input(sc->sc_wsmousedev, buttons, tp.x, tp.y, tp.z, 0, - WSMOUSE_INPUT_ABSOLUTE_X | WSMOUSE_INPUT_ABSOLUTE_Y | - WSMOUSE_INPUT_ABSOLUTE_Z); - - splx(s); - } -} - -int -uhts_enable(void *v) -{ - struct uhts_softc *sc = v; - - DPRINTFN(1, ("uhts_enable: sc=%p\n", sc)); - - if (sc->sc_dying) - return (EIO); - - if (sc->sc_enabled) - return (EBUSY); - - sc->sc_enabled = 1; - sc->sc_buttons = 0; - - return (uhidev_open(&sc->sc_hdev)); -} - -void -uhts_disable(void *v) -{ - struct uhts_softc *sc = v; - - DPRINTFN(1, ("uhts_disable: sc=%p\n", sc)); -#ifdef DIAGNOSTIC - if (!sc->sc_enabled) { - printf("uhts_disable: not enabled\n"); - return; - } -#endif - sc->sc_enabled = 0; - uhidev_close(&sc->sc_hdev); -} - -int -uhts_ioctl(void *v, u_long cmd, caddr_t data, int flag, struct proc *p) -{ - struct uhts_softc *sc = v; - struct wsmouse_calibcoords *wsmc = (struct wsmouse_calibcoords *)data; - int rc, error = 0; - - DPRINTF(("uhts_ioctl(%d, '%c', %d)\n", - IOCPARM_LEN(cmd), IOCGROUP(cmd), cmd & 0xff)); - - rc = uhidev_ioctl(&sc->sc_hdev, cmd, data, flag, p); - if (rc != -1) - return rc; - - switch (cmd) { - case WSMOUSEIO_GTYPE: - *(u_int *)data = WSMOUSE_TYPE_TPANEL; - return (0); - case WSMOUSEIO_SCALIBCOORDS: - if (!(wsmc->minx >= 0 && wsmc->maxx >= 0 && - wsmc->miny >= 0 && wsmc->maxy >= 0 && - wsmc->resx >= 0 && wsmc->resy >= 0 && - wsmc->minx < 32768 && wsmc->maxx < 32768 && - wsmc->miny < 32768 && wsmc->maxy < 32768 && - (wsmc->maxx - wsmc->minx) != 0 && - (wsmc->maxy - wsmc->miny) != 0 && - wsmc->resx < 32768 && wsmc->resy < 32768 && - wsmc->swapxy >= 0 && wsmc->swapxy <= 1 && - wsmc->samplelen >= 0 && wsmc->samplelen <= 1)) - return (EINVAL); - - sc->sc_tsscale.minx = wsmc->minx; - sc->sc_tsscale.maxx = wsmc->maxx; - sc->sc_tsscale.miny = wsmc->miny; - sc->sc_tsscale.maxy = wsmc->maxy; - sc->sc_tsscale.swapxy = wsmc->swapxy; - sc->sc_tsscale.resx = wsmc->resx; - sc->sc_tsscale.resy = wsmc->resy; - sc->sc_rawmode = wsmc->samplelen; - break; - case WSMOUSEIO_GCALIBCOORDS: - wsmc->minx = sc->sc_tsscale.minx; - wsmc->maxx = sc->sc_tsscale.maxx; - wsmc->miny = sc->sc_tsscale.miny; - wsmc->maxy = sc->sc_tsscale.maxy; - wsmc->swapxy = sc->sc_tsscale.swapxy; - wsmc->resx = sc->sc_tsscale.resx; - wsmc->resy = sc->sc_tsscale.resy; - wsmc->samplelen = sc->sc_rawmode; - break; - default: - error = ENOTTY; - break; - } - - return error; -} Index: sys/dev/usb/ums.c =================================================================== RCS file: /cvs/src/sys/dev/usb/ums.c,v retrieving revision 1.36 diff -u -p -r1.36 ums.c --- sys/dev/usb/ums.c 9 Aug 2013 22:10:17 -0000 1.36 +++ sys/dev/usb/ums.c 10 Aug 2013 11:26:39 -0000 @@ -105,19 +105,13 @@ ums_match(struct device *parent, void *m HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE))) return (UMATCH_IFACECLASS); - /* - * For now return a value higher than UMATCH_IFACECLASS to make sure - * touchscreens and digitizers no longer attach to uhts(4). - */ if (hid_is_collection(desc, size, uha->reportid, HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHSCREEN))) - return (UMATCH_IFACECLASS_IFACESUBCLASS); /* XXX */ - /* return (UMATCH_IFACECLASS); */ + return (UMATCH_IFACECLASS); if (hid_is_collection(desc, size, uha->reportid, HID_USAGE2(HUP_DIGITIZERS, HUD_PEN))) - return (UMATCH_IFACECLASS_IFACESUBCLASS); /* XXX */ - /* return (UMATCH_IFACECLASS); */ + return (UMATCH_IFACECLASS); return (UMATCH_NONE); } -- Best Regards Edd Barrett http://www.theunixzoo.co.uk