From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcTEY-0001Yu-T9 for qemu-devel@nongnu.org; Tue, 02 Feb 2010 19:36:43 -0500 Received: from [199.232.76.173] (port=57409 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcTEY-0001Yb-9G for qemu-devel@nongnu.org; Tue, 02 Feb 2010 19:36:42 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcTEV-0006UX-C6 for qemu-devel@nongnu.org; Tue, 02 Feb 2010 19:36:42 -0500 Received: from sj-iport-6.cisco.com ([171.71.176.117]:59218) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.60) (envelope-from ) id 1NcTEU-0006UH-VM for qemu-devel@nongnu.org; Tue, 02 Feb 2010 19:36:39 -0500 Message-ID: <4B68C513.5080205@cisco.com> Date: Tue, 02 Feb 2010 17:36:35 -0700 From: "David S. Ahern" MIME-Version: 1.0 Subject: Re: [Qemu-devel] usb-host quirks References: <201002021442.07991.mb@bu3sch.de> In-Reply-To: <201002021442.07991.mb@bu3sch.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Buesch Cc: qemu-devel@nongnu.org On 02/02/2010 06:42 AM, Michael Buesch wrote: > Hi, > > I've got a buggy device that needs a special workaround to be usable under > host-usb access. The device really doesn't like being reset via USBDEVFS_RESET. It > immediatenly locks up the device firmware or whatever. It won't respond properly anymore. > With the following patch it works fine, though. > What about the USBDEVFS_RESET in usb_host_open? Does that have an impact? For some USB keys I have had to add an additional reset prior to claiming interfaces: diff --git a/usb-linux.c b/usb-linux.c index 1aaa595..092e75c 100644 --- a/usb-linux.c +++ b/usb-linux.c @@ -906,6 +906,9 @@ static int usb_host_open(USBHostDevice *dev, int bus_num, #endif + /* some keys require a reset before the getconfig */ + ioctl(fd, USBDEVFS_RESET); + /* * Initial configuration is -1 which makes us claim first * available config. We used to start with 1, which does not David Ahern > So I was wondering what the accepted way was to get these quirks upstream into the qemu > source tree. Is usb-linux.c the correct place, or should we put the quirk into > a different place? > > --- > usb-linux.c | 4 ++++ > 1 file changed, 4 insertions(+) > > --- qemu.orig/usb-linux.c > +++ qemu/usb-linux.c > @@ -389,6 +389,10 @@ static void usb_host_handle_reset(USBDev > > dprintf("husb: reset device %u.%u\n", s->bus_num, s->addr); > > + if (((s->descr[8] << 8) | s->descr[9]) == 0x2471 && > + ((s->descr[10] << 8) | s->descr[11]) == 0x0853) > + return; > + > ioctl(s->fd, USBDEVFS_RESET); > > usb_host_claim_interfaces(s, s->configuration); >