From owner-freebsd-bugs@FreeBSD.ORG Wed Apr 27 01:00:44 2005 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4D05F16A4CE for ; Wed, 27 Apr 2005 01:00:44 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 14E9343D49 for ; Wed, 27 Apr 2005 01:00:44 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j3R10hq3077765 for ; Wed, 27 Apr 2005 01:00:43 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j3R10hSs077763; Wed, 27 Apr 2005 01:00:43 GMT (envelope-from gnats) Resent-Date: Wed, 27 Apr 2005 01:00:43 GMT Resent-Message-Id: <200504270100.j3R10hSs077763@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, lmendez19@austin.rr.com Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E244816A4D9 for ; Wed, 27 Apr 2005 00:55:25 +0000 (GMT) Received: from gnome.dnsalias.net (cpe-67-9-163-3.austin.res.rr.com [67.9.163.3]) by mx1.FreeBSD.org (Postfix) with ESMTP id C5D7C43D5D for ; Wed, 27 Apr 2005 00:55:23 +0000 (GMT) (envelope-from root@gnome.dnsalias.net) Received: by twind (Postfix, from userid 0) id 07B7D60FB; Wed, 27 Apr 2005 00:55:31 -0500 (CDT) Message-Id: <20050427055531.07B7D60FB@gnome.dnsalias.net> Date: Wed, 27 Apr 2005 00:55:31 -0500 (CDT) From: Lonnie Mendez To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: dignome@gmail.com Subject: kern/80383: [PATCH] Add quirk for uhid to ignore certain usb devices (blacklist) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: lmendez19@austin.rr.com List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Apr 2005 01:00:44 -0000 >Number: 80383 >Category: kern >Synopsis: [PATCH] Add quirk for uhid to ignore certain usb devices (blacklist) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Apr 27 01:00:42 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Lonnie Mendez >Release: FreeBSD 5.3-RELEASE-p10 i386 >Organization: >Environment: System: FreeBSD twind.austin.rr.com 5.3-RELEASE-p10 FreeBSD 5.3-RELEASE-p10 #3: Tue Apr 26 07:46:25 CDT 2005 root@twind.austin.rr.com:/usr/src/sys/i386/compile/MINIME i386 >Description: This patch allows uhid to leave alone devices that identify themselves as hid based, but are indeed used via another interface. This is very simliar in concept to the hid blacklist table found in hid-core.c in the linux kernel. >How-To-Repeat: Applies to 5.3/FreeBSD-CURRENT kernel. Runtime tested. >Fix: --- hid_blacklist.patch begins here --- diff -u -r ./uhid.c hidpatch/uhid.c --- ./uhid.c Tue Oct 12 19:51:01 2004 +++ hidpatch/uhid.c Tue Apr 26 07:40:07 2005 @@ -91,6 +91,9 @@ /* Report descriptor for broken Wacom Graphire */ #include +/* For hid blacklist quirk */ +#include + #ifdef USB_DEBUG #define DPRINTF(x) if (uhiddebug) logprintf x #define DPRINTFN(n,x) if (uhiddebug>(n)) logprintf x @@ -190,6 +193,8 @@ return (UMATCH_NONE); id = usbd_get_interface_descriptor(uaa->iface); if (id == NULL || id->bInterfaceClass != UICLASS_HID) + return (UMATCH_NONE); + if (usbd_get_quirks(uaa->device)->uq_flags & UQ_HID_IGNORE) return (UMATCH_NONE); #if 0 if (uaa->matchlvl) diff -u -r ./usb_quirks.c hidpatch/usb_quirks.c --- ./usb_quirks.c Mon Sep 20 00:18:04 2004 +++ hidpatch/usb_quirks.c Tue Apr 26 03:24:12 2005 @@ -101,6 +101,9 @@ ANY, { UQ_ASSUME_CM_OVER_DATA }}, { USB_VENDOR_SUNTAC, USB_PRODUCT_SUNTAC_AS64LX, 0x100, { UQ_ASSUME_CM_OVER_DATA }}, + /* Devices which should be ignored by uhid */ + { USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE, + ANY, { UQ_HID_IGNORE }}, { 0, 0, 0, { 0 } } }; diff -u -r ./usb_quirks.h hidpatch/usb_quirks.h --- ./usb_quirks.h Thu Jul 5 05:12:59 2001 +++ hidpatch/usb_quirks.h Tue Apr 26 07:41:18 2005 @@ -54,6 +54,7 @@ #define UQ_AU_INP_ASYNC 0x0800 /* input is async despite claim of adaptive */ #define UQ_ASSUME_CM_OVER_DATA 0x1000 /* modem device breaks on cm over data */ #define UQ_BROKEN_BIDIR 0x2000 /* printer has broken bidir mode */ +#define UQ_HID_IGNORE 0x4000 /* device should be ignored by hid class */ }; extern const struct usbd_quirks usbd_no_quirk; --- hid_blacklist.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted: