coreboot-kgpe-d16/payloads/libpayload/drivers/usb
Yidi Lin d42ee150a0 libpayload: usb: Support MTK xHCI host controller
1. There is a mis-understanding to calculate the value of TD Size
   in Normal TRB. For MTK's xHCI controller it defines a number of
   packets that remain to be transferred for a TD after processing
   all Max packets in all previous TRBs, that means don't include the
   current TRB's.
2. To minimize the scheduling effort for synchronous endpoints in xHC,
   the MTK architecture defines some extra SW scheduling parameters for
   HW. According to these parameters provided by SW, the xHC can easily
   decide whether a synchronous endpoint should be scheduled in a specific
   uFrame. The extra SW scheduling parameters are put into reserved DWs
   in Slot and Endpoint Context. But in coreboot synchronous transfer can
   be ignored, so only two fields are set to a default value 1 to support
   bulk and interrupt transfers, and others are set to zero.
3. For control transfer, it is better to read back doorbell register or add
   a memory barrier after ringing the doorbell to flush posted write.
   Otherwise the first command will be aborted on MTK's xHCI controller.
4. Before send commands to a port, the Port Power in PORTSC register should
   be set to 1 on MTK's xHCI so a hook function of enable_port in
   generic_hub_ops_t struct is provided.

Change-Id: Ie8878b50c048907ebf939b3f6657535a54877fde
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 738609c11f16264c6e6429d478b2040cb391fe41
Original-Change-Id: Id9156892699e2e42a166c77fbf6690049abe953b
Original-Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/265362
Original-Reviewed-by: Julius Werner <jwerner@chromium.org>
Original-Commit-Queue: Yidi Lin <yidi.lin@mediatek.com>
Original-Tested-by: Yidi Lin <yidi.lin@mediatek.com>
Reviewed-on: http://review.coreboot.org/10389
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Tested-by: build bot (Jenkins)
2015-06-03 11:11:59 +02:00
..
TODO Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
dwc2.c Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
dwc2.h Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
dwc2_private.h Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
dwc2_rh.c Remove address from GPLv2 headers 2015-05-21 20:50:25 +02:00
ehci.c libpayload: Fix passing BAR to EHCI driver 2015-05-12 15:39:34 +02:00
ehci.h libpayload: Use unsigned long for BARs in *hci_init() 2014-07-10 20:55:41 +02:00
ehci_private.h libpayload: EHCI: Support root-hub TT feature 2015-03-23 17:57:40 +01:00
ehci_rh.c libpayload: EHCI: Support root-hub TT feature 2015-03-23 17:57:40 +01:00
generic_hub.c libpayload: usb: Remove generic roothub reset port function 2014-10-02 17:28:47 +02:00
generic_hub.h libpayload: usb: Remove generic roothub reset port function 2014-10-02 17:28:47 +02:00
ohci.c libpayload: avoid use-after-free in OHCI driver 2015-02-23 20:33:54 +01:00
ohci.h libpayload: Use unsigned long for BARs in *hci_init() 2014-07-10 20:55:41 +02:00
ohci_private.h libpayload: usb: Make OHCI work with ARM systems 2014-10-22 23:53:54 +02:00
ohci_rh.c libpayload: usb: Fix up usb_shutdown() code paths 2014-11-13 06:22:45 +01:00
quirks.c libpayload: usb: Refactor USB enumeration to fix SuperSpeed devices 2014-09-04 01:59:15 +02:00
uhci.c libpayload: usb: Remove automatic clear_stall() calls from transfers 2014-11-13 06:22:58 +01:00
uhci.h libpayload: Add USB support for non-PCI controllers 2013-11-25 23:31:52 +01:00
uhci_private.h libpayload: Remove bitfield use from UHCI data structures 2012-01-10 00:02:54 +01:00
uhci_rh.c libpayload: Improve sanity checking in UHCI driver 2015-02-23 21:59:25 +01:00
usb.c libpayload: usb: Max packet size of SuperSpeed control EPs should be 512. 2015-06-03 10:59:41 +02:00
usb_dev.c Fix the USB code to find the headers after they were moved. 2008-09-11 17:29:00 +00:00
usbhid.c libpayload: usbhid: Fix typo on descriptor parsing 2014-09-10 19:36:50 +02:00
usbhub.c libpayload: usb: Refactor USB enumeration to fix SuperSpeed devices 2014-09-04 01:59:15 +02:00
usbinit.c libpayload: Add dwc2 usb driver 2015-04-14 10:42:54 +02:00
usbmsc.c libpayload: avoid memory overflows 2015-01-03 23:58:23 +01:00
xhci.c libpayload: usb: Support MTK xHCI host controller 2015-06-03 11:11:59 +02:00
xhci.h libpayload: Use unsigned long for BARs in *hci_init() 2014-07-10 20:55:41 +02:00
xhci_commands.c libpayload: usb: Support MTK xHCI host controller 2015-06-03 11:11:59 +02:00
xhci_debug.c libpayload: usb: fix compilation error in debug fuction 2015-04-22 08:44:37 +02:00
xhci_devconf.c libpayload: usb: Support MTK xHCI host controller 2015-06-03 11:11:59 +02:00
xhci_events.c libpayload: xhci: Make XHCI stack usable on ARM 2014-08-14 23:41:21 +02:00
xhci_private.h libpayload: usb: Support MTK xHCI host controller 2015-06-03 11:11:59 +02:00
xhci_rh.c libpayload: usb: Support MTK xHCI host controller 2015-06-03 11:11:59 +02:00