diff --git a/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch b/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch new file mode 100644 index 000000000..7b4f60cb5 --- /dev/null +++ b/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch @@ -0,0 +1,658 @@ +From patchwork Fri Mar 6 11:43:45 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 11423679 +Return-Path: + +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 70B5914B7 + for ; + Fri, 6 Mar 2020 11:44:02 +0000 (UTC) +Received: from bombadil.infradead.org (bombadil.infradead.org + [198.137.202.133]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by mail.kernel.org (Postfix) with ESMTPS id 4E4F92072A + for ; + Fri, 6 Mar 2020 11:44:02 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=lists.infradead.org + header.i=@lists.infradead.org header.b="dGEE0Sg7" +DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E4F92072A +Authentication-Results: mail.kernel.org; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: mail.kernel.org; + spf=none + smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; + d=lists.infradead.org; s=bombadil.20170209; h=Sender: + Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: + List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: + Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: + Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: + List-Owner; bh=ZW8pFtwlUj3q7GZJotB4Rgjtfp9gMy+l74jJQcTab0w=; b=dGEE0Sg7v5PBTu + 5qGfgXA4+4sJpnFfsp+cAr2DAwAeCgqMmQrm4uAPZLI8efXK5VHLKP6PEX2JrH7D3MfzTF0dU9g6/ + WQUqXvxsGGnePdDZw5//mlUcq+gml374oe11NwXONXbBo79sEsxrYx25OjFsZt2RxgNXg4bZlQrMy + YnqIMx3EPz58Ah2d69LlezGH3br2KiByqaG0B1TUiU6oD2BLFMZE7Z4g8Ndb5AvkxTwsWjFnpacZN + 95uzRzQy042X9al5ZuSokOeT3hDAaTFHQc0JwQYX+YxpN1aK/AnIYTATOGlsfmCosK5cOsOJk+aSD + +zIXNMdtqtSwEzzEk9QA==; +Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) + by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABOb-00053O-32; Fri, 06 Mar 2020 11:44:01 +0000 +Received: from mx2.suse.de ([195.135.220.15]) + by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABOY-00051E-01; Fri, 06 Mar 2020 11:43:59 +0000 +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 A2B70AEF6; + Fri, 6 Mar 2020 11:43:55 +0000 (UTC) +From: Nicolas Saenz Julienne +To: linux-kernel@vger.kernel.org, + Nicolas Saenz Julienne , + Florian Fainelli , Ray Jui , + Scott Branden , + bcm-kernel-feedback-list@broadcom.com +Subject: [PATCH v4 1/4] soc: bcm2835: Sync xHCI reset firmware property with + downstream +Date: Fri, 6 Mar 2020 12:43:45 +0100 +Message-Id: <20200306114348.5172-2-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 +X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 +X-CRM114-CacheID: sfid-20200306_034358_187314_7B4D5C40 +X-CRM114-Status: GOOD ( 13.62 ) +X-Spam-Score: -2.3 (--) +X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: + Content analysis details: (-2.3 points) + pts rule name description + ---- ---------------------- + -------------------------------------------------- + -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, + medium trust [195.135.220.15 listed in list.dnswl.org] + 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record + -0.0 SPF_PASS SPF: sender matches SPF record + 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) + [195.135.220.15 listed in wl.mailspike.net] + 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders +X-BeenThere: linux-arm-kernel@lists.infradead.org +X-Mailman-Version: 2.1.29 +Precedence: list +List-Id: +List-Unsubscribe: + , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: + , + +Cc: tim.gover@raspberrypi.org, gregkh@linuxfoundation.org, + linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, + linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + wahrenst@gmx.net +Sender: "linux-arm-kernel" +Errors-To: + linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org + +The property is needed in order to trigger VL805's firmware load. Note +that there is a gap between the property introduced and the previous +one. This is also the case downstream. + +Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Florian Fainelli +--- + include/soc/bcm2835/raspberrypi-firmware.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h +index 7800e12ee042..cc9cdbc66403 100644 +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -90,7 +90,7 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, + RPI_FIRMWARE_GET_POE_HAT_VAL = 0x00030049, + RPI_FIRMWARE_SET_POE_HAT_VAL = 0x00030050, +- ++ RPI_FIRMWARE_NOTIFY_XHCI_RESET = 0x00030058, + + /* Dispmanx TAGS */ + RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, + +From patchwork Fri Mar 6 11:43:46 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 11423697 +Return-Path: + +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B5ACE14B7 + for ; + Fri, 6 Mar 2020 11:44:32 +0000 (UTC) +Received: from bombadil.infradead.org (bombadil.infradead.org + [198.137.202.133]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by mail.kernel.org (Postfix) with ESMTPS id 91DF92072A + for ; + Fri, 6 Mar 2020 11:44:32 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=lists.infradead.org + header.i=@lists.infradead.org header.b="DG1Rd9pv" +DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 91DF92072A +Authentication-Results: mail.kernel.org; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: mail.kernel.org; + spf=none + smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; + d=lists.infradead.org; s=bombadil.20170209; h=Sender: + Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: + List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: + Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: + Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: + List-Owner; bh=3Y9Bl+SWHCBoW9h0wXyUxKrcbYUmxn2lHa+AZSrB9sI=; b=DG1Rd9pvKLqCNK + BTo7HtqMLcSMlDp9MBV7S9jQys3aZp0d0DfZzySKxREwIFwG/vrhhs5Wl6fIyF0s/UxzUT0PRv1w8 + JST/Eeac+0SyEf03QO0muMBhXms+lS7Xj2W5ExGRLjsTRb5fF3tb7VD9yiiyqaaYlnS1pmtpwwBwf + fMemr/A/aOYHmcEV3wtSwDyFpKzbn3LGtIVeaPDKZhnkYvyJGD52G4h6pr/KLRQv2oFt8rA/U9QR/ + R4So9MJxK3FyVioYRdBqwgN7ijrfhh2UtaBLKzk77k59/nMuQoGm19vSwRCus5axiQJisYFNrDwvv + kiKbXXrYW68JvUUXZxGQ==; +Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) + by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABP4-0005Wb-RE; Fri, 06 Mar 2020 11:44:30 +0000 +Received: from mx2.suse.de ([195.135.220.15]) + by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABOY-00051M-46; Fri, 06 Mar 2020 11:44:00 +0000 +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 B52A5AFD8; + Fri, 6 Mar 2020 11:43:56 +0000 (UTC) +From: Nicolas Saenz Julienne +To: linux-kernel@vger.kernel.org, + Nicolas Saenz Julienne , + Florian Fainelli , Ray Jui , + Scott Branden , + bcm-kernel-feedback-list@broadcom.com +Subject: [PATCH v4 2/4] firmware: raspberrypi: Introduce vl805 init routine +Date: Fri, 6 Mar 2020 12:43:46 +0100 +Message-Id: <20200306114348.5172-3-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 +X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 +X-CRM114-CacheID: sfid-20200306_034358_450028_ABB3A519 +X-CRM114-Status: GOOD ( 15.23 ) +X-Spam-Score: -2.3 (--) +X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: + Content analysis details: (-2.3 points) + pts rule name description + ---- ---------------------- + -------------------------------------------------- + 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) + [195.135.220.15 listed in wl.mailspike.net] + -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, + medium trust [195.135.220.15 listed in list.dnswl.org] + 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record + -0.0 SPF_PASS SPF: sender matches SPF record + 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders +X-BeenThere: linux-arm-kernel@lists.infradead.org +X-Mailman-Version: 2.1.29 +Precedence: list +List-Id: +List-Unsubscribe: + , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: + , + +Cc: tim.gover@raspberrypi.org, gregkh@linuxfoundation.org, + linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, + linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + wahrenst@gmx.net +Sender: "linux-arm-kernel" +Errors-To: + linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org + +On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be +loaded directly from an EEPROM or, if not present, by the SoC's +VideCore. The function informs VideCore that VL805 was just reset, or +requests for a probe defer. + +Based on Tim Gover's downstream implementation. + +Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Florian Fainelli +--- +Changes since v1: + - Move include into .c file and add forward declaration to .h + + drivers/firmware/raspberrypi.c | 38 ++++++++++++++++++++++ + include/soc/bcm2835/raspberrypi-firmware.h | 7 ++++ + 2 files changed, 45 insertions(+) + +diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c +index da26a584dca0..cbb495aff6a0 100644 +--- a/drivers/firmware/raspberrypi.c ++++ b/drivers/firmware/raspberrypi.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + + #define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) & 0xf)) +@@ -286,6 +287,43 @@ struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) + } + EXPORT_SYMBOL_GPL(rpi_firmware_get); + ++/* ++ * On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be ++ * loaded directly from an EEPROM or, if not present, by the SoC's VideCore. ++ * Inform VideCore that VL805 was just reset, or defer xhci's probe if not yet ++ * joinable trough the mailbox interface. ++ */ ++int rpi_firmware_init_vl805(struct pci_dev *pdev) ++{ ++ struct device_node *fw_np; ++ struct rpi_firmware *fw; ++ u32 dev_addr; ++ int ret; ++ ++ fw_np = of_find_compatible_node(NULL, NULL, ++ "raspberrypi,bcm2835-firmware"); ++ if (!fw_np) ++ return 0; ++ ++ fw = rpi_firmware_get(fw_np); ++ of_node_put(fw_np); ++ if (!fw) ++ return -EPROBE_DEFER; ++ ++ dev_addr = pdev->bus->number << 20 | PCI_SLOT(pdev->devfn) << 15 | ++ PCI_FUNC(pdev->devfn) << 12; ++ ++ ret = rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_XHCI_RESET, ++ &dev_addr, sizeof(dev_addr)); ++ if (ret) ++ return ret; ++ ++ dev_dbg(&pdev->dev, "loaded Raspberry Pi's VL805 firmware\n"); ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(rpi_firmware_init_vl805); ++ + static const struct of_device_id rpi_firmware_of_match[] = { + { .compatible = "raspberrypi,bcm2835-firmware", }, + {}, +diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h +index cc9cdbc66403..c161bdab759d 100644 +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -10,6 +10,7 @@ + #include + + struct rpi_firmware; ++struct pci_dev; + + enum rpi_firmware_property_status { + RPI_FIRMWARE_STATUS_REQUEST = 0, +@@ -141,6 +142,7 @@ int rpi_firmware_property(struct rpi_firmware *fw, + int rpi_firmware_property_list(struct rpi_firmware *fw, + void *data, size_t tag_size); + struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node); ++int rpi_firmware_init_vl805(struct pci_dev *pdev); + #else + static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, + void *data, size_t len) +@@ -158,6 +160,11 @@ static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware + { + return NULL; + } ++ ++static int rpi_firmware_init_vl805(struct pci_dev *pdev) ++{ ++ return 0; ++} + #endif + + #endif /* __SOC_RASPBERRY_FIRMWARE_H__ */ + +From patchwork Fri Mar 6 11:43:47 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 11423699 +Return-Path: + +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A184A14B7 + for ; + Fri, 6 Mar 2020 11:44:49 +0000 (UTC) +Received: from bombadil.infradead.org (bombadil.infradead.org + [198.137.202.133]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by mail.kernel.org (Postfix) with ESMTPS id 6921A2072A + for ; + Fri, 6 Mar 2020 11:44:49 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=lists.infradead.org + header.i=@lists.infradead.org header.b="Y5dY1L75" +DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6921A2072A +Authentication-Results: mail.kernel.org; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: mail.kernel.org; + spf=none + smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; + d=lists.infradead.org; s=bombadil.20170209; h=Sender: + Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: + List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: + Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: + Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: + List-Owner; bh=2ExZWVTw9LuCk0+3FVpp99SpZhZ8GLF00iI2upbbmVU=; b=Y5dY1L75FQ1OgS + TFgcuSnOZaeUh5zcKRjkext3cOjhQ8m9HMKNy8qhAxoD092CEriDJrZZ/JJEAzKFBe5ekgjmTiU/q + SbhN3NfLpL0N13VD1SZy2PP6nTiTWBxwD6pbF0JewFUqH9koK8EmH7Pd3udj4+kKLWOVH0fP9gZhl + ftPrHyJo07K7pMVX0t4bt2OildDgMK3xzHkHl7U8KKttcwMQFAY7xD+eC5GwrccDhlZJMANHZku9N + vLsFCNWq7b6z+otqy+7cUEbUSkWqS0KeNKpRlKx0h/j3zxl6eAi2KtQlgD2StgkVrJZGb0plNBch6 + JZAjf1oTo1/nzgnp1+MA==; +Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) + by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABPH-0005lM-Om; Fri, 06 Mar 2020 11:44:43 +0000 +Received: from mx2.suse.de ([195.135.220.15]) + by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABOZ-00052G-7b; Fri, 06 Mar 2020 11:44:00 +0000 +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 +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 +X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 +X-CRM114-CacheID: sfid-20200306_034359_420497_DC31988D +X-CRM114-Status: GOOD ( 12.02 ) +X-Spam-Score: -2.3 (--) +X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: + Content analysis details: (-2.3 points) + pts rule name description + ---- ---------------------- + -------------------------------------------------- + 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) + [195.135.220.15 listed in wl.mailspike.net] + -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, + medium trust [195.135.220.15 listed in list.dnswl.org] + 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record + -0.0 SPF_PASS SPF: sender matches SPF record + 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders +X-BeenThere: linux-arm-kernel@lists.infradead.org +X-Mailman-Version: 2.1.29 +Precedence: list +List-Id: +List-Unsubscribe: + , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: + , + +Cc: tim.gover@raspberrypi.org, gregkh@linuxfoundation.org, + linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, + linux-pci@vger.kernel.org, Bjorn Helgaas , + linux-arm-kernel@lists.infradead.org, wahrenst@gmx.net +Sender: "linux-arm-kernel" +Errors-To: + linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.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; + +From patchwork Fri Mar 6 11:43:48 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 11423701 +Return-Path: + +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A07E214B7 + for ; + Fri, 6 Mar 2020 11:45:15 +0000 (UTC) +Received: from bombadil.infradead.org (bombadil.infradead.org + [198.137.202.133]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by mail.kernel.org (Postfix) with ESMTPS id 7E7512072A + for ; + Fri, 6 Mar 2020 11:45:15 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=lists.infradead.org + header.i=@lists.infradead.org header.b="MgZdlxvb" +DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E7512072A +Authentication-Results: mail.kernel.org; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: mail.kernel.org; + spf=none + smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; + d=lists.infradead.org; s=bombadil.20170209; h=Sender: + Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: + List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: + Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: + Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: + List-Owner; bh=RSrjVuoil+7Cud9POGvsAcP8PYRf4QKzZ03MsRUZFO4=; b=MgZdlxvbm99qLd + l3Hb/jk4OC0RFy13iStY4bzUK9vCP+6Vot5m5wzUVCtDKdxS4kdMx5eQDu3ZidH3fcWhQgbkujlwO + TxZisATN94E5Xhi9zD+YUkb8+PGNRY8a0dQ3Ggloj2/GcEIkR2dDFe1Zhf4zIVnA7iEAfBcmFHdz3 + GP7Ab6fR6jGjs98nJ/vRx+vT6RNArA7Lzg+QthfGGIL//I6DtSigSOYxlnGfKGLU+cEgodxmpLPzf + qXxV5iRqCQ6tFmpueyjF2J/OL91jR8MAt5TnWiCSx83x3Ao0lsTd7htOh38t7RDefC86yce98OJdx + ku00uNE2FVPvudJC9ScQ==; +Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) + by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABPl-0007AB-9M; Fri, 06 Mar 2020 11:45:13 +0000 +Received: from mx2.suse.de ([195.135.220.15]) + by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) + id 1jABOa-00052y-EU; Fri, 06 Mar 2020 11:44:02 +0000 +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 F3588AF77; + Fri, 6 Mar 2020 11:43:58 +0000 (UTC) +From: Nicolas Saenz Julienne +To: linux-kernel@vger.kernel.org, + Mathias Nyman +Subject: [PATCH v4 4/4] USB: pci-quirks: Add Raspberry Pi 4 quirk +Date: Fri, 6 Mar 2020 12:43:48 +0100 +Message-Id: <20200306114348.5172-5-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 +X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 +X-CRM114-CacheID: sfid-20200306_034400_661945_E65B756F +X-CRM114-Status: GOOD ( 14.98 ) +X-Spam-Score: -2.3 (--) +X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: + Content analysis details: (-2.3 points) + pts rule name description + ---- ---------------------- + -------------------------------------------------- + 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) + [195.135.220.15 listed in wl.mailspike.net] + -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, + medium trust [195.135.220.15 listed in list.dnswl.org] + 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record + -0.0 SPF_PASS SPF: sender matches SPF record + 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders +X-BeenThere: linux-arm-kernel@lists.infradead.org +X-Mailman-Version: 2.1.29 +Precedence: list +List-Id: +List-Unsubscribe: + , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: + , + +Cc: f.fainelli@gmail.com, gregkh@linuxfoundation.org, + linux-usb@vger.kernel.org, + Nicolas Saenz Julienne , tim.gover@raspberrypi.org, + bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, + linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + wahrenst@gmx.net +Sender: "linux-arm-kernel" +Errors-To: + linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org + +On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be +loaded directly from an EEPROM or, if not present, by the SoC's +VideCore. Inform VideCore that VL805 was just reset. + +Also, as this creates a dependency between XHCI_PCI and VideoCore's +firmware interface, reflect that on the firmware interface Kconfg. + +Signed-off-by: Nicolas Saenz Julienne +--- + +Changes since v3: + - Add more complete error message. + - Add braces around if statement + +Changes since v1: + - Make RASPBERRYPI_FIRMWARE dependent on this quirk to make sure it + gets compiled when needed. + + drivers/firmware/Kconfig | 1 + + drivers/usb/host/pci-quirks.c | 16 ++++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig +index ea869addc89b..40a468d712a5 100644 +--- a/drivers/firmware/Kconfig ++++ b/drivers/firmware/Kconfig +@@ -180,6 +180,7 @@ config ISCSI_IBFT + config RASPBERRYPI_FIRMWARE + tristate "Raspberry Pi Firmware Driver" + depends on BCM2835_MBOX ++ default XHCI_PCI + help + This option enables support for communicating with the firmware on the + Raspberry Pi. +diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c +index beb2efa71341..452f5f12b042 100644 +--- a/drivers/usb/host/pci-quirks.c ++++ b/drivers/usb/host/pci-quirks.c +@@ -16,6 +16,9 @@ + #include + #include + #include ++ ++#include ++ + #include "pci-quirks.h" + #include "xhci-ext-caps.h" + +@@ -1243,11 +1246,24 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev) + + static void quirk_usb_early_handoff(struct pci_dev *pdev) + { ++ int ret; ++ + /* Skip Netlogic mips SoC's internal PCI USB controller. + * This device does not need/support EHCI/OHCI handoff + */ + if (pdev->vendor == 0x184e) /* vendor Netlogic */ + return; ++ ++ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { ++ ret = rpi_firmware_init_vl805(pdev); ++ if (ret) { ++ /* Firmware might be outdated, or something failed */ ++ dev_warn(&pdev->dev, "Failed to load VL805's firmware: %d\n", ret); ++ dev_warn(&pdev->dev, "Will continue to attempt to work, " ++ "but bad things might happen. You should fix this...\n"); ++ } ++ } ++ + if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI && + pdev->class != PCI_CLASS_SERIAL_USB_OHCI && + pdev->class != PCI_CLASS_SERIAL_USB_EHCI && diff --git a/arm64-tegra-jetson-tx1-fixes.patch b/arm64-tegra-jetson-tx1-fixes.patch deleted file mode 100644 index 0f476970f..000000000 --- a/arm64-tegra-jetson-tx1-fixes.patch +++ /dev/null @@ -1,39 +0,0 @@ -From aea4a7a551fd7342299d34f04a8b75f58644ac07 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sat, 23 Mar 2019 17:45:10 +0000 -Subject: [PATCH 2/3] arm64: tegra210: Jetson TX1: disable display panel and - associated backlight - -The Jetson TX1 dev kit doesn't ship with a screen by default and if -it's not there it appears to crash on boot so disable them both by -default until we work out the problem. - -Signed-off-by: Peter Robinson ---- - arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -index 37e3c46e753f..a16f24f1d5ff 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -@@ -36,7 +36,7 @@ - - host1x@50000000 { - dsi@54300000 { -- status = "okay"; -+ status = "disabled"; - - avdd-dsi-csi-supply = <&vdd_dsi_csi>; - -@@ -54,6 +54,8 @@ - - i2c@7000c400 { - backlight: backlight@2c { -+ status = "disabled"; -+ - compatible = "ti,lp8557"; - reg = <0x2c>; - --- -2.20.1 diff --git a/kernel.spec b/kernel.spec index 8984a8555..058ff5c33 100644 --- a/kernel.spec +++ b/kernel.spec @@ -822,8 +822,8 @@ Patch304: ARM-tegra-usb-no-reset.patch # Raspberry Pi # https://patchwork.kernel.org/cover/11353083/ Patch310: arm64-pinctrl-bcm2835-Add-support-for-all-BCM2711-GPIOs.patch -# https://github.com/raspberrypi/linux/commit/c74b1b53254016fd83b580b8d49bb02d72ce4836 -Patch311: usb-xhci-Raspberry-Pi-FW-loader-for-VIA-VL805.patch +# https://patchwork.kernel.org/cover/11423693/ +Patch311: USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch # https://patchwork.kernel.org/patch/11372935/ Patch312: bcm2835-irqchip-Quiesce-IRQs-left-enabled-by-bootloader.patch # https://patchwork.kernel.org/patch/11398981/ diff --git a/usb-xhci-Raspberry-Pi-FW-loader-for-VIA-VL805.patch b/usb-xhci-Raspberry-Pi-FW-loader-for-VIA-VL805.patch deleted file mode 100644 index 7bf875c6d..000000000 --- a/usb-xhci-Raspberry-Pi-FW-loader-for-VIA-VL805.patch +++ /dev/null @@ -1,91 +0,0 @@ -From eb05efbfe58a7815957844e6dbe28735e85393cf Mon Sep 17 00:00:00 2001 -From: Tim Gover <990920+timg236@users.noreply.github.com> -Date: Wed, 15 Jan 2020 11:26:19 +0000 -Subject: [PATCH] usb: xhci: Raspberry Pi FW loader for VIA VL805 - -The VL805 FW may either be loaded from an SPI EEPROM or alternatively -loaded directly by the VideoCore firmware. A PCI reset will reset -the VL805 XHCI controller on the Raspberry Pi4 requiring the firmware -to be reloaded if an SPI EEPROM is not present. - -Use a VideoCore mailbox to trigger the loading of the VL805 -firmware (if necessary) after a PCI reset. - -Signed-off-by: Tim Gover ---- - drivers/usb/host/pci-quirks.c | 31 +++++++++++++++++++++- - include/soc/bcm2835/raspberrypi-firmware.h | 2 +- - 2 files changed, 31 insertions(+), 2 deletions(-) - -diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c -index 6c7f0a876b96..c3367b053044 100644 ---- a/drivers/usb/host/pci-quirks.c -+++ b/drivers/usb/host/pci-quirks.c -@@ -18,7 +18,7 @@ - #include - #include "pci-quirks.h" - #include "xhci-ext-caps.h" -- -+#include - - #define UHCI_USBLEGSUP 0xc0 /* legacy support */ - #define UHCI_USBCMD 0 /* command register */ -@@ -630,6 +630,32 @@ bool usb_amd_pt_check_port(struct device *device, int port) - } - EXPORT_SYMBOL_GPL(usb_amd_pt_check_port); - -+/* The VL805 firmware may either be loaded from an EEPROM or by the BIOS into -+ * memory. If run from memory it must be reloaded after a PCI fundmental reset. -+ * The Raspberry Pi firmware acts as the BIOS in this case. -+ */ -+static void usb_vl805_init(struct pci_dev *pdev) -+{ -+#if IS_ENABLED(CONFIG_RASPBERRYPI_FIRMWARE) -+ struct rpi_firmware *fw; -+ struct { -+ u32 dev_addr; -+ } packet; -+ int ret; -+ -+ fw = rpi_firmware_get(NULL); -+ if (!fw) -+ return; -+ -+ packet.dev_addr = (pdev->bus->number << 20) | -+ (PCI_SLOT(pdev->devfn) << 15) | (PCI_FUNC(pdev->devfn) << 12); -+ -+ dev_dbg(&pdev->dev, "RPI_FIRMWARE_NOTIFY_XHCI_RESET %x", packet.dev_addr); -+ ret = rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_XHCI_RESET, -+ &packet, sizeof(packet)); -+#endif -+} -+ - /* - * Make sure the controller is completely inactive, unable to - * generate interrupts or do DMA. -@@ -1207,6 +1233,9 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev) - if (pdev->vendor == PCI_VENDOR_ID_INTEL) - usb_enable_intel_xhci_ports(pdev); - -+ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) -+ usb_vl805_init(pdev); -+ - op_reg_base = base + XHCI_HC_LENGTH(readl(base)); - - /* Wait for the host controller to be ready before writing any -diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h -index 7800e12ee042..cc9cdbc66403 100644 ---- a/include/soc/bcm2835/raspberrypi-firmware.h -+++ b/include/soc/bcm2835/raspberrypi-firmware.h -@@ -90,7 +90,7 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, - RPI_FIRMWARE_GET_POE_HAT_VAL = 0x00030049, - RPI_FIRMWARE_SET_POE_HAT_VAL = 0x00030050, -- -+ RPI_FIRMWARE_NOTIFY_XHCI_RESET = 0x00030058, - - /* Dispmanx TAGS */ - RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, --- -2.24.1 -