On 7/26/07, Dan Nicholson <[EMAIL PROTECTED]> wrote:
> On 7/26/07, Matthew Burgess <[EMAIL PROTECTED]> wrote:
> >
> > On Thu, 26 Jul 2007 09:17:52 -0700, "Dan Nicholson" <[EMAIL PROTECTED]> 
> > wrote:
> > > On 7/26/07, Dan Nicholson <[EMAIL PROTECTED]> wrote:
> > >> The 2.6.22 kernel (maybe 2.6.21 too, didn't check) has an option
> > >> CONFIG_USB_DEVICE_CLASS that's marked as deprecated. The help text
> > >> states that it is unnecessary if the following udev rule is used:
> > >>
> > >> SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", \
> > >>     NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
> > >>
> > >> I checked the SuSE rules in udev-111, and this is in addition to the
> > >> existing usb_device rule:
> > >>
> > >> SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'X=%k; X=$${X#usbdev};
> > >> B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", NAME="%c"
> > >>
> > >> Does anyone have a problem if I add that to our rules?
> > >
> > > Actually, it seems that they're the same rule, but the kernel no
> > > longer supplies the usb_device subsystem is removed in 2.6.22. Here's
> > > a relevant bug:
> > >
> > > https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=248916#c10
> > >
> > > So, the new rule can replace the old one depending on whether
> > > CONFIG_USB_DEVICE_CLASS is set. I think both rules should be there so
> > > that our rules stay compatible whether this setting is Y or N. Also,
> > > leaving the older rule there means you get /dev/bus/usb nodes if you
> > > run an older kernel.
> >
> > I'm not sure we need both rules.  If CONFIG_USB_DEVICE_CLASS=n, the new 
> > rule will take effect.  If CONFIG_USB_DEVICE_CLASS=y, whichever of the 
> > NAME= rules is hit first will take effect, if my understanding of Udev rule 
> > evaluation is correct.  Therefore, if the new rule is placed above the 
> > existing one, the existing one then becomes entirely redundant.
>
> This is where I'm a little unsure. I believe if
> CONFIG_USB_DEVICE_CLASS=y, then there won't be anything that matches
> SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device". In that case, the new
> rule would be useless. But I'm not sure about that since I'm not
> actually running 2.6.22 (in the process of rebasing my .config).

I built a kernel with and without CONFIG_USB_DEVICE_CLASS=y, and the
rule works in both situations. It works fine with both. The only
difference if you have it set to y is that you get /dev/usbdev?.?
nodes (in addition to the endpoint _ep?? ones) and
/sys/class/usb_device paths.

Now to fix up the equivalent rule on the libusb page in BLFS.

--
Dan
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to