From owner-p4-projects@FreeBSD.ORG Thu Dec 20 18:55:28 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2F83B16A420; Thu, 20 Dec 2007 18:55:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0DAC16A419 for ; Thu, 20 Dec 2007 18:55:27 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B418213C46A for ; Thu, 20 Dec 2007 18:55:27 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lBKItRdB035038 for ; Thu, 20 Dec 2007 18:55:27 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lBKItRwf035035 for perforce@freebsd.org; Thu, 20 Dec 2007 18:55:27 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 20 Dec 2007 18:55:27 GMT Message-Id: <200712201855.lBKItRwf035035@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 131320 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Dec 2007 18:55:28 -0000 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);