Date: Thu, 10 Jun 2004 11:22:35 -0400 From: John Baldwin <jhb@FreeBSD.org> To: freebsd-hardware@FreeBSD.org Cc: Markus Wild <mwild@vianetworks.ch> Subject: Re: Fix for Logitech DiNovo cordless mouse [PATCH] Message-ID: <200406101122.35454.jhb@FreeBSD.org> In-Reply-To: <200406092016.54347.mistry.7@osu.edu> References: <200406091838.i59Icugc063061@smsgw.vianetworks.ch> <200406092016.54347.mistry.7@osu.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 09 June 2004 08:16 pm, Anish Mistry wrote: > On Wednesday 09 June 2004 02:38 pm, Markus Wild wrote: > > Since yesterday I'm a happy owner of a Logitech dinovo > > cordless USB keyboard/mouse. The keyboard works fine, however > > the mouse didn't move a bit. I saw that other people had similar > > "luck", so I enabled a bit of debugging. This is with FreeBSD-current, > > btw. > > > > The result of the quest was: the hid.c:hid_report_size() function returns > > a bogus iid value: > > > > Jun 9 19:37:06 mothra kernel: ums0: Logitech USB Receiver, rev > > 1.10/24.04, addr 3, iclass 3/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: bLength=7 bDescriptorType=5 > > bEndpoint Address=2-in bmAttributes=3 wMaxPacketSize=8 bInterval=10 > > Jun 9 19:37:06 mothra kernel: ums0: 7 buttons and Z dir. > > Jun 9 19:37:06 mothra kernel: ums_attach: sc=0xc23a1800 > > Jun 9 19:37:06 mothra kernel: ums_attach: X 8/12 > > Jun 9 19:37:06 mothra kernel: ums_attach: Y 20/12 > > Jun 9 19:37:06 mothra kernel: ums_attach: Z 32/8 > > Jun 9 19:37:06 mothra kernel: ums_attach: B1 0/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B2 1/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B3 2/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B4 3/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B5 4/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B6 5/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: B7 6/1 > > Jun 9 19:37:06 mothra kernel: ums_attach: size=36, id=17 > > > > Since actual interrupt reports are issed with id 2: > > Jun 9 18:42:10 mothra kernel: ums_intr: sc=0xc23a1800 status=0 > > Jun 9 18:42:10 mothra kernel: ums_intr: data = 02 00 fa > > > > So I added a bit of debugging to the id setting for-loop. It > > looks like the ID cycles thru the following values at attach() time: > > Jun 9 19:40:57 mothra kernel: hid_report_size: 00 -> 02 > > Jun 9 19:40:57 mothra kernel: hid_report_size: 02 -> 03 > > Jun 9 19:40:57 mothra kernel: hid_report_size: 03 -> 04 > > Jun 9 19:40:57 mothra kernel: hid_report_size: 04 -> 10 > > Jun 9 19:40:57 mothra kernel: hid_report_size: 10 -> 11 > > (numbers are hex here) > > > > With this, my current fix is simple: only set id if it's not > > set already: > > diff -u -r1.23 hid.c > > --- hid.c 24 Aug 2003 17:55:54 -0000 1.23 > > +++ hid.c 9 Jun 2004 18:34:23 -0000 > > @@ -374,9 +374,10 @@ > > int size, id; > > > > id = 0; > > + bzero (&h, sizeof (h)); > > for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); ) > > - if (h.report_ID != 0) > > - id = h.report_ID; > > + if (h.report_ID != 0 && !id) > > + id = h.report_ID; > > hid_end_parse(d); > > size = h.loc.pos; > > if (id != 0) { > > I've attached at big patch that should fix the problem as well as a bunch > of updates from the NetBSD sources. This is a patch against -CURRENT, so > you may have to massage it a bit if you are on -STABLE. I won't have an > offending device to test for at least a week so let me know of any > problems. - M_ZERO is preferred to malloc() + memset(), so please don't make that change. - Lots of the changes add style bugs by adding spaces to the end of lines. Please remove any trailing whitespace from your files. Other than that the patch looks cool. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406101122.35454.jhb>