On Thu, 22 Jan 2009 22:12:08 +0100 Thierry Merle <thierry.me...@free.fr> wrote:
> Laurent Pinchart a écrit : > > On Thursday 22 January 2009, Carsten Meier wrote: > >> Am Thu, 22 Jan 2009 00:20:00 +0100 > >> > >> schrieb Laurent Pinchart <laurent.pinch...@skynet.be>: > >>> 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. > > > To ease this processing, using libsysfs can be a good idea... > On my system, the documentation of libsysfs is here: > /usr/doc/sysfsutils-2.1.0/libsysfs.txt > Knowing the bus-id, it won't be hard to look at it in data structures. > Just my 2 cents. Hi Thierry, It may be a good idea to add some code at the v4l2-apps dir for retrieving the sysfs place. Maybe we may add it at qv4l2 and at v4l2-ctl. Cheers, Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html