diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-06-15 06:40:47 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-06-15 06:40:47 +0200 |
commit | e1653ae6c388acd8cc7ad3a05da14946fdf9ded6 (patch) | |
tree | 5727a249e83f18a7dc17236e789233bfd6993dc5 /0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch | |
parent | 27857783d0156125a03d14c891556e79dc45f5c3 (diff) | |
parent | 23d80a61e9c41d533a0377712ab7b6761ce52bf9 (diff) | |
download | kernel-e1653ae6c388acd8cc7ad3a05da14946fdf9ded6.tar.gz kernel-e1653ae6c388acd8cc7ad3a05da14946fdf9ded6.tar.xz kernel-e1653ae6c388acd8cc7ad3a05da14946fdf9ded6.zip |
merge origin
Diffstat (limited to '0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch')
-rw-r--r-- | 0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch b/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch new file mode 100644 index 000000000..07f8b4e26 --- /dev/null +++ b/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch @@ -0,0 +1,57 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Date: Tue, 10 Mar 2020 13:52:41 +0100 +Subject: [PATCH] PCI: brcmstb: Wait for Raspberry Pi's firmware when present + +xHCI's PCI fixup, run at the end of pcie-brcmstb's probe, depends on +RPi4's VideoCore firmware interface to be up and running. It's possible +for both initializations to race, so make sure it's available prior to +starting. + +Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +--- + drivers/pci/controller/pcie-brcmstb.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c +index 6d79d14527a6..aee84679a997 100644 +--- a/drivers/pci/controller/pcie-brcmstb.c ++++ b/drivers/pci/controller/pcie-brcmstb.c +@@ -28,6 +28,8 @@ + #include <linux/string.h> + #include <linux/types.h> + ++#include <soc/bcm2835/raspberrypi-firmware.h> ++ + #include "../pci.h" + + /* BRCM_PCIE_CAP_REGS - Offset for the mandatory capability config regs */ +@@ -917,11 +919,24 @@ static int brcm_pcie_probe(struct platform_device *pdev) + { + struct device_node *np = pdev->dev.of_node, *msi_np; + struct pci_host_bridge *bridge; ++ struct device_node *fw_np; + struct brcm_pcie *pcie; + struct pci_bus *child; + struct resource *res; + int ret; + ++ /* ++ * We have to wait for the Raspberry Pi's firmware interface to be up ++ * as some PCI fixups depend on it. ++ */ ++ fw_np = of_find_compatible_node(NULL, NULL, ++ "raspberrypi,bcm2835-firmware"); ++ if (fw_np && !rpi_firmware_get(fw_np)) { ++ of_node_put(fw_np); ++ return -EPROBE_DEFER; ++ } ++ of_node_put(fw_np); ++ + bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie)); + if (!bridge) + return -ENOMEM; +-- +2.26.2 + |