Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Dec 2007 18:55:27 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 131320 for review
Message-ID:  <200712201855.lBKItRwf035035@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=131320

Change 131320 by hselasky@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);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712201855.lBKItRwf035035>