Re: [PULL] http://linuxtv.org/hg/~mcisely/pvrusb2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 22 January 2009, Carsten Meier wrote:
> Am Thu, 22 Jan 2009 00:20:00 +0100
>
> schrieb Laurent Pinchart <laurent.pinchart@xxxxxxxxx>:
> > Hi Carsten,
> >
> > On Wednesday 21 January 2009, Carsten Meier wrote:
> > > now I want to translate bus_info into a sysfs-path to obtain
> > > device-info like serial numbers. Given a device reports
> > > "usb-0000:00:1d.2-2" as bus_info, then the device-info is located
> > > under "/sys/bus/usb/devices/2-2", which is a symlink to the
> > > appropriate /sys/devices/ directory, right?
> >
> > I'm afraid not. In the above bus_info value, 0000:00:1d.2 is the PCI
> > bus path of your USB controller, and the last digit after the dash is
> > the USB device path.
> >
> > > All I have to do is to compare the first 4 chars of bus_info against
> > > "usb-", get the chars after "." and append it to
> > > "/sys/bus/usb/devices/" to obatin a sysfs-path, right?
> > >
> > > Is there a more elegant solution or already a function for this? Can
> > > the "." appear more than once before the last one?
> >
> > Probably not before, but definitely after.
> >
> > Root hubs get a USB device path set to '0'. Every other device is
> > numbered according to the hub port number it is connected to. If you
> > have an external hub connected on port 2 of your root hub, and have a
> > webcam connected to port 3 of the external hub, usb_make_path() will
> > return "usb-0000:00:1d.2-2.3".
> >
> > Cheers,
> >
> > Laurent Pinchart
>
> Hi,
>
> On my machine, my pvrusb2 (connected directly to my mini-pc) shows up
> under "/sys/bus/usb/devices/7-2/" which is a symbolic link to
> "../../../devices/pci0000:00/0000:00:1d.7/usb7/7-2"

You're just lucky that USB bus 7 (usb7/7) is connected to the 7th function of 
your USB host controller (1d.7).

Here's an example of what I get on my computer:

/sys/bus/usb/devices/4-2 -> ../../../devices/pci0000:00/0000:00:1d.2/usb4/4-2

> I can't test for the new bus_info-string, because it's not fixed yet in
> the driver. But if I got it correctly it should be
> "usb-0000:00:1d.7-7.2" ?

I think you will get usb-0000:00:1d.7-2

> Then I've to simply take the string after the last dash, replace "." by "-"
> and append it to "/sys/bus/usb/devices/" for a sysfs-path?

Unfortunately the mapping is not that direct. The part before the last dash 
identifies the USB host controller. The part after the last dash identifies 
the device path related to the controller, expressed as a combination of port 
numbers.

The sysfs device path /sys/bus/usb/devices/7-2/ includes a USB bus number (in 
this case 7) that is not present in usb_make_path()'s output.

To find the sysfs path of your USB peripheral, you will have to find out which 
bus number the bus name (0000:00:1d.7) corresponds to. You might be able to 
find that by checking each usb[0-9]+ links in /sys/bus/usb/devices and 
comparing the link's target with the bus name.

Best regards,

Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux