coreboot-kgpe-d16/payloads/libpayload/drivers/usb
Nico Huber 3c7888bf29 libpayload/xhci: Try harder to read 32-bit caps at once
With commit 287cf6c7d1 (lp/drivers/usb: Work around QEMU XHCI
register issue) we restructured our capability register accesses
because the compiler used the wrong access size. While we do use
only 32-bit types now, a compiler may still try to be clever and
optimize things in unexpected ways. So we add an explicit read32()
now.

For instance for the 8-bit MaxPorts field, in the most significant
bits of `capreg + 4`, our read + mask + shift

    ((cap)->hciparams1 & 0xff000000) >> 24

was turned into a single 8-bit read instruction by GCC on x86:

      31:   0f b6 52 07             movzbl 0x7(%edx),%edx

Change-Id: I76accd0ef718e70ca46807eb06a9177c3afd99f1
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/43575
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
2020-07-21 15:14:48 +00:00
..
Kconfig treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
TODO
dwc2.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
dwc2.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
dwc2_private.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
dwc2_rh.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ehci.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ehci.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ehci_private.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ehci_rh.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
generic_hub.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
generic_hub.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ohci.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ohci.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ohci_private.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ohci_rh.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
quirks.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
uhci.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
uhci.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
uhci_private.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
uhci_rh.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usb.c libpayload: drivers/usb: add a USB pre-poll hook 2020-06-06 01:49:52 +00:00
usb_dev.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usbhid.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usbhub.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usbinit.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usbmsc.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci.c usb/xhci: Fix timeout logic 2020-06-06 09:26:02 +00:00
xhci.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci_commands.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci_debug.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci_devconf.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci_events.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
xhci_private.h libpayload/xhci: Try harder to read 32-bit caps at once 2020-07-21 15:14:48 +00:00
xhci_rh.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00