usbd_set_config_no vs. usbd_set_config_index

Andriy Gapon avg at icyb.net.ua
Thu Aug 16 05:26:50 PDT 2007


on 15/08/2007 18:41 Hans Petter Selasky said the following:
> On Wednesday 15 August 2007, Andriy Gapon wrote:
>> I am curious about a difference between usbd_set_config_no and
>> usbd_set_config_index. My reason is such: I am trying to use
>> palm/uppc-kmod to talk to my pocket pc device via usb. When I used the
>> port in its original shape it gave me the following error each time I
>> plugged the device:
>> kernel: ucom0: failed to set configuration, err=STALLED
>> kernel: device_attach: ucom0 attach returned 6
>>
>> Then, to mimic some other driver I simply changed
>> usbd_set_config_index() to usbd_set_config_no() in the code, and voila:
>> kernel: ucom0: <Windows CE Device> ASUS ASUS Windows Mobile Device, rev
>> 2.00/0.00, addr 3 (rt)
>>
>> I am now trying to get synce to actually work.
>> But I am really curious what my change really did, and I am totally
>> ignorant about our usb code.
>> BTW:
>> FreeBSD 6.2-RELEASE-p3 amd64
>>
>> Thank you in advance for my education.
> 
> Hi,
> 
> usbd_set_config_no will search for a matching bConfiguration value.
> 
> usbd_set_config_index will set the configuration by physical index: 0, 1, 
> 2 ...
> 

Thank you!
Is it safe to assume that *_no is "more robust" than "*_index" and in
drivers for general classes of devices it should be preferred ? And
_index should only be used in very specific cases where we are sure of
what we are doing ?
Or am I talking nonsense ?

It is curious to compare the following:
$ glimpse -l usbd_set_config_no
/usr/src/sys/dev/usb/usb_subr.h
/usr/src/sys/dev/usb/if_zyd.c
/usr/src/sys/dev/usb/uscanner.c
/usr/src/sys/dev/usb/if_ural.c
/usr/src/sys/dev/usb/if_kue.c
/usr/src/sys/dev/usb/if_aue.c
/usr/src/sys/dev/usb/ugen.c
/usr/src/sys/dev/usb/if_axe.c
/usr/src/sys/dev/usb/if_udav.c
/usr/src/sys/dev/usb/if_rue.c
/usr/src/sys/dev/usb/usb_subr.c
/usr/src/sys/dev/usb/if_cue.c
/usr/src/sys/dev/usb/usbdi_util.h
/usr/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c
$ glimpse -l usbd_set_config_index
/usr/src/sys/dev/usb/usb_subr.h
/usr/src/sys/dev/usb/ugensa.c
/usr/src/sys/dev/usb/umoscom.c
/usr/src/sys/dev/usb/ugen.c
/usr/src/sys/dev/usb/uplcom.c
/usr/src/sys/dev/usb/umct.c
/usr/src/sys/dev/usb/uvisor.c
/usr/src/sys/dev/usb/uvscom.c
/usr/src/sys/dev/usb/usb_subr.c
/usr/src/sys/dev/usb/uhub.c
/usr/src/sys/dev/usb/uftdi.c
/usr/src/sys/dev/usb/usbdi_util.h
/usr/src/sys/dev/usb/ubsa.c
/usr/src/sys/dev/usb/ucycom.c


-- 
Andriy Gapon


More information about the freebsd-usb mailing list