diff --git a/0029-Revert-Fix-data-abort-caused-by-mis.patch b/0029-Revert-Fix-data-abort-caused-by-mis.patch new file mode 100644 index 0000000..fe66202 --- /dev/null +++ b/0029-Revert-Fix-data-abort-caused-by-mis.patch @@ -0,0 +1,37 @@ +From 2b3131bde95b261cd67f99a520b16936a5f50ea2 Mon Sep 17 00:00:00 2001 +From: Marek Vasut +Date: Mon, 19 Oct 2020 23:40:26 +0200 +Subject: [PATCH] Revert "Fix data abort caused by mis-aligning FIT data" + +This reverts commit eb39d8ba5f0d1468b01b89a2a464d18612d3ea76. +The commit breaks booting of fitImage by SPL, the system simply hangs. +This is because on arm32, the fitImage and all of its content can be +aligned to 4 bytes and U-Boot expects just that. + +Signed-off-by: Marek Vasut +Cc: Reuben Dowle +Cc: Tom Rini +Signed-off-by: Marek Vasut +--- + common/spl/spl_fit.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c +index a8bfd388b1..365104fe02 100644 +--- a/common/spl/spl_fit.c ++++ b/common/spl/spl_fit.c +@@ -349,12 +349,9 @@ static int spl_fit_append_fdt(struct spl_image_info *spl_image, + + /* + * Use the address following the image as target address for the +- * device tree. Load address is aligned to 8 bytes to match the required +- * alignment specified for linux arm [1] and arm 64 [2] booting +- * [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm/booting.rst#n126 +- * [2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm64/booting.rst#n45 ++ * device tree. + */ +- image_info.load_addr = ALIGN(spl_image->load_addr + spl_image->size, 8); ++ image_info.load_addr = spl_image->load_addr + spl_image->size; + + /* Figure out which device tree the board wants to use */ + node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, index++); diff --git a/0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch b/0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch new file mode 100644 index 0000000..fe92f34 --- /dev/null +++ b/0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch @@ -0,0 +1,27 @@ +From 3b24be6bc5ac356b99a4c0441c64b599acb35c13 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne +Date: Thu, 14 Jan 2021 16:49:00 +0100 +Subject: [PATCH] usb: xhci-pci: Add DM_FLAG_OS_PREPARE flag + +The PCIe bus the controller is connected to might need to be removed +prior the handover. Make sure xhci-pci is also removed so as to avoid +unexpected timeouts or hangs. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/usb/host/xhci-pci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +index 9fb6d2f763..19f8fb4458 100644 +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -61,7 +61,7 @@ U_BOOT_DRIVER(xhci_pci) = { + .ops = &xhci_usb_ops, + .platdata_auto_alloc_size = sizeof(struct usb_platdata), + .priv_auto_alloc_size = sizeof(struct xhci_ctrl), +- .flags = DM_FLAG_ALLOC_PRIV_DMA, ++ .flags = DM_FLAG_OS_PREPARE | DM_FLAG_ALLOC_PRIV_DMA, + }; + + static struct pci_device_id xhci_pci_supported[] = { diff --git a/0031-pci-brcmstb-Cleanup-controller-stat.patch b/0031-pci-brcmstb-Cleanup-controller-stat.patch new file mode 100644 index 0000000..67a02fc --- /dev/null +++ b/0031-pci-brcmstb-Cleanup-controller-stat.patch @@ -0,0 +1,55 @@ +From 8566f4fb6d707b40121a02b081dadb558ae9ce66 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne +Date: Thu, 14 Jan 2021 16:49:01 +0100 +Subject: [PATCH] pci: brcmstb: Cleanup controller state before handover + +Make sure we handover the PCIe controller in a clean state. Some of the +devices hanging from the PCIe bus might need to be properly reset +through #PERST in order for Linux to be able to initialize them. + +This is specially important in order to properly initialize Raspberry Pi +4 B and 400's USB chip. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/pci/pcie_brcmstb.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +index f6e8ad0d0a..c87a5dce4d 100644 +--- a/drivers/pci/pcie_brcmstb.c ++++ b/drivers/pci/pcie_brcmstb.c +@@ -577,6 +577,24 @@ static int brcm_pcie_probe(struct udevice *dev) + return 0; + } + ++static int brcm_pcie_remove(struct udevice *dev) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ void __iomem *base = pcie->base; ++ ++ /* Assert fundamental reset */ ++ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); ++ ++ /* Turn off SerDes */ ++ setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); ++ ++ /* Shutdown bridge */ ++ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); ++ ++ return 0; ++} ++ + static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) + { + struct brcm_pcie *pcie = dev_get_priv(dev); +@@ -616,6 +634,8 @@ U_BOOT_DRIVER(pcie_brcm_base) = { + .ops = &brcm_pcie_ops, + .of_match = brcm_pcie_ids, + .probe = brcm_pcie_probe, ++ .remove = brcm_pcie_remove, + .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, + .priv_auto_alloc_size = sizeof(struct brcm_pcie), ++ .flags = DM_FLAG_OS_PREPARE, + }; diff --git a/u-boot.changes b/u-boot.changes index 43c29fb..2b5159a 100644 --- a/u-boot.changes +++ b/u-boot.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Tue Jan 19 12:50:57 UTC 2021 - Matthias Brugger + +Fix USB in RPi4 and RPi400 (jsc@OPENSUSE-13 bsc#1180336) + +Patch queue updated from git://github.com/openSUSE/u-boot.git tumbleweed-2020.10 +* Patches added: + 0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch + 0031-pci-brcmstb-Cleanup-controller-stat.patch + +------------------------------------------------------------------- +Mon Jan 18 10:43:24 UTC 2021 - Guillaume GARDET + +Patch queue updated from git://github.com/openSUSE/u-boot.git tumbleweed-2020.10 +* Patches added: + 0029-Revert-Fix-data-abort-caused-by-mis.patch - boo#1180728 + ------------------------------------------------------------------- Thu Jan 7 19:53:08 UTC 2021 - Guillaume GARDET diff --git a/u-boot.spec b/u-boot.spec index f7f715a..85dff39 100644 --- a/u-boot.spec +++ b/u-boot.spec @@ -243,6 +243,9 @@ Patch0025: 0025-mmc-Introduce-mmc_phys_to_bus-mmc_b.patch Patch0026: 0026-configs-rpi4-Enable-DM_DMA-across-a.patch Patch0027: 0027-video-arm-rpi-Add-brcm-bcm2711-hdmi.patch Patch0028: 0028-usb-xhci-xhci_bulk_tx-Don-t-BUG-whe.patch +Patch0029: 0029-Revert-Fix-data-abort-caused-by-mis.patch +Patch0030: 0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch +Patch0031: 0031-pci-brcmstb-Cleanup-controller-stat.patch # Patches: end BuildRequires: bc BuildRequires: bison