Add RPi-4 pcie patch
This commit is contained in:
parent
74de6cf1a5
commit
12eb6a489a
89
Raspberry-Pi-4-PCIe-handover.patch
Normal file
89
Raspberry-Pi-4-PCIe-handover.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
From 5e2954fae6081daf8d65ba28dd0edef3527f5d31 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Thu, 14 Jan 2021 17:07:18 +0000
|
||||||
|
Subject: [PATCH 1/2] 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 <nsaenzjulienne@suse.de>
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
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[] = {
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
||||||
|
From 162e817b0196c418bcf5d02cedf2d823f3497321 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Thu, 14 Jan 2021 17:09:47 +0000
|
||||||
|
Subject: [PATCH 2/2] 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 <nsaenzjulienne@suse.de>
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/pci/pcie_brcmstb.c | 19 +++++++++++++++++++
|
||||||
|
1 file changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c
|
||||||
|
index f6e8ad0d0a..de824a4d9b 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,7 @@ 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),
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user