Commit Graph

76 Commits

Author SHA1 Message Date
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
kiyohara
2db72b9118 * splsoftusb, IPL_SOFTUSB, and IPL_HARDUSB defines in usbdi.h
-> the current names are confusing (didn't change other drivers)
* fix invalid memory access in usbd_transfer (kern/24636)
-> needed for this driver
* fix USB HC detach race condition (kern/32011)
-> main patch needed for this driver, sc_dying changes in other drivers
not necessary but seem right to me

Patch from Matthew Orgass.
  http://mail-index.netbsd.org/tech-kern/2007/06/26/0001.html
2007-08-15 04:00:33 +00:00
drochner
c3d5f3709f add multiple inclusion protection, from KIYOHARA Takashi per PR kern/35997;
being here, unifdef for __NetBSD__ and __HAVE_GENERIC_SOFT_INTERRUPTS
2007-03-13 15:00:07 +00:00
drochner
8258b792b7 Introduce different autoconf interface attributes for USB drivers
matching (and handling) a whole device and those which match an
interface only. This will allow to enforce some rules, eg that
the former don't use interface information for matching or that the
latter don't modify global device state.
The previous way left too much freedom do the drivers which led to
inconsistencies and abuse.
For now, I've not changed locators and submatch rules, this will
happen later.
There should not be any change in behaviour, except in the case of
some drivers which did behave inconsistently:
if_atu, if_axe, uep: matched the configured device in the interface
 stage, but did configuration again. I've converted them to match
 in the device stage.
ustir, utoppy: matched in the interface stage, but only against
 vendor/device information, and used any configuration/interface
 without checking. Changed to match in device stage, and added
 some simple code to configure and use the first interface.
If you have one of those devices, please test!
2007-03-13 13:51:53 +00:00
christos
682562feb0 fix compilation issues. 2006-12-05 17:35:35 +00:00
pavel
9b8e4189e5 Restore compatibility of USB_DEVICEINFO ioctl and reads from /dev/usb with
NetBSD 3.x. Patch from Stephan Thesing provided in
http://mail-index.netbsd.org/current-users/2006/03/21/0002.html, with some
modifications by me.
See also
http://mail-index.netbsd.org/current-users/2006/08/29/0017.html

The code is conditionally compiled depending on COMPAT_30.

Also fix a leak of struct usb_event in usbread() introduced while converting
on-stack variables to dynamic allocation.

Reviewed by martin@.
2006-12-03 22:34:58 +00:00
joerg
8934eeb830 Split the USB task queue into two parts, one for normal device tasks and
one for tasks of the host controllers. This is needed for drivers like
ural(4) that want to do synchronous USB transfers from the task handler.
Before the split timeouts could not be handled correctly as the task
thread was still blocked. From FreeBSD.
2006-10-31 20:43:31 +00:00
augustss
5d74925cbe Add a new match level, UMATCH_HIGHEST. 2005-11-28 13:14:48 +00:00
augustss
cf1de1bda0 Normally a ugen device only attaches if no other driver wants the device.
Add the ability to force ugen to attach with very high priority if "flags 1"
is specified.  This can be used with the vendor and product locators to
force ugen to be used for certain devices.
Similarly, uhid only attaches if no other HID driver (ums or ukbd) wants it.
Again, "flags 1" will force uhid to attach anyway.
2005-11-23 08:54:47 +00:00
christos
a9cf21849d - const poisoning
- eliminate variable shadowing
2005-05-30 04:21:39 +00:00
soren
5350b653c5 Sync 1284 id printing with the devinfo change, but leave it disabled for now. 2005-05-23 16:35:26 +00:00
augustss
834327c847 Don't keep the devinfo string on the stack, instead use malloc/free.
This should cure some rare stack overflows.
2005-05-11 10:02:28 +00:00
augustss
67f0f483bd Make an iterator abstraction for looping through all descriptors.
Move usb_get_string() and make it public.
2004-10-23 13:26:33 +00:00
itojun
300aa0dcd5 use bounded string ops (snprintf, strl*) 2004-04-23 17:25:25 +00:00
augustss
86650920c9 Get rid of trailing white space. 2002-07-11 21:14:24 +00:00
augustss
490beda381 Remove an accidental change from last commit. 2002-02-11 15:20:23 +00:00
augustss
319f13f6ef Give usbd_do_request_flags() an extra argument for the timeout. 2002-02-11 15:11:49 +00:00
augustss
bfc3660fb1 Add some more DIAGNOSTIC tests.
Make usb_match_device() match on USB_PRODUCT_ANY.
2001-12-24 21:36:15 +00:00
augustss
29c3fe261b Add some comments. 2001-12-12 15:38:27 +00:00
augustss
22735e5d44 Move usbd_clear_endpoint_toggle() prototype to usbdi.h. 2001-12-12 15:23:58 +00:00
augustss
02aa2a59bc Handle vendor/product lookup with a common routine. 2001-12-03 01:47:12 +00:00
augustss
23d4159897 Add a subroutine to search for a vendor/product pair. 2001-12-02 23:25:25 +00:00
augustss
b684cbc2a7 usbd_interface2device_handle() cannot fail. 2001-11-15 15:15:58 +00:00
augustss
dfe96bae01 Add a little infrastructure so that individual drivers can easily check
if thee was a vendor+product locator match.
2001-08-15 00:04:59 +00:00
lukem
796f5b43a7 delint 2001-05-01 16:40:03 +00:00
augustss
38c02444d9 Finally get rid of the UGLY and EVIL hack for avoiding tsleep(). 2001-04-13 11:19:58 +00:00
thorpej
f305e19aeb Only if __HAVE_GENERIC_SOFT_INTERRUPTS is then splusb == splsoftnet
(because we register the interrupt with IPL_SOFTNET).  However, if
we're using a callout, then splusb == splsoftclock (because the
callouts happen from the softclock interrupt).

Note that splsoftnet blocks softclock interrupts, but this is
meant to better describe what's going on.
2001-04-12 01:18:24 +00:00
augustss
5e8cefc2ea Ad function to remove a usb task. 2001-01-23 17:04:30 +00:00
augustss
df20cb2972 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.
2001-01-21 19:00:06 +00:00
augustss
e8db629494 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.
2001-01-21 02:39:52 +00:00
jdolecek
34c8ae80da constify 2001-01-18 20:28:15 +00:00
augustss
34bb7b9a35 Don't try to access a device that is being disconnected when generating
the detach event.  Fixes (I hope) PR 11713 from itohy@netbsd.org (ITOH Yasufumi).
2000-12-13 04:05:14 +00:00
augustss
d9c7baa183 Add a way to do control transfers on other pipes than the default pipe. 2000-09-23 21:02:04 +00:00
augustss
ed9486e158 Bring the coding style into the 80s, i.e., get rid of __P and use
ANSI prototypes and declarations.
2000-06-01 14:28:57 +00:00
augustss
30c20f930f Change my email address. 2000-04-27 15:26:44 +00:00
augustss
d6c4ac7ff2 Use ratecheck() to limit error messages on disconnect.
Break out some common functionality.
2000-03-02 12:37:50 +00:00
augustss
481e8339dc Change the USB event mechanism to include more information about devices
and drivers.  Partly from FreeBSD.
2000-02-02 07:33:59 +00:00
augustss
c3716a6bb9 Add an argument to usbd_open_pipe_intr() to specify the polling interval
for an interrupt pipe in case we don't what what the descriptor suggests.
2000-01-19 00:23:58 +00:00
augustss
cc381bcb7c Add usbd_reload_device_desc() to get the device descriptor again from a device.
Useful if e.g. downloading firmware updates the revision number.
2000-01-16 23:11:43 +00:00
augustss
537c04e5ee Add a flag, USBD_FORCE_SHORT_XFER, to transfers. Using this flag will
force the last packet of a transfer to be smaller than the maximum
packet size.  The only time this matters is if the transfer size is
a multiple of the maximum packet size, in which case a 0 length packet
is sent last.
Some weird devices require this behaviour to determine the end of
a transfer.
2000-01-16 13:12:05 +00:00
augustss
9b9e6e6d2c GC an unused typedef. 2000-01-16 11:19:05 +00:00
augustss
c664f35fc5 Let usbd_set_polling() work on a usbd_device_handle instead of
a usbd_interface_handle.
2000-01-16 09:37:18 +00:00
augustss
3386c68b46 Cosmetic changes and some small improvements. From FreeBSD and Nick Hibma. 1999-11-18 23:32:25 +00:00
augustss
cdaec29859 A few more purely stylistic changes that I missed in the last round. 1999-11-17 23:00:49 +00:00
augustss
0d2fabdf26 A number of stylistic changes to increase readability (many suggested
by Nick Hibma):
	use NULL not 0
	declare all local definitions static
	rename s/usbd_request/usbd_xfer/ s/reqh/xfer/
	rename s/r/err/
	use implicit test for no err
	KNF
1999-11-12 00:34:57 +00:00
augustss
03a522d3c1 Merge in a large batch of changes from Nick Hibma <hibma@skylink.it> so
the USB stack compiles on FreeBSD again.
1999-10-13 08:10:55 +00:00
augustss
df435c83b2 Add an event mechanism so that a userland process can watch devices come
and go.
1999-10-12 11:54:56 +00:00
augustss
b1a719a6cc Add a flag in the request to determine if the data copying is done by the
driver or the usbdi layer.
1999-09-12 08:23:42 +00:00
augustss
98b6524413 * Move DMA buffer allocation to HC independent code.
* Remove (almost) unused definitions USBD_XFER_OUT and USBD_XFER_IN.
1999-09-11 08:19:26 +00:00
augustss
2aadcb5f47 Change the internal API to allow DMA buffers to be pre-allocated by
the device driver instead of happening automagically in the HC driver.
This affects both the HC-USBD interface as well as the USBD-device
interface.
This change will allow DMA buffers to be reused e.g. in isochronous
traffic.

Add isochronous support to the UHCI driver (not for OHCI yet).
1999-09-09 12:26:43 +00:00