revision 1.58
date: 2001/11/20 23:53:26; author: augustss; state: Exp; lines: +61 -33
Create a special kernel thread to run the usb short lived tasks (instead
of using the device discovery threads).
revision 1.65
date: 2002/01/03 22:20:45; author: augustss; state: Exp; lines: +9 -2
Add a DIAGNOSTIC check. From FreeBSD.
(Just wrap these changes, that we already had, with a #ifdef DIAGNOSTIC).
revision 1.62
date: 2002/01/02 20:55:58; author: augustss; state: Exp; lines: +11 -10
Some more usb_proc_ptr changes.
Also some minor stylistic changes.
revision 1.63
date: 2002/01/02 20:58:12; author: augustss; state: Exp; lines: +4 -4
Fix typo in last commit.
revision 1.64
date: 2002/01/02 22:44:44; author: augustss; state: Exp; lines: +7 -4
Add a comment.
The usb_proc_ptr changes were introduced in 1.62 and backed out in 1.64.
revision 1.61
date: 2001/12/31 15:55:51; author: augustss; state: Exp; lines: +3 -5
Delay bus enumeration a little in case the controller is a companion
controller. This way the main controller can gain ownership of the port
before enumeration starts.
date: 2001/11/20 23:53:26; author: augustss; state: Exp; lines: +61 -33
Create a special kernel thread to run the usb short lived tasks (instead
of using the device discovery threads).
The change to usb_port.h is a little hack whilst I address an issue
with NetBSD.
usbdi.c (1.86), usbdivar.h (1.66)
[Some partial, because most of this was merged in a while ago]
date: 2001/11/20 13:48:03; author: augustss;
Keep track of device speed for USB 2.0.
date: 2001/01/21 19:00:06; author: augustss;
Change the operation of the USB event thread. Before it only
performed USB device discovery, now it can also perform (short)
tasks for device drivers that need a process context, but don't
have one. This is not pretty, but better than using busy-wait
in an interrupt context.
(1.39), usbdi.c (1.79), usbdi.h (1.47), usbdivar.h (1.62)
date: 2001/01/21 02:39:52; author: augustss;
Add code to use soft interrupt to handle USB interrupt processing.
Don't enable the code since it doesn't work with the kludgy Ethernet
drivers.
usb.c 1.40:
revision 1.40
date: 2000/03/14 23:13:12; author: augustss; state: Exp; lines: +4 -1
Make sure the USB event thread discovers all devices first time
it call usb_discover(). It should now be possible to have the
root NFS mounted over a USB Ethernet Adapter.
uhub.c: revision 1.37
usb.4: revision 1.30
usb.c: revision 1.38
usb.h: revision 1.40
usb_port.h: revision 1.21
usb_subr.c: revision 1.65
usbdi.h: revision 1.40
Split the attach/detach events up into device, driver and controller
attach and detach events.
The commit message from NetBSD was:
date: 2000/02/02 07:34:00; author: augustss; state: Exp;
Change the USB event mechanism to include more information
about devices and drivers. Partly from FreeBSD.
Also rework usbd to take these new event types into account.
usb.c: revision 1.39
revision 1.39
date: 2000/02/22 11:30:56; author: augustss; lines: +7 -1
Prepare a little for having USB interrupt processing done
outside the hard interrupt level (in a thread or a softintr).
No real soft processing done yet.
usb.c: revision 1.41
revision 1.41
date: 2000/03/16 00:46:38; author: augustss; lines: +2 -2
Make the USB event queue longer. Mine overflows before the
(user-land) event handler has started. But then I have
about 25 devices connected. :)
usb.c: -r1.35 - 1.37
usb_port.h: tiny bit of -r1.26 + an extra bit in the FreeBSD config section.
revision 1.37
date: 2000/01/24 18:35:51; author: thorpej; state: Exp; lines: +7 -1
Use config_pending.
----------------------------
revision 1.36
date: 1999/12/22 23:54:09; author: augustss; state: Exp; lines: +2 -2
Use the flags `locator' to govern if devices are detected early or
late during cold boot.
----------------------------
revision 1.35
date: 1999/12/20 02:12:23; author: augustss; state: Exp; lines: +8 -5
Make sure tsleep() is not called during cold boot.
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
that device add/remove will work without usbd running. usbd is still
used for execing stuff, but that is all now. Ideally it could be replaced
by a devd some day. Until now, usbd had to be running so that the
USB_DISCOVER ioctl could be called to walk the tree when an attachment
status change was noticed.
Among the changes:
- when a detach happens, remove any pending 'attach' messages or the system
suffers from whiplash from exec moused / kill moused loops if you do lots
of attach/detach and later start usbd.
- tweaks related to kthread differences
- disable the select handler for the old interface (never return success).
I have not removed it yet or old usbd's will abort. That can get removed
later once usbd is cleaned up and things have stabilized for a few weeks.
- get Giant in the kthread.
- a couple of minor potential bug fixes (usb_nevents vs malloc failure etc)
Pre-approved by: n_hibma (ages and ages ago)
other "system" header files.
Also help the deprecation of lockmgr.h by making it a sub-include of
sys/lock.h and removing sys/lockmgr.h form kernel .c files.
Sort sys/*.h includes where possible in affected files.
OK'ed by: bde (with reservations)
modules to depend on modules in the same file (uhub depends on usb) or
even on themselves (usb on usb, makes the define in usb_port.h a lot
less convoluted).
Use ANSI prototypes.
ums driver (mouse) and get the usb driver at the same time.
This also shows that
MODULE_VERSION(usb, 1);
MODULE_DEPEND(usb, usb, 1, 1, 1);
in the same module in one source file works.
methods for USB devices.
However: with none of the devices I have here suspend seems to work
properly. This is probably a bug in uhci_power which I still have to
look at.
Prodded and pushed by: Christopher Masto <chris@netmonger.net>