From owner-freebsd-bugs@FreeBSD.ORG  Tue Jul 13 20:30:44 2004
Return-Path: <owner-freebsd-bugs@FreeBSD.ORG>
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 495BB16A4CE
	for <freebsd-bugs@hub.freebsd.org>;
	Tue, 13 Jul 2004 20:30:44 +0000 (GMT)
Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 2598843D31
	for <freebsd-bugs@hub.freebsd.org>;
	Tue, 13 Jul 2004 20:30:44 +0000 (GMT)
	(envelope-from gnats@FreeBSD.org)
Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1])
	by freefall.freebsd.org (8.12.11/8.12.11) with ESMTP id i6DKUih9045582
	for <freebsd-bugs@freefall.freebsd.org>; Tue, 13 Jul 2004 20:30:44 GMT
	(envelope-from gnats@freefall.freebsd.org)
Received: (from gnats@localhost)
	by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i6DKUium045581;
	Tue, 13 Jul 2004 20:30:44 GMT
	(envelope-from gnats)
Date: Tue, 13 Jul 2004 20:30:44 GMT
Message-Id: <200407132030.i6DKUium045581@freefall.freebsd.org>
To: freebsd-bugs@FreeBSD.org
From: Mark Derbyshire <mark@taom.com>
Subject: Re: kern/69006: [patch] Apple Cinema Display hangs USB ports
X-BeenThere: freebsd-bugs@freebsd.org
X-Mailman-Version: 2.1.1
Precedence: list
Reply-To: Mark Derbyshire <mark@taom.com>
List-Id: Bug reports <freebsd-bugs.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-bugs>,
	<mailto:freebsd-bugs-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-bugs>
List-Post: <mailto:freebsd-bugs@freebsd.org>
List-Help: <mailto:freebsd-bugs-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/freebsd-bugs>,
	<mailto:freebsd-bugs-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 13 Jul 2004 20:30:44 -0000

The following reply was made to PR kern/69006; it has been noted by GNATS.

From: Mark Derbyshire <mark@taom.com>
To: FreeBSD-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: kern/69006: [patch] Apple Cinema Display hangs USB ports
Date: Tue, 13 Jul 2004 14:25:11 -0600

 After thinking about the apparent XFree86 hangs noted with the patch 
 described in the original report, I modified the patch to cause the 
 Cinema USB port to be disabled. This seems to have cured the XFree86 
 freezes. The updated patch follows.
 
 --- usb_quirks.c.orig   Sun Aug 24 11:55:55 2003
 +++ usb_quirks.c        Wed Mar 17 11:11:31 2004
 @@ -93,6 +93,7 @@
   { USB_VENDOR_HP, USB_PRODUCT_HP_810C,             ANY,   { 
 UQ_BROKEN_BIDIR }},
   { USB_VENDOR_HP, USB_PRODUCT_HP_830C,             ANY,   { 
 UQ_BROKEN_BIDIR }},
   { USB_VENDOR_HP, USB_PRODUCT_HP_1220C,                    ANY,   { 
 UQ_BROKEN_BIDIR }},
 + { USB_VENDOR_APPLE, USB_PRODUCT_APPLE_CINEMA_23,   ANY,   { UQ_IGNORE 
 }},
   /* YAMAHA router's ucdDevice is the version of farmware and often 
 changes. */
   { USB_VENDOR_YAMAHA, USB_PRODUCT_YAMAHA_RTA54I,
         ANY, { UQ_ASSUME_CM_OVER_DATA }},
 --- usb_quirks.h.orig   Tue Mar 16 15:37:24 2004
 +++ usb_quirks.h        Wed Mar 17 11:11:39 2004
 @@ -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_IGNORE      0x4000  /* ignore this screwed-up device */
  };
 
  extern const struct usbd_quirks usbd_no_quirk;
 --- usb_subr.c.orig     Mon Sep  1 01:47:42 2003
 +++ usb_subr.c  Tue Jul 13 11:06:46 2004
 @@ -304,7 +304,7 @@
         char product[USB_MAX_STRING_LEN];
         int bcdDevice, bcdUSB;
 
 -       usbd_devinfo_vp(dev, vendor, product, 1);
 +        usbd_devinfo_vp(dev, vendor, product, !(dev->quirks->uq_flags 
 & UQ_IGNORE));
         cp += sprintf(cp, "%s %s", vendor, product);
         if (showclass)
                 cp += sprintf(cp, ", class %d/%d",
 @@ -1106,6 +1106,14 @@
 
         DPRINTF(("usbd_new_device: new dev (addr %d), dev=%p, 
 parent=%p\n",
                  addr, dev, parent));
 +
 +       if (dev->quirks->uq_flags & UQ_IGNORE) {
 +               char info[1024];
 +               usbd_devinfo(dev, 0, info);
 +               printf("usb: %s, device ignored\n", info);
 +               usbd_remove_device(dev, up);
 +               return (USBD_INVAL);
 +       }
 
         err = usbd_probe_and_attach(parent, dev, port, addr);
         if (err) {
 --- usbdevs.orig        Sun Nov 16 05:05:11 2003
 +++ usbdevs     Wed Mar 17 11:12:09 2004
 @@ -466,6 +466,7 @@
  /* Apple Computer products */
  product APPLE OPTMOUSE         0x0302  Optical mouse
  product APPLE SPEAKERS         0x1101  Speakers
 +product APPLE CINEMA_23                0x9218  Cinema Display 23 inch
 
  /* Asahi Optical products */
  product ASAHIOPTICAL OPTIO230  0x0004  Digital camera