Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp2401356ybf; Mon, 2 Mar 2020 07:56:35 -0800 (PST) X-Google-Smtp-Source: APXvYqxpyW1aaUl5wT09/aY0IL5O+5mvMohodo048jA7VDH5O+urVeAmEOEctT8fZRe7e1IvozKt X-Received: by 2002:a9d:51ca:: with SMTP id d10mr13636800oth.76.1583164594789; Mon, 02 Mar 2020 07:56:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583164594; cv=none; d=google.com; s=arc-20160816; b=UWVxe+Rr5rXdWB+0BtjCHO4RfR3DuCOfApdOrMa3FF6ky4hTjn7KZ1sVSy7efrR2q4 amYCHk6LuCR6wBbVkclzkEkm7uBSkhALuI3TIco+AjWRXUiX6E56xmnmIxYQkK2/t+/W 6awGbzmVvy3cBo9hW1cBBN0x+hp0dV30cKXgpWWQjRew1erJ52YwV4d8y6DS8y3//iEF G4nDNzdgWb8Qism+ElgVZVRDFpW0O2bdcLTTBqRAM2gz+QhaCE/Isbctd8AX6kSYmcmH i5CCq55yLO93XEy2t8uVKKZCQZamcVPvR24rFc9S9Ub6jw4WwTZV/sfv9ezVVqYMBdJw vC5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=YEtM1v6x/JMpvCFHjjLxq0kATAEEneS8+dm6tOLaFlw=; b=ACqrmfBCzIYGJ4NhcSOXKs4UYvM77iTwkI8Asx9Cra49EG0d7/SMtwdHZx+b6d2mqk JFXn3Jq7A2eC0MWK4oVn+UYy/F/s8RK7ZXGHXE+OkUUeqzwltnHE5/FhJv/LzBGO/Ksb 4iuiIlHKn+2bRXeEN5J3qkJT97herD98Rq5WJ+uVfLYh6kqDUYy+rntSo/kpbTrAuS8x UoCf75ac9WZdkhn/eOnJl8/FO9QAcojUiTtj7gW0ankYL4U8+DJuz4fAd32OgD6pDvVA Qzf2IUh7pjgW9tw11IviJujll8bl+SVxrS8rJfUOlkLjxVZQntrZ/W4UD+uQ3IEIEWMh fz6w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o17si2965223oic.185.2020.03.02.07.56.22; Mon, 02 Mar 2020 07:56:34 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727427AbgCBP4K (ORCPT + 99 others); Mon, 2 Mar 2020 10:56:10 -0500 Received: from mx2.suse.de ([195.135.220.15]:51324 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727381AbgCBP4H (ORCPT ); Mon, 2 Mar 2020 10:56:07 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 15151AEDE; Mon, 2 Mar 2020 15:56:06 +0000 (UTC) From: Nicolas Saenz Julienne To: linux-kernel@vger.kernel.org, Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, Nicolas Saenz Julienne , Lorenzo Pieralisi , Andrew Murray Cc: linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, gregkh@linuxfoundation.org, tim.gover@raspberrypi.org, linux-pci@vger.kernel.org, wahrenst@gmx.net, Bjorn Helgaas Subject: [PATCH v3 3/4] PCI: brcmstb: Wait for Raspberry Pi's firmware when present Date: Mon, 2 Mar 2020 16:55:27 +0100 Message-Id: <20200302155528.19505-4-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200302155528.19505-1-nsaenzjulienne@suse.de> References: <20200302155528.19505-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 starting. Signed-off-by: Nicolas Saenz Julienne Reviewed-by: Florian Fainelli --- 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 3a10e678c7f4..a3d3070a5832 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -28,6 +28,8 @@ #include #include +#include + #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.25.1