| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
| |
to avoid confilicting with split isochronous transfer which use same TT.
ok mpi@
|
|
|
|
|
|
|
|
|
| |
(interrupt) transfer.
When RL is not zero, interrupt transfer cannot work correctly.
It causes USB2.0 hub cannot detect device attach/detach.
ok by mpi@
|
|
|
|
| |
USB is the last real user of IPL_SOFTNET.
|
|
|
|
|
| |
Errors will result in nice clean panic messages so we know what's wrong.
Reviewed by dhill visa natano jsg.
|
|
|
|
| |
them, but for release let's be conservative and use 0.
|
|
|
|
|
|
|
|
|
|
|
| |
*_root_ctrl_start() routines are synchronous and all end up calling
usb_transfer_complete() in the non-error case. After calling this
function it is unsafe to dereference ``xfer'' since the transfer
callback has been called. So returning USBD_IN_PROGRESS is wrong in
this case since transfers are always completed at this point.
So return USBD_NORMAL_COMPLETION or the corresponding error code if
something wrong happen.
|
|
|
|
|
|
|
|
|
| |
This code contains a use-after-free which be addressed in an upcoming
diff.
This fix xhci(4) polling mode.
ok kettenis@
|
|
|
|
|
|
| |
all HCs.
ok patrick@
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
controller. This register controls whether the controller is in device or
host mode on many dual role controllers and gets reset during a reset of
the controller, placing the controller in (non-functional) idle mode. By
saving and restoring it, we keep the controller in host mode. Since this is
a non-standard register, add a new EHCIF_USBMODE flag and only do the save and
restore if it has been set.
Makes the upper "OTG" port of the Cubox-i work.
ok mpi@, jsg@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the ioff argument to pool_init() is unused and has been for many
years, so this replaces it with an ipl argument. because the ipl
will be set on init we no longer need pool_setipl.
most of these changes have been done with coccinelle using the spatch
below. cocci sucks at formatting code though, so i fixed that by hand.
the manpage and subr_pool.c bits i did myself.
ok tedu@ jmatthew@
@ipl@
expression pp;
expression ipl;
expression s, a, o, f, m, p;
@@
-pool_init(pp, s, a, o, f, m, p);
-pool_setipl(pp, ipl);
+pool_init(pp, s, a, ipl, f, m, p);
|
|
|
|
| |
ok millert@ stsp@
|
|
|
|
|
|
| |
This should hopefully help people reporting errors with SB700.
From FreeBSD, ok kettenis@, krw@
|
|
|
|
|
|
|
|
|
|
|
| |
Do not set the "Port Number", "Hub Address" and "Split Completion Mask"
fields in Isochronous Queue Heads for high-speed devices.
These fields should be ignored by the host controller unless the EPS
field indicates a full- or low-speed device, but that's not the case
with Nvidia controllers.
From NetBSD via miod@
|
| |
|
|
|
|
|
|
| |
to mark ehci_intr() as IPL_MPSAFE.
Earlier version tested by ratchov@, ok visa@
|
|
|
|
|
|
| |
this break some devices.
As found the hardway by Hugo Sastre via sobrado@
|
|
|
|
|
|
|
|
| |
when an isochronous transfer is done.
Frame lengths are just input values and no driver mess with them.
ok ratchov@, jmatthew@
|
|
|
|
| |
found by and fix confirmed by jsg@.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
scheduling.
More work is required to properly budget and schedule micro-frames, most
of it at the HUB level. But this let people use USB1.1 uaudio(4) devices
on ehci(4)-only systems.
Thanks to all the testers!
ok ratchov@, sthen@, naddy@
|
|
|
|
|
|
|
|
|
|
| |
ehci(4) is using a TAILQ_* to keep track of the pending transfers. In
this context "pending" means submitted to the hardware. Now that we
are no longer fiddling with the internal of the TAILQ_* there's no good
reason to keep these macro, but more importantly this will let us reuse
the 'inext' field to get rid of the other hand-rolled lists of xfers.
No functional change.
|
|
|
|
| |
what's done with other transfer types. No functional change.
|
| |
|
|
|
|
| |
xhci(4) does.
|
|
|
|
|
|
| |
Over the years I understood that debugging USB HCD problems without
hardware access do not work and even in this case it's easier to write
a specific debug/prinf diff.
|
|
|
|
|
|
|
|
| |
As soon as a transfer is being cancelled, remove it from the list of pending
xfers. This way the soft interrupt routine won't try to process it before
ehci_abort() gives it back to the stack.
Problem analysed by and previous diff ok stsp@
|
|
|
|
|
|
| |
reported by Remi Locherer on bugs@.
ok deraadt@
|
|
|
|
|
|
|
|
| |
As soon as a transfer is being cancelled, remove it from the list of pending
xfers. This way the soft interrupt routine won't try to process it before
ehci_abort() gives it back to the stack.
Problem analysed by and ok stsp@
|
| |
|
|
|
|
| |
ok dlg@ mpi@ bcook@ millert@ miod@
|
|
|
|
|
|
| |
hardware.
ok mpi@, deraadt@
|
|
|
|
| |
ok deraadt@ tedu@
|
|
|
|
| |
to include that than rdnvar.h. ok deraadt dlg
|
|
|
|
|
|
| |
this hack in the drivers that need it.
Tested by many, thanks! ok pirofti@, kettenis@
|
|
|
|
| |
reported by Bryan Linton on bugs@.
|
|
|
|
|
|
|
|
| |
list. Use a queue head per xfer and no longer per pipe. Since queue
heads are now setup when a transfer is submited we do not need to open
the control pipe more than once. This also simplify transfer abortion.
Tested by many, thanks!
|
|
|
|
| |
with the correct ipl to prevent your CPU from locking against itself.
|
|
|
|
| |
in every HC driver.
|
|
|
|
|
|
|
|
|
|
|
| |
opened with a callback.
If a driver opens an interrupt pipe without callback function, like
umct(4) does with one of its bulk in endpoints being reported as an
interrupt endpoint, then we can end up aborting a transfer which is
different from the interrupt one.
Issue reported by Roberto E. Vargas Caballero, ok deraadt@
|
|
|
|
|
|
|
|
|
| |
It seems mpi introduced a problem into ehci.c rev 1.162
two weeks ago. An error check that used to return NULL
now jumps to the end of the function, but sqtd isn't
initialised at that point.
ok miod@ deraadt@
|
|
|
|
|
|
|
|
|
|
|
| |
so that we do not end up allocating two times new descriptors.
This happens if a thread finds an empty list, start allocating, got
interrupted and the interrupt also finds an empty list.
Fix an issue reported by Nils Frohberg.
ok yuo@, pirofti@
|
|
|
|
| |
real impact since this descriptor is not used in the kernel. From NetBSD.
|
|
|
|
|
|
|
|
| |
explore thread will not disconnect the root hub. The flag will be
set before detaching the children, like it is done during a suspend-
resume cycle.
Fix a panic when unplugging a cardbus *hci(4).
|
|
|
|
|
|
|
|
|
| |
explicitly set it when required.
Right now xhci(4) does not need such function because it assigns
addresses when the first pipe of a device is opened.
ok yuo@, pirofti@
|
|
|
|
|
|
| |
since this function is optional get rid of the no-op ones.
ok ratchov@
|
|
|
|
|
|
|
| |
Apart from improving readability, this will help us reduce the number of
no-op functions now that some of them are optional.
ok ratchov@
|
| |
|
|
|
|
|
| |
usbd_xfer pointer to the routines processing finished transfers to make
it crystal clear that the timeout and abort logic is the same everywhere.
|