From mboxrd@z Thu Jan 1 00:00:00 1970 From: Plato Date: Tue, 04 Dec 2001 01:44:59 +0000 Subject: Re: 2.2 bcdDevice munging patch MIME-Version: 1 Content-Type: multipart/mixed; boundary="ibTvN161/egqYuK8" Message-Id: List-Id: References: In-Reply-To: To: linux-hotplug@vger.kernel.org --ibTvN161/egqYuK8 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Dec 04, 2001 at 01:41:05AM +0000, Plato wrote: OK. I should be more careful before I post to a public mailing list! Darn. > I do not believe that your `munging' of bcdDevice numbers is working > correctly. For instance, if PRODUCT is of the form I should say that this specifically refers to the environment variable PRODUCT as seen by /etc/hotplug/usb.agent. > The attached patch seeks to rectify this. Please let me know if it is any > use and whether or not it will be included in your releases. Hmmm ... here it is. This time :-) Plato --ibTvN161/egqYuK8 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="hotplug-bcd_fix.patch" diff -u -r hotplug-2001_09_19/ChangeLog hotplug-bcd_fix/ChangeLog --- hotplug-2001_09_19/ChangeLog Thu Sep 20 01:20:02 2001 +++ hotplug-bcd_fix/ChangeLog Tue Dec 4 01:20:13 2001 @@ -1,3 +1,6 @@ +Tue Dec 4 2001 Tom Huckstep + - Fixed munging of usb_bcdDevice for 2.2 kernels + Sun Sep 16 2001 kroah/dbrownell - Added ieee1394.agent from Kristian Hogsberg diff -u -r hotplug-2001_09_19/etc/hotplug/usb.agent hotplug-bcd_fix/etc/hotplug/usb.agent --- hotplug-2001_09_19/etc/hotplug/usb.agent Tue Dec 4 01:17:19 2001 +++ hotplug-bcd_fix/etc/hotplug/usb.agent Tue Dec 4 01:17:59 2001 @@ -120,8 +120,28 @@ # work around 2.2 brokenness # munges the usb_bcdDevice such that it is a integer rather # than a float: e.g. 1.0 become 0100 - PRODUCT=`echo $PRODUCT | sed -e "s+\.\([0-9]\)$+.\10+" -e "s/\.$/00/" \ - -e "s+/\([0-9]\)\.\([0-9][0-9]\)+/0\1\2+"` + + # In PRODUCT=x/y/z if z has only one digit after a decimal point then a + # trailing zero is added. If z has only one digit before a decimal + # point then a leading zero is added. The decimal point is then + # removed. + + # e.g. a.b -> 0ab0 + # ab.c -> cab0 + # a.bc -> 0abc + # ab.cd -> abcd + + # Why does the kernel give us this in such a weird format? I don't + # know, but looking at usb/usb.c in your 2.2 kernel source may help. + # N.B. to_bcd() + + # Add the trailing zero + PRODUCT=`echo $PRODUCT | sed -e "s+\.\([0-9]\)$+.\10+"` + # Add the leading zero + PRODUCT=`echo $PRODUCT | sed -e "s/\/\([0-9].[0-9][0-9]\)$/\/0\1/"` + # Remove the decimal point + PRODUCT=`echo $PRODUCT | sed -e "s/\/\([0-9][0-9]\)\.\([0-9][0-9]\)/\/\1\2/"` + set `echo $PRODUCT | $AWK -F/ '{print "0x" $1, "0x" $2, "0x" $3 }'` '' usb_idVendor=$1 usb_idProduct=$2 --ibTvN161/egqYuK8-- _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel