Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6742937ybf; Fri, 6 Mar 2020 03:44:34 -0800 (PST) X-Google-Smtp-Source: ADFU+vvCjrFIh/yiTr8QCep3/QQ3lcTzhP1r8ZCk+eunAVmoyT828vzNmN7UZ/zmh73NTpkydOuU X-Received: by 2002:a9d:5d07:: with SMTP id b7mr2192522oti.209.1583495074442; Fri, 06 Mar 2020 03:44:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583495074; cv=none; d=google.com; s=arc-20160816; b=lFC1W3AlcwV5ir5ykedQuPZyWqyE9TCvaYSlzKgMHHAF2mq6qhYcUuzeCQDYVfP03G NJL2KPS+UK053PdGlt38EU+1rMxKMD6srz/Gh0ofimLmSG2obGtlFbmSaAYAg87Opylp uSOA+lVdY/kIuvT+zL/lkO8V/k7ztSfm9DGhJ1G/ZQfT7payS6f6hL9Yk5rnzZrpiMa1 +JOsz53+QjawCtUT+QJ5WzDgmZPsy+sdB1RHlu5gqdaKC8dfUMlIUWOVgjze9JVkt1b6 Eu2vdPEStwwvERgPZUXhsEnPTE3dfRem0L8mUhM9bHv42ws1Or/dG4g5CF1ny8Ppktg9 PysA== 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=xtmrLUoQWSyZi7QxiMIxMmoQ9wmzH1HqzF+UCIYZLr3C36XEX5MuzdcTNTco4ZQpnC YBLds26imtyUn+EfxIyewAMMHZbC9f8MYozgVGZGXwteSujgSw31T/6oFpydWDpG6r9a lJTKlYJ0yhWwv7wrxxv/v8fCR0iB5pnPBn+RoJF7V9Y4MT18i0+lq2NA7cSSGRtiEAis qahwe9NWoZHZhoWx4zo44LjsXdY7bp42jFdmzsgqTVny2lbiK3DxLkaB1ez51nQgq5mK rXRr84JJciy/homRJBe8CfzIUl6LMd1W8SXdzlwkCuuGVzwA7rKgmqaozcH5zihsFBWa 52vQ== 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 1si1154947otq.290.2020.03.06.03.44.22; Fri, 06 Mar 2020 03:44: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 S1726498AbgCFLoC (ORCPT + 99 others); Fri, 6 Mar 2020 06:44:02 -0500 Received: from mx2.suse.de ([195.135.220.15]:39338 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727049AbgCFLoA (ORCPT ); Fri, 6 Mar 2020 06:44:00 -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 EA31EAF21; Fri, 6 Mar 2020 11:43:57 +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 v4 3/4] PCI: brcmstb: Wait for Raspberry Pi's firmware when present Date: Fri, 6 Mar 2020 12:43:47 +0100 Message-Id: <20200306114348.5172-4-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200306114348.5172-1-nsaenzjulienne@suse.de> References: <20200306114348.5172-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