I have observed two separate EHCI host bridges that do not tolerate using C bit-fields to directly manipulate the portsc_t register. The reason for this is that the EHCI spec says that port_enable must go to 0 at the time that port_reset goes to 1. Naturally this cannot be done using direct bit-field manipulation. Instead, we use a temporary variable, change the bit-fields there, then atomically write the new value back to the hardware. Signed-off-by: Steven A. Falco <sfalco@coincident.com> Change-Id: If138faee43e0293efa203b86f7893fdf1e811269 Reviewed-on: http://review.coreboot.org/101 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de> |
||
|---|---|---|
| .. | ||
| ehci.c | ||
| ehci.h | ||
| ehci_private.h | ||
| ehci_rh.c | ||
| ohci.c | ||
| ohci.h | ||
| ohci_private.h | ||
| ohci_rh.c | ||
| quirks.c | ||
| TODO | ||
| uhci.c | ||
| uhci.h | ||
| uhci_private.h | ||
| uhci_rh.c | ||
| usb.c | ||
| usb_dev.c | ||
| usbhid.c | ||
| usbhub.c | ||
| usbinit.c | ||
| usbmsc.c | ||
| xhci.c | ||
| xhci.h | ||
| xhci_private.h | ||
| xhci_rh.c | ||