linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework
@ 2020-06-09 17:49 Nicolas Saenz Julienne
  2020-06-09 17:49 ` [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller Nicolas Saenz Julienne
                   ` (8 more replies)
  0 siblings, 9 replies; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi,
	Nicolas Saenz Julienne, Rob Herring, Eric Anholt, devicetree

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 depend on another series[1].

The series is based on next-20200605.

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 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         |  12 ++
 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             | 126 ++++++++++++++++++
 drivers/usb/host/pci-quirks.c                 |  22 ++-
 drivers/usb/host/xhci-pci.c                   |   7 +
 include/soc/bcm2835/raspberrypi-firmware.h    |   7 -
 11 files changed, 188 insertions(+), 100 deletions(-)
 create mode 100644 drivers/reset/reset-raspberrypi.c

-- 
2.26.2


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:07   ` Florian Fainelli
  2020-06-09 17:49 ` [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware " Nicolas Saenz Julienne
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Ray Jui,
	Scott Branden, bcm-kernel-feedback-list, Nicolas Saenz Julienne,
	Eric Anholt
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	lorenzo.pieralisi, Rob Herring, devicetree

The firmware running on the RPi VideoCore can be used to reset and
initialize HW controlled by the firmware.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

---

Changes since v1:
 - Correct cells binding as per Florian's comment
 - Change compatible string to be more generic

 .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
index b48ed875eb8e..23a885af3a28 100644
--- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
+++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
@@ -39,6 +39,22 @@ properties:
       - compatible
       - "#clock-cells"
 
+  reset:
+    type: object
+
+    properties:
+      compatible:
+        const: raspberrypi,firmware-reset
+
+      "#reset-cells":
+        const: 1
+        description: >
+          The argument is the ID of the firmware reset line to affect.
+
+    required:
+      - compatible
+      - "#reset-cells"
+
     additionalProperties: false
 
 required:
@@ -55,5 +71,10 @@ examples:
             compatible = "raspberrypi,firmware-clocks";
             #clock-cells = <1>;
         };
+
+        reset: reset {
+            compatible = "raspberrypi,firmware-reset";
+            #reset-cells = <1>;
+        };
     };
 ...
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware reset controller
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
  2020-06-09 17:49 ` [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:14   ` Florian Fainelli
  2020-06-09 17:49 ` [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node Nicolas Saenz Julienne
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi,
	Nicolas Saenz Julienne

Raspberry Pi 4's co-processor controls some of the board's HW
initialization process, but it's up to Linux to trigger it when
relevant. Introduce a reset controller capable of interfacing with
RPi4's co-processor that models these firmware initialization routines as
reset lines.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

---

Changes since v1:
  - Make the whole driver less USB centric as per Florian's comments

 drivers/reset/Kconfig             |  11 +++
 drivers/reset/Makefile            |   1 +
 drivers/reset/reset-raspberrypi.c | 126 ++++++++++++++++++++++++++++++
 3 files changed, 138 insertions(+)
 create mode 100644 drivers/reset/reset-raspberrypi.c

diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index d9efbfd29646..97e848740e13 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -140,6 +140,17 @@ config RESET_QCOM_PDC
 	  to control reset signals provided by PDC for Modem, Compute,
 	  Display, GPU, Debug, AOP, Sensors, Audio, SP and APPS.
 
+config RESET_RASPBERRYPI
+	tristate "Raspberry Pi 4 Firmware Reset Driver"
+	depends on RASPBERRYPI_FIRMWARE || (RASPBERRYPI_FIRMWARE=n && COMPILE_TEST)
+	default USB_XHCI_PCI
+	help
+	  Raspberry Pi 4's co-processor controls some of the board's HW
+	  initialization process, but it's up to Linux to trigger it when
+	  relevant. This driver provides a reset controller capable of
+	  interfacing with RPi4's co-processor and model these firmware
+	  initialization routines as reset lines.
+
 config RESET_SCMI
 	tristate "Reset driver controlled via ARM SCMI interface"
 	depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
index 249ed357c997..16947610cc3b 100644
--- a/drivers/reset/Makefile
+++ b/drivers/reset/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_RESET_OXNAS) += reset-oxnas.o
 obj-$(CONFIG_RESET_PISTACHIO) += reset-pistachio.o
 obj-$(CONFIG_RESET_QCOM_AOSS) += reset-qcom-aoss.o
 obj-$(CONFIG_RESET_QCOM_PDC) += reset-qcom-pdc.o
+obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o
 obj-$(CONFIG_RESET_SCMI) += reset-scmi.o
 obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o
 obj-$(CONFIG_RESET_STM32MP157) += reset-stm32mp1.o
diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-raspberrypi.c
new file mode 100644
index 000000000000..5fc8c6319a20
--- /dev/null
+++ b/drivers/reset/reset-raspberrypi.c
@@ -0,0 +1,126 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Raspberry Pi 4 firmware reset driver
+ *
+ * Copyright (C) 2020 Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
+ */
+#include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/reset-controller.h>
+#include <soc/bcm2835/raspberrypi-firmware.h>
+
+struct rpi_reset {
+	struct reset_controller_dev rcdev;
+	struct rpi_firmware *fw;
+};
+
+enum rpi_reset_ids {
+	RASPBERRYPI_FIRMWARE_RESET_ID_USB,
+	RASPBERRYPI_FIRMWARE_RESET_NUM_IDS
+};
+
+static inline struct rpi_reset *to_rpi(struct reset_controller_dev *rcdev)
+{
+	return container_of(rcdev, struct rpi_reset, rcdev);
+}
+
+static int rpi_reset_reset(struct reset_controller_dev *rcdev, unsigned long id)
+{
+	struct rpi_reset *priv = to_rpi(rcdev);
+	u32 dev_addr;
+	int ret;
+
+	switch (id) {
+	case RASPBERRYPI_FIRMWARE_RESET_ID_USB:
+		/*
+		 * The Raspberry Pi 4 gets its USB functionality from VL805, a
+		 * PCIe chip that implements xHCI. 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. rpi's
+		 * VideoCore OS contains both the non public firmware load
+		 * logic and the VL805 firmware blob. This triggers the
+		 * aforementioned process.
+		 *
+		 * The pci device address is expected is expected by the
+		 * firmware encoded like this:
+		 *
+		 *	PCI_BUS << 20 | PCI_SLOT << 15 | PCI_FUNC << 12
+		 *
+		 * But since rpi's PCIe is hardwired, we know the address in
+		 * advance.
+		 */
+		dev_addr = 0x100000;
+		ret = rpi_firmware_property(priv->fw, RPI_FIRMWARE_NOTIFY_XHCI_RESET,
+					    &dev_addr, sizeof(dev_addr));
+		if (ret)
+			return ret;
+
+		/* Wait for vl805 to startup */
+		usleep_range(200, 1000);
+		break;
+
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static const struct reset_control_ops rpi_reset_ops = {
+	.reset	= rpi_reset_reset,
+};
+
+static int rpi_reset_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct device_node *fw_node;
+	struct rpi_firmware *fw;
+	struct rpi_reset *priv;
+
+	fw_node = of_get_parent(dev->of_node);
+	if (!fw_node) {
+		dev_err(dev, "Missing firmware node\n");
+		return -ENOENT;
+	}
+
+	fw = rpi_firmware_get(fw_node);
+	of_node_put(fw_node);
+	if (!fw)
+		return -EPROBE_DEFER;
+
+	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+
+	dev_set_drvdata(dev, priv);
+
+	priv->fw = fw;
+	priv->rcdev.owner = THIS_MODULE;
+	priv->rcdev.nr_resets = RASPBERRYPI_FIRMWARE_RESET_NUM_IDS;
+	priv->rcdev.ops = &rpi_reset_ops;
+	priv->rcdev.of_node = dev->of_node;
+
+	return devm_reset_controller_register(dev, &priv->rcdev);
+}
+
+static const struct of_device_id rpi_reset_of_match[] = {
+	{ .compatible = "raspberrypi,firmware-reset" },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, rpi_reset_of_match);
+
+static struct platform_driver rpi_reset_driver = {
+	.probe	= rpi_reset_probe,
+	.driver	= {
+		.name = "raspberrypi-reset",
+		.of_match_table = rpi_reset_of_match,
+	},
+};
+module_platform_driver(rpi_reset_driver);
+
+MODULE_AUTHOR("Nicolas Saenz Julienne <nsaenzjulienne@suse.de>");
+MODULE_DESCRIPTION("Raspberry Pi 4 firmware reset driver");
+MODULE_LICENSE("GPL");
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
  2020-06-09 17:49 ` [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller Nicolas Saenz Julienne
  2020-06-09 17:49 ` [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware " Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:16   ` Florian Fainelli
  2020-06-09 17:49 ` [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node Nicolas Saenz Julienne
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Rob Herring,
	Nicolas Saenz Julienne
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi, devicetree

Now that the reset driver exposing Raspberry Pi 4's firmware based USB
reset routine is available, let's add the device tree node exposing it.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

---

Changes since v1:
 - Update cell nr to match new bindings

 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
index c7f1d97e69bb..0cef95058fb0 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
@@ -83,6 +83,11 @@ expgpio: gpio {
 				  "";
 		status = "okay";
 	};
+
+	reset: reset {
+		compatible = "raspberrypi,firmware-reset";
+		#reset-cells = <1>;
+	};
 };
 
 &gpio {
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (2 preceding siblings ...)
  2020-06-09 17:49 ` [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:16   ` Florian Fainelli
  2020-06-09 17:49 ` [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers Nicolas Saenz Julienne
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Rob Herring,
	Nicolas Saenz Julienne
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi, devicetree

The chip is hardwired to the board's PCIe bus and needs to be properly
setup trough a firmware routine after a PCI fundamental reset. Pass the
reset controller phandle that takes care of triggering the
initialization to the relevant PCI device.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

---

Changes since v1:
 - Update to match new binding

 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
index 0cef95058fb0..e74ca0c86137 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
@@ -207,6 +207,13 @@ phy1: ethernet-phy@1 {
 	};
 };
 
+&pcie0 {
+	usb@1,0 {
+		reg = <0 0 0 0 0>;
+		resets = <&reset 0>;
+	};
+};
+
 /* uart0 communicates with the BT module */
 &uart0 {
 	pinctrl-names = "default";
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (3 preceding siblings ...)
  2020-06-09 17:49 ` [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:13   ` Florian Fainelli
  2020-06-09 17:49 ` [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk" Nicolas Saenz Julienne
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Mathias Nyman
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi,
	Nicolas Saenz Julienne

Some atypical users of xhci-pci might need to manually reset their xHCI
controller before starting the HCD setup. Check if a reset controller
device is available to the PCI bus and trigger a reset.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

---

Changes since v1:
 - Use proper reset API
 - Make code simpler

 drivers/usb/host/xhci-pci.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index ef513c2fb843..6e96affa4ceb 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -12,6 +12,7 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/acpi.h>
+#include <linux/reset.h>
 
 #include "xhci.h"
 #include "xhci-trace.h"
@@ -339,6 +340,7 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	struct xhci_hcd *xhci;
 	struct usb_hcd *hcd;
 	struct xhci_driver_data *driver_data;
+	struct reset_control *reset;
 
 	driver_data = (struct xhci_driver_data *)id->driver_data;
 	if (driver_data && driver_data->quirks & XHCI_RENESAS_FW_QUIRK) {
@@ -347,6 +349,11 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 			return retval;
 	}
 
+	reset = devm_reset_control_get_optional_exclusive(&dev->bus->dev, NULL);
+	if (IS_ERR(reset))
+		return PTR_ERR(reset);
+	reset_control_reset(reset);
+
 	/* Prevent runtime suspending between USB-2 and USB-3 initialization */
 	pm_runtime_get_noresume(&dev->dev);
 
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk"
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (4 preceding siblings ...)
  2020-06-09 17:49 ` [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers Nicolas Saenz Julienne
@ 2020-06-09 17:49 ` Nicolas Saenz Julienne
  2020-06-09 18:14   ` Florian Fainelli
  2020-06-09 17:50 ` [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4 Nicolas Saenz Julienne
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:49 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Mathias Nyman
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi,
	Nicolas Saenz Julienne

This reverts commit c65822fef4adc0ba40c37a47337376ce75f7a7bc.

The initialization of Raspberry Pi 4's USB chip is now handled through a
reset controller. No need to directly call the firmware routine trough a
pci quirk.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
 drivers/firmware/Kconfig      |  3 +--
 drivers/usb/host/pci-quirks.c | 16 ----------------
 2 files changed, 1 insertion(+), 18 deletions(-)

diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
index fbd785dd0513..4843e94713a4 100644
--- a/drivers/firmware/Kconfig
+++ b/drivers/firmware/Kconfig
@@ -178,9 +178,8 @@ config ISCSI_IBFT
 	  Otherwise, say N.
 
 config RASPBERRYPI_FIRMWARE
-	bool "Raspberry Pi Firmware Driver"
+	tristate "Raspberry Pi Firmware Driver"
 	depends on BCM2835_MBOX
-	default USB_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 0b949acfa258..92150ecdb036 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -16,9 +16,6 @@
 #include <linux/export.h>
 #include <linux/acpi.h>
 #include <linux/dmi.h>
-
-#include <soc/bcm2835/raspberrypi-firmware.h>
-
 #include "pci-quirks.h"
 #include "xhci-ext-caps.h"
 
@@ -1246,24 +1243,11 @@ 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. Will continue to attempt to work, but bad things might happen. You should fix this...\n",
-				 ret);
-		}
-	}
-
 	if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI &&
 			pdev->class != PCI_CLASS_SERIAL_USB_OHCI &&
 			pdev->class != PCI_CLASS_SERIAL_USB_EHCI &&
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (5 preceding siblings ...)
  2020-06-09 17:49 ` [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk" Nicolas Saenz Julienne
@ 2020-06-09 17:50 ` Nicolas Saenz Julienne
  2020-06-09 18:43   ` Andy Shevchenko
  2020-06-09 17:50 ` [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine" Nicolas Saenz Julienne
  2020-06-09 17:50 ` [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present" Nicolas Saenz Julienne
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:50 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Mathias Nyman
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi,
	Nicolas Saenz Julienne

The board doesn't need the quirks to be run, and takes care of its own
initialization trough a reset controller device. So let's bypass them.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

---

Changes since v1:
 - Correct typos

 drivers/usb/host/pci-quirks.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 92150ecdb036..294412ebbd0b 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -16,6 +16,8 @@
 #include <linux/export.h>
 #include <linux/acpi.h>
 #include <linux/dmi.h>
+#include <linux/of.h>
+
 #include "pci-quirks.h"
 #include "xhci-ext-caps.h"
 
@@ -1248,6 +1250,16 @@ static void quirk_usb_early_handoff(struct pci_dev *pdev)
 	 */
 	if (pdev->vendor == 0x184e)	/* vendor Netlogic */
 		return;
+
+	/*
+	 * Bypass the Raspberry Pi 4 controller xHCI controller, things are
+	 * taken care of by the board's co-processor.
+	 */
+	if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483 &&
+	    of_device_is_compatible(of_get_parent(pdev->bus->dev.of_node),
+				    "brcm,bcm2711-pcie"))
+		return;
+
 	if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI &&
 			pdev->class != PCI_CLASS_SERIAL_USB_OHCI &&
 			pdev->class != PCI_CLASS_SERIAL_USB_EHCI &&
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine"
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (6 preceding siblings ...)
  2020-06-09 17:50 ` [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4 Nicolas Saenz Julienne
@ 2020-06-09 17:50 ` Nicolas Saenz Julienne
  2020-06-09 18:15   ` Florian Fainelli
  2020-06-09 17:50 ` [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present" Nicolas Saenz Julienne
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:50 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Ray Jui,
	Scott Branden, bcm-kernel-feedback-list, Nicolas Saenz Julienne
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	lorenzo.pieralisi

This reverts commit fbbc5ff3f7f9f4cad562e530ae2cf5d8964fe6d3.

The vl805 init routine has moved into drivers/reset/reset-raspberrypi.c

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
 drivers/firmware/raspberrypi.c             | 61 ----------------------
 include/soc/bcm2835/raspberrypi-firmware.h |  7 ---
 2 files changed, 68 deletions(-)

diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
index ef8098856a47..a3e85186f8e6 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
@@ -12,8 +12,6 @@
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
-#include <linux/pci.h>
-#include <linux/delay.h>
 #include <soc/bcm2835/raspberrypi-firmware.h>
 
 #define MBOX_MSG(chan, data28)		(((data28) & ~0xf) | ((chan) & 0xf))
@@ -21,8 +19,6 @@
 #define MBOX_DATA28(msg)		((msg) & ~0xf)
 #define MBOX_CHAN_PROPERTY		8
 
-#define VL805_PCI_CONFIG_VERSION_OFFSET		0x50
-
 static struct platform_device *rpi_hwmon;
 static struct platform_device *rpi_clk;
 
@@ -284,63 +280,6 @@ struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
 }
 EXPORT_SYMBOL_GPL(rpi_firmware_get);
 
-/*
- * The Raspberry Pi 4 gets its USB functionality from VL805, a PCIe chip that
- * implements xHCI. 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. RPi4's VideoCore OS contains both the non public firmware load
- * logic and the VL805 firmware blob. This function triggers the aforementioned
- * process.
- */
-int rpi_firmware_init_vl805(struct pci_dev *pdev)
-{
-	struct device_node *fw_np;
-	struct rpi_firmware *fw;
-	u32 dev_addr, version;
-	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 -ENODEV;
-
-	/*
-	 * Make sure we don't trigger a firmware load unnecessarily.
-	 *
-	 * If something went wrong with PCI, this whole exercise would be
-	 * futile as VideoCore expects from us a configured PCI bus. Just take
-	 * the faulty version (likely ~0) and let xHCI's registration fail
-	 * further down the line.
-	 */
-	pci_read_config_dword(pdev, VL805_PCI_CONFIG_VERSION_OFFSET, &version);
-	if (version)
-		goto exit;
-
-	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;
-
-	/* Wait for vl805 to startup */
-	usleep_range(200, 1000);
-
-	pci_read_config_dword(pdev, VL805_PCI_CONFIG_VERSION_OFFSET,
-			      &version);
-exit:
-	pci_info(pdev, "VL805 firmware version %08x\n", version);
-
-	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 3025aca3c358..cc9cdbc66403 100644
--- a/include/soc/bcm2835/raspberrypi-firmware.h
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
@@ -10,7 +10,6 @@
 #include <linux/of_device.h>
 
 struct rpi_firmware;
-struct pci_dev;
 
 enum rpi_firmware_property_status {
 	RPI_FIRMWARE_STATUS_REQUEST = 0,
@@ -142,7 +141,6 @@ 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)
@@ -160,11 +158,6 @@ static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware
 {
 	return NULL;
 }
-
-static inline int rpi_firmware_init_vl805(struct pci_dev *pdev)
-{
-	return 0;
-}
 #endif
 
 #endif /* __SOC_RASPBERRY_FIRMWARE_H__ */
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present"
  2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
                   ` (7 preceding siblings ...)
  2020-06-09 17:50 ` [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine" Nicolas Saenz Julienne
@ 2020-06-09 17:50 ` Nicolas Saenz Julienne
  2020-06-09 18:15   ` Florian Fainelli
  8 siblings, 1 reply; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-09 17:50 UTC (permalink / raw)
  To: f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel,
	Nicolas Saenz Julienne, Lorenzo Pieralisi, Rob Herring,
	bcm-kernel-feedback-list
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	Bjorn Helgaas

This reverts commit 44331189f9082c7e659697bbac1747db3def73e7.

Now that the VL805 init routine is run through a reset controller driver
the device dependencies are being taken care of by the device core. No
need to do it manually here.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
 drivers/pci/controller/pcie-brcmstb.c | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
index 7730ea845ff2..752f5b331579 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -28,8 +28,6 @@
 #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 */
@@ -931,26 +929,11 @@ 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 Raspberry Pi's firmware interface to be up as a
-	 * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
-	 * probe can race with the firmware interface's (see
-	 * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
-	 */
-	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


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller
  2020-06-09 17:49 ` [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller Nicolas Saenz Julienne
@ 2020-06-09 18:07   ` Florian Fainelli
  2020-06-10 15:37     ` Nicolas Saenz Julienne
  0 siblings, 1 reply; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:07 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, gregkh, wahrenst, p.zabel, linux-kernel,
	Ray Jui, Scott Branden, bcm-kernel-feedback-list, Eric Anholt
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	lorenzo.pieralisi, Rob Herring, devicetree



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> The firmware running on the RPi VideoCore can be used to reset and
> initialize HW controlled by the firmware.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> 
> ---
> 
> Changes since v1:
>  - Correct cells binding as per Florian's comment
>  - Change compatible string to be more generic
> 
>  .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
> index b48ed875eb8e..23a885af3a28 100644
> --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
> +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
> @@ -39,6 +39,22 @@ properties:
>        - compatible
>        - "#clock-cells"
>  
> +  reset:
> +    type: object
> +
> +    properties:
> +      compatible:
> +        const: raspberrypi,firmware-reset
> +
> +      "#reset-cells":
> +        const: 1
> +        description: >

Is this a stray '>' character? If so, with that fixed:

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers
  2020-06-09 17:49 ` [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers Nicolas Saenz Julienne
@ 2020-06-09 18:13   ` Florian Fainelli
  2020-06-10 15:49     ` Nicolas Saenz Julienne
  0 siblings, 1 reply; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:13 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Mathias Nyman
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> Some atypical users of xhci-pci might need to manually reset their xHCI
> controller before starting the HCD setup. Check if a reset controller
> device is available to the PCI bus and trigger a reset.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> 
> ---
> 
> Changes since v1:
>  - Use proper reset API
>  - Make code simpler
> 
>  drivers/usb/host/xhci-pci.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> index ef513c2fb843..6e96affa4ceb 100644
> --- a/drivers/usb/host/xhci-pci.c
> +++ b/drivers/usb/host/xhci-pci.c
> @@ -12,6 +12,7 @@
>  #include <linux/slab.h>
>  #include <linux/module.h>
>  #include <linux/acpi.h>
> +#include <linux/reset.h>
>  
>  #include "xhci.h"
>  #include "xhci-trace.h"
> @@ -339,6 +340,7 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
>  	struct xhci_hcd *xhci;
>  	struct usb_hcd *hcd;
>  	struct xhci_driver_data *driver_data;
> +	struct reset_control *reset;
>  
>  	driver_data = (struct xhci_driver_data *)id->driver_data;
>  	if (driver_data && driver_data->quirks & XHCI_RENESAS_FW_QUIRK) {
> @@ -347,6 +349,11 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
>  			return retval;
>  	}
>  
> +	reset = devm_reset_control_get_optional_exclusive(&dev->bus->dev, NULL);
> +	if (IS_ERR(reset))
> +		return PTR_ERR(reset);
> +	reset_control_reset(reset);

Sorry for not catching this earlier, since this is a generic integration
with the reset controller API, should not you also add a
reset_control_reset() to hcd_pci_resume() for symmetry?

> +
>  	/* Prevent runtime suspending between USB-2 and USB-3 initialization */
>  	pm_runtime_get_noresume(&dev->dev);
>  
> 

-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware reset controller
  2020-06-09 17:49 ` [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware " Nicolas Saenz Julienne
@ 2020-06-09 18:14   ` Florian Fainelli
  2020-06-10 15:37     ` Nicolas Saenz Julienne
  0 siblings, 1 reply; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:14 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> Raspberry Pi 4's co-processor controls some of the board's HW
> initialization process, but it's up to Linux to trigger it when
> relevant. Introduce a reset controller capable of interfacing with
> RPi4's co-processor that models these firmware initialization routines as
> reset lines.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> 
> ---
> 
> Changes since v1:
>   - Make the whole driver less USB centric as per Florian's comments
> 
>  drivers/reset/Kconfig             |  11 +++
>  drivers/reset/Makefile            |   1 +
>  drivers/reset/reset-raspberrypi.c | 126 ++++++++++++++++++++++++++++++
>  3 files changed, 138 insertions(+)
>  create mode 100644 drivers/reset/reset-raspberrypi.c
> 
> diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
> index d9efbfd29646..97e848740e13 100644
> --- a/drivers/reset/Kconfig
> +++ b/drivers/reset/Kconfig
> @@ -140,6 +140,17 @@ config RESET_QCOM_PDC
>  	  to control reset signals provided by PDC for Modem, Compute,
>  	  Display, GPU, Debug, AOP, Sensors, Audio, SP and APPS.
>  
> +config RESET_RASPBERRYPI
> +	tristate "Raspberry Pi 4 Firmware Reset Driver"
> +	depends on RASPBERRYPI_FIRMWARE || (RASPBERRYPI_FIRMWARE=n && COMPILE_TEST)
> +	default USB_XHCI_PCI
> +	help
> +	  Raspberry Pi 4's co-processor controls some of the board's HW
> +	  initialization process, but it's up to Linux to trigger it when
> +	  relevant. This driver provides a reset controller capable of
> +	  interfacing with RPi4's co-processor and model these firmware
> +	  initialization routines as reset lines.
> +
>  config RESET_SCMI
>  	tristate "Reset driver controlled via ARM SCMI interface"
>  	depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
> diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
> index 249ed357c997..16947610cc3b 100644
> --- a/drivers/reset/Makefile
> +++ b/drivers/reset/Makefile
> @@ -21,6 +21,7 @@ obj-$(CONFIG_RESET_OXNAS) += reset-oxnas.o
>  obj-$(CONFIG_RESET_PISTACHIO) += reset-pistachio.o
>  obj-$(CONFIG_RESET_QCOM_AOSS) += reset-qcom-aoss.o
>  obj-$(CONFIG_RESET_QCOM_PDC) += reset-qcom-pdc.o
> +obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o
>  obj-$(CONFIG_RESET_SCMI) += reset-scmi.o
>  obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o
>  obj-$(CONFIG_RESET_STM32MP157) += reset-stm32mp1.o
> diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-raspberrypi.c
> new file mode 100644
> index 000000000000..5fc8c6319a20
> --- /dev/null
> +++ b/drivers/reset/reset-raspberrypi.c
> @@ -0,0 +1,126 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Raspberry Pi 4 firmware reset driver
> + *
> + * Copyright (C) 2020 Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> + */
> +#include <linux/delay.h>
> +#include <linux/device.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/reset-controller.h>
> +#include <soc/bcm2835/raspberrypi-firmware.h>
> +
> +struct rpi_reset {
> +	struct reset_controller_dev rcdev;
> +	struct rpi_firmware *fw;
> +};
> +
> +enum rpi_reset_ids {
> +	RASPBERRYPI_FIRMWARE_RESET_ID_USB,

You should probably move this to a header file under
include/dt-bindings/reset/ in order to ensure that what gets referenced
by the DTS is in sync with what the driver knows about.

With that:

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk"
  2020-06-09 17:49 ` [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk" Nicolas Saenz Julienne
@ 2020-06-09 18:14   ` Florian Fainelli
  0 siblings, 0 replies; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:14 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Mathias Nyman
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> This reverts commit c65822fef4adc0ba40c37a47337376ce75f7a7bc.
> 
> The initialization of Raspberry Pi 4's USB chip is now handled through a
> reset controller. No need to directly call the firmware routine trough a
> pci quirk.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine"
  2020-06-09 17:50 ` [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine" Nicolas Saenz Julienne
@ 2020-06-09 18:15   ` Florian Fainelli
  0 siblings, 0 replies; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:15 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Ray Jui, Scott Branden, bcm-kernel-feedback-list
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	lorenzo.pieralisi



On 6/9/2020 10:50 AM, Nicolas Saenz Julienne wrote:
> This reverts commit fbbc5ff3f7f9f4cad562e530ae2cf5d8964fe6d3.
> 
> The vl805 init routine has moved into drivers/reset/reset-raspberrypi.c
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present"
  2020-06-09 17:50 ` [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present" Nicolas Saenz Julienne
@ 2020-06-09 18:15   ` Florian Fainelli
  0 siblings, 0 replies; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:15 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Lorenzo Pieralisi, Rob Herring,
	bcm-kernel-feedback-list
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	Bjorn Helgaas



On 6/9/2020 10:50 AM, Nicolas Saenz Julienne wrote:
> This reverts commit 44331189f9082c7e659697bbac1747db3def73e7.
> 
> Now that the VL805 init routine is run through a reset controller driver
> the device dependencies are being taken care of by the device core. No
> need to do it manually here.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node
  2020-06-09 17:49 ` [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node Nicolas Saenz Julienne
@ 2020-06-09 18:16   ` Florian Fainelli
  0 siblings, 0 replies; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:16 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Rob Herring
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi, devicetree



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> The chip is hardwired to the board's PCIe bus and needs to be properly
> setup trough a firmware routine after a PCI fundamental reset. Pass the
> reset controller phandle that takes care of triggering the
> initialization to the relevant PCI device.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

With the comment from patch #2 to move the reset identifiers to a shared
header that can be referenced by this file:

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node
  2020-06-09 17:49 ` [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node Nicolas Saenz Julienne
@ 2020-06-09 18:16   ` Florian Fainelli
  0 siblings, 0 replies; 23+ messages in thread
From: Florian Fainelli @ 2020-06-09 18:16 UTC (permalink / raw)
  To: Nicolas Saenz Julienne, f.fainelli, gregkh, wahrenst, p.zabel,
	linux-kernel, Rob Herring
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi, devicetree



On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> Now that the reset driver exposing Raspberry Pi 4's firmware based USB
> reset routine is available, let's add the device tree node exposing it.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4
  2020-06-09 17:50 ` [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4 Nicolas Saenz Julienne
@ 2020-06-09 18:43   ` Andy Shevchenko
  2020-06-10 15:57     ` Nicolas Saenz Julienne
  0 siblings, 1 reply; 23+ messages in thread
From: Andy Shevchenko @ 2020-06-09 18:43 UTC (permalink / raw)
  To: Nicolas Saenz Julienne
  Cc: Florian Fainelli, Greg Kroah-Hartman, Stefan Wahren,
	Philipp Zabel, Linux Kernel Mailing List, Mathias Nyman, USB,
	linux-rpi-kernel, linux-arm Mailing List,
	bcm-kernel-feedback-list, tim.gover, linux-pci, Bjorn Helgaas,
	Mathias Nyman, Lorenzo Pieralisi

On Tue, Jun 9, 2020 at 8:50 PM Nicolas Saenz Julienne
<nsaenzjulienne@suse.de> wrote:
>
> The board doesn't need the quirks to be run, and takes care of its own
> initialization trough a reset controller device. So let's bypass them.

through

...

> +       if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483 &&
> +           of_device_is_compatible(of_get_parent(pdev->bus->dev.of_node),
> +                                   "brcm,bcm2711-pcie"))
> +               return;

No put?

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller
  2020-06-09 18:07   ` Florian Fainelli
@ 2020-06-10 15:37     ` Nicolas Saenz Julienne
  0 siblings, 0 replies; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-10 15:37 UTC (permalink / raw)
  To: Florian Fainelli, gregkh, wahrenst, p.zabel, linux-kernel,
	Ray Jui, Scott Branden, bcm-kernel-feedback-list, Eric Anholt
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel, tim.gover,
	linux-pci, helgaas, andy.shevchenko, mathias.nyman,
	lorenzo.pieralisi, Rob Herring, devicetree

[-- Attachment #1: Type: text/plain, Size: 1604 bytes --]

Hi Florian, thanks for the review :)

On Tue, 2020-06-09 at 11:07 -0700, Florian Fainelli wrote:
> 
> On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> > The firmware running on the RPi VideoCore can be used to reset and
> > initialize HW controlled by the firmware.
> > 
> > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> > 
> > ---
> > 
> > Changes since v1:
> >  - Correct cells binding as per Florian's comment
> >  - Change compatible string to be more generic
> > 
> >  .../arm/bcm/raspberrypi,bcm2835-firmware.yaml | 21 +++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-
> > firmware.yaml
> > b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-
> > firmware.yaml
> > index b48ed875eb8e..23a885af3a28 100644
> > --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-
> > firmware.yaml
> > +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-
> > firmware.yaml
> > @@ -39,6 +39,22 @@ properties:
> >        - compatible
> >        - "#clock-cells"
> >  
> > +  reset:
> > +    type: object
> > +
> > +    properties:
> > +      compatible:
> > +        const: raspberrypi,firmware-reset
> > +
> > +      "#reset-cells":
> > +        const: 1
> > +        description: >
> 
> Is this a stray '>' character? If so, with that fixed:

No, it marks the formatting of the text below. | will keep the formatting as
is, > will leave the formatting to whatever is going to use it.

Regards,
Nicolas


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware reset controller
  2020-06-09 18:14   ` Florian Fainelli
@ 2020-06-10 15:37     ` Nicolas Saenz Julienne
  0 siblings, 0 replies; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-10 15:37 UTC (permalink / raw)
  To: Florian Fainelli, f.fainelli, gregkh, wahrenst, p.zabel, linux-kernel
  Cc: linux-usb, linux-rpi-kernel, linux-arm-kernel,
	bcm-kernel-feedback-list, tim.gover, linux-pci, helgaas,
	andy.shevchenko, mathias.nyman, lorenzo.pieralisi

[-- Attachment #1: Type: text/plain, Size: 3806 bytes --]

On Tue, 2020-06-09 at 11:14 -0700, Florian Fainelli wrote:
> 
> On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> > Raspberry Pi 4's co-processor controls some of the board's HW
> > initialization process, but it's up to Linux to trigger it when
> > relevant. Introduce a reset controller capable of interfacing with
> > RPi4's co-processor that models these firmware initialization routines as
> > reset lines.
> > 
> > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> > 
> > ---
> > 
> > Changes since v1:
> >   - Make the whole driver less USB centric as per Florian's comments
> > 
> >  drivers/reset/Kconfig             |  11 +++
> >  drivers/reset/Makefile            |   1 +
> >  drivers/reset/reset-raspberrypi.c | 126 ++++++++++++++++++++++++++++++
> >  3 files changed, 138 insertions(+)
> >  create mode 100644 drivers/reset/reset-raspberrypi.c
> > 
> > diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
> > index d9efbfd29646..97e848740e13 100644
> > --- a/drivers/reset/Kconfig
> > +++ b/drivers/reset/Kconfig
> > @@ -140,6 +140,17 @@ config RESET_QCOM_PDC
> >  	  to control reset signals provided by PDC for Modem, Compute,
> >  	  Display, GPU, Debug, AOP, Sensors, Audio, SP and APPS.
> >  
> > +config RESET_RASPBERRYPI
> > +	tristate "Raspberry Pi 4 Firmware Reset Driver"
> > +	depends on RASPBERRYPI_FIRMWARE || (RASPBERRYPI_FIRMWARE=n &&
> > COMPILE_TEST)
> > +	default USB_XHCI_PCI
> > +	help
> > +	  Raspberry Pi 4's co-processor controls some of the board's HW
> > +	  initialization process, but it's up to Linux to trigger it when
> > +	  relevant. This driver provides a reset controller capable of
> > +	  interfacing with RPi4's co-processor and model these firmware
> > +	  initialization routines as reset lines.
> > +
> >  config RESET_SCMI
> >  	tristate "Reset driver controlled via ARM SCMI interface"
> >  	depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
> > diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
> > index 249ed357c997..16947610cc3b 100644
> > --- a/drivers/reset/Makefile
> > +++ b/drivers/reset/Makefile
> > @@ -21,6 +21,7 @@ obj-$(CONFIG_RESET_OXNAS) += reset-oxnas.o
> >  obj-$(CONFIG_RESET_PISTACHIO) += reset-pistachio.o
> >  obj-$(CONFIG_RESET_QCOM_AOSS) += reset-qcom-aoss.o
> >  obj-$(CONFIG_RESET_QCOM_PDC) += reset-qcom-pdc.o
> > +obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o
> >  obj-$(CONFIG_RESET_SCMI) += reset-scmi.o
> >  obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o
> >  obj-$(CONFIG_RESET_STM32MP157) += reset-stm32mp1.o
> > diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-
> > raspberrypi.c
> > new file mode 100644
> > index 000000000000..5fc8c6319a20
> > --- /dev/null
> > +++ b/drivers/reset/reset-raspberrypi.c
> > @@ -0,0 +1,126 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Raspberry Pi 4 firmware reset driver
> > + *
> > + * Copyright (C) 2020 Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> > + */
> > +#include <linux/delay.h>
> > +#include <linux/device.h>
> > +#include <linux/module.h>
> > +#include <linux/of.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/reset-controller.h>
> > +#include <soc/bcm2835/raspberrypi-firmware.h>
> > +
> > +struct rpi_reset {
> > +	struct reset_controller_dev rcdev;
> > +	struct rpi_firmware *fw;
> > +};
> > +
> > +enum rpi_reset_ids {
> > +	RASPBERRYPI_FIRMWARE_RESET_ID_USB,
> 
> You should probably move this to a header file under
> include/dt-bindings/reset/ in order to ensure that what gets referenced
> by the DTS is in sync with what the driver knows about.
> 
> With that:
> 
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Thanks! Will fix that on v3.

Regards,
Nicolas


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers
  2020-06-09 18:13   ` Florian Fainelli
@ 2020-06-10 15:49     ` Nicolas Saenz Julienne
  0 siblings, 0 replies; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-10 15:49 UTC (permalink / raw)
  To: Florian Fainelli, gregkh, wahrenst, p.zabel, linux-kernel, Mathias Nyman
  Cc: tim.gover, mathias.nyman, linux-pci, linux-usb, andy.shevchenko,
	lorenzo.pieralisi, bcm-kernel-feedback-list, linux-rpi-kernel,
	helgaas, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 2150 bytes --]

Hi Florian,

On Tue, 2020-06-09 at 11:13 -0700, Florian Fainelli wrote:
> 
> On 6/9/2020 10:49 AM, Nicolas Saenz Julienne wrote:
> > Some atypical users of xhci-pci might need to manually reset their xHCI
> > controller before starting the HCD setup. Check if a reset controller
> > device is available to the PCI bus and trigger a reset.
> > 
> > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> > 
> > ---
> > 
> > Changes since v1:
> >  - Use proper reset API
> >  - Make code simpler
> > 
> >  drivers/usb/host/xhci-pci.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> > index ef513c2fb843..6e96affa4ceb 100644
> > --- a/drivers/usb/host/xhci-pci.c
> > +++ b/drivers/usb/host/xhci-pci.c
> > @@ -12,6 +12,7 @@
> >  #include <linux/slab.h>
> >  #include <linux/module.h>
> >  #include <linux/acpi.h>
> > +#include <linux/reset.h>
> >  
> >  #include "xhci.h"
> >  #include "xhci-trace.h"
> > @@ -339,6 +340,7 @@ static int xhci_pci_probe(struct pci_dev *dev, const
> > struct pci_device_id *id)
> >  	struct xhci_hcd *xhci;
> >  	struct usb_hcd *hcd;
> >  	struct xhci_driver_data *driver_data;
> > +	struct reset_control *reset;
> >  
> >  	driver_data = (struct xhci_driver_data *)id->driver_data;
> >  	if (driver_data && driver_data->quirks & XHCI_RENESAS_FW_QUIRK) {
> > @@ -347,6 +349,11 @@ static int xhci_pci_probe(struct pci_dev *dev, const
> > struct pci_device_id *id)
> >  			return retval;
> >  	}
> >  
> > +	reset = devm_reset_control_get_optional_exclusive(&dev->bus->dev, NULL);
> > +	if (IS_ERR(reset))
> > +		return PTR_ERR(reset);
> > +	reset_control_reset(reset);
> 
> Sorry for not catching this earlier, since this is a generic integration
> with the reset controller API, should not you also add a
> reset_control_reset() to hcd_pci_resume() for symmetry?

Agreed, if the RPi4 supported suspend/resume, which AFAIK doesn't, an extra
reset would be needed as pcie-brcmstb performs a fundamental reset on resume
forcing us to reinitialize vl805.

Thanks!
Nicolas


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4
  2020-06-09 18:43   ` Andy Shevchenko
@ 2020-06-10 15:57     ` Nicolas Saenz Julienne
  0 siblings, 0 replies; 23+ messages in thread
From: Nicolas Saenz Julienne @ 2020-06-10 15:57 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Florian Fainelli, Greg Kroah-Hartman, Stefan Wahren,
	Philipp Zabel, Linux Kernel Mailing List, Mathias Nyman, USB,
	linux-rpi-kernel, linux-arm Mailing List,
	bcm-kernel-feedback-list, tim.gover, linux-pci, Bjorn Helgaas,
	Mathias Nyman, Lorenzo Pieralisi

[-- Attachment #1: Type: text/plain, Size: 689 bytes --]

Hi Andy,
Thanks for the review.

On Tue, 2020-06-09 at 21:43 +0300, Andy Shevchenko wrote:
> On Tue, Jun 9, 2020 at 8:50 PM Nicolas Saenz Julienne
> <nsaenzjulienne@suse.de> wrote:
> > The board doesn't need the quirks to be run, and takes care of its own
> > initialization trough a reset controller device. So let's bypass them.
> 
> through

Noted

> ...
> 
> > +       if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483 &&
> > +           of_device_is_compatible(of_get_parent(pdev->bus->dev.of_node),
> > +                                   "brcm,bcm2711-pcie"))
> > +               return;
> 
> No put?

Missed that, sorry.

Regards,
Nicolas


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2020-06-10 15:57 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-09 17:49 [PATCH v2 0/9] Raspberry Pi 4 USB firmware initialization rework Nicolas Saenz Julienne
2020-06-09 17:49 ` [PATCH v2 1/9] dt-bindings: reset: Add a binding for the RPi Firmware reset controller Nicolas Saenz Julienne
2020-06-09 18:07   ` Florian Fainelli
2020-06-10 15:37     ` Nicolas Saenz Julienne
2020-06-09 17:49 ` [PATCH v2 2/9] reset: Add Raspberry Pi 4 firmware " Nicolas Saenz Julienne
2020-06-09 18:14   ` Florian Fainelli
2020-06-10 15:37     ` Nicolas Saenz Julienne
2020-06-09 17:49 ` [PATCH v2 3/9] ARM: dts: bcm2711: Add firmware usb reset node Nicolas Saenz Julienne
2020-06-09 18:16   ` Florian Fainelli
2020-06-09 17:49 ` [PATCH v2 4/9] ARM: dts: bcm2711: Add reset controller to xHCI node Nicolas Saenz Julienne
2020-06-09 18:16   ` Florian Fainelli
2020-06-09 17:49 ` [PATCH v2 5/9] usb: xhci-pci: Add support for reset controllers Nicolas Saenz Julienne
2020-06-09 18:13   ` Florian Fainelli
2020-06-10 15:49     ` Nicolas Saenz Julienne
2020-06-09 17:49 ` [PATCH v2 6/9] Revert "USB: pci-quirks: Add Raspberry Pi 4 quirk" Nicolas Saenz Julienne
2020-06-09 18:14   ` Florian Fainelli
2020-06-09 17:50 ` [PATCH v2 7/9] usb: host: pci-quirks: Bypass xHCI quirks for Raspberry Pi 4 Nicolas Saenz Julienne
2020-06-09 18:43   ` Andy Shevchenko
2020-06-10 15:57     ` Nicolas Saenz Julienne
2020-06-09 17:50 ` [PATCH v2 8/9] Revert "firmware: raspberrypi: Introduce vl805 init routine" Nicolas Saenz Julienne
2020-06-09 18:15   ` Florian Fainelli
2020-06-09 17:50 ` [PATCH v2 9/9] Revert "PCI: brcmstb: Wait for Raspberry Pi's firmware when present" Nicolas Saenz Julienne
2020-06-09 18:15   ` Florian Fainelli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).