kernel - u4b - Implement doorbell
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 10 Jan 2014 20:03:43 +0000 (12:03 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 10 Jan 2014 20:03:43 +0000 (12:03 -0800)
commite15d1b6823a13e8ae6c9a6f99c447c695146ac95
tree0d50c9aadb40da6c1b450d61a97748465da20b48
parentb557f5a0e58240185bb4554545fb18469b52a3cb
kernel - u4b - Implement doorbell

* Implement the doorbell properly.

* Use the doorbell to clear the previous transfer when reusing a transfer.
  This is a horribly inefficient hack but it's better than blowing up the
  controller

  (This is in addition to the xfer freeing fifo hack)

* We also seem to need to ring the doorbell when queueing transfers.  This
  should not be necessary.

* Enable ASP.  This allows qTD bursts, making high speed busses more
  efficient.

* NOTE:  There are still problems with umass.  With some USB sticks,
   writing to the stick causes the cpu to stall for very long
 periods of time.  It is shown as 'interrupt' overhead but insofar
 as I can tell it's actually the controller stalling the memory
 bus for reasons unknown.

 This does not happen with e.g. a SATA SSD connected through a USB
 adapter.
sys/bus/u4b/controller/ehci.c
sys/bus/u4b/controller/ehci.h
sys/bus/u4b/usb_core.h
sys/bus/u4b/usb_transfer.c