diff --git a/uboot-tools.spec b/uboot-tools.spec index 23947fb..80649c8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,5 @@ %global _default_patch_fuzz 2 + Name: uboot-tools Version: 2020.07 Release: 1 @@ -12,29 +13,28 @@ Source3: aarch64-boards Source4: aarch64-chromebooks Source5: 10-devicetree.install -Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +Patch0001: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Board fixes and enablement -Patch4: usb-kbd-fixes.patch -Patch5: dragonboard-fixes.patch +Patch0002: usb-kbd-fixes.patch +Patch0003: dragonboard-fixes.patch # Tegra improvements -Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch -Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch +Patch0004: arm-tegra-define-fdtfile-option-for-distro-boot.patch +Patch0005: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements -Patch12: AllWinner-Pine64-bits.patch +Patch0006: AllWinner-Pine64-bits.patch # Rockchips improvements -Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: rockchip-Pinebook-Pro-Fixes.patch +Patch0007: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch0008: rockchip-Pinebook-Pro-Fixes.patch # RPi4 -Patch16: USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch -Patch17: usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch -Patch18: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch0009: USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch +Patch0010: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch BuildRequires: bc dtc gcc make flex bison git-core openssl-devel gdb BuildRequires: python-unversioned-command python3-devel python3-setuptools BuildRequires: python3-libfdt python3-pyelftools SDL-devel swig # this required when /usr/bin/python link to python3 BuildRequires: python3-devel -%ifarch %{arm} aarch64 +%ifarch %{arm} aarch64 BuildRequires: vboot-utils %endif %ifarch aarch64 diff --git a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch deleted file mode 100644 index bfe47ee..0000000 --- a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch +++ /dev/null @@ -1,707 +0,0 @@ -From patchwork Mon Jun 22 15:30:48 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1314562 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -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=) -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 49rD0h00Mbz9s6w - for ; Tue, 23 Jun 2020 01:31:47 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1284581DC9; - Mon, 22 Jun 2020 17:31:31 +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 4096C81DE9; Mon, 22 Jun 2020 17:31: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 7C1E981D0B - for ; Mon, 22 Jun 2020 17:31: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.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 76161C1BD; - Mon, 22 Jun 2020 15:31:22 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 1/4] arm: rpi: Add function to trigger VL805's firmware load -Date: Mon, 22 Jun 2020 17:30:48 +0200 -Message-Id: <20200622153050.23193-2-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-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 -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -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 ---- -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 - #include - #include -+#include - - 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 Mon Jun 22 15:30:49 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: 1314565 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -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=) -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 49rD1F72RYz9s6w - for ; Tue, 23 Jun 2020 01:32:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 10E5481E20; - Mon, 22 Jun 2020 17:31: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 9851E81DE9; Mon, 22 Jun 2020 17:31:30 +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 A2A2281D52 - for ; Mon, 22 Jun 2020 17:31: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.221.27]) - by mx2.suse.de (Postfix) with ESMTP id CFE01C204; - Mon, 22 Jun 2020 15:31:22 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 2/4] reset: Add Raspberry Pi 4 firmware reset controller -Date: Mon, 22 Jun 2020 17:30:49 +0200 -Message-Id: <20200622153050.23193-3-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-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 -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -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 ---- - 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 -+ */ -+#include -+#include -+#include -+#include -+#include -+ -+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 -+ */ -+ -+#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 Mon Jun 22 15:30:50 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: 1314564 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -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=) -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)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD115xyZz9sQx - for ; Tue, 23 Jun 2020 01:32:05 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4627E81E0C; - Mon, 22 Jun 2020 17:31: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 5837781E04; Mon, 22 Jun 2020 17:31:30 +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 0D9F281DC9 - for ; Mon, 22 Jun 2020 17:31: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.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 478B9C207; - Mon, 22 Jun 2020 15:31:23 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 3/4] configs: Enable support for reset controllers on RPi4 -Date: Mon, 22 Jun 2020 17:30:50 +0200 -Message-Id: <20200622153050.23193-4-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-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 -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This is required in order to access the reset controller used to -initialize the board's xHCI chip. - -Signed-off-by: Nicolas Saenz Julienne ---- - 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 b0797373b5..00c8d963ab 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=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 932b768164..c73eccb61c 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=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 855afcf1cf..800b51e6f5 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -32,6 +32,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=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 - -From patchwork Mon Jun 22 15:30:51 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: 1314563 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -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=) -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)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD0q0fqDz9s6w - for ; Tue, 23 Jun 2020 01:31:55 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CE84C81DE7; - Mon, 22 Jun 2020 17:31: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 EFDD181DD8; Mon, 22 Jun 2020 17:31:29 +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 86E4581DD8 - for ; Mon, 22 Jun 2020 17:31: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.221.27]) - by mx2.suse.de (Postfix) with ESMTP id C3DADC1D5; - Mon, 22 Jun 2020 15:31:23 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 4/4] usb: xhci: Add reset controller support -Date: Mon, 22 Jun 2020 17:30:51 +0200 -Message-Id: <20200622153050.23193-5-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-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 -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Some atypical users of xhci 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 ---- - -Changes since v3: - - Move reset support to xchi core - - drivers/usb/host/xhci-mem.c | 2 ++ - drivers/usb/host/xhci.c | 33 +++++++++++++++++++++++++++++++++ - include/usb/xhci.h | 2 ++ - 3 files changed, 37 insertions(+) - -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index f446520528..108f4bd8cf 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -180,6 +180,8 @@ void xhci_cleanup(struct xhci_ctrl *ctrl) - xhci_free_virt_devices(ctrl); - free(ctrl->erst.entries); - free(ctrl->dcbaa); -+ if (reset_valid(&ctrl->reset)) -+ reset_free(&ctrl->reset); - memset(ctrl, '\0', sizeof(struct xhci_ctrl)); - } - -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index ebd2954571..03b41cc855 100644 ---- a/drivers/usb/host/xhci.c -+++ b/drivers/usb/host/xhci.c -@@ -190,6 +190,35 @@ static int xhci_start(struct xhci_hcor *hcor) - return ret; - } - -+/** -+ * Resets XHCI Hardware -+ * -+ * @param ctrl pointer to host controller -+ * @return 0 if OK, or a negative error code. -+ */ -+static int xhci_reset_hw(struct xhci_ctrl *ctrl) -+{ -+ int ret; -+ -+ ret = reset_get_by_index(ctrl->dev, 0, &ctrl->reset); -+ if (ret && ret != -ENOENT) { -+ dev_err(ctrl->dev, "failed to get reset\n"); -+ return ret; -+ } -+ -+ if (reset_valid(&ctrl->reset)) { -+ ret = reset_assert(&ctrl->reset); -+ if (ret) -+ return ret; -+ -+ ret = reset_deassert(&ctrl->reset); -+ if (ret) -+ return ret; -+ } -+ -+ return 0; -+} -+ - /** - * Resets the XHCI Controller - * -@@ -1508,6 +1537,10 @@ int xhci_register(struct udevice *dev, struct xhci_hccr *hccr, - - ctrl->dev = dev; - -+ ret = xhci_reset_hw(ctrl); -+ if (ret) -+ goto err; -+ - /* - * XHCI needs to issue a Address device command to setup - * proper device context structures, before it can interact -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index 1170c0ac69..7d34103fd5 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -16,6 +16,7 @@ - #ifndef HOST_XHCI_H_ - #define HOST_XHCI_H_ - -+#include - #include - #include - #include -@@ -1209,6 +1210,7 @@ struct xhci_ctrl { - #if CONFIG_IS_ENABLED(DM_USB) - struct udevice *dev; - #endif -+ struct reset_ctl reset; - struct xhci_hccr *hccr; /* R/O registers, not need for volatile */ - struct xhci_hcor *hcor; - struct xhci_doorbell_array *dba;