747 lines
27 KiB
Diff
747 lines
27 KiB
Diff
From patchwork Fri Jun 12 16:46:29 2020
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
X-Patchwork-Id: 1308405
|
|
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
X-Original-To: incoming@patchwork.ozlabs.org
|
|
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
Authentication-Results: ozlabs.org;
|
|
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
|
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
Authentication-Results: ozlabs.org;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
|
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest
|
|
SHA256) (No client certificate requested)
|
|
by ozlabs.org (Postfix) with ESMTPS id 49k68q2wrsz9sRN
|
|
for <incoming@patchwork.ozlabs.org>; Sat, 13 Jun 2020 02:47:37 +1000 (AEST)
|
|
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
by phobos.denx.de (Postfix) with ESMTP id 51B4181C78;
|
|
Fri, 12 Jun 2020 18:47:28 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
id D3D0681CD0; Fri, 12 Jun 2020 18:47:26 +0200 (CEST)
|
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
X-Spam-Level:
|
|
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3,
|
|
RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham
|
|
autolearn_force=no version=3.4.2
|
|
Received: from mx2.suse.de (mx2.suse.de [195.135.220.15])
|
|
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
(No client certificate requested)
|
|
by phobos.denx.de (Postfix) with ESMTPS id A5E2A81C78
|
|
for <u-boot@lists.denx.de>; Fri, 12 Jun 2020 18:47:23 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=nsaenzjulienne@suse.de
|
|
Received: from relay2.suse.de (unknown [195.135.220.254])
|
|
by mx2.suse.de (Postfix) with ESMTP id 93F95AC64;
|
|
Fri, 12 Jun 2020 16:47:26 +0000 (UTC)
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de,
|
|
linux-kernel@vger.kernel.org
|
|
Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com,
|
|
mark.kettenis@xs4all.nl, Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Subject: [PATCH v4 1/5] arm: rpi: Add function to trigger VL805's firmware load
|
|
Date: Fri, 12 Jun 2020 18:46:29 +0200
|
|
Message-Id: <20200612164632.25648-2-nsaenzjulienne@suse.de>
|
|
X-Mailer: git-send-email 2.26.2
|
|
In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
References: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
MIME-Version: 1.0
|
|
X-BeenThere: u-boot@lists.denx.de
|
|
X-Mailman-Version: 2.1.30rc1
|
|
Precedence: list
|
|
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
List-Post: <mailto:u-boot@lists.denx.de>
|
|
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
Errors-To: u-boot-bounces@lists.denx.de
|
|
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de
|
|
X-Virus-Status: Clean
|
|
|
|
On the Raspberry Pi 4, after a PCI reset, VL805's (a xHCI chip) firmware
|
|
may either be loaded directly from an EEPROM or, if not present, by the
|
|
SoC's VideCore (the SoC's co-processor). Introduce the function that
|
|
informs VideCore that VL805 may need its firmware loaded.
|
|
|
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
---
|
|
Changes since v1:
|
|
- Rename function so it's not mistaken with regular firmware loading
|
|
---
|
|
arch/arm/mach-bcm283x/include/mach/mbox.h | 13 +++++++
|
|
arch/arm/mach-bcm283x/include/mach/msg.h | 7 ++++
|
|
arch/arm/mach-bcm283x/msg.c | 46 +++++++++++++++++++++++
|
|
3 files changed, 66 insertions(+)
|
|
|
|
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
|
index 60e226ce1d..2ae2d3d97c 100644
|
|
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
|
|
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
|
@@ -491,6 +491,19 @@ struct bcm2835_mbox_tag_set_palette {
|
|
} body;
|
|
};
|
|
|
|
+#define BCM2835_MBOX_TAG_NOTIFY_XHCI_RESET 0x00030058
|
|
+
|
|
+struct bcm2835_mbox_tag_pci_dev_addr {
|
|
+ struct bcm2835_mbox_tag_hdr tag_hdr;
|
|
+ union {
|
|
+ struct {
|
|
+ u32 dev_addr;
|
|
+ } req;
|
|
+ struct {
|
|
+ } resp;
|
|
+ } body;
|
|
+};
|
|
+
|
|
/*
|
|
* Pass a raw u32 message to the VC, and receive a raw u32 back.
|
|
*
|
|
diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h
|
|
index 4afb08631b..e45c1bf010 100644
|
|
--- a/arch/arm/mach-bcm283x/include/mach/msg.h
|
|
+++ b/arch/arm/mach-bcm283x/include/mach/msg.h
|
|
@@ -48,4 +48,11 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp,
|
|
int pixel_order, int alpha_mode, ulong *fb_basep,
|
|
ulong *fb_sizep, int *pitchp);
|
|
|
|
+/**
|
|
+ * bcm2711_load_vl805_firmware() - get vl805's firmware loaded
|
|
+ *
|
|
+ * @return 0 if OK, -EIO on error
|
|
+ */
|
|
+int bcm2711_notify_vl805_reset(void);
|
|
+
|
|
#endif
|
|
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c
|
|
index 94b75283f8..347aece3cd 100644
|
|
--- a/arch/arm/mach-bcm283x/msg.c
|
|
+++ b/arch/arm/mach-bcm283x/msg.c
|
|
@@ -7,6 +7,7 @@
|
|
#include <memalign.h>
|
|
#include <phys2bus.h>
|
|
#include <asm/arch/mbox.h>
|
|
+#include <linux/delay.h>
|
|
|
|
struct msg_set_power_state {
|
|
struct bcm2835_mbox_hdr hdr;
|
|
@@ -40,6 +41,12 @@ struct msg_setup {
|
|
u32 end_tag;
|
|
};
|
|
|
|
+struct msg_notify_vl805_reset {
|
|
+ struct bcm2835_mbox_hdr hdr;
|
|
+ struct bcm2835_mbox_tag_pci_dev_addr dev_addr;
|
|
+ u32 end_tag;
|
|
+};
|
|
+
|
|
int bcm2835_power_on_module(u32 module)
|
|
{
|
|
ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1);
|
|
@@ -151,3 +158,42 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp,
|
|
|
|
return 0;
|
|
}
|
|
+
|
|
+/*
|
|
+ * On the Raspberry Pi 4, after a PCI reset, VL805's (the xHCI chip) firmware
|
|
+ * may either be loaded directly from an EEPROM or, if not present, by the
|
|
+ * SoC's VideoCore. This informs VideoCore that VL805 needs its firmware
|
|
+ * loaded.
|
|
+ */
|
|
+int bcm2711_notify_vl805_reset(void)
|
|
+{
|
|
+ ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset,
|
|
+ msg_notify_vl805_reset, 1);
|
|
+ int ret;
|
|
+
|
|
+ BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset);
|
|
+ BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr,
|
|
+ NOTIFY_XHCI_RESET);
|
|
+
|
|
+ /*
|
|
+ * The pci device address is expected like this:
|
|
+ *
|
|
+ * PCI_BUS << 20 | PCI_SLOT << 15 | PCI_FUNC << 12
|
|
+ *
|
|
+ * But since RPi4's PCIe setup is hardwired, we know the address in
|
|
+ * advance.
|
|
+ */
|
|
+ msg_notify_vl805_reset->dev_addr.body.req.dev_addr = 0x100000;
|
|
+
|
|
+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN,
|
|
+ &msg_notify_vl805_reset->hdr);
|
|
+ if (ret) {
|
|
+ printf("bcm2711: Faild to load vl805's firmware, %d\n", ret);
|
|
+ return -EIO;
|
|
+ }
|
|
+
|
|
+ udelay(200);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
|
|
From patchwork Fri Jun 12 16:46:30 2020
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
X-Patchwork-Id: 1308409
|
|
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
X-Original-To: incoming@patchwork.ozlabs.org
|
|
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
Authentication-Results: ozlabs.org;
|
|
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
|
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
Authentication-Results: ozlabs.org;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
|
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
|
(No client certificate requested)
|
|
by ozlabs.org (Postfix) with ESMTPS id 49k69h2xb7z9s1x
|
|
for <incoming@patchwork.ozlabs.org>; Sat, 13 Jun 2020 02:48:24 +1000 (AEST)
|
|
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
by phobos.denx.de (Postfix) with ESMTP id 0365A81C78;
|
|
Fri, 12 Jun 2020 18:47:41 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
id 9031981CAF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST)
|
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
X-Spam-Level:
|
|
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3,
|
|
RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham
|
|
autolearn_force=no version=3.4.2
|
|
Received: from mx2.suse.de (mx2.suse.de [195.135.220.15])
|
|
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
(No client certificate requested)
|
|
by phobos.denx.de (Postfix) with ESMTPS id 4162B81C80
|
|
for <u-boot@lists.denx.de>; Fri, 12 Jun 2020 18:47:24 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=nsaenzjulienne@suse.de
|
|
Received: from relay2.suse.de (unknown [195.135.220.254])
|
|
by mx2.suse.de (Postfix) with ESMTP id 7CEA1AAD0;
|
|
Fri, 12 Jun 2020 16:47:27 +0000 (UTC)
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de,
|
|
linux-kernel@vger.kernel.org
|
|
Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com,
|
|
mark.kettenis@xs4all.nl, Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Subject: [PATCH v4 2/5] reset: Add Raspberry Pi 4 firmware reset controller
|
|
Date: Fri, 12 Jun 2020 18:46:30 +0200
|
|
Message-Id: <20200612164632.25648-3-nsaenzjulienne@suse.de>
|
|
X-Mailer: git-send-email 2.26.2
|
|
In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
References: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
MIME-Version: 1.0
|
|
X-BeenThere: u-boot@lists.denx.de
|
|
X-Mailman-Version: 2.1.30rc1
|
|
Precedence: list
|
|
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
List-Post: <mailto:u-boot@lists.denx.de>
|
|
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
Errors-To: u-boot-bounces@lists.denx.de
|
|
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de
|
|
X-Virus-Status: Clean
|
|
|
|
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>
|
|
---
|
|
drivers/reset/Kconfig | 10 ++++
|
|
drivers/reset/Makefile | 1 +
|
|
drivers/reset/reset-raspberrypi.c | 60 +++++++++++++++++++
|
|
.../reset/raspberrypi,firmware-reset.h | 13 ++++
|
|
4 files changed, 84 insertions(+)
|
|
create mode 100644 drivers/reset/reset-raspberrypi.c
|
|
create mode 100644 include/dt-bindings/reset/raspberrypi,firmware-reset.h
|
|
|
|
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
|
|
index 88d3be1593..d02c1522e5 100644
|
|
--- a/drivers/reset/Kconfig
|
|
+++ b/drivers/reset/Kconfig
|
|
@@ -148,4 +148,14 @@ config RESET_IMX7
|
|
help
|
|
Support for reset controller on i.MX7/8 SoCs.
|
|
|
|
+config RESET_RASPBERRYPI
|
|
+ bool "Raspberry Pi 4 Firmware Reset Controller Driver"
|
|
+ depends on DM_RESET && ARCH_BCM283X
|
|
+ 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.
|
|
endmenu
|
|
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
|
|
index 0a044d5d8c..be54dae725 100644
|
|
--- a/drivers/reset/Makefile
|
|
+++ b/drivers/reset/Makefile
|
|
@@ -23,3 +23,4 @@ obj-$(CONFIG_RESET_MTMIPS) += reset-mtmips.o
|
|
obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o
|
|
obj-$(CONFIG_RESET_HISILICON) += reset-hisilicon.o
|
|
obj-$(CONFIG_RESET_IMX7) += reset-imx7.o
|
|
+obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o
|
|
diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-raspberrypi.c
|
|
new file mode 100644
|
|
index 0000000000..e2d284e5ac
|
|
--- /dev/null
|
|
+++ b/drivers/reset/reset-raspberrypi.c
|
|
@@ -0,0 +1,60 @@
|
|
+// SPDX-License-Identifier: GPL-2.0
|
|
+/*
|
|
+ * Raspberry Pi 4 firmware reset driver
|
|
+ *
|
|
+ * Copyright (C) 2020 Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
+ */
|
|
+#include <common.h>
|
|
+#include <dm.h>
|
|
+#include <reset-uclass.h>
|
|
+#include <asm/arch/msg.h>
|
|
+#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
|
+
|
|
+static int raspberrypi_reset_request(struct reset_ctl *reset_ctl)
|
|
+{
|
|
+ if (reset_ctl->id >= RASPBERRYPI_FIRMWARE_RESET_NUM_IDS)
|
|
+ return -EINVAL;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static int raspberrypi_reset_free(struct reset_ctl *reset_ctl)
|
|
+{
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static int raspberrypi_reset_assert(struct reset_ctl *reset_ctl)
|
|
+{
|
|
+ switch (reset_ctl->id) {
|
|
+ case RASPBERRYPI_FIRMWARE_RESET_ID_USB:
|
|
+ bcm2711_notify_vl805_reset();
|
|
+ return 0;
|
|
+ default:
|
|
+ return -EINVAL;
|
|
+ }
|
|
+}
|
|
+
|
|
+static int raspberrypi_reset_deassert(struct reset_ctl *reset_ctl)
|
|
+{
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+struct reset_ops raspberrypi_reset_ops = {
|
|
+ .request = raspberrypi_reset_request,
|
|
+ .rfree = raspberrypi_reset_free,
|
|
+ .rst_assert = raspberrypi_reset_assert,
|
|
+ .rst_deassert = raspberrypi_reset_deassert,
|
|
+};
|
|
+
|
|
+static const struct udevice_id raspberrypi_reset_ids[] = {
|
|
+ { .compatible = "raspberrypi,firmware-reset" },
|
|
+ { }
|
|
+};
|
|
+
|
|
+U_BOOT_DRIVER(raspberrypi_reset) = {
|
|
+ .name = "raspberrypi-reset",
|
|
+ .id = UCLASS_RESET,
|
|
+ .of_match = raspberrypi_reset_ids,
|
|
+ .ops = &raspberrypi_reset_ops,
|
|
+};
|
|
+
|
|
diff --git a/include/dt-bindings/reset/raspberrypi,firmware-reset.h b/include/dt-bindings/reset/raspberrypi,firmware-reset.h
|
|
new file mode 100644
|
|
index 0000000000..1a4f4c7927
|
|
--- /dev/null
|
|
+++ b/include/dt-bindings/reset/raspberrypi,firmware-reset.h
|
|
@@ -0,0 +1,13 @@
|
|
+/* SPDX-License-Identifier: GPL-2.0 */
|
|
+/*
|
|
+ * Copyright (c) 2020 Nicolas Saenz Julienne
|
|
+ * Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.com>
|
|
+ */
|
|
+
|
|
+#ifndef _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H
|
|
+#define _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H
|
|
+
|
|
+#define RASPBERRYPI_FIRMWARE_RESET_ID_USB 0
|
|
+#define RASPBERRYPI_FIRMWARE_RESET_NUM_IDS 1
|
|
+
|
|
+#endif
|
|
|
|
From patchwork Fri Jun 12 16:46:32 2020
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
X-Patchwork-Id: 1308408
|
|
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
X-Original-To: incoming@patchwork.ozlabs.org
|
|
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
Authentication-Results: ozlabs.org;
|
|
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
|
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
Authentication-Results: ozlabs.org;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Received: from phobos.denx.de (phobos.denx.de
|
|
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
|
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest
|
|
SHA256) (No client certificate requested)
|
|
by ozlabs.org (Postfix) with ESMTPS id 49k69X1mVGz9s1x
|
|
for <incoming@patchwork.ozlabs.org>; Sat, 13 Jun 2020 02:48:16 +1000 (AEST)
|
|
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
by phobos.denx.de (Postfix) with ESMTP id 1349E81D14;
|
|
Fri, 12 Jun 2020 18:47:39 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
id 20B1781CCF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST)
|
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
X-Spam-Level:
|
|
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3,
|
|
RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham
|
|
autolearn_force=no version=3.4.2
|
|
Received: from mx2.suse.de (mx2.suse.de [195.135.220.15])
|
|
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
(No client certificate requested)
|
|
by phobos.denx.de (Postfix) with ESMTPS id DE87281CAF
|
|
for <u-boot@lists.denx.de>; Fri, 12 Jun 2020 18:47:25 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=nsaenzjulienne@suse.de
|
|
Received: from relay2.suse.de (unknown [195.135.220.254])
|
|
by mx2.suse.de (Postfix) with ESMTP id 3C117ACCF;
|
|
Fri, 12 Jun 2020 16:47:29 +0000 (UTC)
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de,
|
|
linux-kernel@vger.kernel.org
|
|
Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com,
|
|
mark.kettenis@xs4all.nl, Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Subject: [PATCH v4 4/5] dm: pci: Assign controller device node to root bridge
|
|
Date: Fri, 12 Jun 2020 18:46:32 +0200
|
|
Message-Id: <20200612164632.25648-5-nsaenzjulienne@suse.de>
|
|
X-Mailer: git-send-email 2.26.2
|
|
In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
References: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
MIME-Version: 1.0
|
|
X-BeenThere: u-boot@lists.denx.de
|
|
X-Mailman-Version: 2.1.30rc1
|
|
Precedence: list
|
|
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
List-Post: <mailto:u-boot@lists.denx.de>
|
|
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
Errors-To: u-boot-bounces@lists.denx.de
|
|
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de
|
|
X-Virus-Status: Clean
|
|
|
|
There is no distinction in DT between the PCI controller device and the
|
|
root bridge, whereas such distinction exists from dm's perspective. Make
|
|
sure the root bridge ofnode is assigned to the controller's platform
|
|
device node.
|
|
|
|
This permits setups like this to work correctly:
|
|
|
|
pcie {
|
|
compatible = "...";
|
|
...
|
|
dev {
|
|
reg = <0 0 0 0 0>;
|
|
...
|
|
};
|
|
};
|
|
|
|
Without this the dev node is assigned to the root bridge and the
|
|
actual device search starts one level lower than expected.
|
|
|
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
---
|
|
drivers/pci/pci-uclass.c | 15 ++++++++++++++-
|
|
1 file changed, 14 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
|
|
index 9ab3539a49..ea27e78465 100644
|
|
--- a/drivers/pci/pci-uclass.c
|
|
+++ b/drivers/pci/pci-uclass.c
|
|
@@ -762,7 +762,20 @@ static int pci_find_and_bind_driver(struct udevice *parent,
|
|
str = strdup(name);
|
|
if (!str)
|
|
return -ENOMEM;
|
|
- drv = bridge ? "pci_bridge_drv" : "pci_generic_drv";
|
|
+
|
|
+ if (bridge) {
|
|
+ drv = "pci_bridge_drv";
|
|
+
|
|
+ /*
|
|
+ * If we're dealing with the root bridge pass the parent device
|
|
+ * node, as there isn't a distinction in device tree between
|
|
+ * that and the actual controller platform device.
|
|
+ */
|
|
+ if (!PCI_MASK_BUS(bdf))
|
|
+ node = parent->node;
|
|
+ } else {
|
|
+ drv = "pci_generic_drv";
|
|
+ }
|
|
|
|
ret = device_bind_driver_to_node(parent, drv, str, node, devp);
|
|
if (ret) {
|
|
|
|
From patchwork Fri Jun 12 16:46:33 2020
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
X-Patchwork-Id: 1308407
|
|
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
X-Original-To: incoming@patchwork.ozlabs.org
|
|
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
Authentication-Results: ozlabs.org;
|
|
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
|
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
Authentication-Results: ozlabs.org;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
|
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
|
(No client certificate requested)
|
|
by ozlabs.org (Postfix) with ESMTPS id 49k69F21wdz9s1x
|
|
for <incoming@patchwork.ozlabs.org>; Sat, 13 Jun 2020 02:48:01 +1000 (AEST)
|
|
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
by phobos.denx.de (Postfix) with ESMTP id 3049C81CF2;
|
|
Fri, 12 Jun 2020 18:47:37 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
id 0EDC381CF5; Fri, 12 Jun 2020 18:47:31 +0200 (CEST)
|
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
X-Spam-Level:
|
|
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3,
|
|
RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham
|
|
autolearn_force=no version=3.4.2
|
|
Received: from mx2.suse.de (mx2.suse.de [195.135.220.15])
|
|
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
(No client certificate requested)
|
|
by phobos.denx.de (Postfix) with ESMTPS id 946DD81CCF
|
|
for <u-boot@lists.denx.de>; Fri, 12 Jun 2020 18:47:26 +0200 (CEST)
|
|
Authentication-Results: phobos.denx.de;
|
|
dmarc=none (p=none dis=none) header.from=suse.de
|
|
Authentication-Results: phobos.denx.de;
|
|
spf=pass smtp.mailfrom=nsaenzjulienne@suse.de
|
|
Received: from relay2.suse.de (unknown [195.135.220.254])
|
|
by mx2.suse.de (Postfix) with ESMTP id E69F8ACDB;
|
|
Fri, 12 Jun 2020 16:47:29 +0000 (UTC)
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de,
|
|
linux-kernel@vger.kernel.org
|
|
Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com,
|
|
mark.kettenis@xs4all.nl, Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Subject: [PATCH v4 5/5] usb: xhci-pci: Add reset controller support
|
|
Date: Fri, 12 Jun 2020 18:46:33 +0200
|
|
Message-Id: <20200612164632.25648-6-nsaenzjulienne@suse.de>
|
|
X-Mailer: git-send-email 2.26.2
|
|
In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
References: <20200612164632.25648-1-nsaenzjulienne@suse.de>
|
|
MIME-Version: 1.0
|
|
X-BeenThere: u-boot@lists.denx.de
|
|
X-Mailman-Version: 2.1.30rc1
|
|
Precedence: list
|
|
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
List-Post: <mailto:u-boot@lists.denx.de>
|
|
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
Errors-To: u-boot-bounces@lists.denx.de
|
|
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de
|
|
X-Virus-Status: Clean
|
|
|
|
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>
|
|
---
|
|
drivers/usb/host/xhci-pci.c | 38 +++++++++++++++++++++++++++++++++++--
|
|
1 file changed, 36 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
|
|
index 9fb6d2f763..710524fbb1 100644
|
|
--- a/drivers/usb/host/xhci-pci.c
|
|
+++ b/drivers/usb/host/xhci-pci.c
|
|
@@ -10,9 +10,14 @@
|
|
#include <init.h>
|
|
#include <log.h>
|
|
#include <pci.h>
|
|
+#include <reset.h>
|
|
#include <usb.h>
|
|
#include <usb/xhci.h>
|
|
|
|
+struct xhci_pci_platdata {
|
|
+ struct reset_ctl reset;
|
|
+};
|
|
+
|
|
static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
|
|
struct xhci_hcor **ret_hcor)
|
|
{
|
|
@@ -39,14 +44,43 @@ static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
|
|
|
|
static int xhci_pci_probe(struct udevice *dev)
|
|
{
|
|
+ struct xhci_pci_platdata *plat = dev_get_platdata(dev);
|
|
struct xhci_hccr *hccr;
|
|
struct xhci_hcor *hcor;
|
|
+ int ret;
|
|
+
|
|
+ ret = reset_get_by_index(dev, 0, &plat->reset);
|
|
+ if (ret && ret != -ENOENT) {
|
|
+ dev_err(dev, "failed to get reset\n");
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ if (reset_valid(&plat->reset)) {
|
|
+ ret = reset_assert(&plat->reset);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ ret = reset_deassert(&plat->reset);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+ }
|
|
|
|
xhci_pci_init(dev, &hccr, &hcor);
|
|
|
|
return xhci_register(dev, hccr, hcor);
|
|
}
|
|
|
|
+static int xhci_pci_remove(struct udevice *dev)
|
|
+{
|
|
+ struct xhci_pci_platdata *plat = dev_get_platdata(dev);
|
|
+
|
|
+ xhci_deregister(dev);
|
|
+ if (reset_valid(&plat->reset))
|
|
+ reset_free(&plat->reset);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static const struct udevice_id xhci_pci_ids[] = {
|
|
{ .compatible = "xhci-pci" },
|
|
{ }
|
|
@@ -56,10 +90,10 @@ U_BOOT_DRIVER(xhci_pci) = {
|
|
.name = "xhci_pci",
|
|
.id = UCLASS_USB,
|
|
.probe = xhci_pci_probe,
|
|
- .remove = xhci_deregister,
|
|
+ .remove = xhci_pci_remove,
|
|
.of_match = xhci_pci_ids,
|
|
.ops = &xhci_usb_ops,
|
|
- .platdata_auto_alloc_size = sizeof(struct usb_platdata),
|
|
+ .platdata_auto_alloc_size = sizeof(struct xhci_pci_platdata),
|
|
.priv_auto_alloc_size = sizeof(struct xhci_ctrl),
|
|
.flags = DM_FLAG_ALLOC_PRIV_DMA,
|
|
};
|
|
From f9dfaab9a697f7e1c6456bf7e05eaba39394688c Mon Sep 17 00:00:00 2001
|
|
From: Peter Robinson <pbrobinson@gmail.com>
|
|
Date: Thu, 18 Jun 2020 14:24:13 +0100
|
|
Subject: [PATCH] configs: Enable support for reset controllers on RPi4
|
|
|
|
This is required in order to access the reset controller used to
|
|
initialize the board's xHCI chip.
|
|
|
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
---
|
|
configs/rpi_4_32b_defconfig | 1 +
|
|
configs/rpi_4_defconfig | 1 +
|
|
configs/rpi_arm64_defconfig | 1 +
|
|
3 files changed, 3 insertions(+)
|
|
|
|
diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
|
|
index a36a249540..0df5c17d6e 100644
|
|
--- a/configs/rpi_4_32b_defconfig
|
|
+++ b/configs/rpi_4_32b_defconfig
|
|
@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y
|
|
CONFIG_BCMGENET=y
|
|
CONFIG_PINCTRL=y
|
|
# CONFIG_PINCTRL_GENERIC is not set
|
|
+CONFIG_DM_RESET=y
|
|
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
CONFIG_USB=y
|
|
CONFIG_DM_USB=y
|
|
diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
|
|
index f0301dc8bc..7034eb439b 100644
|
|
--- a/configs/rpi_4_defconfig
|
|
+++ b/configs/rpi_4_defconfig
|
|
@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y
|
|
CONFIG_BCMGENET=y
|
|
CONFIG_PINCTRL=y
|
|
# CONFIG_PINCTRL_GENERIC is not set
|
|
+CONFIG_DM_RESET=y
|
|
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
CONFIG_USB=y
|
|
CONFIG_DM_USB=y
|
|
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
|
|
index d16c2388af..3663a17048 100644
|
|
--- a/configs/rpi_arm64_defconfig
|
|
+++ b/configs/rpi_arm64_defconfig
|
|
@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y
|
|
CONFIG_BCMGENET=y
|
|
CONFIG_PINCTRL=y
|
|
# CONFIG_PINCTRL_GENERIC is not set
|
|
+CONFIG_DM_RESET=y
|
|
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
CONFIG_USB=y
|
|
CONFIG_DM_USB=y
|
|
--
|
|
2.26.2
|
|
|