From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Stephen Morgan" Date: Fri, 13 May 2005 23:29:16 +0000 Subject: RE: Need persistent node to USB port naming Message-Id: List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org On Fri, May 13, 2005 at 12:55 PM, Greg KH wrote: > On Fri, May 13, 2005 at 11:55:05AM -0500, Stephen Morgan wrote: > > On Fri, 2005-05-03 at 2:50 ocomber wrote: > > > On Thu, 2005-05-12 at 14:58 -0500, Stephen Morgan wrote: > > > > Hello all, > > > > > > > > I'm converting a driver for a USB device from Linux 2.4 to 2.6. > > > The device > > > > is embedded and the host is an embedded PC. There may be > as many as 6 > > > > identical devices attached. The only way they are > > > differentiated is by the > > > > USB port they're plugged into - the cabling is fixed. So, > when the user > > > > asks for 'foo_dev0' for instance, he wants the first USB device > > > - 'foo_dev1' > > > > should give him the 2nd device, etc. > > > > > > > > Under 2.4, I created six nodes, assigning them minors 192 thru > > > 197. In the > > > > driver's probe(), I used usb_make_path to create an index > to the device. > > > > For file ops, I used (MINOR(inode_p->i_rdev) - 192) to get an > > > index from the > > > > node. > > > > > > > > So far, under 2.6, the best approach I can see is to create a > > > udev .rules > > > > file to make the nodes, like so: BUS="usb", PLACE="1-1", > > > NAME="usb/foo_dev0" > > > > > > > > Is this the best way to go, or have I overlooked something simpler? > > > > > > > > Thanks > > > > > > > > Stephen Morgan > > > > > > If your driver is aware of which usb port it is plugged into, it could > > > turn this into a sysfs attribute which can be picked up by udev: > > > > > > BUS="usb", KERNEL="foo", NAME="%k", SYMLINK="%s{USBPORT}" > > > > > > It may be that the USB port already exists as a sysfs > attribute without > > > you having to explicitly code this - I can't check this at the mo. > > > > It does - it's called PLACE :-) (or, more recently, ID) and it works - I > > just want to make sure this is the best way to get the nodes I need. > > Yes it is. PLACE is just for what you are looking for. Thanks, Greg. That's what I needed to hear. > > > One problem I've run into is trying to create a dummy node that > allows me to > > communicate with the driver thru ioctl's even when no device is > plugged in. > > In 2.4, I just created a node with a minor I knew would never > be used, and > > in the driver, I filtered for that minor. Any thoughts on how to create this dummy device node? > > > > Do I to use udev? > > Not if you don't want to, no. > > > It's obviously working, but can I turn it off and make nodes the way I > > did in 2.4? If so, how would I turn it off? What kinds of havoc > > would that wreak in 2.6? > > Depends on your distro, and how it is set up. Lots of people use 2.6 > without using udev. > > thanks, > > greg k-h > ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_ids93&alloc_id281&op=click _______________________________________________ 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