Up to [DragonFly] / src / sys / bus / usb
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Remove some useless variables and assignments from USB code. Found-by: LLVM/Clang Static Analyzer
Fix two cases where device_printf() was used with an empty format.
kprintf to device_printf conversion.
Another round of typo fixes (mostly in messages).
Make sure we really do only the software part if we're dying. Fixes panic while detaching ohci device.
Nuke usb_ callout macros.
Nuke SIMPLEQ_* and logprintf.
Nuke device_ptr_t, USBBASEDEVICE, USBDEVNAME(), USBDEVUNIT(), USBGETSOFTC(), USBDEVPTRNAME() and Static with help from sed(1).
Nuke the code specific to NetBSD/OpenBSD/FreeBSD at first. I doubt anyone will update these pieces and I don't intend to review macros for all platforms. There is the chance though that I might kill something which should stay in the code in form "TODO: port it to DF". So, please review and kick me.
Rename printf -> kprintf in sys/ and add some defines where necessary (files which are used in userland, too).
Rename sprintf -> ksprintf Rename snprintf -> knsprintf Make allowances for source files that are compiled for both userland and the kernel.
Sync USB support (host controller part) with FreeBSD6. Following changes on FreeBSD-CURRENT(by email@example.com) are merged: ehci.c rev 1.52 ohci.c rev 1.167 uhci.c rev 1.172 usb.c rev 1.111 usbdi.h rev 1.61 "Use a different task queue for host controller and peripheral driver tasks. Since the host controllers rely on tasks to process transfer timeouts, if a synchronous transfer from a driver was invoked from a task and timed out, it would never complete because the single task thread was stuck performing the synchronous transfer so couldn't process the timeout." As of this commit, only following kernel APIs are changed: - usbd_get_string_desc() takes one more argument which returns the actual size of the string description. - usb_add_task() takes one more argument. The extra arguemnt is used to specify to which task queue the task should be added. There is two task queues defined, one for peripheral driver (USB_TASKQ_DRIVER), one for host controller (USB_TASKQ_HC). ugen(4) is adapted according to the above kernel API changes. Thank all of the folks for their work on the USB support. Tested-by: swildner@, vbd@, joerg@(1.6 backport), Max Herrgard <firstname.lastname@example.org> # Though VT6202 is supported by ehci(4), I still have problems with this # chip, even with the updated ehci(4).
Do a major clean-up of the BUSDMA architecture. A large number of essentially machine-independant drivers use the structures and definitions in machine-dependant directories that are really machine-independant in nature. Split <machine/bus_dma.h> into machine-depdendant and machine-independant parts and make the primary access run through <sys/bus_dma.h>. Remove <machine/bus.h>, <machine/bus_memio.h> and <machine/bus_pio.h>. The optimizations related to bus_memio.h and bus_pio.h made a huge mess, introduced machine-specific knowledge into essentially machine-independant drivers, and required specific #include file orderings to do their job. They may be reintroduced in some other form later on. Move <machine/resource.h> to <sys/bus_resource.h>. The contents of the file is machine-independant or can be made a superset across many platforms. Make <sys/bus.h> include <sys/bus_dma.h> and <sys/bus_resource.h> and include <sys/bus.h> where necessary. Remove all #include's of <machine/resource.h> and <machine/bus.h>. That is, make the BUSDMA infrastructure integral to I/O-mapped and memory-mapped accesses to devices and remove a large chunk of machine-specific dependancies from drivers. bus_if.h and device_if.h are now required to be present when using <sys/bus.h>.
Rename malloc->kmalloc, free->kfree, and realloc->krealloc. Pass 1
Add a missing ohci_waitintr() call that allows polled operation of bulk transfers to have a chance of working. Kernel crash dumps to umass() work with this change. Submitted-by: Gary <email@example.com> Taken-from: FreeBSD PR:usb/93720
Bring in some fixes from NetBSD: - Avoid NULL pointer dereference (ehci.c) - Abort quickly if we don't have a buffer in all the cases. (uhci.c) - Only do the software reset if we are dying, like we do in ohci and ehci (uhci.c) Submitted-by: Gary <firstname.lastname@example.org> Taken-from: NetBSD
Fix numerous extremely serious bugs in OHCI's iso-synchronous code. I'm not even sure if the fixes are entirely correct because the code is badly written and totally undocumented. But they seem to help. * Fix up list linkages prior to calling ohci_free_sitd(), since ohci_free_sitd() destroys the nextitd field. This was causing a huge amount of corruption of the SITD free list *AND* the xfer SITD list, particularly prevaliant when multi-record transfers are executed (e.g. uaudio). * Properly (I hope) adjust the pipe tail pointer in numerous situations. There are a number of unconditional references and assumptions as to the validity of pipe->tail.itd and it must be maintained at all times. In particular, an aborted or timed-out transfer would corrupt it. Reported-by: Michal Belczyk <email@example.com>
Another terrible hack to leave interrupts disabled until the USB bus has completed initialization.
Remove spl*() calls from the bus/ infrastructure, replacing them with critical sections. Remove splusb() from everywhere, replacing it with critical sections.
Bring in a bunch of updates from NetBSD: revision 1.144 Fix swapped lines in cleanup in ohci_init(). From OpenBSD. revision 1.145 Try harder to avoid 0 ports woth AMD756. From OpenBSD. revision 1.146 Use the correct wValue to get hub desriptors. Also, make wValue checks of root hub codes less strict. revision 1.147 Failure to properly mask off UE_DIR_IN from the endpoint address was causing OHCI_ED_FORMAT_ISO and EHCI_QH_HRECL to get set spuriously, causing rather interesting lossage. Suddenly I get MUCH better performance with ehci... revision 1.148 Adjust a couple of comments to make it clear WTF is going on. revision 1.149 Make one message dependent on ohcidebug, so it doesn't interfere with polled operation; e.g. when entering a root device or in DDB. revision 1.150 Fix an error in a printf() format. Swap the order that two items are written; possibly fixes a race condition that would affect isoc transfers.
Use M_INTWAIT and M_WAITOK instead of M_NOWAIT within the USB bus infrastructure. For the system to operate as expected, allocations done in this layer have to be reliable.
Add defined(__FreeBSD__) and defined(__DragonFly__) where appropriate
Get rid of PZERO. This was removed about the first of August. It probably compiled due to the preprocessor defining code out.
Bring in the entire FreeBSD-5 USB infrastructure. As of this commit my USB camera, Hard Drive, Mouse, and Sony memory key all work and I can even unplug and replug them in without crashing the port. Not all drivers and subsystems compile as of this commit, but the ones that do not are very close.
kernel tree reorganization stage 1: Major cvs repository work (not logged as commits) plus a major reworking of the #include's to accomodate the relocations. * CVS repository files manually moved. Old directories left intact and empty (temporary). * Reorganize all filesystems into vfs/, most devices into dev/, sub-divide devices by function. * Begin to move device-specific architecture files to the device subdirs rather then throwing them all into, e.g. i386/include * Reorganize files related to system busses, placing the related code in a new bus/ directory. Also move cam to bus/cam though this may not have been the best idea in retrospect. * Reorganize emulation code and place it in a new emulation/ directory. * Remove the -I- compiler option in order to allow #include file localization, rename all config generated X.h files to use_X.h to clean up the conflicts. * Remove /usr/src/include (or /usr/include) dependancies during the kernel build, beyond what is normally needed to compile helper programs. * Make config create 'machine' softlinks for architecture specific directories outside of the standard <arch>/include. * Bump the config rev. WARNING! after this commit /usr/include and /usr/src/sys/compile/* should be regenerated from scratch.
threaded interrupts 1: Rewrite the ICU interrupt code, splz, and doreti code. The APIC code hasn't been done yet. Consolidate many interrupt thread related functions into MI code, especially software interrupts. All normal interrupts and software interrupts are now threaded, and I'm almost ready to deal with interrupt-thread-only preemption. At the moment I run interrupt threads in a critical section and probably will continue to do so until I can make them MP safe.
Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most ids have been removed from !lint sections and moved into comment sections.
import from FreeBSD RELENG_4 220.127.116.11