Hi Artem,

thanks for your reply

> Is this device CDC (Communication Device Class) compliant or vendor 
> specific?

Vendor specific with some CDC-like details.

> What do USB descriptors look like?

output of usb_log_descr_tree

USB descriptor tree for Option N.V. Globetrotter HSUPA Modem
highest configuration found=0
Configuration #0 (Addr= 0xffffff017c918010)
String descr=<null string>
config descr: len=9 tp=2 totLen=65 numIf=2 cfgVal=1 att=0x80 pwr=250
  usb_cfg_data_t shows max if=1 and 0 cv descr(s).
          interface #0 (0xffffff0191d6ce08)
         Alt #0 (0xffffff018004c5a0)
         String descr=Data Interface
         if descr: len=9 type=4 if=0 alt=0 n_ept=3 cls=255 sub=255 proto=255
         usb_alt_if_data_t shows max ep=2 and 0 cv descr(s).
             endpoint[0], epaddr=0x83 (0xffffff01543e8010)
             len=7 type=5 attr=0x2 pktsize=64 interval=0
             endpoint[1], epaddr=0x3 (0xffffff01543e8028)
             len=7 type=5 attr=0x2 pktsize=64 interval=0
             endpoint[2], epaddr=0x85 (0xffffff01543e8040)
             len=7 type=5 attr=0x3 pktsize=16 interval=128
             usb_ep_data_t shows 1 cv descr(s)
             endpoint cv descriptor 0 (0xffffff015734f028), size=3
             3 24
          interface #1 (0xffffff0191d6ce18)
         Alt #0 (0xffffff017d0f5788)
         String descr=Data Interface
         if descr: len=9 type=4 if=1 alt=0 n_ept=2 cls=255 sub=255 proto=255
         usb_alt_if_data_t shows max ep=1 and 0 cv descr(s).
             endpoint[0], epaddr=0x84 (0xffffff01812148a8)
             len=7 type=5 attr=0x2 pktsize=64 interval=0
             endpoint[1], epaddr=0x4 (0xffffff01812148c0)
             len=7 type=5 attr=0x2 pktsize=64 interval=0

Yes, two, but that does not help.

> If you have a poorly designed vendor-specific device with multiple 
> functions but no corresponding interfaces, I think the cleanest approach 
> would be to implement a nexus driver, similar in purpose to usb_mid, 
> that would create two interface nodes and enable you to bind two drivers.

see above: interface#0 contains two bulk and one intr ep. ep[2] (intr) is used 
for serial mux rx data notification which is to be polled over the ctrl pipe.

interface#0 ep[0] and ep[1] are the network i/f endpoints.

Do you think I'd get a clean solution from this mess with three drivers?

I also don't see how I would be able to use the usba framework when a nexus 
driver only passes down specific pipes plus the control pipe.

I really appreciate your ideas, but at this point I don't understand how this 
would make the solution cleaner or even easier.

Nils
_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to