Date: Thu, 3 Jul 2008 23:00:54 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 144578 for review Message-ID: <200807032300.m63N0sFN041397@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=144578 Change 144578 by hselasky@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@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807032300.m63N0sFN041397>