PERFORCE change 131320 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Dec 20 10:55:28 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=131320
Change 131320 by hselasky at hselasky_laptop001 on 2007/12/20 18:54:41
Update and simplify "usbd_set_desc". Check if the
"iInterface" string before setting the device description.
At the same time rename the function to
"usbd_set_device_desc" so that there is no confusion.
Affected files ...
.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#29 edit
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#28 edit
.. //depot/projects/usb/src/sys/dev/usb/if_aue.c#40 edit
.. //depot/projects/usb/src/sys/dev/usb/if_axe.c#42 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#32 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cue.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/if_kue.c#38 edit
.. //depot/projects/usb/src/sys/dev/usb/if_rue.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/if_rum.c#23 edit
.. //depot/projects/usb/src/sys/dev/usb/if_udav.c#38 edit
.. //depot/projects/usb/src/sys/dev/usb/if_ural.c#47 edit
.. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#27 edit
.. //depot/projects/usb/src/sys/dev/usb/uark.c#16 edit
.. //depot/projects/usb/src/sys/dev/usb/ubsa.c#33 edit
.. //depot/projects/usb/src/sys/dev/usb/ubser.c#25 edit
.. //depot/projects/usb/src/sys/dev/usb/ucycom.c#28 edit
.. //depot/projects/usb/src/sys/dev/usb/udbp.c#21 edit
.. //depot/projects/usb/src/sys/dev/usb/ufm.c#19 edit
.. //depot/projects/usb/src/sys/dev/usb/ufoma.c#35 edit
.. //depot/projects/usb/src/sys/dev/usb/uftdi.c#30 edit
.. //depot/projects/usb/src/sys/dev/usb/ugen.c#32 edit
.. //depot/projects/usb/src/sys/dev/usb/ugensa.c#17 edit
.. //depot/projects/usb/src/sys/dev/usb/uhid.c#27 edit
.. //depot/projects/usb/src/sys/dev/usb/uhub.c#28 edit
.. //depot/projects/usb/src/sys/dev/usb/uipaq.c#18 edit
.. //depot/projects/usb/src/sys/dev/usb/ukbd.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/ulpt.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/umass.c#39 edit
.. //depot/projects/usb/src/sys/dev/usb/umct.c#27 edit
.. //depot/projects/usb/src/sys/dev/usb/umodem.c#37 edit
.. //depot/projects/usb/src/sys/dev/usb/ums.c#35 edit
.. //depot/projects/usb/src/sys/dev/usb/uplcom.c#34 edit
.. //depot/projects/usb/src/sys/dev/usb/urio.c#21 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#18 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#74 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#82 edit
.. //depot/projects/usb/src/sys/dev/usb/uscanner.c#20 edit
.. //depot/projects/usb/src/sys/dev/usb/uvisor.c#30 edit
.. //depot/projects/usb/src/sys/dev/usb/uvscom.c#33 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#22 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#17 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#29 (text) ====
@@ -334,7 +334,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->dev = dev;
sc->maxlun = 0;
==== //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#28 (text+ko) ====
@@ -686,7 +686,7 @@
umidi_init(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
id = usbd_get_interface_descriptor(uaa->iface);
==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#40 (text+ko) ====
@@ -795,7 +795,7 @@
if (uaa->release >= 0x0201) {
sc->sc_flags |= AUE_FLAG_VER_2; /* XXX currently undocumented */
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/if_axe.c#42 (text+ko) ====
@@ -649,7 +649,7 @@
sc->sc_unit = device_get_unit(dev);
sc->sc_flags = t->axe_flags;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#32 (text+ko) ====
@@ -244,7 +244,7 @@
if (t) {
sc->sc_flags = t->cdce_flags;
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/if_cue.c#36 (text+ko) ====
@@ -483,7 +483,7 @@
sc->sc_dev = dev;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "cue lock", NULL, MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/if_kue.c#38 (text+ko) ====
@@ -512,7 +512,7 @@
sc->sc_dev = dev;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "kue lock", NULL, MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/if_rue.c#36 (text+ko) ====
@@ -705,7 +705,7 @@
sc->sc_dev = dev;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/if_rum.c#23 (text+ko) ====
@@ -457,7 +457,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&sc->sc_mtx, "rum lock", MTX_NETWORK_LOCK,
MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/if_udav.c#38 (text+ko) ====
@@ -323,7 +323,7 @@
sc->sc_unit = device_get_unit(dev);
sc->sc_flags = udav_lookup(uaa->vendor, uaa->product)->udav_flags;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#47 (text+ko) ====
@@ -516,7 +516,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&sc->sc_mtx, "ural lock", MTX_NETWORK_LOCK,
MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/if_zyd.c#27 (text+ko) ====
@@ -1257,7 +1257,7 @@
uaa->release);
return (EINVAL);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/uark.c#16 (text+ko) ====
@@ -205,7 +205,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
==== //depot/projects/usb/src/sys/dev/usb/ubsa.c#33 (text+ko) ====
@@ -348,7 +348,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
==== //depot/projects/usb/src/sys/dev/usb/ubser.c#25 (text+ko) ====
@@ -266,7 +266,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/ucycom.c#28 (text+ko) ====
@@ -226,7 +226,7 @@
}
sc->sc_udev = uaa->device;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/udbp.c#21 (text+ko) ====
@@ -331,7 +331,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/ufm.c#19 (text+ko) ====
@@ -168,7 +168,7 @@
mtx_init(&(sc->sc_mtx), "ufm lock", NULL, MTX_DEF | MTX_RECURSE);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(buf, sizeof(buf), "ufm%d", sc->sc_unit);
==== //depot/projects/usb/src/sys/dev/usb/ufoma.c#35 (text+ko) ====
@@ -387,7 +387,7 @@
sc->sc_dev = dev;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/uftdi.c#30 (text+ko) ====
@@ -301,7 +301,7 @@
sc->sc_dev = dev;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/ugen.c#32 (text+ko) ====
@@ -197,8 +197,7 @@
mtx_init(&sc->sc_mtx, "ugen lock",
NULL, MTX_DEF | MTX_RECURSE);
- /**/
- usbd_set_desc(dev, sc->sc_udev);
+ usbd_set_device_desc(dev);
/* first set configuration index 0, the default one for ugen */
if (usbd_set_config_index(sc->sc_udev, 0, 0)) {
==== //depot/projects/usb/src/sys/dev/usb/ugensa.c#17 (text+ko) ====
@@ -207,7 +207,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
/* Move the device into the configured state */
error = usbd_set_config_index(uaa->device, UGENSA_CONFIG_INDEX, 1);
==== //depot/projects/usb/src/sys/dev/usb/uhid.c#27 (text+ko) ====
@@ -600,7 +600,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "uhid lock", NULL, MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/uhub.c#28 (text+ko) ====
@@ -559,7 +559,7 @@
snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
device_get_nameunit(dev));
- usbd_set_desc(dev, udev);
+ usbd_set_device_desc(dev);
err = usbd_set_config_index(udev, 0, 1);
if (err) {
==== //depot/projects/usb/src/sys/dev/usb/uipaq.c#18 (text+ko) ====
@@ -220,7 +220,7 @@
}
sc->sc_udev = uaa->device;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
error = usbd_set_config_no(uaa->device, UIPAQ_CONFIG_NO, 1);
==== //depot/projects/usb/src/sys/dev/usb/ukbd.c#36 (text+ko) ====
@@ -638,7 +638,7 @@
kbd->kb_data = (void *)sc;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
sc->sc_iface = uaa->iface;
==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#36 (text+ko) ====
@@ -521,7 +521,7 @@
sc->sc_dev = dev;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "ulpt lock", NULL, MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/umass.c#39 (text+ko) ====
@@ -1458,7 +1458,7 @@
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "UMASS lock", NULL, (MTX_DEF | MTX_RECURSE));
==== //depot/projects/usb/src/sys/dev/usb/umct.c#27 (text+ko) ====
@@ -275,7 +275,7 @@
sc->sc_udev = uaa->device;
sc->sc_unit = device_get_unit(dev);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/dev/usb/umodem.c#37 (text+ko) ====
@@ -347,7 +347,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
id = usbd_get_interface_descriptor(uaa->iface);
==== //depot/projects/usb/src/sys/dev/usb/ums.c#35 (text+ko) ====
@@ -395,7 +395,7 @@
DPRINTF(10, "sc=%p\n", sc);
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "ums lock", NULL, MTX_DEF | MTX_RECURSE);
==== //depot/projects/usb/src/sys/dev/usb/uplcom.c#34 (text+ko) ====
@@ -389,7 +389,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
DPRINTF(0, "sc = %p\n", sc);
==== //depot/projects/usb/src/sys/dev/usb/urio.c#21 (text+ko) ====
@@ -228,7 +228,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
==== //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#18 (text+ko) ====
@@ -274,7 +274,7 @@
}
uaa->device->linux_dev = p_dev;
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_fbsd_udev = uaa->device;
sc->sc_fbsd_dev = dev;
==== //depot/projects/usb/src/sys/dev/usb/usb_subr.c#74 (text+ko) ====
@@ -1900,9 +1900,44 @@
}
void
-usbd_set_desc(device_t dev, struct usbd_device *udev)
+usbd_set_device_desc(device_t dev)
{
- usbd_devinfo(udev, udev->scratch[0].data, sizeof(udev->scratch));
+ struct usb_attach_arg *uaa;
+ struct usbd_device *udev;
+ struct usbd_interface *iface;
+ usbd_status_t err;
+
+ if (dev == NULL) {
+ /* should not happen */
+ return;
+ }
+ uaa = device_get_ivars(dev);
+ if (uaa == NULL) {
+ /* can happend if called at the wrong time */
+ return;
+ }
+ udev = uaa->device;
+ iface = uaa->iface;
+
+ if ((iface == NULL) ||
+ (iface->idesc == NULL) ||
+ (iface->idesc->iInterface == 0)) {
+ err = USBD_INVAL;
+ } else {
+ err = 0;
+ }
+
+ if (!err) {
+ /* try to get the interface string ! */
+ err = usbreq_get_string_any
+ (udev, &usb_global_lock, udev->scratch[0].data,
+ sizeof(udev->scratch), iface->idesc->iInterface);
+ }
+ if (err) {
+ /* use default description */
+ usbd_devinfo(udev, udev->scratch[0].data,
+ sizeof(udev->scratch));
+ }
device_set_desc_copy(dev, udev->scratch[0].data);
device_printf(dev, "<%s> on %s\n", udev->scratch[0].data,
device_get_nameunit(udev->bus->bdev));
==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#82 (text+ko) ====
@@ -846,7 +846,7 @@
struct usbd_device *usbd_ref_device(struct usbd_bus *bus, uint8_t addr);
void usbd_unref_device(struct usbd_device *udev);
struct usbd_interface *usbd_get_iface(struct usbd_device *udev, uint8_t iface_index);
-void usbd_set_desc(device_t dev, struct usbd_device *udev);
+void usbd_set_device_desc(device_t dev);
void *usbd_alloc_mbufs(struct malloc_type *type, struct usbd_ifqueue *ifq, uint32_t block_size, uint16_t block_number);
void usbd_get_page(struct usbd_page_cache *cache, uint32_t offset, struct usbd_page_search *res);
void usbd_copy_in(struct usbd_page_cache *cache, uint32_t offset, const void *ptr, uint32_t len);
==== //depot/projects/usb/src/sys/dev/usb/uscanner.c#20 (text+ko) ====
@@ -407,7 +407,7 @@
/*
* Announce the device:
*/
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
/*
* Setup the transfer.
==== //depot/projects/usb/src/sys/dev/usb/uvisor.c#30 (text+ko) ====
@@ -343,7 +343,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
==== //depot/projects/usb/src/sys/dev/usb/uvscom.c#33 (text+ko) ====
@@ -317,7 +317,7 @@
if (sc == NULL) {
return (ENOMEM);
}
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
sc->sc_udev = uaa->device;
==== //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#22 (text+ko) ====
@@ -487,7 +487,7 @@
uint8_t alt_index;
uint8_t i;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
snprintf(sc->sc_name, sizeof(sc->sc_name),
"%s", device_get_nameunit(dev));
==== //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#17 (text+ko) ====
@@ -210,7 +210,7 @@
sc->sc_dev = dev;
sc->sc_udev = uaa->device;
- usbd_set_desc(dev, uaa->device);
+ usbd_set_device_desc(dev);
mtx_init(&(sc->sc_mtx), "ubtbcmfw lock", NULL, MTX_DEF | MTX_RECURSE);
More information about the p4-projects
mailing list