From patchwork Mon Jun 22 10:38:09 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: 11617973 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 0752913A0 for ; Mon, 22 Jun 2020 14:29:34 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 B4BED20738 for ; Mon, 22 Jun 2020 14:29:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="N0Nk88Nm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B4BED20738 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version: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:In-Reply-To:References:List-Owner; bh=VihcLRqluJENaFiRmHzwTax1ugy0rSFNyAzmnEUxydU=; b=N0Nk88NmmAXptSNdnUrdkBDvmd 3N11OVJJca1rM500Xfe0ceFiwV1zXs7Q8fpx2lHrJiSn4eBz1MFxgzU5kknR86MD/B5MatlGmslz1 XBDrX5W5c99BrSWvcwHW33XO2FmODtPahbS/Vm8Mcw3CzRfgCWIXrwm0N6Ji8IfWYapQgTDHx4RoE zngpld5WaPXUcRzTR3Yjab7o573uABEokbPpF39K2gwcB4tNPVlGITOvLVBVv7Tpe0kz2NP+l2tKR AY2O9ypJ/MOrQZGzYz7+OrbQIVP4+pXESHfVchDXd1dJ/yw2tvYvNqItN35iKf0qhpaGqdEEOvfzL aqHwGZJA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnNPs-0003NV-0s; Mon, 22 Jun 2020 14:27:20 +0000 Received: from mx2.suse.de ([195.135.220.15]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnNPm-0003Kk-A7; Mon, 22 Jun 2020 14:27:15 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 77FD1C1A1; Mon, 22 Jun 2020 14:26:11 +0000 (UTC) From: Nicolas Saenz Julienne To: f.fainelli@gmail.com, gregkh@linuxfoundation.org, robh@kernel.org, wahrenst@gmx.net, p.zabel@pengutronix.de Subject: [PATCH v4 0/9] Raspberry Pi 4 USB firmware initialization rework Date: Mon, 22 Jun 2020 12:38:09 +0200 Message-Id: <20200622103817.476-1-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -1.2 (-) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-1.2 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] 1.1 DATE_IN_PAST_03_06 Date: is 3 to 6 hours before Received: date -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an 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, mathias.nyman@linux.intel.com, linux-pci@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Nicolas Saenz Julienne , andy.shevchenko@gmail.com, lorenzo.pieralisi@arm.com, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, helgaas@kernel.org, linux-arm-kernel@lists.infradead.org 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 co-processor, VideoCore. This series reworks how we handle this. The previous solution makes use of PCI quirks and exporting platform specific functions. Albeit functional it feels pretty shoehorned. This proposes an alternative way of handling the triggering of the xHCI chip initialization trough means of a reset controller. The benefits are pretty evident: less platform churn in core xHCI code, and no explicit device dependency management in pcie-brcmstb. Note that patch #1 depends on another series[1]. The series is based on v5.8-rc2 v3: https://www.spinics.net/lists/arm-kernel/msg813612.html v2: https://lkml.org/lkml/2020/6/9/875 v1: https://lore.kernel.org/linux-usb/20200608192701.18355-1-nsaenzjulienne@suse.de/T/#t [1] https://lwn.net/ml/linux-kernel/cover.662a8d401787ef33780d91252a352de91dc4be10.1590594293.git-series.maxime@cerno.tech/ --- Changes since v3: - Rework dt patch to include root bridge as a separate node - Update xhci-pci patch now that the xhci dev has a dt node (it was getting it in the past from its bus) Changes since v2: - Add reset to resume routine in xhci-pci - Correct of refcount in pci-quirks - Correct typos - Use include file to define firmware reset IDs Changes since v1: - Rework reset controller so it's less USB centric - Use correct reset controller API in xhci-pci - Correct typos Nicolas Saenz Julienne (9): dt-bindings: reset: Add a binding for the RPi Firmware reset controller reset: Add Raspberry Pi 4 firmware reset controller ARM: dts: bcm2711: Add firmware usb reset node ARM: dts: bcm2711: Add reset controller to xHCI node usb: xhci-pci: Add support for reset controllers Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk" usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4 Revert "firmware: raspberrypi: Introduce vl805 init routine" Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present" .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++ arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 22 ++++ drivers/firmware/Kconfig | 3 +- drivers/firmware/raspberrypi.c | 61 --------- drivers/pci/controller/pcie-brcmstb.c | 17 --- drivers/reset/Kconfig | 11 ++ drivers/reset/Makefile | 1 + drivers/reset/reset-raspberrypi.c | 122 ++++++++++++++++++ drivers/usb/host/pci-quirks.c | 22 ++-- drivers/usb/host/xhci-pci.c | 10 ++ drivers/usb/host/xhci.h | 2 + .../reset/raspberrypi,firmware-reset.h | 13 ++ include/soc/bcm2835/raspberrypi-firmware.h | 7 - 13 files changed, 215 insertions(+), 97 deletions(-) create mode 100644 drivers/reset/reset-raspberrypi.c create mode 100644 include/dt-bindings/reset/raspberrypi,firmware-reset.h