PERFORCE change 144578 for review

Hans Petter Selasky hselasky at FreeBSD.org
Thu Jul 3 23:00:59 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=144578

Change 144578 by hselasky at hselasky_laptop001 on 2008/07/03 23:00:00

	
	This is the second step making the old USB stack
	       compile together with the new USB stack. Restore
	old USB stack. Note that the new USB stack now
	resides under /sys/dev/usb2 .

Affected files ...

.. //depot/projects/usb/src/sys/amd64/conf/NOTES#11 integrate
.. //depot/projects/usb/src/sys/arm/at91/files.at91#5 integrate
.. //depot/projects/usb/src/sys/arm/at91/ohci_atmelarm.c#17 integrate
.. //depot/projects/usb/src/sys/arm/conf/KB920X#9 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#15 integrate
.. //depot/projects/usb/src/sys/conf/files#29 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#37 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#8 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#34 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.h#7 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio_pcm.c#10 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudioreg.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/FILES#3 branch
.. //depot/projects/usb/src/sys/dev/usb/dsbr100io.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/ehci.c#81 integrate
.. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#36 integrate
.. //depot/projects/usb/src/sys/dev/usb/ehcireg.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/ehcivar.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/hid.c#5 branch
.. //depot/projects/usb/src/sys/dev/usb/hid.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/if_aue.c#48 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_auereg.h#15 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_axe.c#51 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_axereg.h#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#51 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_cue.c#44 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_kue.c#46 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_rue.c#43 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_rum.c#34 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_rumreg.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_rumvar.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_udav.c#47 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#12 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_ural.c#60 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_uralreg.h#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#23 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#42 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_zydfw.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_zydreg.h#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/kue_fw.h#5 branch
.. //depot/projects/usb/src/sys/dev/usb/ohci.c#65 integrate
.. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb/ohcireg.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/ohcivar.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/rio500_usb.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/rt2573_ucode.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/sl811hs.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/sl811hsreg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/sl811hsvar.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/slhci_pccard.c#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/uark.c#24 integrate
.. //depot/projects/usb/src/sys/dev/usb/ubsa.c#42 integrate
.. //depot/projects/usb/src/sys/dev/usb/ubser.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb/ubser.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/uchcom.c#24 integrate
.. //depot/projects/usb/src/sys/dev/usb/ucom.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb/ucomvar.h#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/ucycom.c#35 integrate
.. //depot/projects/usb/src/sys/dev/usb/udbp.c#27 integrate
.. //depot/projects/usb/src/sys/dev/usb/udbp.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/ufm.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/ufoma.c#41 integrate
.. //depot/projects/usb/src/sys/dev/usb/uftdi.c#38 integrate
.. //depot/projects/usb/src/sys/dev/usb/uftdireg.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/ugen.c#43 integrate
.. //depot/projects/usb/src/sys/dev/usb/ugraphire_rdesc.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/uhci.c#63 integrate
.. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#33 integrate
.. //depot/projects/usb/src/sys/dev/usb/uhcireg.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/uhcivar.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/uhid.c#33 integrate
.. //depot/projects/usb/src/sys/dev/usb/uhub.c#34 integrate
.. //depot/projects/usb/src/sys/dev/usb/uipaq.c#26 integrate
.. //depot/projects/usb/src/sys/dev/usb/ukbd.c#44 integrate
.. //depot/projects/usb/src/sys/dev/usb/ulpt.c#45 integrate
.. //depot/projects/usb/src/sys/dev/usb/umass.c#49 integrate
.. //depot/projects/usb/src/sys/dev/usb/umct.c#33 integrate
.. //depot/projects/usb/src/sys/dev/usb/umodem.c#43 integrate
.. //depot/projects/usb/src/sys/dev/usb/ums.c#45 integrate
.. //depot/projects/usb/src/sys/dev/usb/uplcom.c#44 integrate
.. //depot/projects/usb/src/sys/dev/usb/urio.c#27 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb.c#36 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb.h#33 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_ethersubr.c#6 branch
.. //depot/projects/usb/src/sys/dev/usb/usb_ethersubr.h#5 branch
.. //depot/projects/usb/src/sys/dev/usb/usb_if.m#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_mem.c#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usb_mem.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usb_port.h#27 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_quirks.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_quirks.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#107 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbcdc.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdi.c#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbdi.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbdi_util.c#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbdi_util.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbdivar.h#3 branch
.. //depot/projects/usb/src/sys/dev/usb/usbhid.h#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/uscanner.c#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/uslcom.c#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/uvisor.c#37 integrate
.. //depot/projects/usb/src/sys/dev/usb/uvscom.c#40 integrate
.. //depot/projects/usb/src/sys/dev/usb/uxb360gp_rdesc.h#3 branch
.. //depot/projects/usb/src/sys/modules/Makefile#16 integrate
.. //depot/projects/usb/src/sys/modules/ata/atausb/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/aue/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/axe/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/cdce/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/cue/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/if_ndis/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/kue/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ndis/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/netgraph/bluetooth/ubt/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/netgraph/bluetooth/ubtbcmfw/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/rue/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/rum/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/slhci/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/sound/driver/uaudio/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/uark/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ubsa/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/ubser/Makefile#5 integrate
.. //depot/projects/usb/src/sys/modules/uchcom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/ucom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/ucycom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/udav/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/udbp/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ufm/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ufoma/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/uftdi/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/ugen/Makefile#7 integrate
.. //depot/projects/usb/src/sys/modules/uhid/Makefile#5 integrate
.. //depot/projects/usb/src/sys/modules/uipaq/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ukbd/Makefile#7 integrate
.. //depot/projects/usb/src/sys/modules/ulpt/Makefile#5 integrate
.. //depot/projects/usb/src/sys/modules/umass/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/umct/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/umodem/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/ums/Makefile#5 integrate
.. //depot/projects/usb/src/sys/modules/uplcom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/ural/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/urio/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/usb/Makefile#10 integrate
.. //depot/projects/usb/src/sys/modules/uscanner/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/uslcom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/uvisor/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/uvscom/Makefile#3 integrate
.. //depot/projects/usb/src/sys/modules/zyd/Makefile#3 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/TODO#3 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#28 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h#11 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#23 integrate
.. //depot/projects/usb/src/sys/pc98/conf/NOTES#9 integrate

Differences ...

==== //depot/projects/usb/src/sys/amd64/conf/NOTES#11 (text+ko) ====

@@ -306,6 +306,7 @@
 # nfe:	nVidia nForce MCP on-board Ethernet Networking (BSD open source)
 # nve:	nVidia nForce MCP on-board Ethernet Networking
 # ral:	Ralink Technology IEEE 802.11 wireless adapter
+# ural:	Ralink Technology RT2500USB IEEE 802.11 wireless adapter
 # wpi:	Intel 3945ABG Wireless LAN controller
 
 device		ed

==== //depot/projects/usb/src/sys/arm/at91/files.at91#5 (text) ====

@@ -12,7 +12,7 @@
 	dependency	"spibus_if.h"
 arm/at91/at91_tc.c		optional	at91_tc
 arm/at91/at91_twi.c		optional	at91_twi
-arm/at91/at91_udp.c		optional	at9100_dci
+arm/at91/at91_udp.c		optional	at91_udp
 arm/at91/if_ate.c		optional	ate
 arm/at91/ohci_atmelarm.c	optional	ohci
 arm/at91/uart_bus_at91usart.c	optional	uart

==== //depot/projects/usb/src/sys/arm/at91/ohci_atmelarm.c#17 (text) ====

@@ -25,31 +25,36 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.4 2007/10/29 21:01:50 imp Exp $");
 
-#include "opt_bus.h"
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/endian.h>
+#include <sys/lock.h>
+#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/bus.h>
 #include <sys/queue.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
+#include <machine/bus.h>
+#include <sys/rman.h>
+#include <machine/resource.h>
 
-#include <dev/usb/usb_port.h>
 #include <dev/usb/usb.h>
-#include <dev/usb/usb_subr.h>
-#include <dev/usb/ohci.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
+#include <dev/usb/usb_mem.h>
+
+#include <dev/usb/ohcireg.h>
+#include <dev/usb/ohcivar.h>
 
 #include <arm/at91/at91_pmcvar.h>
 
-#define	MEM_RID	0
+#define MEM_RID	0
 
-static device_probe_t ohci_atmelarm_probe;
-static device_attach_t ohci_atmelarm_attach;
-static device_detach_t ohci_atmelarm_detach;
+static int ohci_atmelarm_attach(device_t dev);
+static int ohci_atmelarm_detach(device_t dev);
 
-struct at91_ohci_softc {
-	struct ohci_softc sc_ohci;	/* must be first */
+struct at91_ohci_softc
+{
+	struct ohci_softc sc_ohci;
 	struct at91_pmc_clock *iclk;
 	struct at91_pmc_clock *fclk;
 };
@@ -57,7 +62,7 @@
 static int
 ohci_atmelarm_probe(device_t dev)
 {
-	device_set_desc(dev, "AT91 integrated OHCI controller");
+	device_set_desc(dev, "AT91 integrated ohci controller");
 	return (BUS_PROBE_DEFAULT);
 }
 
@@ -68,99 +73,96 @@
 	int err;
 	int rid;
 
-	if (sc == NULL) {
-		return (ENXIO);
-	}
-	/* get all DMA memory */
-
-	if (usbd_bus_mem_alloc_all(&(sc->sc_ohci.sc_bus),
-	    device_get_dma_tag(dev), &ohci_iterate_hw_softc)) {
-		return ENOMEM;
-	}
+	
 	sc->iclk = at91_pmc_clock_ref("ohci_clk");
 	sc->fclk = at91_pmc_clock_ref("uhpck");
 
-	sc->sc_ohci.sc_dev = dev;
-
 	rid = MEM_RID;
-	sc->sc_ohci.sc_io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
-	    &rid, RF_ACTIVE);
-
-	if (!(sc->sc_ohci.sc_io_res)) {
+	sc->sc_ohci.io_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+	    RF_ACTIVE);
+	if (sc->sc_ohci.io_res == NULL) {
 		err = ENOMEM;
 		goto error;
 	}
-	sc->sc_ohci.sc_io_tag = rman_get_bustag(sc->sc_ohci.sc_io_res);
-	sc->sc_ohci.sc_io_hdl = rman_get_bushandle(sc->sc_ohci.sc_io_res);
-	sc->sc_ohci.sc_io_size = rman_get_size(sc->sc_ohci.sc_io_res);
+	sc->sc_ohci.iot = rman_get_bustag(sc->sc_ohci.io_res);
+	sc->sc_ohci.ioh = rman_get_bushandle(sc->sc_ohci.io_res);
 
 	rid = 0;
-	sc->sc_ohci.sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
+	sc->sc_ohci.irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
 	    RF_ACTIVE);
-	if (!(sc->sc_ohci.sc_irq_res)) {
+	if (sc->sc_ohci.irq_res == NULL) {
+		err = ENOMEM;
 		goto error;
 	}
 	sc->sc_ohci.sc_bus.bdev = device_add_child(dev, "usb", -1);
-	if (!(sc->sc_ohci.sc_bus.bdev)) {
+	if (sc->sc_ohci.sc_bus.bdev == NULL) {
+		err = ENOMEM;
 		goto error;
 	}
-	device_set_ivars(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus));
-	device_set_softc(sc->sc_ohci.sc_bus.bdev, &(sc->sc_ohci.sc_bus));
+	device_set_ivars(sc->sc_ohci.sc_bus.bdev, &sc->sc_ohci.sc_bus);
 
-	strlcpy(sc->sc_ohci.sc_vendor, "Atmel", sizeof(sc->sc_ohci.sc_vendor));
+	/* Allocate a parent dma tag for DMA maps */
+	err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+	    NULL, NULL, &sc->sc_ohci.sc_bus.parent_dmatag);
+	if (err) {
+		device_printf(dev, "Could not allocate parent DMA tag (%d)\n",
+		    err);
+		err = ENXIO;
+		goto error;
+	}
 
-	err = usbd_config_td_setup(&(sc->sc_ohci.sc_config_td), sc,
-	    &(sc->sc_ohci.sc_bus.mtx), NULL, 0, 4);
+	/* Allocate a dma tag for transfer buffers */
+	err = bus_dma_tag_create(sc->sc_ohci.sc_bus.parent_dmatag, 1, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+	    busdma_lock_mutex, &Giant, &sc->sc_ohci.sc_bus.buffer_dmatag);
 	if (err) {
-		device_printf(dev, "could not setup config thread!\n");
+		device_printf(dev, "Could not allocate transfer tag (%d)\n",
+		    err);
+		err = ENXIO;
 		goto error;
 	}
-#if (__FreeBSD_version >= 700031)
-	err = bus_setup_intr(dev, sc->sc_ohci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
-	    NULL, (void *)ohci_interrupt, sc, &(sc->sc_ohci.sc_intr_hdl));
-#else
-	err = bus_setup_intr(dev, sc->sc_ohci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
-	    (void *)ohci_interrupt, sc, &(sc->sc_ohci.sc_intr_hdl));
-#endif
+
+	err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, NULL, 
+	    ohci_intr, sc, &sc->sc_ohci.ih);
 	if (err) {
-		sc->sc_ohci.sc_intr_hdl = NULL;
+		err = ENXIO;
 		goto error;
 	}
+	strlcpy(sc->sc_ohci.sc_vendor, "Atmel", sizeof(sc->sc_ohci.sc_vendor));
+
 	/*
 	 * turn on the clocks from the AT91's point of view.  Keep the unit in reset.
 	 */
 	at91_pmc_clock_enable(sc->iclk);
 	at91_pmc_clock_enable(sc->fclk);
-	bus_space_write_4(sc->sc_ohci.sc_io_tag, sc->sc_ohci.sc_io_hdl,
-	    OHCI_CONTROL, 0);
+	bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0);
 
-	err = ohci_init(&(sc->sc_ohci));
+	err = ohci_init(&sc->sc_ohci);
 	if (!err) {
+		sc->sc_ohci.sc_flags |= OHCI_SCFLG_DONEINIT;
 		err = device_probe_and_attach(sc->sc_ohci.sc_bus.bdev);
 	}
+
+error:;
 	if (err) {
-		goto error;
+		ohci_atmelarm_detach(dev);
+		return (err);
 	}
-	return (0);
-
-error:
-	ohci_atmelarm_detach(dev);
-	return (ENXIO);
+	return (err);
 }
 
 static int
 ohci_atmelarm_detach(device_t dev)
 {
 	struct at91_ohci_softc *sc = device_get_softc(dev);
-	int err;
 
-	if (sc->sc_ohci.sc_bus.bdev) {
-		device_detach(sc->sc_ohci.sc_bus.bdev);
-		device_delete_child(dev, sc->sc_ohci.sc_bus.bdev);
-		sc->sc_ohci.sc_bus.bdev = NULL;
+	if (sc->sc_ohci.sc_flags & OHCI_SCFLG_DONEINIT) {
+		ohci_detach(&sc->sc_ohci, 0);
+		sc->sc_ohci.sc_flags &= ~OHCI_SCFLG_DONEINIT;
 	}
-	/* during module unload there are lots of children leftover */
-	device_delete_all_children(dev);
 
 	/*
 	 * Put the controller into reset, then disable clocks and do
@@ -171,36 +173,36 @@
 	 * clocks after we disable them, so the system could, in
 	 * theory, reuse them.
 	 */
-	bus_space_write_4(sc->sc_ohci.sc_io_tag, sc->sc_ohci.sc_io_hdl,
-	    OHCI_CONTROL, 0);
-
+	bus_space_write_4(sc->sc_ohci.iot, sc->sc_ohci.ioh, OHCI_CONTROL, 0);
 	at91_pmc_clock_disable(sc->fclk);
 	at91_pmc_clock_disable(sc->iclk);
 	at91_pmc_clock_deref(sc->fclk);
 	at91_pmc_clock_deref(sc->iclk);
 
-	if (sc->sc_ohci.sc_irq_res && sc->sc_ohci.sc_intr_hdl) {
-		/*
-		 * only call ohci_detach() after ohci_init()
-		 */
-		ohci_detach(&(sc->sc_ohci));
+	if (sc->sc_ohci.ih) {
+		bus_teardown_intr(dev, sc->sc_ohci.irq_res, sc->sc_ohci.ih);
+		sc->sc_ohci.ih = NULL;
+	}
+
+	if (sc->sc_ohci.sc_bus.parent_dmatag != NULL)
+		bus_dma_tag_destroy(sc->sc_ohci.sc_bus.parent_dmatag);
+	if (sc->sc_ohci.sc_bus.buffer_dmatag != NULL)
+		bus_dma_tag_destroy(sc->sc_ohci.sc_bus.buffer_dmatag);
 
-		err = bus_teardown_intr(dev, sc->sc_ohci.sc_irq_res, sc->sc_ohci.sc_intr_hdl);
-		sc->sc_ohci.sc_intr_hdl = NULL;
+	if (sc->sc_ohci.sc_bus.bdev) {
+		device_delete_child(dev, sc->sc_ohci.sc_bus.bdev);
+		sc->sc_ohci.sc_bus.bdev = NULL;
 	}
-	if (sc->sc_ohci.sc_irq_res) {
-		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_ohci.sc_irq_res);
-		sc->sc_ohci.sc_irq_res = NULL;
+	if (sc->sc_ohci.irq_res) {
+		bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_ohci.irq_res);
+		sc->sc_ohci.irq_res = NULL;
 	}
-	if (sc->sc_ohci.sc_io_res) {
-		bus_release_resource(dev, SYS_RES_MEMORY, MEM_RID,
-		    sc->sc_ohci.sc_io_res);
-		sc->sc_ohci.sc_io_res = NULL;
+	if (sc->sc_ohci.io_res) {
+		bus_release_resource(dev, SYS_RES_MEMORY, MEM_RID, sc->sc_ohci.io_res);
+		sc->sc_ohci.io_res = NULL;
+		sc->sc_ohci.iot = 0;
+		sc->sc_ohci.ioh = 0;
 	}
-	usbd_config_td_unsetup(&(sc->sc_ohci.sc_config_td));
-
-	usbd_bus_mem_free_all(&(sc->sc_ohci.sc_bus), &ohci_iterate_hw_softc);
-
 	return (0);
 }
 

==== //depot/projects/usb/src/sys/arm/conf/KB920X#9 (text) ====

@@ -93,8 +93,7 @@
 
 device		bpf
 # USB support
-device          ohci            # OHCI localbus->USB interface (Host Mode)
-device		at9100_dci	# ADCI localbus->USB interface (Device Mode)
+device          ohci            # OHCI localbus->USB interface
 device          usb             # USB Bus (required)
 #device         udbp            # USB Double Bulk Pipe devices
 device          ugen            # Generic

==== //depot/projects/usb/src/sys/conf/NOTES#15 (text+ko) ====

@@ -2409,8 +2409,6 @@
 device		ufm
 # Generic USB device driver
 device		ugen
-# Generic USB serial driver
-device		ugensa
 # Human Interface Device (anything with buttons and dials)
 device		uhid
 # USB keyboard
@@ -2442,8 +2440,6 @@
 device		uftdi
 # USB support for some Windows CE based serial communication.
 device		uipaq
-# USB support for MOSCHIP serial port adapters
-device		umoscom
 # USB support for Prolific PL-2303 serial adapters
 device		uplcom
 # USB support for Silicon Laboratories CP2101/CP2102 based USB serial adapters

==== //depot/projects/usb/src/sys/conf/files#29 (text+ko) ====

@@ -1265,9 +1265,9 @@
 dev/ubsec/ubsec.c		optional ubsec
 #
 # USB support
-dev/usb/at9100_dci.c		optional at9100_dci
 dev/usb/ehci.c			optional ehci
 dev/usb/ehci_pci.c		optional ehci pci
+dev/usb/hid.c			optional usb
 dev/usb/if_aue.c		optional aue
 dev/usb/if_axe.c		optional axe
 dev/usb/if_cdce.c		optional cdce
@@ -1288,11 +1288,10 @@
 dev/usb/ucom.c			optional ucom
 dev/usb/ucycom.c		optional ucycom
 dev/usb/udbp.c			optional udbp
+dev/usb/ufoma.c			optional ufoma
 dev/usb/ufm.c			optional ufm
-dev/usb/ufoma.c			optional ufoma
 dev/usb/uftdi.c			optional uftdi
 dev/usb/ugen.c			optional ugen
-dev/usb/ugensa.c		optional ugensa
 dev/usb/uhci.c			optional uhci
 dev/usb/uhci_pci.c		optional uhci pci
 dev/usb/uhid.c			optional uhid
@@ -1303,31 +1302,21 @@
 dev/usb/umass.c			optional umass
 dev/usb/umct.c			optional umct
 dev/usb/umodem.c		optional umodem
-dev/usb/umoscom.c		optional umoscom
 dev/usb/ums.c			optional ums
 dev/usb/uplcom.c		optional uplcom
 dev/usb/urio.c			optional urio
 dev/usb/usb.c			optional usb
-dev/usb/usb_cdev.c		optional usb
-dev/usb/usb_hid.c		optional usb
+dev/usb/usb_ethersubr.c		optional usb
 dev/usb/usb_if.m		optional usb
+dev/usb/usb_mem.c		optional usb
 dev/usb/usb_quirks.c		optional usb
-dev/usb/usb_requests.c		optional usb
 dev/usb/usb_subr.c		optional usb
-dev/usb/usb_template.c		optional usb
-dev/usb/usb_template_cdce.c	optional usb
-dev/usb/usb_template_msc.c	optional usb
-dev/usb/usb_transfer.c		optional usb
-dev/usb/usb_compat_linux.c	optional usb
+dev/usb/usbdi.c			optional usb
+dev/usb/usbdi_util.c		optional usb
 dev/usb/uscanner.c		optional uscanner
 dev/usb/uslcom.c		optional uslcom
-dev/usb/uss820_dci.c		optional uss820_dci
-dev/usb/uss820_dci_pccard.c	optional uss820_dci pccard
-dev/usb/ustorage_fs.c		optional ustorage_fs
 dev/usb/uvisor.c		optional uvisor
 dev/usb/uvscom.c		optional uvscom
-# End of USB support
-#
 dev/utopia/idtphy.c		optional utopia
 dev/utopia/suni.c		optional utopia
 dev/utopia/utopia.c		optional utopia

==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#37 (text) ====

@@ -2,9 +2,6 @@
  * Copyright (c) 2006 - 2008 Søren Schmidt <sos at FreeBSD.org>
  * All rights reserved.
  *
- * Copyright (c) 2006 Hans Petter Selasky
- * All rights reserved.
- *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -32,1075 +29,946 @@
 
 #include "opt_ata.h"
 #include <sys/param.h>
+#include <sys/conf.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
+#include <sys/mutex.h>
+#include <sys/ata.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
 #include <sys/malloc.h>
-#include <sys/ata.h>
-#include <sys/bio.h>
+#include <sys/module.h>
 #include <sys/sema.h>
+#include <sys/taskqueue.h>
 #include <vm/uma.h>
-
+#include <machine/resource.h>
+#include <machine/bus.h>
+#include <sys/rman.h>
 #include <dev/usb/usb_port.h>
 #include <dev/usb/usb.h>
-#include <dev/usb/usb_subr.h>
-#include <dev/usb/usb_quirks.h>
-
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdi_util.h>
+#include <dev/usb/usbdivar.h>
 #include <dev/ata/ata-all.h>
 #include <ata_if.h>
 
-#define	ATAUSB_BULK_SIZE (1<<17)
-
 /* Command Block Wrapper */
 struct bbb_cbw {
-	uint8_t	signature[4];
-#define	CBWSIGNATURE		0x43425355
+    u_int8_t	signature[4];
+#define		CBWSIGNATURE		0x43425355
 
-	uint8_t	tag[4];
-	uint8_t	transfer_length[4];
-	uint8_t	flags;
-#define	CBWFLAGS_OUT  		0x00
-#define	CBWFLAGS_IN  		0x80
+    u_int8_t	tag[4];
+    u_int8_t	transfer_length[4];
+    u_int8_t	flags;
+#define		CBWFLAGS_OUT  		0x00
+#define		CBWFLAGS_IN  		0x80
 
-	uint8_t	lun;
-	uint8_t	length;
-#define	CBWCDBLENGTH     	16
+    u_int8_t	lun;
+    u_int8_t	length;
+#define		CBWCDBLENGTH     	16
 
-	uint8_t	cdb[CBWCDBLENGTH];
-} __packed;
+    u_int8_t	cdb[CBWCDBLENGTH];
+};
 
 /* Command Status Wrapper */
 struct bbb_csw {
-	uint8_t	signature[4];
-#define	CSWSIGNATURE     	0x53425355
+    u_int8_t	signature[4];
+#define		CSWSIGNATURE     	0x53425355
 
-	uint8_t	tag[4];
-	uint8_t	residue[4];
-	uint8_t	status;
-#define	CSWSTATUS_GOOD   	0x0
-#define	CSWSTATUS_FAILED 	0x1
-#define	CSWSTATUS_PHASE  	0x2
-} __packed;
+    u_int8_t	tag[4];
+    u_int8_t	residue[4];
+    u_int8_t    status;
+#define 	CSWSTATUS_GOOD   	0x0
+#define		CSWSTATUS_FAILED 	0x1
+#define		CSWSTATUS_PHASE  	0x2
+};
 
 /* USB-ATA 'controller' softc */
 struct atausb_softc {
-	struct bbb_cbw cbw;
-	struct bbb_csw csw;
-	struct mtx locked_mtx;
+    device_t		dev;		/* base device */
+    usbd_interface_handle iface;	/* interface */
+    int			ifaceno;	/* interface number */
+    u_int8_t		bulkin;		/* endpoint address's */
+    u_int8_t		bulkout;	
+    u_int8_t		bulkirq;	
+    usbd_pipe_handle	bulkin_pipe;	/* pipe handle's */
+    usbd_pipe_handle	bulkout_pipe;
+    usbd_pipe_handle	bulkirq_pipe;
+    int			maxlun;
+    int			timeout;
+    struct ata_request	*ata_request;
+    usb_device_request_t usb_request;
+    struct bbb_cbw	cbw;
+    struct bbb_csw	csw;
 
-	struct ata_channel *locked_ch;
-	struct ata_channel *restart_ch;
-	struct ata_request *ata_request;
+#define ATAUSB_T_BBB_CBW		0
+#define ATAUSB_T_BBB_DATA		1
+#define ATAUSB_T_BBB_DCLEAR		2
+#define ATAUSB_T_BBB_CSW1		3
+#define ATAUSB_T_BBB_CSW2		4
+#define ATAUSB_T_BBB_SCLEAR		5
+#define ATAUSB_T_BBB_RESET1		6
+#define ATAUSB_T_BBB_RESET2		7
+#define ATAUSB_T_BBB_RESET3		8
+#define ATAUSB_T_MAX			9
+    usbd_xfer_handle	transfer[ATAUSB_T_MAX];
 
-#define	ATAUSB_T_BBB_RESET1        0
-#define	ATAUSB_T_BBB_RESET2        1
-#define	ATAUSB_T_BBB_RESET3        2
-#define	ATAUSB_T_BBB_COMMAND       3
-#define	ATAUSB_T_BBB_DATA_READ     4
-#define	ATAUSB_T_BBB_DATA_RD_CS    5
-#define	ATAUSB_T_BBB_DATA_WRITE    6
-#define	ATAUSB_T_BBB_DATA_WR_CS    7
-#define	ATAUSB_T_BBB_STATUS        8
-#define	ATAUSB_T_BBB_MAX           9
+    int			state;
+#define	ATAUSB_S_ATTACH			0
+#define	ATAUSB_S_IDLE			1
+#define	ATAUSB_S_BBB_COMMAND		2
+#define	ATAUSB_S_BBB_DATA		3
+#define	ATAUSB_S_BBB_DCLEAR		4
+#define	ATAUSB_S_BBB_STATUS1		5
+#define	ATAUSB_S_BBB_SCLEAR		6
+#define	ATAUSB_S_BBB_STATUS2		7
+#define	ATAUSB_S_BBB_RESET1		8
+#define	ATAUSB_S_BBB_RESET2		9
+#define	ATAUSB_S_BBB_RESET3		10
+#define	ATAUSB_S_DETACH			11
 
-#define	ATAUSB_T_MAX ATAUSB_T_BBB_MAX
-
-	struct usbd_xfer *xfer[ATAUSB_T_MAX];
-	caddr_t	ata_data;
-	device_t dev;
-
-	uint32_t timeout;
-	uint32_t ata_donecount;
-	uint32_t ata_bytecount;
-
-	uint8_t	last_xfer_no;
-	uint8_t	usb_speed;
-	uint8_t	intr_stalled;
-	uint8_t	maxlun;
-	uint8_t	iface_no;
-	uint8_t	status_try;
+    struct mtx		locked_mtx;
+    struct ata_channel	*locked_ch;
+    struct ata_channel	*restart_ch;
 };
 
-static const int atausbdebug = 0;
+static int atausbdebug = 0;
 
-/* prototypes */
-
-static device_probe_t atausb_probe;
-static device_attach_t atausb_attach;
-static device_detach_t atausb_detach;
-
-static usbd_callback_t atausb_t_bbb_reset1_callback;
-static usbd_callback_t atausb_t_bbb_reset2_callback;
-static usbd_callback_t atausb_t_bbb_reset3_callback;
-static usbd_callback_t atausb_t_bbb_command_callback;
-static usbd_callback_t atausb_t_bbb_data_read_callback;
-static usbd_callback_t atausb_t_bbb_data_rd_cs_callback;
-static usbd_callback_t atausb_t_bbb_data_write_callback;
-static usbd_callback_t atausb_t_bbb_data_wr_cs_callback;
-static usbd_callback_t atausb_t_bbb_status_callback;
-static usbd_callback_t atausb_tr_error;
+/* prototypes*/
+static usbd_status atausb_start(struct atausb_softc *sc, usbd_pipe_handle pipe, void *buffer, int buflen, int flags, usbd_xfer_handle xfer);
+static usbd_status atausb_ctl_start(struct atausb_softc *sc, usbd_device_handle udev, usb_device_request_t *req, void *buffer, int buflen, int flags, usbd_xfer_handle xfer);
+static void atausb_clear_stall(struct atausb_softc *sc, u_int8_t endpt, usbd_pipe_handle pipe, int state, usbd_xfer_handle xfer);
+static void atausb_bbb_reset(struct atausb_softc *sc);
+static int atausb_bbb_start(struct ata_request *request);
+static void atausb_bbb_finish(usbd_xfer_handle xfer, usbd_private_handle priv, usbd_status err);
+int ata_usbchannel_begin_transaction(struct ata_request *request);
+int ata_usbchannel_end_transaction(struct ata_request *request);
 
-static void atausb_cancel_request(struct atausb_softc *sc);
-static void atausb_transfer_start(struct atausb_softc *sc, uint8_t xfer_no);
-static void atausb_t_bbb_data_clear_stall_callback(struct usbd_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer);
-static int ata_usbchannel_begin_transaction(struct ata_request *request);
-static int ata_usbchannel_end_transaction(struct ata_request *request);
 
-static device_probe_t ata_usbchannel_probe;
-static device_attach_t ata_usbchannel_attach;
-static device_detach_t ata_usbchannel_detach;
-
-static ata_setmode_t ata_usbchannel_setmode;
-static ata_locking_t ata_usbchannel_locking;
-
 /*
  * USB frontend part
  */
-
-struct usbd_config atausb_config[ATAUSB_T_BBB_MAX] = {
-
-	[ATAUSB_T_BBB_RESET1] = {
-		.type = UE_CONTROL,
-		.endpoint = 0x00,	/* Control pipe */
-		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(usb_device_request_t),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_reset1_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-		.mh.interval = 500,	/* 500 milliseconds */
-	},
-
-	[ATAUSB_T_BBB_RESET2] = {
-		.type = UE_CONTROL,
-		.endpoint = 0x00,	/* Control pipe */
-		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(usb_device_request_t),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_reset2_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-		.mh.interval = 50,	/* 50 milliseconds */
-	},
-
-	[ATAUSB_T_BBB_RESET3] = {
-		.type = UE_CONTROL,
-		.endpoint = 0x00,	/* Control pipe */
-		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(usb_device_request_t),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_reset3_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-		.mh.interval = 50,	/* 50 milliseconds */
-	},
-
-	[ATAUSB_T_BBB_COMMAND] = {
-		.type = UE_BULK,
-		.endpoint = UE_ADDR_ANY,
-		.direction = UE_DIR_OUT,
-		.mh.bufsize = sizeof(struct bbb_cbw),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_command_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-	},
-
-	[ATAUSB_T_BBB_DATA_READ] = {
-		.type = UE_BULK,
-		.endpoint = UE_ADDR_ANY,
-		.direction = UE_DIR_IN,
-		.mh.bufsize = ATAUSB_BULK_SIZE,
-		.mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,},
-		.mh.callback = &atausb_t_bbb_data_read_callback,
-		.mh.timeout = 0,	/* overwritten later */
-	},
-
-	[ATAUSB_T_BBB_DATA_RD_CS] = {
-		.type = UE_CONTROL,
-		.endpoint = 0x00,	/* Control pipe */
-		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(usb_device_request_t),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_data_rd_cs_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-	},
-
-	[ATAUSB_T_BBB_DATA_WRITE] = {
-		.type = UE_BULK,
-		.endpoint = UE_ADDR_ANY,
-		.direction = UE_DIR_OUT,
-		.mh.bufsize = ATAUSB_BULK_SIZE,
-		.mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,},
-		.mh.callback = &atausb_t_bbb_data_write_callback,
-		.mh.timeout = 0,	/* overwritten later */
-	},
-
-	[ATAUSB_T_BBB_DATA_WR_CS] = {
-		.type = UE_CONTROL,
-		.endpoint = 0x00,	/* Control pipe */
-		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(usb_device_request_t),
-		.mh.flags = {},
-		.mh.callback = &atausb_t_bbb_data_wr_cs_callback,
-		.mh.timeout = 5000,	/* 5 seconds */
-	},
-
-	[ATAUSB_T_BBB_STATUS] = {
-		.type = UE_BULK,
-		.endpoint = UE_ADDR_ANY,
-		.direction = UE_DIR_IN,
-		.mh.bufsize = sizeof(struct bbb_csw),
-		.mh.flags = {.short_xfer_ok = 1,},
-		.mh.callback = &atausb_t_bbb_status_callback,
-		.mh.timeout = 5000,	/* ms */
-	},
-};
-
-static devclass_t atausb_devclass;
-
-static device_method_t atausb_methods[] = {
-	DEVMETHOD(device_probe, atausb_probe),
-	DEVMETHOD(device_attach, atausb_attach),
-	DEVMETHOD(device_detach, atausb_detach),
-	{0, 0}
-};
-
-static driver_t atausb_driver = {
-	.name = "atausb",
-	.methods = atausb_methods,
-	.size = sizeof(struct atausb_softc),
-};
-
+USB_DECLARE_DRIVER(atausb);
 DRIVER_MODULE(atausb, uhub, atausb_driver, atausb_devclass, 0, 0);
-MODULE_DEPEND(atausb, usb, 1, 1, 1);
 MODULE_VERSION(atausb, 1);
 
 static int
-atausb_probe(device_t dev)
+atausb_match(device_t dev)
 {
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
-	usb_interface_descriptor_t *id;
+    struct usb_attach_arg *uaa = device_get_ivars(dev);
+    usb_interface_descriptor_t *id;
+
+    if (uaa->iface == NULL)
+	return UMATCH_NONE;
+
+    id = usbd_get_interface_descriptor(uaa->iface);
+    if (!id || id->bInterfaceClass != UICLASS_MASS)
+	return UMATCH_NONE;
 
-	if (uaa->usb_mode != USB_MODE_HOST) {
-		return (UMATCH_NONE);
-	}
-	if (uaa->iface == NULL) {
-		return (UMATCH_NONE);
-	}
-	id = usbd_get_interface_descriptor(uaa->iface);
-	if ((!id) || (id->bInterfaceClass != UICLASS_MASS)) {
-		return (UMATCH_NONE);
-	}
-	switch (id->bInterfaceSubClass) {
-	case UISUBCLASS_QIC157:
-	case UISUBCLASS_RBC:
-	case UISUBCLASS_SCSI:
-	case UISUBCLASS_SFF8020I:
-	case UISUBCLASS_SFF8070I:
-	case UISUBCLASS_UFI:
-		switch (id->bInterfaceProtocol) {
-		case UIPROTO_MASS_CBI:
-		case UIPROTO_MASS_CBI_I:
-		case UIPROTO_MASS_BBB:
-		case UIPROTO_MASS_BBB_OLD:
-			return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
-		default:
-			return (UMATCH_IFACECLASS_IFACESUBCLASS);
-		}
-		break;
+    switch (id->bInterfaceSubClass) {
+    case UISUBCLASS_QIC157:
+    case UISUBCLASS_RBC:
+    case UISUBCLASS_SCSI:
+    case UISUBCLASS_SFF8020I:
+    case UISUBCLASS_SFF8070I:
+    case UISUBCLASS_UFI:
+	switch (id->bInterfaceProtocol) {
+	case UIPROTO_MASS_CBI:
+	case UIPROTO_MASS_CBI_I:
+	case UIPROTO_MASS_BBB:
+	case UIPROTO_MASS_BBB_OLD:
+	    return UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO;
 	default:
-		return (UMATCH_IFACECLASS);
+	    return UMATCH_IFACECLASS_IFACESUBCLASS;
 	}
+	break;
+    default:
+	return UMATCH_IFACECLASS;
+    }
 }
 
 static int
 atausb_attach(device_t dev)
 {
-	struct atausb_softc *sc = device_get_softc(dev);
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
-	usb_interface_descriptor_t *id;
-	const char *proto, *subclass;
-	usb_device_request_t request;
-	uint16_t i;
-	uint8_t maxlun;
-	uint8_t has_intr;
-	int err;
+    struct atausb_softc *sc = device_get_softc(dev);
+    struct usb_attach_arg *uaa = device_get_ivars(dev);
+    usb_interface_descriptor_t *id;
+    usb_endpoint_descriptor_t *ed;
+    usbd_device_handle udev;
+    usb_device_request_t request;
+    char devinfo[1024], *proto, *subclass;
+    u_int8_t maxlun;
+    int err, i;
 
-	if (sc == NULL) {
-		return (ENOMEM);
-	}
-	usbd_set_device_desc(dev);
+    sc->dev = dev;
+    usbd_devinfo(uaa->device, 0, devinfo);
+    device_set_desc_copy(dev, devinfo);
+    sc->bulkin = sc->bulkout = sc->bulkirq = -1;
+    sc->bulkin_pipe = sc->bulkout_pipe= sc->bulkirq_pipe = NULL;
+    sc->iface = uaa->iface;

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list