diff mbox series

[RFC,9/9] config: Enable support for the XHCI controller on RPI4 board

Message ID 20200421165059.19394-10-s.nawrocki@samsung.com
State RFC
Delegated to: Marek Vasut
Headers show
Series USB host support for Raspberry Pi 4 board | expand

Commit Message

Sylwester Nawrocki April 21, 2020, 4:50 p.m. UTC
From: Marek Szyprowski <m.szyprowski@samsung.com>

This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI
and USB commands. To get it working one has to call the following commands:
"pci enum; usb start;", thus such commands have been added to the default
"preboot" environment variable. One has to update his environment if it is
already configured to get this feature working out of the box.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
 configs/rpi_4_32b_defconfig |  9 +++++++++
 configs/rpi_4_defconfig     | 10 ++++++++++
 configs/rpi_arm64_defconfig |  9 ++++++++-
 3 files changed, 27 insertions(+), 1 deletion(-)

Comments

Nicolas Saenz Julienne April 22, 2020, 10:44 a.m. UTC | #1
On Tue, 2020-04-21 at 18:50 +0200, Sylwester Nawrocki wrote:
> From: Marek Szyprowski <m.szyprowski@samsung.com>
> 
> This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI
> and USB commands. To get it working one has to call the following commands:
> "pci enum; usb start;", thus such commands have been added to the default
> "preboot" environment variable. One has to update his environment if it is
> already configured to get this feature working out of the box.
> 
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---

Would you mind enabling USB keyboard support too? It's useful for people using
u-boot/UEFI.

If not I don't mind sending a separate patch.

Regards,
Nicolas

>  configs/rpi_4_32b_defconfig |  9 +++++++++
>  configs/rpi_4_defconfig     | 10 ++++++++++
>  configs/rpi_arm64_defconfig |  9 ++++++++-
>  3 files changed, 27 insertions(+), 1 deletion(-)
> 
> diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
> index 72cda5d..0dd763f 100644
> --- a/configs/rpi_4_32b_defconfig
> +++ b/configs/rpi_4_32b_defconfig
> @@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2
>  CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_OF_BOARD_SETUP=y
>  # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> +CONFIG_USE_PREBOOT=y
> +CONFIG_PREBOOT="pci enum; usb start;"
>  CONFIG_MISC_INIT_R=y
>  # CONFIG_DISPLAY_CPUINFO is not set
>  # CONFIG_DISPLAY_BOARDINFO is not set
> @@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> "
>  CONFIG_CMD_DFU=y
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_MMC=y
> +CONFIG_CMD_PCI=y
> +CONFIG_CMD_USB=y
>  CONFIG_CMD_FS_UUID=y
>  CONFIG_OF_BOARD=y
>  CONFIG_ENV_FAT_INTERFACE="mmc"
> @@ -28,12 +32,17 @@ CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_BCM2835=y
>  CONFIG_DM_ETH=y
>  CONFIG_BCMGENET=y
> +CONFIG_PCI=y
> +CONFIG_DM_PCI=y
> +CONFIG_PCI_BRCMSTB=y
>  CONFIG_PINCTRL=y
>  # CONFIG_PINCTRL_GENERIC is not set
>  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>  CONFIG_USB=y
>  CONFIG_DM_USB=y
>  CONFIG_DM_USB_GADGET=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_USB_XHCI_PCI=y
>  CONFIG_USB_GADGET=y
>  CONFIG_USB_GADGET_MANUFACTURER="FSL"
>  CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
> index 6d148da..f80e5da 100644
> --- a/configs/rpi_4_defconfig
> +++ b/configs/rpi_4_defconfig
> @@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2
>  CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_OF_BOARD_SETUP=y
>  # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> +CONFIG_USE_PREBOOT=y
> +CONFIG_PREBOOT="pci enum; usb start;"
>  CONFIG_MISC_INIT_R=y
>  # CONFIG_DISPLAY_CPUINFO is not set
>  # CONFIG_DISPLAY_BOARDINFO is not set
> @@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> "
>  CONFIG_CMD_DFU=y
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_MMC=y
> +CONFIG_CMD_PCI=y
> +CONFIG_CMD_USB=y
>  CONFIG_CMD_FS_UUID=y
>  CONFIG_OF_BOARD=y
>  CONFIG_ENV_FAT_INTERFACE="mmc"
> @@ -28,12 +32,18 @@ CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_BCM2835=y
>  CONFIG_DM_ETH=y
>  CONFIG_BCMGENET=y
> +CONFIG_PCI=y
> +CONFIG_DM_PCI=y
> +CONFIG_PCI_BRCMSTB=y
>  CONFIG_PINCTRL=y
>  # CONFIG_PINCTRL_GENERIC is not set
>  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>  CONFIG_USB=y
>  CONFIG_DM_USB=y
>  CONFIG_DM_USB_GADGET=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
> +CONFIG_USB_XHCI_PCI=y
>  CONFIG_USB_GADGET=y
>  CONFIG_USB_GADGET_MANUFACTURER="FSL"
>  CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
> index fea86be..926dfc3 100644
> --- a/configs/rpi_arm64_defconfig
> +++ b/configs/rpi_arm64_defconfig
> @@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2
>  CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_USE_PREBOOT=y
> -CONFIG_PREBOOT="usb start"
> +CONFIG_PREBOOT="pci enum; usb start;"
>  CONFIG_MISC_INIT_R=y
>  # CONFIG_DISPLAY_CPUINFO is not set
>  # CONFIG_DISPLAY_BOARDINFO is not set
>  CONFIG_SYS_PROMPT="U-Boot> "
>  CONFIG_CMD_GPIO=y
>  CONFIG_CMD_MMC=y
> +CONFIG_CMD_PCI=y
>  CONFIG_CMD_USB=y
>  CONFIG_CMD_FS_UUID=y
>  CONFIG_OF_BOARD=y
> @@ -26,11 +27,17 @@ CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_BCM2835=y
>  CONFIG_DM_ETH=y
>  CONFIG_BCMGENET=y
> +CONFIG_PCI=y
> +CONFIG_DM_PCI=y
> +CONFIG_PCI_BRCMSTB=y
>  CONFIG_PINCTRL=y
>  # CONFIG_PINCTRL_GENERIC is not set
>  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
>  CONFIG_USB=y
>  CONFIG_DM_USB=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
> +CONFIG_USB_XHCI_PCI=y
>  CONFIG_USB_DWC2=y
>  CONFIG_USB_KEYBOARD=y
>  CONFIG_USB_HOST_ETHER=y
Peter Robinson April 22, 2020, 10:50 a.m. UTC | #2
> > This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI
> > and USB commands. To get it working one has to call the following commands:
> > "pci enum; usb start;", thus such commands have been added to the default
> > "preboot" environment variable. One has to update his environment if it is
> > already configured to get this feature working out of the box.
> >
> > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > ---
>
> Would you mind enabling USB keyboard support too? It's useful for people using
> u-boot/UEFI.

And storage too:
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y

In testing these patches I can see the devices with a "usb tree" but
even with the keyboard enabled it doesn't appear to work. AFAICT with
it enabled there should be support for usb keyboard via console in
include/configs/rpi.h but I couldn't see what else might be missing.

> If not I don't mind sending a separate patch.
>
> Regards,
> Nicolas
>
> >  configs/rpi_4_32b_defconfig |  9 +++++++++
> >  configs/rpi_4_defconfig     | 10 ++++++++++
> >  configs/rpi_arm64_defconfig |  9 ++++++++-
> >  3 files changed, 27 insertions(+), 1 deletion(-)
> >
> > diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
> > index 72cda5d..0dd763f 100644
> > --- a/configs/rpi_4_32b_defconfig
> > +++ b/configs/rpi_4_32b_defconfig
> > @@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2
> >  CONFIG_DISTRO_DEFAULTS=y
> >  CONFIG_OF_BOARD_SETUP=y
> >  # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> > +CONFIG_USE_PREBOOT=y
> > +CONFIG_PREBOOT="pci enum; usb start;"
> >  CONFIG_MISC_INIT_R=y
> >  # CONFIG_DISPLAY_CPUINFO is not set
> >  # CONFIG_DISPLAY_BOARDINFO is not set
> > @@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> "
> >  CONFIG_CMD_DFU=y
> >  CONFIG_CMD_GPIO=y
> >  CONFIG_CMD_MMC=y
> > +CONFIG_CMD_PCI=y
> > +CONFIG_CMD_USB=y
> >  CONFIG_CMD_FS_UUID=y
> >  CONFIG_OF_BOARD=y
> >  CONFIG_ENV_FAT_INTERFACE="mmc"
> > @@ -28,12 +32,17 @@ CONFIG_MMC_SDHCI=y
> >  CONFIG_MMC_SDHCI_BCM2835=y
> >  CONFIG_DM_ETH=y
> >  CONFIG_BCMGENET=y
> > +CONFIG_PCI=y
> > +CONFIG_DM_PCI=y
> > +CONFIG_PCI_BRCMSTB=y
> >  CONFIG_PINCTRL=y
> >  # CONFIG_PINCTRL_GENERIC is not set
> >  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
> >  CONFIG_USB=y
> >  CONFIG_DM_USB=y
> >  CONFIG_DM_USB_GADGET=y
> > +CONFIG_USB_XHCI_HCD=y
> > +CONFIG_USB_XHCI_PCI=y
> >  CONFIG_USB_GADGET=y
> >  CONFIG_USB_GADGET_MANUFACTURER="FSL"
> >  CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> > diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
> > index 6d148da..f80e5da 100644
> > --- a/configs/rpi_4_defconfig
> > +++ b/configs/rpi_4_defconfig
> > @@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2
> >  CONFIG_DISTRO_DEFAULTS=y
> >  CONFIG_OF_BOARD_SETUP=y
> >  # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> > +CONFIG_USE_PREBOOT=y
> > +CONFIG_PREBOOT="pci enum; usb start;"
> >  CONFIG_MISC_INIT_R=y
> >  # CONFIG_DISPLAY_CPUINFO is not set
> >  # CONFIG_DISPLAY_BOARDINFO is not set
> > @@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> "
> >  CONFIG_CMD_DFU=y
> >  CONFIG_CMD_GPIO=y
> >  CONFIG_CMD_MMC=y
> > +CONFIG_CMD_PCI=y
> > +CONFIG_CMD_USB=y
> >  CONFIG_CMD_FS_UUID=y
> >  CONFIG_OF_BOARD=y
> >  CONFIG_ENV_FAT_INTERFACE="mmc"
> > @@ -28,12 +32,18 @@ CONFIG_MMC_SDHCI=y
> >  CONFIG_MMC_SDHCI_BCM2835=y
> >  CONFIG_DM_ETH=y
> >  CONFIG_BCMGENET=y
> > +CONFIG_PCI=y
> > +CONFIG_DM_PCI=y
> > +CONFIG_PCI_BRCMSTB=y
> >  CONFIG_PINCTRL=y
> >  # CONFIG_PINCTRL_GENERIC is not set
> >  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
> >  CONFIG_USB=y
> >  CONFIG_DM_USB=y
> >  CONFIG_DM_USB_GADGET=y
> > +CONFIG_USB_XHCI_HCD=y
> > +CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
> > +CONFIG_USB_XHCI_PCI=y
> >  CONFIG_USB_GADGET=y
> >  CONFIG_USB_GADGET_MANUFACTURER="FSL"
> >  CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> > diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
> > index fea86be..926dfc3 100644
> > --- a/configs/rpi_arm64_defconfig
> > +++ b/configs/rpi_arm64_defconfig
> > @@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2
> >  CONFIG_DISTRO_DEFAULTS=y
> >  CONFIG_OF_BOARD_SETUP=y
> >  CONFIG_USE_PREBOOT=y
> > -CONFIG_PREBOOT="usb start"
> > +CONFIG_PREBOOT="pci enum; usb start;"
> >  CONFIG_MISC_INIT_R=y
> >  # CONFIG_DISPLAY_CPUINFO is not set
> >  # CONFIG_DISPLAY_BOARDINFO is not set
> >  CONFIG_SYS_PROMPT="U-Boot> "
> >  CONFIG_CMD_GPIO=y
> >  CONFIG_CMD_MMC=y
> > +CONFIG_CMD_PCI=y
> >  CONFIG_CMD_USB=y
> >  CONFIG_CMD_FS_UUID=y
> >  CONFIG_OF_BOARD=y
> > @@ -26,11 +27,17 @@ CONFIG_MMC_SDHCI=y
> >  CONFIG_MMC_SDHCI_BCM2835=y
> >  CONFIG_DM_ETH=y
> >  CONFIG_BCMGENET=y
> > +CONFIG_PCI=y
> > +CONFIG_DM_PCI=y
> > +CONFIG_PCI_BRCMSTB=y
> >  CONFIG_PINCTRL=y
> >  # CONFIG_PINCTRL_GENERIC is not set
> >  # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
> >  CONFIG_USB=y
> >  CONFIG_DM_USB=y
> > +CONFIG_USB_XHCI_HCD=y
> > +CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
> > +CONFIG_USB_XHCI_PCI=y
> >  CONFIG_USB_DWC2=y
> >  CONFIG_USB_KEYBOARD=y
> >  CONFIG_USB_HOST_ETHER=y
>
Nicolas Saenz Julienne April 22, 2020, 12:26 p.m. UTC | #3
Hi Peter,

On Wed, 2020-04-22 at 11:50 +0100, Peter Robinson wrote:
> > > This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI
> > > and USB commands. To get it working one has to call the following
> > > commands:
> > > "pci enum; usb start;", thus such commands have been added to the default
> > > "preboot" environment variable. One has to update his environment if it is
> > > already configured to get this feature working out of the box.
> > > 
> > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > > ---
> > 
> > Would you mind enabling USB keyboard support too? It's useful for people
> > using
> > u-boot/UEFI.
> 
> And storage too:
> CONFIG_USB_STORAGE=y
> CONFIG_USB_KEYBOARD=y
> 
> In testing these patches I can see the devices with a "usb tree" but
> even with the keyboard enabled it doesn't appear to work. AFAICT with
> it enabled there should be support for usb keyboard via console in
> include/configs/rpi.h but I couldn't see what else might be missing.

That's surprising, USB keyboard works fine in my case.

Regards,
Nicolas
Peter Robinson April 22, 2020, 12:37 p.m. UTC | #4
On Wed, Apr 22, 2020 at 1:26 PM Nicolas Saenz Julienne
<nsaenzjulienne@suse.de> wrote:
>
> Hi Peter,
>
> On Wed, 2020-04-22 at 11:50 +0100, Peter Robinson wrote:
> > > > This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI
> > > > and USB commands. To get it working one has to call the following
> > > > commands:
> > > > "pci enum; usb start;", thus such commands have been added to the default
> > > > "preboot" environment variable. One has to update his environment if it is
> > > > already configured to get this feature working out of the box.
> > > >
> > > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > > > ---
> > >
> > > Would you mind enabling USB keyboard support too? It's useful for people
> > > using
> > > u-boot/UEFI.
> >
> > And storage too:
> > CONFIG_USB_STORAGE=y
> > CONFIG_USB_KEYBOARD=y
> >
> > In testing these patches I can see the devices with a "usb tree" but
> > even with the keyboard enabled it doesn't appear to work. AFAICT with
> > it enabled there should be support for usb keyboard via console in
> > include/configs/rpi.h but I couldn't see what else might be missing.
>
> That's surprising, USB keyboard works fine in my case.

I've tried 2 devices and 2 keyboards and someone else managed to
reproduce it. Another person got it working on the top USB3 port but
it was even intermittent there.
Sylwester Nawrocki April 22, 2020, 4:49 p.m. UTC | #5
On 22.04.2020 14:26, Nicolas Saenz Julienne wrote:
> On Wed, 2020-04-22 at 11:50 +0100, Peter Robinson wrote:

>>> Would you mind enabling USB keyboard support too? It's useful for people
>>> using
>>> u-boot/UEFI.
>>
>> And storage too:
>> CONFIG_USB_STORAGE=y
>> CONFIG_USB_KEYBOARD=y
>>
>> In testing these patches I can see the devices with a "usb tree" but
>> even with the keyboard enabled it doesn't appear to work. AFAICT with
>> it enabled there should be support for usb keyboard via console in
>> include/configs/rpi.h but I couldn't see what else might be missing.
> 
> That's surprising, USB keyboard works fine in my case.

USB keyboard also works well for me (but not the one with a built-in 
touchpad). I could add those 2 additional options to the patch but perhaps 
it's better to leave it as is, i.e. enable PCIe/xHCI in one patch and all 
needed USB devices in another?
diff mbox series

Patch

diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
index 72cda5d..0dd763f 100644
--- a/configs/rpi_4_32b_defconfig
+++ b/configs/rpi_4_32b_defconfig
@@ -8,6 +8,8 @@  CONFIG_NR_DRAM_BANKS=2
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
+CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="pci enum; usb start;"
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
@@ -15,6 +17,8 @@  CONFIG_SYS_PROMPT="U-Boot> "
 CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_USB=y
 CONFIG_CMD_FS_UUID=y
 CONFIG_OF_BOARD=y
 CONFIG_ENV_FAT_INTERFACE="mmc"
@@ -28,12 +32,17 @@  CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_BCM2835=y
 CONFIG_DM_ETH=y
 CONFIG_BCMGENET=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_PCI_BRCMSTB=y
 CONFIG_PINCTRL=y
 # CONFIG_PINCTRL_GENERIC is not set
 # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_DM_USB_GADGET=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_MANUFACTURER="FSL"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
index 6d148da..f80e5da 100644
--- a/configs/rpi_4_defconfig
+++ b/configs/rpi_4_defconfig
@@ -8,6 +8,8 @@  CONFIG_NR_DRAM_BANKS=2
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
+CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="pci enum; usb start;"
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
@@ -15,6 +17,8 @@  CONFIG_SYS_PROMPT="U-Boot> "
 CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_USB=y
 CONFIG_CMD_FS_UUID=y
 CONFIG_OF_BOARD=y
 CONFIG_ENV_FAT_INTERFACE="mmc"
@@ -28,12 +32,18 @@  CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_BCM2835=y
 CONFIG_DM_ETH=y
 CONFIG_BCMGENET=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_PCI_BRCMSTB=y
 CONFIG_PINCTRL=y
 # CONFIG_PINCTRL_GENERIC is not set
 # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_DM_USB_GADGET=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_MANUFACTURER="FSL"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
index fea86be..926dfc3 100644
--- a/configs/rpi_arm64_defconfig
+++ b/configs/rpi_arm64_defconfig
@@ -7,13 +7,14 @@  CONFIG_NR_DRAM_BANKS=2
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="usb start"
+CONFIG_PREBOOT="pci enum; usb start;"
 CONFIG_MISC_INIT_R=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_FS_UUID=y
 CONFIG_OF_BOARD=y
@@ -26,11 +27,17 @@  CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_BCM2835=y
 CONFIG_DM_ETH=y
 CONFIG_BCMGENET=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_PCI_BRCMSTB=y
 CONFIG_PINCTRL=y
 # CONFIG_PINCTRL_GENERIC is not set
 # CONFIG_REQUIRE_SERIAL_CONSOLE is not set
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_DWC2=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_USB_HOST_ETHER=y