In message: <41124C8B.2060902_at_tellme3times.com> Chris <chris_at_tellme3times.com> writes: : M. Warner Losh wrote: : : > : >You misunerstand what's actually happening. There's no case in the : >tree where two drivers are attached, at the same time, to the same : >device node. There's only one set of pointers. However, with USB, : >there can be reasons why multiple things can attach to the same : >driver. The usb code tries to do smart things for devices that have : >multiple configurations. : > : >With USB and multi-function devices, here's the code that we use: : > : > /* First try with device specific drivers. */ : > probe and attach driver with a config # of -1 (usegeneric = 0) : > return if successful : > /* Next try with interface drivers. */ : > foreach valid configuration : > foreach interface : > probe and attach driver : > /* Finally try the generic driver. */ : > probe and attach driver with a config # of -1 (usegeneric = 1) : > return if successful : > : >I'm not familiar with the specific instance of ulpt and unlpt. : > : > : : : You are right I do not understand. All I know is that when the system : boots, at some point a test is done to see if their are USB devices. If : devices exist then attach drivers. True. : What I am trying to determine is why my multifunction printer/scanner : receives only one of the two drivers. Is it because the printer does : not respond properly? Is it because the printer is not defined? I have : many questions here. Yes. Usb is a little complicated in this area, and there are a number of details that are hard to get right. It wouldn't surprise me if the current set of drivers are less than completely optimal. : I looked in the following and just see the code for that specific : device. It does not test for multifunction devices. I do not see any : code that follows the logic above. : : src/sys/dev/usb/ulpt.c : src/sys/dev/usb/uscanner.c : src/sys/dev/usb/usbdevs True. The above code is from usb/usb_subr.c in usbd_probe_and_attach(). : If you can point me in the right direction, or to some documents on USB : driver writing I will try to figure this out. Any help would be : appreciated. I will get this to work because I need both and the effort : required to switch is just not convenient. I think that the first thing that should be done is to look at the usb configuration. /usr/ports/sysutils/udesc_dump is a good place to start to investigate things. Also, the usb mindshare book is good to understand usb and the layers of the configuation onion. There's a book in the works that should help, but I'm afraid that I can't say more than that at this time. WarnerReceived on Sat Aug 07 2004 - 03:13:15 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:05 UTC