diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-06-29 17:27:55 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-06-29 17:28:50 +0200 |
commit | 01e1c5521b2c1c4074cd83cd4e4c4604309ce518 (patch) | |
tree | 785c395f42dcd8cb13db2a49263980b26e85ff8c | |
parent | c1ca5fbfa21dd0253db964da7bd89733fcf2bfe3 (diff) | |
parent | 0a70f564a052c491b12770d1218a2d8dd8b71924 (diff) | |
download | kernel-01e1c5521b2c1c4074cd83cd4e4c4604309ce518.tar.gz kernel-01e1c5521b2c1c4074cd83cd4e4c4604309ce518.tar.xz kernel-01e1c5521b2c1c4074cd83cd4e4c4604309ce518.zip |
merge origin, 5.7 rebasekernel-5.7.6-251.vanilla.knurd.1.fc32
254 files changed, 8098 insertions, 14338 deletions
diff --git a/0001-ACPI-APEI-arm64-Ignore-broken-HPE-moonshot-APEI-supp.patch b/0001-ACPI-APEI-arm64-Ignore-broken-HPE-moonshot-APEI-supp.patch new file mode 100644 index 000000000..ec362d9b2 --- /dev/null +++ b/0001-ACPI-APEI-arm64-Ignore-broken-HPE-moonshot-APEI-supp.patch @@ -0,0 +1,71 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Al Stone <ahs3@redhat.com> +Date: Tue, 27 Feb 2018 00:21:23 -0500 +Subject: [PATCH] ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support + +Message-id: <20180227002123.21608-1-ahs3@redhat.com> +Patchwork-id: 206052 +O-Subject: [RHEL8 BZ1518076 PATCH] ACPI: APEI: arm64: Ignore broken HPE moonshot APEI support +Bugzilla: 1518076 +RH-Acked-by: Mark Salter <msalter@redhat.com> +RH-Acked-by: Jeremy McNicoll <jmcnicol@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1518076 +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15417197 +Tested: compile-only; several other patches are required for full booting + QE has tested limited boot (see comment#12 of BZ) + +This is a re-post of a RHEL-ALT-7.5 patch specific to aarch64 moonshots +that we use in beaker. It is required for these machines to boot. + + commit 8a663a264863efedf8bb4a9d76ac603920fdd739 + Author: Robert Richter <rrichter@redhat.com> + Date: Wed Aug 16 19:49:30 2017 -0400 + + [acpi] APEI: arm64: Ignore broken HPE moonshot APEI support + + From: Mark Salter <msalter@redhat.com> + Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1344237 + Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=13768971 + Tested: Booted on moonshot with patched 4.11.0-20 kernel + Upstream: RHEL-only + + The aarch64 HP moonshot platforms we have in beaker and elsewhere have + a firmware bug which causes a spurious fatal memory error via APEI at + boot time. This platform is no longer supported and no further firmware + updates are expected. This is a downstream-only hack to avoid the problem + by bailing out of HEST table probing if we detect a moonshot HEST table. + + Signed-off-by: Mark Salter <msalter@redhat.com> + Signed-off-by: Robert Richter <rrichter@redhat.com> + Signed-off-by: Herton R. Krzesinski <herton@redhat.com> + +Upstream Status: RHEL only +Signed-off-by: Al Stone <ahs3@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + drivers/acpi/apei/hest.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c +index 822402480f7d..3f87d8602560 100644 +--- a/drivers/acpi/apei/hest.c ++++ b/drivers/acpi/apei/hest.c +@@ -88,6 +88,14 @@ int apei_hest_parse(apei_hest_func_t func, void *data) + if (hest_disable || !hest_tab) + return -EINVAL; + ++#ifdef CONFIG_ARM64 ++ /* Ignore broken firmware */ ++ if (!strncmp(hest_tab->header.oem_id, "HPE ", 6) && ++ !strncmp(hest_tab->header.oem_table_id, "ProLiant", 8) && ++ MIDR_IMPLEMENTOR(read_cpuid_id()) == ARM_CPU_IMP_APM) ++ return -EINVAL; ++#endif ++ + hest_hdr = (struct acpi_hest_header *)(hest_tab + 1); + for (i = 0; i < hest_tab->error_source_count; i++) { + len = hest_esrc_len(hest_hdr); +-- +2.26.2 + diff --git a/ACPI-irq-Workaround-firmware-issue-on-X-Gene-based-m400.patch b/0001-ACPI-irq-Workaround-firmware-issue-on-X-Gene-based-m.patch index 3dcfd4969..1cc560ee8 100644 --- a/ACPI-irq-Workaround-firmware-issue-on-X-Gene-based-m400.patch +++ b/0001-ACPI-irq-Workaround-firmware-issue-on-X-Gene-based-m.patch @@ -1,8 +1,17 @@ -From dbdda4277cf0422a9ccb7ea98d0263c3cdbecdf6 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Salter <msalter@redhat.com> -Date: Tue, 8 May 2018 21:54:39 -0400 -Subject: [PATCH] ACPI / irq: Workaround firmware issue on X-Gene based - m400 +Date: Thu, 10 May 2018 17:38:43 -0400 +Subject: [PATCH] ACPI / irq: Workaround firmware issue on X-Gene based m400 + +Message-id: <20180510173844.29580-3-msalter@redhat.com> +Patchwork-id: 214383 +O-Subject: [RHEL-8 BZ1519554 2/3] ACPI / irq: Workaround firmware issue on X-Gene based m400 +Bugzilla: 1519554 +RH-Acked-by: Al Stone <astone@redhat.com> +RH-Acked-by: Tony Camuso <tcamuso@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1519554 +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16144520 The ACPI firmware on the xgene-based m400 platorms erroneously describes its UART interrupt as ACPI_PRODUCER rather than @@ -11,24 +20,26 @@ find its interrupt and the kernel unable find a console. Work around this by avoiding the producer/consumer check for X-Gene UARTs. +Upstream Status: RHEL only Signed-off-by: Mark Salter <msalter@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> --- drivers/acpi/irq.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/irq.c b/drivers/acpi/irq.c -index 7c352cba0528..028c1a564cff 100644 +index e209081d644b..7484bcf59a1b 100644 --- a/drivers/acpi/irq.c +++ b/drivers/acpi/irq.c -@@ -129,6 +129,7 @@ struct acpi_irq_parse_one_ctx { +@@ -126,6 +126,7 @@ struct acpi_irq_parse_one_ctx { unsigned int index; unsigned long *res_flags; struct irq_fwspec *fwspec; + bool skip_producer_check; }; - + /** -@@ -200,7 +201,8 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares, +@@ -197,7 +198,8 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares, return AE_CTRL_TERMINATE; case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: eirq = &ares->data.extended_irq; @@ -38,13 +49,13 @@ index 7c352cba0528..028c1a564cff 100644 return AE_OK; if (ctx->index >= eirq->interrupt_count) { ctx->index -= eirq->interrupt_count; -@@ -235,8 +237,19 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares, +@@ -232,8 +234,19 @@ static acpi_status acpi_irq_parse_one_cb(struct acpi_resource *ares, static int acpi_irq_parse_one(acpi_handle handle, unsigned int index, struct irq_fwspec *fwspec, unsigned long *flags) { - struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec }; + struct acpi_irq_parse_one_ctx ctx = { -EINVAL, index, flags, fwspec, false }; - + + /* + * Firmware on arm64-based HPE m400 platform incorrectly marks + * its UART interrupt as ACPI_PRODUCER rather than ACPI_CONSUMER. @@ -60,5 +71,5 @@ index 7c352cba0528..028c1a564cff 100644 return ctx.rc; } -- -2.17.0 +2.26.2 diff --git a/ARM-fix-__get_user_check-in-case-uaccess_-calls-are-not-inlined.patch b/0001-ARM-fix-__get_user_check-in-case-uaccess_-calls-are-.patch index db893d26e..c5a43608f 100644 --- a/ARM-fix-__get_user_check-in-case-uaccess_-calls-are-not-inlined.patch +++ b/0001-ARM-fix-__get_user_check-in-case-uaccess_-calls-are-.patch @@ -1,67 +1,8 @@ -From patchwork Mon Sep 30 05:59:25 2019 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Masahiro Yamada <yamada.masahiro@socionext.com> -X-Patchwork-Id: 1132459 -Return-Path: <SRS0=rUXN=XZ=vger.kernel.org=linux-kernel-owner@kernel.org> -Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) - by smtp.lore.kernel.org (Postfix) with ESMTP id DF215C4360C - for <linux-kernel@archiver.kernel.org>; Mon, 30 Sep 2019 06:02:56 +0000 (UTC) -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by mail.kernel.org (Postfix) with ESMTP id B032A20815 - for <linux-kernel@archiver.kernel.org>; Mon, 30 Sep 2019 06:02:56 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=nifty.com header.i=@nifty.com - header.b="sVJyT1RO" -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1729635AbfI3GCz (ORCPT - <rfc822;linux-kernel@archiver.kernel.org>); - Mon, 30 Sep 2019 02:02:55 -0400 -Received: from conuserg-10.nifty.com ([210.131.2.77]:65305 "EHLO - conuserg-10.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1726121AbfI3GCz (ORCPT - <rfc822;linux-kernel@vger.kernel.org>); - Mon, 30 Sep 2019 02:02:55 -0400 -Received: from localhost.localdomain (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp - [153.142.97.92]) (authenticated) - by conuserg-10.nifty.com with ESMTP id x8U60ANM011158; - Mon, 30 Sep 2019 15:00:10 +0900 -DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com x8U60ANM011158 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; - s=dec2015msa; t=1569823213; - bh=31RHoPop8t0h2pCPRnwABR+VMelvfuLJ6qwFWQxvRAk=; - h=From:To:Cc:Subject:Date:From; - b=sVJyT1ROU+6mzkZMRTb0M214/0QcKkmxRbNgDwh2q1TPJpEjPLOoE+y1jkVndgyce - qBfr7v3nYiN5WSsx5xTwPYvHohsWcSS3AWwyVRw8Kxjd0CGrX8l5WcF76SmCvJPLCB - wLRZ7C1/Z/zv9v8AVlB2BGhDmSvNQJ9bvuGi42d+JbBXGDfg0HZGGHEj7yDDLBV9nW - EZkTGzP6wtIdqgD6DM5Lj4LA7FnlzH8Ocy6yp5agIZ7tdaiVh4E+Xb97KFsLgRin/o - kTPCap5ub1TziurVW+1pbzwH+G3TNVeY+yJdYcAQRFzXXOrTa7s5zIJUtObrYVGCA2 - ctH5uaN1kjx1g== -X-Nifty-SrcIP: [153.142.97.92] +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada <yamada.masahiro@socionext.com> -To: linux-arm-kernel@lists.infradead.org, - Russell King <rmk+kernel@armlinux.org.uk> -Cc: Linus Torvalds <torvalds@linux-foundation.org>, - Olof Johansson <olof@lixom.net>, Arnd Bergmann <arnd@arndb.de>, - Nick Desaulniers <ndesaulniers@google.com>, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Masahiro Yamada <yamada.masahiro@socionext.com>, - Julien Thierry <julien.thierry.kdev@gmail.com>, - Russell King <linux@armlinux.org.uk>, - Stefan Agner <stefan@agner.ch>, - Thomas Gleixner <tglx@linutronix.de>, - Vincent Whitchurch <vincent.whitchurch@axis.com>, - linux-kernel@vger.kernel.org +Date: Mon, 30 Sep 2019 14:59:25 +0900 Subject: [PATCH] ARM: fix __get_user_check() in case uaccess_* calls are not inlined -Date: Mon, 30 Sep 2019 14:59:25 +0900 -Message-Id: <20190930055925.25842-1-yamada.masahiro@socionext.com> -X-Mailer: git-send-email 2.17.1 -Sender: linux-kernel-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-kernel.vger.kernel.org> -X-Mailing-List: linux-kernel@vger.kernel.org KernelCI reports that bcm2835_defconfig is no longer booting since commit ac7c3e4ff401 ("compiler: enable CONFIG_OPTIMIZE_INLINING @@ -106,12 +47,11 @@ Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> Tested-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com> Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> --- - arch/arm/include/asm/uaccess.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index 303248e5b990..559f252d7e3c 100644 +index 98c6b91be4a8..60055827dddc 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -191,11 +191,12 @@ extern int __get_user_64t_4(void *); @@ -139,5 +79,8 @@ index 303248e5b990..559f252d7e3c 100644 + uaccess_restore(__ua_flags); \ + __err; \ }) - + #define get_user(x, p) \ +-- +2.26.2 + diff --git a/ARM-tegra-usb-no-reset.patch b/0001-ARM-tegra-usb-no-reset.patch index 8ea4f5174..f91c6b83e 100644 --- a/ARM-tegra-usb-no-reset.patch +++ b/0001-ARM-tegra-usb-no-reset.patch @@ -1,3 +1,4 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Robinson <pbrobinson@gmail.com> Date: Thu, 3 May 2012 20:27:11 +0100 Subject: [PATCH] ARM: tegra: usb no reset @@ -9,13 +10,13 @@ Patch for disconnect issues with storage attached to a 1 file changed, 7 insertions(+) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 43cb2f2e3b43..7f838ec11c81 100644 +index fc748c731832..7d35e12de70f 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4996,6 +4996,13 @@ static void hub_event(struct work_struct *work) +@@ -5517,6 +5517,13 @@ static void hub_event(struct work_struct *work) (u16) hub->change_bits[0], (u16) hub->event_bits[0]); - + + /* Don't disconnect USB-SATA on TrimSlice */ + if (strcmp(dev_name(hdev->bus->controller), "tegra-ehci.0") == 0) { + if ((hdev->state == 7) && (hub->change_bits[0] == 0) && @@ -26,3 +27,6 @@ index 43cb2f2e3b43..7f838ec11c81 100644 /* Lock the device, then check to see if we were * disconnected while waiting for the lock to succeed. */ usb_lock_device(hdev); +-- +2.26.2 + diff --git a/0002-Add-efi_status_to_str-and-rework-efi_status_to_err.patch b/0001-Add-efi_status_to_str-and-rework-efi_status_to_err.patch index 871105093..ee11a2428 100644 --- a/0002-Add-efi_status_to_str-and-rework-efi_status_to_err.patch +++ b/0001-Add-efi_status_to_str-and-rework-efi_status_to_err.patch @@ -1,41 +1,21 @@ -From c8218e9b3c38fcd36a2d06eec09952a0c6cee9e0 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Jones <pjones@redhat.com> Date: Mon, 2 Oct 2017 18:22:13 -0400 -Subject: [PATCH 2/3] Add efi_status_to_str() and rework efi_status_to_err(). +Subject: [PATCH] Add efi_status_to_str() and rework efi_status_to_err(). This adds efi_status_to_str() for use when printing efi_status_t messages, and reworks efi_status_to_err() so that the two use a common list of errors. +Upstream Status: RHEL only Signed-off-by: Peter Jones <pjones@redhat.com> --- - include/linux/efi.h | 3 ++ - drivers/firmware/efi/efi.c | 122 ++++++++++++++++++++++++++++++++++----------- - 2 files changed, 95 insertions(+), 30 deletions(-) + drivers/firmware/efi/efi.c | 124 +++++++++++++++++++++++++++---------- + include/linux/efi.h | 3 + + 2 files changed, 96 insertions(+), 31 deletions(-) -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 18b16bf5ce1..436b3c93c3d 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -42,6 +42,8 @@ - #define EFI_ABORTED (21 | (1UL << (BITS_PER_LONG-1))) - #define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) - -+#define EFI_IS_ERROR(x) ((x) & (1UL << (BITS_PER_LONG-1))) -+ - typedef unsigned long efi_status_t; - typedef u8 efi_bool_t; - typedef u16 efi_char16_t; /* UNICODE character */ -@@ -1183,6 +1185,7 @@ static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {} - #endif - - extern int efi_status_to_err(efi_status_t status); -+extern const char *efi_status_to_str(efi_status_t status); - - /* - * Variable Attributes diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 557a47829d0..e8f9c7d84e9 100644 +index 4e3055238f31..36ca9e2943ce 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -31,6 +31,7 @@ @@ -43,13 +23,13 @@ index 557a47829d0..e8f9c7d84e9 100644 #include <linux/memblock.h> #include <linux/security.h> +#include <linux/bsearch.h> - + #include <asm/early_ioremap.h> - -@@ -865,40 +866,101 @@ int efi_mem_type(unsigned long phys_addr) + +@@ -828,40 +829,101 @@ int efi_mem_type(unsigned long phys_addr) } #endif - + +struct efi_error_code { + efi_status_t status; + int errno; @@ -123,9 +103,7 @@ index 557a47829d0..e8f9c7d84e9 100644 int efi_status_to_err(efi_status_t status) { - int err; -+ struct efi_error_code *found; -+ size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code); - +- - switch (status) { - case EFI_SUCCESS: - err = 0; @@ -154,6 +132,10 @@ index 557a47829d0..e8f9c7d84e9 100644 - default: - err = -EINVAL; - } ++ struct efi_error_code *found; ++ size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code); + +- return err; + found = bsearch((void *)(uintptr_t)status, efi_error_codes, + sizeof(struct efi_error_code), num, + efi_status_cmp_bsearch); @@ -161,8 +143,7 @@ index 557a47829d0..e8f9c7d84e9 100644 + return -EINVAL; + return found->errno; +} - -- return err; ++ +const char * +efi_status_to_str(efi_status_t status) +{ @@ -176,8 +157,29 @@ index 557a47829d0..e8f9c7d84e9 100644 + return "Unknown error code"; + return found->description; } - + static DEFINE_SPINLOCK(efi_mem_reserve_persistent_lock); +diff --git a/include/linux/efi.h b/include/linux/efi.h +index 9430d01c0c3d..51503bf118ab 100644 +--- a/include/linux/efi.h ++++ b/include/linux/efi.h +@@ -42,6 +42,8 @@ + #define EFI_ABORTED (21 | (1UL << (BITS_PER_LONG-1))) + #define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) + ++#define EFI_IS_ERROR(x) ((x) & (1UL << (BITS_PER_LONG-1))) ++ + typedef unsigned long efi_status_t; + typedef u8 efi_bool_t; + typedef u16 efi_char16_t; /* UNICODE character */ +@@ -825,6 +827,7 @@ static inline bool efi_rt_services_supported(unsigned int mask) + #endif + + extern int efi_status_to_err(efi_status_t status); ++extern const char *efi_status_to_str(efi_status_t status); + + /* + * Variable Attributes -- -2.15.0 +2.26.2 diff --git a/arm64-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch b/0001-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch index 6417bc29a..970824d59 100644 --- a/arm64-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch +++ b/0001-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch @@ -1,29 +1,32 @@ -From 487ff7b0e537506057960a0c2d9482d19f2acf4a Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Robinson <pbrobinson@gmail.com> -Date: Wed, 26 Apr 2017 11:12:54 +0100 +Date: Wed, 26 Feb 2020 13:38:40 -0500 Subject: [PATCH] Add option of 13 for FORCE_MAX_ZONEORDER This is a hack, but it's what the other distros currently use for aarch64 with 4K pages so we'll do the same while upstream decides what the best outcome is (which isn't this). +Upstream Status: RHEL only Signed-off-by: Peter Robinson <pbrobinson@gmail.com> +[Add a dependency on RHEL_DIFFERENCES] +Signed-off-by: Jeremy Cline <jcline@redhat.com> --- arch/arm64/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 3741859765cf..deec9511f1d3 100644 +index 7f37a6d0658a..c88ee0e8ce6e 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -751,6 +751,7 @@ config XEN +@@ -1126,6 +1126,7 @@ config XEN config FORCE_MAX_ZONEORDER int default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) -+ default "13" if (ARCH_THUNDER && !ARM64_64K_PAGES) ++ default "13" if (ARCH_THUNDER && !ARM64_64K_PAGES && !RHEL_DIFFERENCES) default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE) default "11" help -- -2.12.2 +2.26.2 diff --git a/0001-Drop-that-for-now.patch b/0001-Drop-that-for-now.patch index 1d1850944..bc898b654 100644 --- a/0001-Drop-that-for-now.patch +++ b/0001-Drop-that-for-now.patch @@ -1,4 +1,4 @@ -From 12cec6680e67d6b4fed9e30cd8c1f13871996cc1 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Laura Abbott <labbott@redhat.com> Date: Wed, 23 Jan 2019 14:36:37 +0100 Subject: [PATCH] Drop that for now @@ -8,10 +8,10 @@ Subject: [PATCH] Drop that for now 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index f5b1d0d168e0..5f31107b22d1 100644 +index 3d65d1153aac..0e2fb7fe2675 100644 --- a/Makefile +++ b/Makefile -@@ -430,7 +430,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE +@@ -479,7 +479,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ -Werror=implicit-function-declaration -Werror=implicit-int \ @@ -21,5 +21,5 @@ index f5b1d0d168e0..5f31107b22d1 100644 KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_AFLAGS_KERNEL := -- -2.20.1 +2.26.2 diff --git a/0001-Include-kvm_asm.h-and-kvm_arm.h-in-kvm-arm-trace.h.patch b/0001-Include-kvm_asm.h-and-kvm_arm.h-in-kvm-arm-trace.h.patch deleted file mode 100644 index 9d2694b32..000000000 --- a/0001-Include-kvm_asm.h-and-kvm_arm.h-in-kvm-arm-trace.h.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3f16f4a34eeb22d70afe1bebdd2cfcded179f22a Mon Sep 17 00:00:00 2001 -From: Jeremy Cline <jcline@redhat.com> -Date: Tue, 4 Feb 2020 15:31:19 -0500 -Subject: [PATCH] Include kvm_asm.h and kvm_arm.h in kvm/arm/trace.h - -commit 0e20f5e25556 maybe broke this. - -Signed-off-by: Jeremy Cline <jcline@redhat.com> ---- - virt/kvm/arm/trace.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/virt/kvm/arm/trace.h b/virt/kvm/arm/trace.h -index 204d210d01c2..1c88e60a6b00 100644 ---- a/virt/kvm/arm/trace.h -+++ b/virt/kvm/arm/trace.h -@@ -4,6 +4,8 @@ - - #include <kvm/arm_arch_timer.h> - #include <linux/tracepoint.h> -+#include <asm/kvm_asm.h> -+#include <asm/kvm_arm.h> - - #undef TRACE_SYSTEM - #define TRACE_SYSTEM kvm --- -2.24.1 - diff --git a/input-rmi4-remove-the-need-for-artifical-IRQ.patch b/0001-Input-rmi4-remove-the-need-for-artificial-IRQ-in-cas.patch index 4d7bef554..4d7bef554 100644 --- a/input-rmi4-remove-the-need-for-artifical-IRQ.patch +++ b/0001-Input-rmi4-remove-the-need-for-artificial-IRQ-in-cas.patch diff --git a/KEYS-Make-use-of-platform-keyring-for-module-signature.patch b/0001-KEYS-Make-use-of-platform-keyring-for-module-signatu.patch index 7c2a0b68d..b53addbe3 100644 --- a/KEYS-Make-use-of-platform-keyring-for-module-signature.patch +++ b/0001-KEYS-Make-use-of-platform-keyring-for-module-signatu.patch @@ -1,4 +1,4 @@ -From 70cecc97a4fc1667472224558a50dd7b6c42c789 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Robert Holmes <robeholmes@gmail.com> Date: Tue, 23 Apr 2019 07:39:29 +0000 Subject: [PATCH] KEYS: Make use of platform keyring for module signature @@ -15,8 +15,8 @@ were not successfully verified. Signed-off-by: Robert Holmes <robeholmes@gmail.com> Signed-off-by: Jeremy Cline <jcline@redhat.com> --- - kernel/module_signing.c | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) + kernel/module_signing.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/module_signing.c b/kernel/module_signing.c index 9d9fc678c91d..84ad75a53c83 100644 @@ -25,7 +25,7 @@ index 9d9fc678c91d..84ad75a53c83 100644 @@ -38,8 +38,15 @@ int mod_verify_sig(const void *mod, struct load_info *info) modlen -= sig_len + sizeof(ms); info->len = modlen; - + - return verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len, + ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len, VERIFY_USE_SECONDARY_KEYRING, @@ -40,4 +40,5 @@ index 9d9fc678c91d..84ad75a53c83 100644 + return ret; } -- -2.21.0 +2.26.2 + diff --git a/0003-Make-get_cert_list-use-efi_status_to_str-to-print-er.patch b/0001-Make-get_cert_list-use-efi_status_to_str-to-print-er.patch index d1e43ed3f..671b7402f 100644 --- a/0003-Make-get_cert_list-use-efi_status_to_str-to-print-er.patch +++ b/0001-Make-get_cert_list-use-efi_status_to_str-to-print-er.patch @@ -1,9 +1,10 @@ -From 46daeedffe98b489014dcdcf14c89438362de7eb Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Peter Jones <pjones@redhat.com> Date: Mon, 2 Oct 2017 18:18:30 -0400 Subject: [PATCH] Make get_cert_list() use efi_status_to_str() to print error messages. +Upstream Status: RHEL only Signed-off-by: Peter Jones <pjones@redhat.com> Signed-off-by: Jeremy Cline <jcline@redhat.com> --- @@ -11,19 +12,19 @@ Signed-off-by: Jeremy Cline <jcline@redhat.com> 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c -index f0c908241966..4e783f6c6cfb 100644 +index 253fb9a7fc98..8c95b68d86d4 100644 --- a/security/integrity/platform_certs/load_uefi.c +++ b/security/integrity/platform_certs/load_uefi.c @@ -46,7 +46,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid, return NULL; - + if (*status != EFI_BUFFER_TOO_SMALL) { - pr_err("Couldn't get size: 0x%lx\n", *status); + pr_err("Couldn't get size: %s (0x%lx)\n", + efi_status_to_str(*status), *status); return NULL; } - + @@ -57,7 +58,8 @@ static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid, *status = efi.get_variable(name, guid, NULL, &lsize, db); if (*status != EFI_SUCCESS) { @@ -33,7 +34,7 @@ index f0c908241966..4e783f6c6cfb 100644 + efi_status_to_str(*status), *status); return NULL; } - + -- -2.24.1 +2.26.2 diff --git a/0001-PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch b/0001-PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch new file mode 100644 index 000000000..6fc81f845 --- /dev/null +++ b/0001-PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch @@ -0,0 +1,209 @@ +From 92c547f35f4852908f40c2861d9b9d10e0c5099b Mon Sep 17 00:00:00 2001 +From: Peter Robinson <pbrobinson@gmail.com> +Date: Sun, 28 Jun 2020 16:48:50 +0100 +Subject: [PATCH] PCI: Add MCFG quirks for Tegra194 host controllers + +The PCIe controller in Tegra194 SoC is not completely ECAM-compliant. +With the current hardware design limitations in place, ECAM can be enabled +only for one controller (C5 controller to be precise) with bus numbers +starting from 160 instead of 0. A different approach is taken to avoid this +abnormal way of enabling ECAM for just one controller but to enable +configuration space access for all the other controllers. In this approach, +ops are added through MCFG quirk mechanism which access the configuration +spaces by dynamically programming iATU (internal AddressTranslation Unit) +to generate respective configuration accesses just like the way it is +done in DesignWare core sub-system. + +Signed-off-by: Vidya Sagar <vidyas@nvidia.com> +Reported-by: kbuild test robot <lkp@intel.com> +Signed-off-by: Peter Robinson <pbrobinson@gmail.com> +--- +V3: +* Removed MCFG address hardcoding in pci_mcfg.c file +* Started using 'dbi_base' for accessing root port's own config space +* and using 'config_base' for accessing config space of downstream hierarchy + +V2: +* Fixed build issues reported by kbuild test bot +--- + drivers/acpi/pci_mcfg.c | 7 ++ + drivers/pci/controller/dwc/Makefile | 2 +- + drivers/pci/controller/dwc/pcie-tegra194.c | 102 +++++++++++++++++++++ + include/linux/pci-ecam.h | 1 + + 4 files changed, 111 insertions(+), 1 deletion(-) + +diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c +index 6b347d9920cc2..7071814081736 100644 +--- a/drivers/acpi/pci_mcfg.c ++++ b/drivers/acpi/pci_mcfg.c +@@ -116,6 +116,13 @@ static struct mcfg_fixup mcfg_quirks[] = { + THUNDER_ECAM_QUIRK(2, 12), + THUNDER_ECAM_QUIRK(2, 13), + ++ { "NVIDIA", "TEGRA194", 1, 0, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ { "NVIDIA", "TEGRA194", 1, 1, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ { "NVIDIA", "TEGRA194", 1, 2, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ { "NVIDIA", "TEGRA194", 1, 3, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ { "NVIDIA", "TEGRA194", 1, 4, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ { "NVIDIA", "TEGRA194", 1, 5, MCFG_BUS_ANY, &tegra194_pcie_ops}, ++ + #define XGENE_V1_ECAM_MCFG(rev, seg) \ + {"APM ", "XGENE ", rev, seg, MCFG_BUS_ANY, \ + &xgene_v1_pcie_ecam_ops } +diff --git a/drivers/pci/controller/dwc/Makefile b/drivers/pci/controller/dwc/Makefile +index 8a637cfcf6e99..76a6c52b8500e 100644 +--- a/drivers/pci/controller/dwc/Makefile ++++ b/drivers/pci/controller/dwc/Makefile +@@ -17,7 +17,6 @@ obj-$(CONFIG_PCIE_INTEL_GW) += pcie-intel-gw.o + obj-$(CONFIG_PCIE_KIRIN) += pcie-kirin.o + obj-$(CONFIG_PCIE_HISI_STB) += pcie-histb.o + obj-$(CONFIG_PCI_MESON) += pci-meson.o +-obj-$(CONFIG_PCIE_TEGRA194) += pcie-tegra194.o + obj-$(CONFIG_PCIE_UNIPHIER) += pcie-uniphier.o + + # The following drivers are for devices that use the generic ACPI +@@ -33,4 +32,5 @@ obj-$(CONFIG_PCIE_UNIPHIER) += pcie-uniphier.o + ifdef CONFIG_PCI + obj-$(CONFIG_ARM64) += pcie-al.o + obj-$(CONFIG_ARM64) += pcie-hisi.o ++obj-$(CONFIG_ARM64) += pcie-tegra194.o + endif +diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c +index ae30a2fd3716a..571b39c5cac63 100644 +--- a/drivers/pci/controller/dwc/pcie-tegra194.c ++++ b/drivers/pci/controller/dwc/pcie-tegra194.c +@@ -22,6 +22,8 @@ + #include <linux/of_irq.h> + #include <linux/of_pci.h> + #include <linux/pci.h> ++#include <linux/pci-acpi.h> ++#include <linux/pci-ecam.h> + #include <linux/phy/phy.h> + #include <linux/pinctrl/consumer.h> + #include <linux/platform_device.h> +@@ -324,6 +326,103 @@ struct tegra_pcie_dw_of_data { + enum dw_pcie_device_mode mode; + }; + ++#if defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) ++struct tegra194_pcie_acpi { ++ void __iomem *config_base; ++ void __iomem *iatu_base; ++ void __iomem *dbi_base; ++}; ++ ++static int tegra194_acpi_init(struct pci_config_window *cfg) ++{ ++ struct device *dev = cfg->parent; ++ struct tegra194_pcie_acpi *pcie; ++ ++ pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); ++ if (!pcie) ++ return -ENOMEM; ++ ++ pcie->config_base = cfg->win; ++ pcie->iatu_base = cfg->win + SZ_256K; ++ pcie->dbi_base = cfg->win + SZ_512K; ++ cfg->priv = pcie; ++ ++ return 0; ++} ++ ++static inline void atu_reg_write(struct tegra194_pcie_acpi *pcie, int index, ++ u32 val, u32 reg) ++{ ++ u32 offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index); ++ ++ writel(val, pcie->iatu_base + offset + reg); ++} ++ ++static void program_outbound_atu(struct tegra194_pcie_acpi *pcie, int index, ++ int type, u64 cpu_addr, u64 pci_addr, u64 size) ++{ ++ atu_reg_write(pcie, index, lower_32_bits(cpu_addr), ++ PCIE_ATU_LOWER_BASE); ++ atu_reg_write(pcie, index, upper_32_bits(cpu_addr), ++ PCIE_ATU_UPPER_BASE); ++ atu_reg_write(pcie, index, lower_32_bits(pci_addr), ++ PCIE_ATU_LOWER_TARGET); ++ atu_reg_write(pcie, index, lower_32_bits(cpu_addr + size - 1), ++ PCIE_ATU_LIMIT); ++ atu_reg_write(pcie, index, upper_32_bits(pci_addr), ++ PCIE_ATU_UPPER_TARGET); ++ atu_reg_write(pcie, index, type, PCIE_ATU_CR1); ++ atu_reg_write(pcie, index, PCIE_ATU_ENABLE, PCIE_ATU_CR2); ++} ++ ++static void __iomem *tegra194_map_bus(struct pci_bus *bus, ++ unsigned int devfn, int where) ++{ ++ struct pci_config_window *cfg = bus->sysdata; ++ struct tegra194_pcie_acpi *pcie = cfg->priv; ++ u32 busdev; ++ int type; ++ ++ if (bus->number < cfg->busr.start || bus->number > cfg->busr.end) ++ return NULL; ++ ++ if (bus->number == cfg->busr.start) { ++ if (PCI_SLOT(devfn) == 0) ++ return pcie->dbi_base + where; ++ else ++ return NULL; ++ } ++ ++ busdev = PCIE_ATU_BUS(bus->number) | PCIE_ATU_DEV(PCI_SLOT(devfn)) | ++ PCIE_ATU_FUNC(PCI_FUNC(devfn)); ++ ++ if (bus->parent->number == cfg->busr.start) { ++ if (PCI_SLOT(devfn) == 0) ++ type = PCIE_ATU_TYPE_CFG0; ++ else ++ return NULL; ++ } else { ++ type = PCIE_ATU_TYPE_CFG1; ++ } ++ ++ program_outbound_atu(pcie, PCIE_ATU_REGION_INDEX0, type, ++ cfg->res.start, busdev, SZ_256K); ++ return (void __iomem *)(pcie->config_base + where); ++} ++ ++struct pci_ecam_ops tegra194_pcie_ops = { ++ .bus_shift = 20, ++ .init = tegra194_acpi_init, ++ .pci_ops = { ++ .map_bus = tegra194_map_bus, ++ .read = pci_generic_config_read, ++ .write = pci_generic_config_write, ++ } ++}; ++#endif /* defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) */ ++ ++#ifdef CONFIG_PCIE_TEGRA194 ++ + static inline struct tegra_pcie_dw *to_tegra_pcie(struct dw_pcie *pci) + { + return container_of(pci, struct tegra_pcie_dw, pci); +@@ -2406,3 +2505,6 @@ MODULE_DEVICE_TABLE(of, tegra_pcie_dw_of_match); + MODULE_AUTHOR("Vidya Sagar <vidyas@nvidia.com>"); + MODULE_DESCRIPTION("NVIDIA PCIe host controller driver"); + MODULE_LICENSE("GPL v2"); ++ ++#endif /* CONFIG_PCIE_TEGRA194 */ ++ +diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h +index a73164c85e78b..6156140dcbb65 100644 +--- a/include/linux/pci-ecam.h ++++ b/include/linux/pci-ecam.h +@@ -57,6 +57,7 @@ extern struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */ + extern struct pci_ecam_ops xgene_v1_pcie_ecam_ops; /* APM X-Gene PCIe v1 */ + extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */ + extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */ ++extern struct pci_ecam_ops tegra194_pcie_ops; /* Tegra194 PCIe */ + #endif + + #ifdef CONFIG_PCI_HOST_COMMON +-- +2.26.2 + diff --git a/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch b/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch new file mode 100644 index 000000000..07f8b4e26 --- /dev/null +++ b/0001-PCI-brcmstb-Wait-for-Raspberry-Pi-s-firmware-when-pr.patch @@ -0,0 +1,57 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Date: Tue, 10 Mar 2020 13:52:41 +0100 +Subject: [PATCH] PCI: brcmstb: Wait for Raspberry Pi's firmware when present + +xHCI's PCI fixup, run at the end of pcie-brcmstb's probe, depends on +RPi4's VideoCore firmware interface to be up and running. It's possible +for both initializations to race, so make sure it's available prior to +starting. + +Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +--- + drivers/pci/controller/pcie-brcmstb.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c +index 6d79d14527a6..aee84679a997 100644 +--- a/drivers/pci/controller/pcie-brcmstb.c ++++ b/drivers/pci/controller/pcie-brcmstb.c +@@ -28,6 +28,8 @@ + #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 */ +@@ -917,11 +919,24 @@ static int brcm_pcie_probe(struct platform_device *pdev) + { + struct device_node *np = pdev->dev.of_node, *msi_np; + struct pci_host_bridge *bridge; ++ struct device_node *fw_np; + struct brcm_pcie *pcie; + struct pci_bus *child; + struct resource *res; + int ret; + ++ /* ++ * We have to wait for the Raspberry Pi's firmware interface to be up ++ * as some PCI fixups depend on it. ++ */ ++ fw_np = of_find_compatible_node(NULL, NULL, ++ "raspberrypi,bcm2835-firmware"); ++ if (fw_np && !rpi_firmware_get(fw_np)) { ++ of_node_put(fw_np); ++ return -EPROBE_DEFER; ++ } ++ of_node_put(fw_np); ++ + bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie)); + if (!bridge) + return -ENOMEM; +-- +2.26.2 + diff --git a/0001-USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch b/0001-USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch new file mode 100644 index 000000000..7f13ec1f5 --- /dev/null +++ b/0001-USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch @@ -0,0 +1,72 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Date: Tue, 10 Mar 2020 13:52:42 +0100 +Subject: [PATCH] USB: pci-quirks: Add Raspberry Pi 4 quirk + +On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be +loaded directly from an EEPROM or, if not present, by the SoC's +VideCore. Inform VideCore that VL805 was just reset. + +Also, as this creates a dependency between XHCI_PCI and VideoCore's +firmware interface, reflect that on the firmware interface Kconfg. + +Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +--- + drivers/firmware/Kconfig | 1 + + drivers/usb/host/pci-quirks.c | 16 ++++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig +index 8007d4aa76dc..7ca346d3d337 100644 +--- a/drivers/firmware/Kconfig ++++ b/drivers/firmware/Kconfig +@@ -180,6 +180,7 @@ config ISCSI_IBFT + config RASPBERRYPI_FIRMWARE + tristate "Raspberry Pi Firmware Driver" + depends on BCM2835_MBOX ++ default XHCI_PCI + help + This option enables support for communicating with the firmware on the + Raspberry Pi. +diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c +index beb2efa71341..0dc34668bb2a 100644 +--- a/drivers/usb/host/pci-quirks.c ++++ b/drivers/usb/host/pci-quirks.c +@@ -16,6 +16,9 @@ + #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" + +@@ -1243,11 +1246,24 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev) + + static void quirk_usb_early_handoff(struct pci_dev *pdev) + { ++ int ret; ++ + /* Skip Netlogic mips SoC's internal PCI USB controller. + * This device does not need/support EHCI/OHCI handoff + */ + if (pdev->vendor == 0x184e) /* vendor Netlogic */ + return; ++ ++ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { ++ ret = rpi_firmware_init_vl805(pdev); ++ if (ret) { ++ /* Firmware might be outdated, or something failed */ ++ dev_warn(&pdev->dev, ++ "Failed to load VL805's firmware: %d. 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 + diff --git a/0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch b/0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch new file mode 100644 index 000000000..828ed5d9a --- /dev/null +++ b/0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch @@ -0,0 +1,75 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Robert Richter <rrichter@redhat.com> +Date: Thu, 7 Jun 2018 22:59:32 -0400 +Subject: [PATCH] Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon + +Message-id: <1528412373-19128-2-git-send-email-rrichter@redhat.com> +Patchwork-id: 220950 +O-Subject: [RHEL-8.0 BZ 1563590 v2 1/2] PCI: Vulcan: AHCI PCI bar fix for Broadcom Vulcan early silicon +Bugzilla: 1563590 +RH-Acked-by: Dean Nelson <dnelson@redhat.com> +RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com> +RH-Acked-by: Mark Salter <msalter@redhat.com> + +From: Ashok Kumar Sekar <asekar@redhat.com> + +PCI BAR 5 is not setup correctly for the on-board AHCI +controller on Broadcom's Vulcan processor. Added a quirk to fix BAR 5 +by using BAR 4's resources which are populated correctly but NOT used +by the AHCI controller actually. + +RHEL-only: + +Both patches are in RHEL-7.6 also. Inclusion of the patches into RHEL-8 +was discussed. Since there are partners with Ax system configurations it +was decided to carry them in RHEL8 too. See: + + https://bugzilla.redhat.com/show_bug.cgi?id=1563590#c1 + +Upstream Status: RHEL only +Signed-off-by: Ashok Kumar Sekar <asekar@redhat.com> +Signed-off-by: Jayachandran C <jchandra@broadcom.com> +Signed-off-by: Robert Richter <rrichter@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + drivers/pci/quirks.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c +index ca9ed5774eb1..bd0cee4236b0 100644 +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -4183,6 +4183,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9000, + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9084, + quirk_bridge_cavm_thrx2_pcie_root); + ++/* ++ * PCI BAR 5 is not setup correctly for the on-board AHCI controller ++ * on Broadcom's Vulcan processor. Added a quirk to fix BAR 5 by ++ * using BAR 4's resources which are populated correctly and NOT ++ * actually used by the AHCI controller. ++ */ ++static void quirk_fix_vulcan_ahci_bars(struct pci_dev *dev) ++{ ++ struct resource *r = &dev->resource[4]; ++ ++ if (!(r->flags & IORESOURCE_MEM) || (r->start == 0)) ++ return; ++ ++ /* Set BAR5 resource to BAR4 */ ++ dev->resource[5] = *r; ++ ++ /* Update BAR5 in pci config space */ ++ pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, r->start); ++ ++ /* Clear BAR4's resource */ ++ memset(r, 0, sizeof(*r)); ++} ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9027, quirk_fix_vulcan_ahci_bars); ++ + /* + * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero) + * class code. Fix it. +-- +2.26.2 + diff --git a/ACPI-scan-Fix-regression-related-to-X-Gene-UARTs.patch b/0001-aarch64-acpi-scan-Fix-regression-related-to-X-Gene-U.patch index 697d76e13..86cbf5dad 100644 --- a/ACPI-scan-Fix-regression-related-to-X-Gene-UARTs.patch +++ b/0001-aarch64-acpi-scan-Fix-regression-related-to-X-Gene-U.patch @@ -1,7 +1,17 @@ -From 1e494dc5f3140005ff1f17bc06c0c16d6d50d580 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Salter <msalter@redhat.com> -Date: Thu, 19 Apr 2018 23:29:47 -0400 -Subject: [PATCH] ACPI / scan: Fix regression related to X-Gene UARTs +Date: Thu, 10 May 2018 17:38:44 -0400 +Subject: [PATCH] aarch64: acpi scan: Fix regression related to X-Gene UARTs + +Message-id: <20180510173844.29580-4-msalter@redhat.com> +Patchwork-id: 214381 +O-Subject: [RHEL-8 BZ1519554 3/3] aarch64: acpi scan: Fix regression related to X-Gene UARTs +Bugzilla: 1519554 +RH-Acked-by: Al Stone <astone@redhat.com> +RH-Acked-by: Tony Camuso <tcamuso@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1519554 +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16144520 Commit e361d1f85855 ("ACPI / scan: Fix enumeration for special UART devices") caused a regression with some X-Gene based platforms (Mustang @@ -10,30 +20,33 @@ device is also a slave device attached to itself. With the above commit the UART won't be enumerated by ACPI scan (slave serial devices shouldn't be). So check for X-Gene UART device and skip slace device check on it. +Upstream Status: RHEL only Signed-off-by: Mark Salter <msalter@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> --- - drivers/acpi/scan.c | 8 ++++++++ - 1 file changed, 8 insertions(+) + drivers/acpi/scan.c | 9 +++++++++ + 1 file changed, 9 insertions(+) diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index e1b6231cfa1c..542dafac4306 100644 +index 6d3448895382..221255007dc8 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c -@@ -1567,6 +1567,14 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) +@@ -1563,6 +1563,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) if (!acpi_match_device_ids(device, i2c_multi_instantiate_ids)) return false; - + + /* + * Firmware on some arm64 X-Gene platforms will make the UART + * device appear as both a UART and a slave of that UART. Just + * bail out here for X-Gene UARTs. + */ -+ if (!strcmp(acpi_device_hid(device), "APMC0D08")) ++ if (IS_ENABLED(CONFIG_ARM64) && ++ !strcmp(acpi_device_hid(device), "APMC0D08")) + return false; + INIT_LIST_HEAD(&resource_list); acpi_dev_get_resources(device, &resource_list, acpi_check_serial_bus_slave, -- -2.17.1 +2.26.2 diff --git a/0001-acpi-prefer-booting-with-ACPI-over-DTS.patch b/0001-acpi-prefer-booting-with-ACPI-over-DTS.patch new file mode 100644 index 000000000..e188b5a2d --- /dev/null +++ b/0001-acpi-prefer-booting-with-ACPI-over-DTS.patch @@ -0,0 +1,56 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mark Salter <msalter@redhat.com> +Date: Fri, 11 May 2018 21:01:17 -0400 +Subject: [PATCH] acpi: prefer booting with ACPI over DTS + +Message-id: <20180511210117.10457-1-msalter@redhat.com> +Patchwork-id: 214708 +O-Subject: [RHEL-8 BZ1576869] [RHEL only] acpi: prefer booting with ACPI over DTS +Bugzilla: 1576869 +RH-Acked-by: Jonathan Toppins <jtoppins@redhat.com> +RH-Acked-by: Tony Camuso <tcamuso@redhat.com> +RH-Acked-by: Bhupesh Sharma <bhsharma@redhat.com> +RH-Acked-by: Dean Nelson <dnelson@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1576869 +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16208479 +Testing: Verified kernel defaults to ACPI on Mustang + +From: Jonathan Toppins <jtoppins@redhat.com> + + This patch forces ACPI boot tables to be preferred over DTS. + + Currently for ACPI to be used a user either has to set acpi=on on the + kernel command line or make sure any device tree passed to the kernel + is empty. If the dtb passed to the kernel is non-empty then device-tree + will be chosen as the boot method of choice. + + RHEL does not wish to support this boot method so change table boot + preferences to use ACPI. In the event ACPI table checks fail the kernel + will fallback to using DTS to boot. + + Signed-off-by: Jonathan Toppins <jtoppins@redhat.com> + +Upstream Status: RHEL only +Signed-off-by: Mark Salter <msalter@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + arch/arm64/kernel/acpi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c +index a100483b47c4..29f693734edb 100644 +--- a/arch/arm64/kernel/acpi.c ++++ b/arch/arm64/kernel/acpi.c +@@ -39,7 +39,7 @@ int acpi_pci_disabled = 1; /* skip ACPI PCI scan and IRQ initialization */ + EXPORT_SYMBOL(acpi_pci_disabled); + + static bool param_acpi_off __initdata; +-static bool param_acpi_on __initdata; ++static bool param_acpi_on __initdata = true; + static bool param_acpi_force __initdata; + + static int __init parse_acpi(char *arg) +-- +2.26.2 + diff --git a/0001-acr-Use-kmemdup-instead-of-kmalloc-and-memcpy.patch b/0001-acr-Use-kmemdup-instead-of-kmalloc-and-memcpy.patch new file mode 100644 index 000000000..9470c4608 --- /dev/null +++ b/0001-acr-Use-kmemdup-instead-of-kmalloc-and-memcpy.patch @@ -0,0 +1,55 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zou Wei <zou_wei@huawei.com> +Date: Tue, 21 Apr 2020 20:37:31 +0800 +Subject: [PATCH] acr: Use kmemdup instead of kmalloc and memcpy + +Fixes coccicheck warning: + +drivers/gpu/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c:103:23-30: WARNING opportunity for kmemdup +drivers/gpu/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c:113:22-29: WARNING opportunity for kmemdup + +Fixes: 22dcda45a3d1 ("drivers/gpu/drm/nouveau/acr: implement new subdev to replace "secure boot"") +Reported-by: Hulk Robot <hulkci@huawei.com> +Signed-off-by: Zou Wei <zou_wei@huawei.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c b/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c +index aecce2dac558..667fa016496e 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c ++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/acr/hsfw.c +@@ -100,25 +100,21 @@ nvkm_acr_hsfw_load_image(struct nvkm_acr *acr, const char *name, int ver, + hsfw->data_size = lhdr->data_size; + + hsfw->sig.prod.size = fwhdr->sig_prod_size; +- hsfw->sig.prod.data = kmalloc(hsfw->sig.prod.size, GFP_KERNEL); ++ hsfw->sig.prod.data = kmemdup(fw->data + fwhdr->sig_prod_offset + sig, ++ hsfw->sig.prod.size, GFP_KERNEL); + if (!hsfw->sig.prod.data) { + ret = -ENOMEM; + goto done; + } + +- memcpy(hsfw->sig.prod.data, fw->data + fwhdr->sig_prod_offset + sig, +- hsfw->sig.prod.size); +- + hsfw->sig.dbg.size = fwhdr->sig_dbg_size; +- hsfw->sig.dbg.data = kmalloc(hsfw->sig.dbg.size, GFP_KERNEL); ++ hsfw->sig.dbg.data = kmemdup(fw->data + fwhdr->sig_dbg_offset + sig, ++ hsfw->sig.dbg.size, GFP_KERNEL); + if (!hsfw->sig.dbg.data) { + ret = -ENOMEM; + goto done; + } + +- memcpy(hsfw->sig.dbg.data, fw->data + fwhdr->sig_dbg_offset + sig, +- hsfw->sig.dbg.size); +- + hsfw->sig.patch_loc = loc; + done: + nvkm_firmware_put(fw); +-- +2.26.2 + diff --git a/0001-ahci-thunderx2-Fix-for-errata-that-affects-stop-engi.patch b/0001-ahci-thunderx2-Fix-for-errata-that-affects-stop-engi.patch new file mode 100644 index 000000000..0299e965c --- /dev/null +++ b/0001-ahci-thunderx2-Fix-for-errata-that-affects-stop-engi.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Robert Richter <rrichter@redhat.com> +Date: Thu, 7 Jun 2018 22:59:33 -0400 +Subject: [PATCH] ahci: thunderx2: Fix for errata that affects stop engine + +Message-id: <1528412373-19128-3-git-send-email-rrichter@redhat.com> +Patchwork-id: 220952 +O-Subject: [RHEL-8.0 BZ 1563590 v2 2/2] ahci: thunderx2: Fix for errata that affects stop engine +Bugzilla: 1563590 +RH-Acked-by: Dean Nelson <dnelson@redhat.com> +RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com> +RH-Acked-by: Mark Salter <msalter@redhat.com> + +From: Jayachandran C <jnair@caviumnetworks.com> + +Apply workaround for this errata: + Synopsis: Resetting PxCMD.ST may hang the SATA device + + Description: An internal ping-pong buffer state is not reset + correctly for an PxCMD.ST=0 command for a SATA channel. This + may cause the SATA interface to hang when a PxCMD.ST=0 command + is received. + + Workaround: A SATA_BIU_CORE_ENABLE.sw_init_bsi must be asserted + by the driver whenever the PxCMD.ST needs to be de-asserted. This + will reset both the ports. So, it may not always work in a 2 + channel SATA system. + + Resolution: Fix in B0. + +Add the code to ahci_stop_engine() to do this. It is not easy to +stop the other "port" since it is associated with a different AHCI +interface. Please note that with this fix, SATA reset does not +hang any more, but it can cause failures on the other interface +if that is in active use. + +Unfortunately, we have nothing other the the CPU ID to check if the +SATA block has this issue. + +RHEL-only: + +Both patches are in RHEL-7.6 also. Inclusion of the patches into RHEL-8 +was discussed. Since there are partners with Ax system configurations it +was decided to carry them in RHEL8 too. See: + + https://bugzilla.redhat.com/show_bug.cgi?id=1563590#c1 + +[v3 with new delays] +Signed-off-by: Jayachandran C <jnair@caviumnetworks.com> + +Upstream Status: RHEL only +Signed-off-by: Robert Richter <rrichter@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + drivers/ata/libahci.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c +index ea5bf5f4cbed..71c55cae27ac 100644 +--- a/drivers/ata/libahci.c ++++ b/drivers/ata/libahci.c +@@ -666,6 +666,24 @@ int ahci_stop_engine(struct ata_port *ap) + tmp &= ~PORT_CMD_START; + writel(tmp, port_mmio + PORT_CMD); + ++#ifdef CONFIG_ARM64 ++ /* Rev Ax of Cavium CN99XX needs a hack for port stop */ ++ if (dev_is_pci(ap->host->dev) && ++ to_pci_dev(ap->host->dev)->vendor == 0x14e4 && ++ to_pci_dev(ap->host->dev)->device == 0x9027 && ++ midr_is_cpu_model_range(read_cpuid_id(), ++ MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN), ++ MIDR_CPU_VAR_REV(0, 0), ++ MIDR_CPU_VAR_REV(0, MIDR_REVISION_MASK))) { ++ tmp = readl(hpriv->mmio + 0x8000); ++ udelay(100); ++ writel(tmp | (1 << 26), hpriv->mmio + 0x8000); ++ udelay(100); ++ writel(tmp & ~(1 << 26), hpriv->mmio + 0x8000); ++ dev_warn(ap->host->dev, "CN99XX SATA reset workaround applied\n"); ++ } ++#endif ++ + /* wait for engine to stop. This could be as long as 500 msec */ + tmp = ata_wait_register(ap, port_mmio + PORT_CMD, + PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500); +-- +2.26.2 + diff --git a/0001-arm-aarch64-Drop-the-EXPERT-setting-from-ARM64_FORCE.patch b/0001-arm-aarch64-Drop-the-EXPERT-setting-from-ARM64_FORCE.patch new file mode 100644 index 000000000..286c898cb --- /dev/null +++ b/0001-arm-aarch64-Drop-the-EXPERT-setting-from-ARM64_FORCE.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jeremy Cline <jcline@redhat.com> +Date: Tue, 1 Oct 2019 15:51:23 +0000 +Subject: [PATCH] arm: aarch64: Drop the EXPERT setting from ARM64_FORCE_52BIT + +Message-id: <20191001181256.22935-1-jcline@redhat.com> +Patchwork-id: 275498 +O-Subject: [ARK INTERNAL PATCH] [ARK INTERNAL PATCH] [redhat] Add patch + to drop the EXPERT setting from ARM64_FORCE_52BIT +Bugzilla: +RH-Acked-by: Laura Abbott <labbott@redhat.com> + +We don't turn on EXPERT as there are few settings we actually want to +mess with. Remove the dependency for ARM64_FORCE_52BIT as we do want +that on in debug builds to help find 52-bit bugs. + +Upstream Status: RHEL only +Signed-off-by: Jeremy Cline <jcline@redhat.com> +--- + arch/arm64/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig +index 5d513f461957..7f37a6d0658a 100644 +--- a/arch/arm64/Kconfig ++++ b/arch/arm64/Kconfig +@@ -858,7 +858,7 @@ endchoice + + config ARM64_FORCE_52BIT + bool "Force 52-bit virtual addresses for userspace" +- depends on ARM64_VA_BITS_52 && EXPERT ++ depends on ARM64_VA_BITS_52 + help + For systems with 52-bit userspace VAs enabled, the kernel will attempt + to maintain compatibility with older software by providing 48-bit VAs +-- +2.26.2 + diff --git a/arm-make-highpte-not-expert.patch b/0001-arm-make-CONFIG_HIGHPTE-optional-without-CONFIG_EXPE.patch index 09630fda1..040f33cb1 100644 --- a/arm-make-highpte-not-expert.patch +++ b/0001-arm-make-CONFIG_HIGHPTE-optional-without-CONFIG_EXPE.patch @@ -1,4 +1,4 @@ -From 19908e5fe3e63ed2d39f0a8a9135f35fd428d766 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jon Masters <jcm@redhat.com> Date: Thu, 18 Jul 2019 15:47:26 -0400 Subject: [PATCH] arm: make CONFIG_HIGHPTE optional without CONFIG_EXPERT @@ -11,12 +11,12 @@ Signed-off-by: Jon Masters <jcm@redhat.com> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 2bf1ce39a96d..e792b3e60095 100644 +index c77c93c485a0..f808c4e0727f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -1644,9 +1644,9 @@ config HIGHMEM +@@ -1543,9 +1543,9 @@ config HIGHMEM If unsure, say n. - + config HIGHPTE - bool "Allocate 2nd-level pagetables from highmem" if EXPERT + bool "Allocate 2nd-level pagetables from highmem" @@ -27,5 +27,5 @@ index 2bf1ce39a96d..e792b3e60095 100644 The VM uses one page of physical memory for each page table. For systems with a lot of processes, this can use a lot of -- -2.17.2 +2.26.2 diff --git a/0001-compat_ioctl-cdrom-Replace-.ioctl-with-.compat_ioctl.patch b/0001-compat_ioctl-cdrom-Replace-.ioctl-with-.compat_ioctl.patch deleted file mode 100644 index be10f81af..000000000 --- a/0001-compat_ioctl-cdrom-Replace-.ioctl-with-.compat_ioctl.patch +++ /dev/null @@ -1,83 +0,0 @@ -From cef57541cdc079165e9af419ccacd36dce863d3a Mon Sep 17 00:00:00 2001 -From: Adam Williamson <awilliam@redhat.com> -Date: Wed, 19 Feb 2020 17:50:07 +0100 -Subject: [PATCH] compat_ioctl, cdrom: Replace .ioctl with .compat_ioctl in - four appropriate places - -Arnd Bergmann inadvertently typoed these in d320a9551e394 and -64cbfa96551a; they seem to be the cause of -https://bugzilla.redhat.com/show_bug.cgi?id=1801353 , invalid -SCSI commands when udev tries to query a DVD drive. - -[arnd] Found another instance of the same bug, also introduced -in my compat_ioctl series. - -Fixes: d320a9551e39 ("compat_ioctl: scsi: move ioctl handling into drivers") -Fixes: 64cbfa96551a ("compat_ioctl: move cdrom commands into cdrom.c") -Fixes: c103d6ee69f9 ("compat_ioctl: ide: floppy: add handler") -Link: https://bugzilla.redhat.com/show_bug.cgi?id=1801353 -Bisected-by: Chris Murphy <bugzilla@colorremedies.com> -Signed-off-by: Adam Williamson <awilliam@redhat.com> -Signed-off-by: Arnd Bergmann <arnd@arndb.de> ---- - drivers/block/paride/pcd.c | 2 +- - drivers/cdrom/gdrom.c | 2 +- - drivers/ide/ide-gd.c | 2 +- - drivers/scsi/sr.c | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c -index 117cfc8cd05a..cda5cf917e9a 100644 ---- a/drivers/block/paride/pcd.c -+++ b/drivers/block/paride/pcd.c -@@ -276,7 +276,7 @@ static const struct block_device_operations pcd_bdops = { - .release = pcd_block_release, - .ioctl = pcd_block_ioctl, - #ifdef CONFIG_COMPAT -- .ioctl = blkdev_compat_ptr_ioctl, -+ .compat_ioctl = blkdev_compat_ptr_ioctl, - #endif - .check_events = pcd_block_check_events, - }; -diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c -index 886b2638c730..c51292c2a131 100644 ---- a/drivers/cdrom/gdrom.c -+++ b/drivers/cdrom/gdrom.c -@@ -519,7 +519,7 @@ static const struct block_device_operations gdrom_bdops = { - .check_events = gdrom_bdops_check_events, - .ioctl = gdrom_bdops_ioctl, - #ifdef CONFIG_COMPAT -- .ioctl = blkdev_compat_ptr_ioctl, -+ .compat_ioctl = blkdev_compat_ptr_ioctl, - #endif - }; - -diff --git a/drivers/ide/ide-gd.c b/drivers/ide/ide-gd.c -index 1bb99b556393..05c26986637b 100644 ---- a/drivers/ide/ide-gd.c -+++ b/drivers/ide/ide-gd.c -@@ -361,7 +361,7 @@ static const struct block_device_operations ide_gd_ops = { - .release = ide_gd_release, - .ioctl = ide_gd_ioctl, - #ifdef CONFIG_COMPAT -- .ioctl = ide_gd_compat_ioctl, -+ .compat_ioctl = ide_gd_compat_ioctl, - #endif - .getgeo = ide_gd_getgeo, - .check_events = ide_gd_check_events, -diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c -index 0fbb8fe6e521..e4240e4ae8bb 100644 ---- a/drivers/scsi/sr.c -+++ b/drivers/scsi/sr.c -@@ -688,7 +688,7 @@ static const struct block_device_operations sr_bdops = - .release = sr_block_release, - .ioctl = sr_block_ioctl, - #ifdef CONFIG_COMPAT -- .ioctl = sr_block_compat_ioctl, -+ .compat_ioctl = sr_block_compat_ioctl, - #endif - .check_events = sr_block_check_events, - .revalidate_disk = sr_block_revalidate_disk, --- -2.24.1 - diff --git a/0001-core-memory-remove-redundant-assignments-to-variable.patch b/0001-core-memory-remove-redundant-assignments-to-variable.patch new file mode 100644 index 000000000..d490d68d2 --- /dev/null +++ b/0001-core-memory-remove-redundant-assignments-to-variable.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Colin Ian King <colin.king@canonical.com> +Date: Sat, 29 Feb 2020 00:53:07 +0000 +Subject: [PATCH] core/memory: remove redundant assignments to variable ret + +The variable ret is being initialized with a value that is never +read and it is being updated later with a new value. The initialization +is redundant and can be removed. + +Addresses-Coverity: ("Unused value") +Signed-off-by: Colin Ian King <colin.king@canonical.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/core/memory.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/core/memory.c b/drivers/gpu/drm/nouveau/nvkm/core/memory.c +index 4cc186262d34..38130ef272d6 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/core/memory.c ++++ b/drivers/gpu/drm/nouveau/nvkm/core/memory.c +@@ -140,7 +140,7 @@ nvkm_memory_new(struct nvkm_device *device, enum nvkm_memory_target target, + { + struct nvkm_instmem *imem = device->imem; + struct nvkm_memory *memory; +- int ret = -ENOSYS; ++ int ret; + + if (unlikely(target != NVKM_MEM_TARGET_INST || !imem)) + return -ENOSYS; +-- +2.26.2 + diff --git a/0001-device-detect-if-changing-endianness-failed.patch b/0001-device-detect-if-changing-endianness-failed.patch new file mode 100644 index 000000000..1089b7e87 --- /dev/null +++ b/0001-device-detect-if-changing-endianness-failed.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Karol Herbst <kherbst@redhat.com> +Date: Tue, 28 Apr 2020 18:54:03 +0200 +Subject: [PATCH] device: detect if changing endianness failed + +v2: relax the checks a little + +Signed-off-by: Karol Herbst <kherbst@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + .../gpu/drm/nouveau/nvkm/engine/device/base.c | 26 +++++++++++++++---- + 1 file changed, 21 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +index 37589f36546d..c732074bf790 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +@@ -2924,6 +2924,20 @@ nvkm_device_del(struct nvkm_device **pdevice) + } + } + ++static inline bool ++nvkm_device_endianness(void __iomem *pri) ++{ ++ u32 boot1 = ioread32_native(pri + 0x000004) & 0x01000001; ++#ifdef __BIG_ENDIAN ++ if (!boot1) ++ return false; ++#else ++ if (boot1) ++ return false; ++#endif ++ return true; ++} ++ + int + nvkm_device_ctor(const struct nvkm_device_func *func, + const struct nvkm_device_quirk *quirk, +@@ -2973,13 +2987,15 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + /* identify the chipset, and determine classes of subdev/engines */ + if (detect) { + /* switch mmio to cpu's native endianness */ +-#ifndef __BIG_ENDIAN +- if (ioread32_native(map + 0x000004) != 0x00000000) { +-#else +- if (ioread32_native(map + 0x000004) == 0x00000000) { +-#endif ++ if (!nvkm_device_endianness(map)) { + iowrite32_native(0x01000001, map + 0x000004); + ioread32_native(map); ++ if (!nvkm_device_endianness(map)) { ++ nvdev_error(device, ++ "GPU not supported on big-endian\n"); ++ ret = -ENOSYS; ++ goto done; ++ } + } + + /* read boot0 and strapping information */ +-- +2.26.2 + diff --git a/0001-device-detect-vGPUs.patch b/0001-device-detect-vGPUs.patch new file mode 100644 index 000000000..08f591ff7 --- /dev/null +++ b/0001-device-detect-vGPUs.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Karol Herbst <kherbst@redhat.com> +Date: Tue, 28 Apr 2020 18:54:04 +0200 +Subject: [PATCH] device: detect vGPUs + +Using ENODEV as this prevents probe failed errors in dmesg. + +v2: move check further down + +Signed-off-by: Karol Herbst <kherbst@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +index c732074bf790..f977dddcd809 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +@@ -2948,7 +2948,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + { + struct nvkm_subdev *subdev; + u64 mmio_base, mmio_size; +- u32 boot0, strap; ++ u32 boot0, boot1, strap; + void __iomem *map = NULL; + int ret = -EEXIST, i; + unsigned chipset; +@@ -2998,9 +2998,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + } + } + +- /* read boot0 and strapping information */ + boot0 = ioread32_native(map + 0x000000); +- strap = ioread32_native(map + 0x101000); + + /* chipset can be overridden for devel/testing purposes */ + chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0); +@@ -3158,6 +3156,17 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + nvdev_info(device, "NVIDIA %s (%08x)\n", + device->chip->name, boot0); + ++ /* vGPU detection */ ++ boot1 = ioread32_native(map + 0x000004); ++ if (device->card_type >= TU100 && (boot1 & 0x00030000)) { ++ nvdev_info(device, "vGPUs are not supported\n"); ++ ret = -ENODEV; ++ goto done; ++ } ++ ++ /* read strapping information */ ++ strap = ioread32_native(map + 0x101000); ++ + /* determine frequency of timing crystal */ + if ( device->card_type <= NV_10 || device->chipset < 0x17 || + (device->chipset >= 0x20 && device->chipset < 0x25)) +-- +2.26.2 + diff --git a/0001-device-rework-mmio-mapping-code-to-get-rid-of-second.patch b/0001-device-rework-mmio-mapping-code-to-get-rid-of-second.patch new file mode 100644 index 000000000..bde820ba5 --- /dev/null +++ b/0001-device-rework-mmio-mapping-code-to-get-rid-of-second.patch @@ -0,0 +1,84 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Karol Herbst <kherbst@redhat.com> +Date: Tue, 28 Apr 2020 18:54:02 +0200 +Subject: [PATCH] device: rework mmio mapping code to get rid of second map + +Fixes warnings on GPUs with smaller a smaller mmio region like vGPUs. + +Signed-off-by: Karol Herbst <kherbst@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + .../gpu/drm/nouveau/nvkm/engine/device/base.c | 27 ++++++++++--------- + 1 file changed, 15 insertions(+), 12 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +index 8ebbe1656008..37589f36546d 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +@@ -2935,7 +2935,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + struct nvkm_subdev *subdev; + u64 mmio_base, mmio_size; + u32 boot0, strap; +- void __iomem *map; ++ void __iomem *map = NULL; + int ret = -EEXIST, i; + unsigned chipset; + +@@ -2961,12 +2961,17 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + mmio_base = device->func->resource_addr(device, 0); + mmio_size = device->func->resource_size(device, 0); + +- /* identify the chipset, and determine classes of subdev/engines */ +- if (detect) { +- map = ioremap(mmio_base, 0x102000); +- if (ret = -ENOMEM, map == NULL) ++ if (detect || mmio) { ++ map = ioremap(mmio_base, mmio_size); ++ if (map == NULL) { ++ nvdev_error(device, "unable to map PRI\n"); ++ ret = -ENOMEM; + goto done; ++ } ++ } + ++ /* identify the chipset, and determine classes of subdev/engines */ ++ if (detect) { + /* switch mmio to cpu's native endianness */ + #ifndef __BIG_ENDIAN + if (ioread32_native(map + 0x000004) != 0x00000000) { +@@ -2980,7 +2985,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + /* read boot0 and strapping information */ + boot0 = ioread32_native(map + 0x000000); + strap = ioread32_native(map + 0x101000); +- iounmap(map); + + /* chipset can be overridden for devel/testing purposes */ + chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0); +@@ -3159,12 +3163,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + device->name = device->chip->name; + + if (mmio) { +- device->pri = ioremap(mmio_base, mmio_size); +- if (!device->pri) { +- nvdev_error(device, "unable to map PRI\n"); +- ret = -ENOMEM; +- goto done; +- } ++ device->pri = map; + } + + mutex_init(&device->mutex); +@@ -3254,6 +3253,10 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + + ret = 0; + done: ++ if (map && (!mmio || ret)) { ++ device->pri = NULL; ++ iounmap(map); ++ } + mutex_unlock(&nv_devices_mutex); + return ret; + } +-- +2.26.2 + diff --git a/0001-device-use-regular-PRI-accessors-in-chipset-detectio.patch b/0001-device-use-regular-PRI-accessors-in-chipset-detectio.patch new file mode 100644 index 000000000..ec4345169 --- /dev/null +++ b/0001-device-use-regular-PRI-accessors-in-chipset-detectio.patch @@ -0,0 +1,113 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Thu, 30 Apr 2020 14:08:53 +1000 +Subject: [PATCH] device: use regular PRI accessors in chipset detection + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + .../gpu/drm/nouveau/nvkm/engine/device/base.c | 31 ++++++++----------- + 1 file changed, 13 insertions(+), 18 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +index f977dddcd809..5b90c2a1bf3d 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +@@ -2925,9 +2925,9 @@ nvkm_device_del(struct nvkm_device **pdevice) + } + + static inline bool +-nvkm_device_endianness(void __iomem *pri) ++nvkm_device_endianness(struct nvkm_device *device) + { +- u32 boot1 = ioread32_native(pri + 0x000004) & 0x01000001; ++ u32 boot1 = nvkm_rd32(device, 0x000004) & 0x01000001; + #ifdef __BIG_ENDIAN + if (!boot1) + return false; +@@ -2949,7 +2949,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + struct nvkm_subdev *subdev; + u64 mmio_base, mmio_size; + u32 boot0, boot1, strap; +- void __iomem *map = NULL; + int ret = -EEXIST, i; + unsigned chipset; + +@@ -2976,8 +2975,8 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + mmio_size = device->func->resource_size(device, 0); + + if (detect || mmio) { +- map = ioremap(mmio_base, mmio_size); +- if (map == NULL) { ++ device->pri = ioremap(mmio_base, mmio_size); ++ if (device->pri == NULL) { + nvdev_error(device, "unable to map PRI\n"); + ret = -ENOMEM; + goto done; +@@ -2987,10 +2986,10 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + /* identify the chipset, and determine classes of subdev/engines */ + if (detect) { + /* switch mmio to cpu's native endianness */ +- if (!nvkm_device_endianness(map)) { +- iowrite32_native(0x01000001, map + 0x000004); +- ioread32_native(map); +- if (!nvkm_device_endianness(map)) { ++ if (!nvkm_device_endianness(device)) { ++ nvkm_wr32(device, 0x000004, 0x01000001); ++ nvkm_rd32(device, 0x000000); ++ if (!nvkm_device_endianness(device)) { + nvdev_error(device, + "GPU not supported on big-endian\n"); + ret = -ENOSYS; +@@ -2998,7 +2997,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + } + } + +- boot0 = ioread32_native(map + 0x000000); ++ boot0 = nvkm_rd32(device, 0x000000); + + /* chipset can be overridden for devel/testing purposes */ + chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0); +@@ -3157,7 +3156,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + device->chip->name, boot0); + + /* vGPU detection */ +- boot1 = ioread32_native(map + 0x000004); ++ boot1 = nvkm_rd32(device, 0x0000004); + if (device->card_type >= TU100 && (boot1 & 0x00030000)) { + nvdev_info(device, "vGPUs are not supported\n"); + ret = -ENODEV; +@@ -3165,7 +3164,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + } + + /* read strapping information */ +- strap = ioread32_native(map + 0x101000); ++ strap = nvkm_rd32(device, 0x101000); + + /* determine frequency of timing crystal */ + if ( device->card_type <= NV_10 || device->chipset < 0x17 || +@@ -3187,10 +3186,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + if (!device->name) + device->name = device->chip->name; + +- if (mmio) { +- device->pri = map; +- } +- + mutex_init(&device->mutex); + + for (i = 0; i < NVKM_SUBDEV_NR; i++) { +@@ -3278,9 +3273,9 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + + ret = 0; + done: +- if (map && (!mmio || ret)) { ++ if (device->pri && (!mmio || ret)) { ++ iounmap(device->pri); + device->pri = NULL; +- iounmap(map); + } + mutex_unlock(&nv_devices_mutex); + return ret; +-- +2.26.2 + diff --git a/0001-disp-gv100-expose-capabilities-class.patch b/0001-disp-gv100-expose-capabilities-class.patch new file mode 100644 index 000000000..60293792f --- /dev/null +++ b/0001-disp-gv100-expose-capabilities-class.patch @@ -0,0 +1,149 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Thu, 13 Feb 2020 09:39:34 +1000 +Subject: [PATCH] disp/gv100-: expose capabilities class + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/include/nvif/class.h | 2 + + .../gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 2 + + .../drm/nouveau/nvkm/engine/disp/capsgv100.c | 60 +++++++++++++++++++ + .../drm/nouveau/nvkm/engine/disp/rootgv100.c | 1 + + .../drm/nouveau/nvkm/engine/disp/rootnv50.h | 3 + + .../drm/nouveau/nvkm/engine/disp/roottu102.c | 1 + + 6 files changed, 69 insertions(+) + create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c + +diff --git a/drivers/gpu/drm/nouveau/include/nvif/class.h b/drivers/gpu/drm/nouveau/include/nvif/class.h +index 30659747ffe8..2c79beb41126 100644 +--- a/drivers/gpu/drm/nouveau/include/nvif/class.h ++++ b/drivers/gpu/drm/nouveau/include/nvif/class.h +@@ -89,6 +89,8 @@ + #define GV100_DISP /* cl5070.h */ 0x0000c370 + #define TU102_DISP /* cl5070.h */ 0x0000c570 + ++#define GV100_DISP_CAPS 0x0000c373 ++ + #define NV31_MPEG 0x00003174 + #define G82_MPEG 0x00008274 + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +index 0d584d0da59c..f7af648e0c17 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +@@ -74,6 +74,8 @@ nvkm-y += nvkm/engine/disp/rootgp102.o + nvkm-y += nvkm/engine/disp/rootgv100.o + nvkm-y += nvkm/engine/disp/roottu102.o + ++nvkm-y += nvkm/engine/disp/capsgv100.o ++ + nvkm-y += nvkm/engine/disp/channv50.o + nvkm-y += nvkm/engine/disp/changf119.o + nvkm-y += nvkm/engine/disp/changv100.o +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c +new file mode 100644 +index 000000000000..5026e530f4bb +--- /dev/null ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c +@@ -0,0 +1,60 @@ ++/* ++ * Copyright 2020 Red Hat Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#define gv100_disp_caps(p) container_of((p), struct gv100_disp_caps, object) ++#include "rootnv50.h" ++ ++struct gv100_disp_caps { ++ struct nvkm_object object; ++ struct nv50_disp *disp; ++}; ++ ++static int ++gv100_disp_caps_map(struct nvkm_object *object, void *argv, u32 argc, ++ enum nvkm_object_map *type, u64 *addr, u64 *size) ++{ ++ struct gv100_disp_caps *caps = gv100_disp_caps(object); ++ struct nvkm_device *device = caps->disp->base.engine.subdev.device; ++ *type = NVKM_OBJECT_MAP_IO; ++ *addr = 0x640000 + device->func->resource_addr(device, 0); ++ *size = 0x1000; ++ return 0; ++} ++ ++static const struct nvkm_object_func ++gv100_disp_caps = { ++ .map = gv100_disp_caps_map, ++}; ++ ++int ++gv100_disp_caps_new(const struct nvkm_oclass *oclass, void *argv, u32 argc, ++ struct nv50_disp *disp, struct nvkm_object **pobject) ++{ ++ struct gv100_disp_caps *caps; ++ ++ if (!(caps = kzalloc(sizeof(*caps), GFP_KERNEL))) ++ return -ENOMEM; ++ *pobject = &caps->object; ++ ++ nvkm_object_ctor(&gv100_disp_caps, oclass, &caps->object); ++ caps->disp = disp; ++ return 0; ++} +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c +index 9c658d632d37..47efb48d769a 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c +@@ -27,6 +27,7 @@ + static const struct nv50_disp_root_func + gv100_disp_root = { + .user = { ++ {{-1,-1,GV100_DISP_CAPS }, gv100_disp_caps_new }, + {{0,0,GV100_DISP_CURSOR }, gv100_disp_curs_new }, + {{0,0,GV100_DISP_WINDOW_IMM_CHANNEL_DMA}, gv100_disp_wimm_new }, + {{0,0,GV100_DISP_CORE_CHANNEL_DMA }, gv100_disp_core_new }, +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h +index a1f942793f98..7070f5408d92 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h +@@ -24,6 +24,9 @@ int nv50_disp_root_new_(const struct nv50_disp_root_func *, struct nvkm_disp *, + const struct nvkm_oclass *, void *data, u32 size, + struct nvkm_object **); + ++int gv100_disp_caps_new(const struct nvkm_oclass *, void *, u32, ++ struct nv50_disp *, struct nvkm_object **); ++ + extern const struct nvkm_disp_oclass nv50_disp_root_oclass; + extern const struct nvkm_disp_oclass g84_disp_root_oclass; + extern const struct nvkm_disp_oclass g94_disp_root_oclass; +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c +index 579a5d02308a..d8719d38b98a 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c +@@ -27,6 +27,7 @@ + static const struct nv50_disp_root_func + tu102_disp_root = { + .user = { ++ {{-1,-1,GV100_DISP_CAPS }, gv100_disp_caps_new }, + {{0,0,TU102_DISP_CURSOR }, gv100_disp_curs_new }, + {{0,0,TU102_DISP_WINDOW_IMM_CHANNEL_DMA}, gv100_disp_wimm_new }, + {{0,0,TU102_DISP_CORE_CHANNEL_DMA }, gv100_disp_core_new }, +-- +2.26.2 + diff --git a/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch b/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch new file mode 100644 index 000000000..cba6699dc --- /dev/null +++ b/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch @@ -0,0 +1,146 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Wed, 6 May 2020 14:40:56 +1000 +Subject: [PATCH] disp/hda/gf119-: add HAL for programming device entry in SF + +Register has moved on GV100. + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c | 11 +++++++++-- + drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h | 2 ++ + drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | 1 + + drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c | 1 + + drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c | 1 + + drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c | 1 + + drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c | 1 + + drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c | 1 + + 8 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +index 1080ba6ecd64..8a0ec7db5145 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +@@ -23,6 +23,14 @@ + */ + #include "ior.h" + ++void ++gf119_hda_device_entry(struct nvkm_ior *ior, int head) ++{ ++ struct nvkm_device *device = ior->disp->engine.subdev.device; ++ const u32 hoff = 0x800 * head; ++ nvkm_mask(device, 0x616548 + hoff, 0x00000070, 0x00000000); ++} ++ + void + gf119_hda_eld(struct nvkm_ior *ior, int head, u8 *data, u8 size) + { +@@ -41,11 +49,10 @@ void + gf119_hda_hpd(struct nvkm_ior *ior, int head, bool present) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; +- const u32 hoff = 0x800 * head; + u32 data = 0x80000000; + u32 mask = 0x80000001; + if (present) { +- nvkm_mask(device, 0x616548 + hoff, 0x00000070, 0x00000000); ++ ior->func->hda.device_entry(ior, head); + data |= 0x00000001; + } else { + mask |= 0x00000002; +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +index c60acf71831e..eb1155e47ecd 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +@@ -88,6 +88,7 @@ struct nvkm_ior_func { + struct { + void (*hpd)(struct nvkm_ior *, int head, bool present); + void (*eld)(struct nvkm_ior *, int head, u8 *data, u8 size); ++ void (*device_entry)(struct nvkm_ior *, int head); + } hda; + }; + +@@ -162,6 +163,7 @@ void gt215_hda_eld(struct nvkm_ior *, int, u8 *, u8); + + void gf119_hda_hpd(struct nvkm_ior *, int, bool); + void gf119_hda_eld(struct nvkm_ior *, int, u8 *, u8); ++void gf119_hda_device_entry(struct nvkm_ior *, int); + + #define IOR_MSG(i,l,f,a...) do { \ + struct nvkm_ior *_ior = (i); \ +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c +index 456a5a143522..3b3643fb1019 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c +@@ -177,6 +177,7 @@ gf119_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c +index b94090edaebf..0c0925680790 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c +@@ -43,6 +43,7 @@ gk104_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c +index e6965dec09c9..38045c92197f 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c +@@ -57,6 +57,7 @@ gm107_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c +index 384f82652bec..cf2075db742a 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c +@@ -115,6 +115,7 @@ gm200_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c +index b0597ff9a714..565cfbc65550 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c +@@ -103,6 +103,7 @@ gv100_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c +index 4d5f3791ea7b..b16ecea098c7 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c +@@ -88,6 +88,7 @@ tu102_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, ++ .device_entry = gf119_hda_device_entry, + }, + }; + +-- +2.26.2 + diff --git a/0001-disp-hda-gf119-select-HDA-device-entry-based-on-boun.patch b/0001-disp-hda-gf119-select-HDA-device-entry-based-on-boun.patch new file mode 100644 index 000000000..714d1a0f3 --- /dev/null +++ b/0001-disp-hda-gf119-select-HDA-device-entry-based-on-boun.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Wed, 6 May 2020 14:40:58 +1000 +Subject: [PATCH] disp/hda/gf119-: select HDA device entry based on bound head + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +index 8a0ec7db5145..19d2d58344e4 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +@@ -28,14 +28,14 @@ gf119_hda_device_entry(struct nvkm_ior *ior, int head) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; + const u32 hoff = 0x800 * head; +- nvkm_mask(device, 0x616548 + hoff, 0x00000070, 0x00000000); ++ nvkm_mask(device, 0x616548 + hoff, 0x00000070, head << 4); + } + + void + gf119_hda_eld(struct nvkm_ior *ior, int head, u8 *data, u8 size) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; +- const u32 soff = 0x030 * ior->id; ++ const u32 soff = 0x030 * ior->id + (head * 0x04); + int i; + + for (i = 0; i < size; i++) +@@ -49,6 +49,7 @@ void + gf119_hda_hpd(struct nvkm_ior *ior, int head, bool present) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; ++ const u32 soff = 0x030 * ior->id + (head * 0x04); + u32 data = 0x80000000; + u32 mask = 0x80000001; + if (present) { +@@ -57,5 +58,5 @@ gf119_hda_hpd(struct nvkm_ior *ior, int head, bool present) + } else { + mask |= 0x00000002; + } +- nvkm_mask(device, 0x10ec10 + ior->id * 0x030, mask, data); ++ nvkm_mask(device, 0x10ec10 + soff, mask, data); + } +-- +2.26.2 + diff --git a/0001-disp-hda-gt215-pass-head-to-nvkm_ior.hda.eld.patch b/0001-disp-hda-gt215-pass-head-to-nvkm_ior.hda.eld.patch new file mode 100644 index 000000000..0011e60ae --- /dev/null +++ b/0001-disp-hda-gt215-pass-head-to-nvkm_ior.hda.eld.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Wed, 6 May 2020 14:40:52 +1000 +Subject: [PATCH] disp/hda/gt215-: pass head to nvkm_ior.hda.eld() + +We're going to use the bound head to select HDA device entry. + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c | 2 +- + drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagt215.c | 2 +- + drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h | 6 +++--- + drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +index 0fa0ec0a1de0..1080ba6ecd64 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c +@@ -24,7 +24,7 @@ + #include "ior.h" + + void +-gf119_hda_eld(struct nvkm_ior *ior, u8 *data, u8 size) ++gf119_hda_eld(struct nvkm_ior *ior, int head, u8 *data, u8 size) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; + const u32 soff = 0x030 * ior->id; +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagt215.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagt215.c +index 4509d2ba880e..0d1b81fe1093 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagt215.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagt215.c +@@ -24,7 +24,7 @@ + #include "ior.h" + + void +-gt215_hda_eld(struct nvkm_ior *ior, u8 *data, u8 size) ++gt215_hda_eld(struct nvkm_ior *ior, int head, u8 *data, u8 size) + { + struct nvkm_device *device = ior->disp->engine.subdev.device; + const u32 soff = ior->id * 0x800; +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +index 009d3a8b7a50..c60acf71831e 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +@@ -87,7 +87,7 @@ struct nvkm_ior_func { + + struct { + void (*hpd)(struct nvkm_ior *, int head, bool present); +- void (*eld)(struct nvkm_ior *, u8 *data, u8 size); ++ void (*eld)(struct nvkm_ior *, int head, u8 *data, u8 size); + } hda; + }; + +@@ -158,10 +158,10 @@ void gv100_hdmi_ctrl(struct nvkm_ior *, int, bool, u8, u8, u8 *, u8 , u8 *, u8); + void gm200_hdmi_scdc(struct nvkm_ior *, int, u8); + + void gt215_hda_hpd(struct nvkm_ior *, int, bool); +-void gt215_hda_eld(struct nvkm_ior *, u8 *, u8); ++void gt215_hda_eld(struct nvkm_ior *, int, u8 *, u8); + + void gf119_hda_hpd(struct nvkm_ior *, int, bool); +-void gf119_hda_eld(struct nvkm_ior *, u8 *, u8); ++void gf119_hda_eld(struct nvkm_ior *, int, u8 *, u8); + + #define IOR_MSG(i,l,f,a...) do { \ + struct nvkm_ior *_ior = (i); \ +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c +index 5f758948d6e1..a7672ef17d3b 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c +@@ -155,7 +155,7 @@ nv50_disp_root_mthd_(struct nvkm_object *object, u32 mthd, void *data, u32 size) + if (outp->info.type == DCB_OUTPUT_DP) + ior->func->dp.audio(ior, hidx, true); + ior->func->hda.hpd(ior, hidx, true); +- ior->func->hda.eld(ior, data, size); ++ ior->func->hda.eld(ior, hidx, data, size); + } else { + if (outp->info.type == DCB_OUTPUT_DP) + ior->func->dp.audio(ior, hidx, false); +-- +2.26.2 + diff --git a/0001-disp-hda-gv100-NV_PDISP_SF_AUDIO_CNTRL0-register-mov.patch b/0001-disp-hda-gv100-NV_PDISP_SF_AUDIO_CNTRL0-register-mov.patch new file mode 100644 index 000000000..b93c9f13b --- /dev/null +++ b/0001-disp-hda-gv100-NV_PDISP_SF_AUDIO_CNTRL0-register-mov.patch @@ -0,0 +1,105 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Wed, 6 May 2020 14:41:01 +1000 +Subject: [PATCH] disp/hda/gv100-: NV_PDISP_SF_AUDIO_CNTRL0 register moved + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + .../gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 1 + + .../drm/nouveau/nvkm/engine/disp/hdagv100.c | 30 +++++++++++++++++++ + .../gpu/drm/nouveau/nvkm/engine/disp/ior.h | 2 ++ + .../drm/nouveau/nvkm/engine/disp/sorgv100.c | 2 +- + .../drm/nouveau/nvkm/engine/disp/sortu102.c | 2 +- + 5 files changed, 35 insertions(+), 2 deletions(-) + create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagv100.c + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +index f7af648e0c17..571687ba85b8 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +@@ -47,6 +47,7 @@ nvkm-y += nvkm/engine/disp/dp.o + + nvkm-y += nvkm/engine/disp/hdagt215.o + nvkm-y += nvkm/engine/disp/hdagf119.o ++nvkm-y += nvkm/engine/disp/hdagv100.o + + nvkm-y += nvkm/engine/disp/hdmi.o + nvkm-y += nvkm/engine/disp/hdmig84.o +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagv100.c +new file mode 100644 +index 000000000000..57d374ecfeef +--- /dev/null ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagv100.c +@@ -0,0 +1,30 @@ ++/* ++ * Copyright 2020 Red Hat Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#include "ior.h" ++ ++void ++gv100_hda_device_entry(struct nvkm_ior *ior, int head) ++{ ++ struct nvkm_device *device = ior->disp->engine.subdev.device; ++ const u32 hoff = 0x800 * head; ++ nvkm_mask(device, 0x616528 + hoff, 0x00000070, head << 4); ++} +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +index eb1155e47ecd..c1d7a36e4d3c 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +@@ -165,6 +165,8 @@ void gf119_hda_hpd(struct nvkm_ior *, int, bool); + void gf119_hda_eld(struct nvkm_ior *, int, u8 *, u8); + void gf119_hda_device_entry(struct nvkm_ior *, int); + ++void gv100_hda_device_entry(struct nvkm_ior *, int); ++ + #define IOR_MSG(i,l,f,a...) do { \ + struct nvkm_ior *_ior = (i); \ + nvkm_##l(&_ior->disp->engine.subdev, "%s: "f"\n", _ior->name, ##a); \ +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c +index 565cfbc65550..d11a0dff10c6 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c +@@ -103,7 +103,7 @@ gv100_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, +- .device_entry = gf119_hda_device_entry, ++ .device_entry = gv100_hda_device_entry, + }, + }; + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c +index b16ecea098c7..fa6d74251237 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c +@@ -88,7 +88,7 @@ tu102_sor = { + .hda = { + .hpd = gf119_hda_hpd, + .eld = gf119_hda_eld, +- .device_entry = gf119_hda_device_entry, ++ .device_entry = gv100_hda_device_entry, + }, + }; + +-- +2.26.2 + diff --git a/0001-disp-nv50-increase-timeout-on-pio-channel-free-polli.patch b/0001-disp-nv50-increase-timeout-on-pio-channel-free-polli.patch new file mode 100644 index 000000000..d8c1a93d5 --- /dev/null +++ b/0001-disp-nv50-increase-timeout-on-pio-channel-free-polli.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Wed, 6 May 2020 14:40:45 +1000 +Subject: [PATCH] disp/nv50-: increase timeout on pio channel free() polling + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/curs507a.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/curs507a.c b/drivers/gpu/drm/nouveau/dispnv50/curs507a.c +index 8c5cf096f69b..658a200ab616 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/curs507a.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/curs507a.c +@@ -32,7 +32,7 @@ + bool + curs507a_space(struct nv50_wndw *wndw) + { +- nvif_msec(&nouveau_drm(wndw->plane.dev)->client.device, 2, ++ nvif_msec(&nouveau_drm(wndw->plane.dev)->client.device, 100, + if (nvif_rd32(&wndw->wimm.base.user, 0x0008) >= 4) + return true; + ); +-- +2.26.2 + diff --git a/0001-drm-Use-generic-helper-to-check-_PR3-presence.patch b/0001-drm-Use-generic-helper-to-check-_PR3-presence.patch new file mode 100644 index 000000000..f0f9e0dfd --- /dev/null +++ b/0001-drm-Use-generic-helper-to-check-_PR3-presence.patch @@ -0,0 +1,96 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng <kai.heng.feng@canonical.com> +Date: Thu, 23 Apr 2020 14:23:58 +0800 +Subject: [PATCH] drm: Use generic helper to check _PR3 presence + +Replace nouveau_pr3_present() in favor of a more generic one, +pci_pr3_present(). + +Also the presence of upstream bridge _PR3 doesn't need to go hand in +hand with device's _DSM, so check _PR3 before _DSM. + +Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nouveau_acpi.c | 44 ++++++-------------------- + 1 file changed, 10 insertions(+), 34 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c +index fe3a10255c36..b84dff1b0f28 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c ++++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c +@@ -212,37 +212,6 @@ static const struct vga_switcheroo_handler nouveau_dsm_handler = { + .get_client_id = nouveau_dsm_get_client_id, + }; + +-/* +- * Firmware supporting Windows 8 or later do not use _DSM to put the device into +- * D3cold, they instead rely on disabling power resources on the parent. +- */ +-static bool nouveau_pr3_present(struct pci_dev *pdev) +-{ +- struct pci_dev *parent_pdev = pci_upstream_bridge(pdev); +- struct acpi_device *parent_adev; +- +- if (!parent_pdev) +- return false; +- +- if (!parent_pdev->bridge_d3) { +- /* +- * Parent PCI bridge is currently not power managed. +- * Since userspace can change these afterwards to be on +- * the safe side we stick with _DSM and prevent usage of +- * _PR3 from the bridge. +- */ +- pci_d3cold_disable(pdev); +- return false; +- } +- +- parent_adev = ACPI_COMPANION(&parent_pdev->dev); +- if (!parent_adev) +- return false; +- +- return parent_adev->power.flags.power_resources && +- acpi_has_method(parent_adev->handle, "_PR3"); +-} +- + static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out, + bool *has_mux, bool *has_opt, + bool *has_opt_flags, bool *has_pr3) +@@ -250,6 +219,16 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out + acpi_handle dhandle; + bool supports_mux; + int optimus_funcs; ++ struct pci_dev *parent_pdev; ++ ++ *has_pr3 = false; ++ parent_pdev = pci_upstream_bridge(pdev); ++ if (parent_pdev) { ++ if (parent_pdev->bridge_d3) ++ *has_pr3 = pci_pr3_present(parent_pdev); ++ else ++ pci_d3cold_disable(pdev); ++ } + + dhandle = ACPI_HANDLE(&pdev->dev); + if (!dhandle) +@@ -270,7 +249,6 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out + *has_mux = supports_mux; + *has_opt = !!optimus_funcs; + *has_opt_flags = optimus_funcs & (1 << NOUVEAU_DSM_OPTIMUS_FLAGS); +- *has_pr3 = false; + + if (optimus_funcs) { + uint32_t result; +@@ -280,8 +258,6 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out + (result & OPTIMUS_ENABLED) ? "enabled" : "disabled", + (result & OPTIMUS_DYNAMIC_PWR_CAP) ? "dynamic power, " : "", + (result & OPTIMUS_HDA_CODEC_MASK) ? "hda bios codec supported" : ""); +- +- *has_pr3 = nouveau_pr3_present(pdev); + } + } + +-- +2.26.2 + diff --git a/0001-dt-bindings-vendor-prefixes-Add-Xingbangda.patch b/0001-dt-bindings-vendor-prefixes-Add-Xingbangda.patch new file mode 100644 index 000000000..eef72a211 --- /dev/null +++ b/0001-dt-bindings-vendor-prefixes-Add-Xingbangda.patch @@ -0,0 +1,33 @@ +From 025eb2eb927d2c3020882ea0ed3af28d65321763 Mon Sep 17 00:00:00 2001 +From: Icenowy Zheng <icenowy@aosc.io> +Date: Fri, 26 Jun 2020 02:55:49 +0200 +Subject: [PATCH 01/13] dt-bindings: vendor-prefixes: Add Xingbangda + +Shenzhen Xingbangda Display Technology Co., Ltd is a company which +produces LCD modules. It supplies the LCD panels for the PinePhone. + +Add the vendor prefix of it. + +Signed-off-by: Icenowy Zheng <icenowy@aosc.io> +Signed-off-by: Ondrej Jirman <megous@megous.com> +Acked-by: Rob Herring <robh@kernel.org> +--- + Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml +index d3891386d6710..a558ef87ee5b0 100644 +--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml ++++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml +@@ -1121,6 +1121,8 @@ patternProperties: + description: Xiaomi Technology Co., Ltd. + "^xillybus,.*": + description: Xillybus Ltd. ++ "^xingbangda,.*": ++ description: Shenzhen Xingbangda Display Technology Co., Ltd + "^xinpeng,.*": + description: Shenzhen Xinpeng Technology Co., Ltd + "^xlnx,.*": +-- +2.26.2 + diff --git a/0001-e1000e-bump-up-timeout-to-wait-when-ME-un-configure-.patch b/0001-e1000e-bump-up-timeout-to-wait-when-ME-un-configure-.patch new file mode 100644 index 000000000..8e740ce24 --- /dev/null +++ b/0001-e1000e-bump-up-timeout-to-wait-when-ME-un-configure-.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aaron Ma <aaron.ma@canonical.com> +Date: Tue, 24 Mar 2020 03:16:39 +0800 +Subject: [PATCH] e1000e: bump up timeout to wait when ME un-configure ULP mode + +ME takes 2+ seconds to un-configure ULP mode done after resume +from s2idle on some ThinkPad laptops. +Without enough wait, reset and re-init will fail with error. + +Fixes: f15bb6dde738cc8fa0 ("e1000e: Add support for S0ix") +BugLink: https://bugs.launchpad.net/bugs/1865570 +Signed-off-by: Aaron Ma <aaron.ma@canonical.com> +--- + drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c +index 735bf25952fc..15f6c0a4dc63 100644 +--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c ++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c +@@ -1243,9 +1243,9 @@ static s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force) + ew32(H2ME, mac_reg); + } + +- /* Poll up to 300msec for ME to clear ULP_CFG_DONE. */ ++ /* Poll up to 2.5sec for ME to clear ULP_CFG_DONE. */ + while (er32(FWSM) & E1000_FWSM_ULP_CFG_DONE) { +- if (i++ == 30) { ++ if (i++ == 250) { + ret_val = -E1000_ERR_PHY; + goto out; + } +-- +2.26.2 + diff --git a/0001-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch b/0001-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch new file mode 100644 index 000000000..acd11a206 --- /dev/null +++ b/0001-efi-Add-an-EFI_SECURE_BOOT-flag-to-indicate-secure-b.patch @@ -0,0 +1,161 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Howells <dhowells@redhat.com> +Date: Tue, 27 Feb 2018 10:04:55 +0000 +Subject: [PATCH] efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + +UEFI machines can be booted in Secure Boot mode. Add an EFI_SECURE_BOOT +flag that can be passed to efi_enabled() to find out whether secure boot is +enabled. + +Move the switch-statement in x86's setup_arch() that inteprets the +secure_boot boot parameter to generic code and set the bit there. + +Upstream Status: RHEL only +Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +Signed-off-by: David Howells <dhowells@redhat.com> +Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +cc: linux-efi@vger.kernel.org +[Rebased for context; efi_is_table_address was moved to arch/x86] +Signed-off-by: Jeremy Cline <jcline@redhat.com> +--- + arch/x86/kernel/setup.c | 14 +----------- + drivers/firmware/efi/Makefile | 1 + + drivers/firmware/efi/secureboot.c | 38 +++++++++++++++++++++++++++++++ + include/linux/efi.h | 18 ++++++++++----- + 4 files changed, 52 insertions(+), 19 deletions(-) + create mode 100644 drivers/firmware/efi/secureboot.c + +diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c +index e39ec0f88d28..08e9f5fc26a8 100644 +--- a/arch/x86/kernel/setup.c ++++ b/arch/x86/kernel/setup.c +@@ -1250,19 +1250,7 @@ void __init setup_arch(char **cmdline_p) + /* Allocate bigger log buffer */ + setup_log_buf(1); + +- if (efi_enabled(EFI_BOOT)) { +- switch (boot_params.secure_boot) { +- case efi_secureboot_mode_disabled: +- pr_info("Secure boot disabled\n"); +- break; +- case efi_secureboot_mode_enabled: +- pr_info("Secure boot enabled\n"); +- break; +- default: +- pr_info("Secure boot could not be determined\n"); +- break; +- } +- } ++ efi_set_secure_boot(boot_params.secure_boot); + + reserve_initrd(); + +diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile +index 7a216984552b..f0ef02d733af 100644 +--- a/drivers/firmware/efi/Makefile ++++ b/drivers/firmware/efi/Makefile +@@ -25,6 +25,7 @@ obj-$(CONFIG_EFI_FAKE_MEMMAP) += fake_map.o + obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) += efibc.o + obj-$(CONFIG_EFI_TEST) += test/ + obj-$(CONFIG_EFI_DEV_PATH_PARSER) += dev-path-parser.o ++obj-$(CONFIG_EFI) += secureboot.o + obj-$(CONFIG_APPLE_PROPERTIES) += apple-properties.o + obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o + obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o +diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c +new file mode 100644 +index 000000000000..de0a3714a5d4 +--- /dev/null ++++ b/drivers/firmware/efi/secureboot.c +@@ -0,0 +1,38 @@ ++/* Core kernel secure boot support. ++ * ++ * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved. ++ * Written by David Howells (dhowells@redhat.com) ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public Licence ++ * as published by the Free Software Foundation; either version ++ * 2 of the Licence, or (at your option) any later version. ++ */ ++ ++#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt ++ ++#include <linux/efi.h> ++#include <linux/kernel.h> ++#include <linux/printk.h> ++ ++/* ++ * Decide what to do when UEFI secure boot mode is enabled. ++ */ ++void __init efi_set_secure_boot(enum efi_secureboot_mode mode) ++{ ++ if (efi_enabled(EFI_BOOT)) { ++ switch (mode) { ++ case efi_secureboot_mode_disabled: ++ pr_info("Secure boot disabled\n"); ++ break; ++ case efi_secureboot_mode_enabled: ++ set_bit(EFI_SECURE_BOOT, &efi.flags); ++ pr_info("Secure boot enabled\n"); ++ break; ++ default: ++ pr_warn("Secure boot could not be determined (mode %u)\n", ++ mode); ++ break; ++ } ++ } ++} +diff --git a/include/linux/efi.h b/include/linux/efi.h +index 51503bf118ab..b35e693f20f3 100644 +--- a/include/linux/efi.h ++++ b/include/linux/efi.h +@@ -778,6 +778,14 @@ extern int __init efi_setup_pcdp_console(char *); + #define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */ + #define EFI_MEM_NO_SOFT_RESERVE 11 /* Is the kernel configured to ignore soft reservations? */ + #define EFI_PRESERVE_BS_REGIONS 12 /* Are EFI boot-services memory segments available? */ ++#define EFI_SECURE_BOOT 13 /* Are we in Secure Boot mode? */ ++ ++enum efi_secureboot_mode { ++ efi_secureboot_mode_unset, ++ efi_secureboot_mode_unknown, ++ efi_secureboot_mode_disabled, ++ efi_secureboot_mode_enabled, ++}; + + #ifdef CONFIG_EFI + /* +@@ -789,6 +797,8 @@ static inline bool efi_enabled(int feature) + } + extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused); + ++extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode); ++ + bool __pure __efi_soft_reserve_enabled(void); + + static inline bool __pure efi_soft_reserve_enabled(void) +@@ -815,6 +825,8 @@ efi_capsule_pending(int *reset_type) + return false; + } + ++static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {} ++ + static inline bool efi_soft_reserve_enabled(void) + { + return false; +@@ -1086,12 +1098,6 @@ static inline bool efi_runtime_disabled(void) { return true; } + extern void efi_call_virt_check_flags(unsigned long flags, const char *call); + extern unsigned long efi_call_virt_save_flags(void); + +-enum efi_secureboot_mode { +- efi_secureboot_mode_unset, +- efi_secureboot_mode_unknown, +- efi_secureboot_mode_disabled, +- efi_secureboot_mode_enabled, +-}; + enum efi_secureboot_mode efi_get_secureboot(void); + + #ifdef CONFIG_RESET_ATTACK_MITIGATION +-- +2.26.2 + diff --git a/0001-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch b/0001-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch new file mode 100644 index 000000000..97096ad32 --- /dev/null +++ b/0001-efi-Lock-down-the-kernel-if-booted-in-secure-boot-mo.patch @@ -0,0 +1,72 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Howells <dhowells@redhat.com> +Date: Mon, 30 Sep 2019 21:28:16 +0000 +Subject: [PATCH] efi: Lock down the kernel if booted in secure boot mode + +UEFI Secure Boot provides a mechanism for ensuring that the firmware +will only load signed bootloaders and kernels. Certain use cases may +also require that all kernel modules also be signed. Add a +configuration option that to lock down the kernel - which includes +requiring validly signed modules - if the kernel is secure-booted. + +Upstream Status: RHEL only +Signed-off-by: David Howells <dhowells@redhat.com> +Signed-off-by: Jeremy Cline <jcline@redhat.com> +--- + arch/x86/kernel/setup.c | 8 ++++++++ + security/lockdown/Kconfig | 13 +++++++++++++ + 2 files changed, 21 insertions(+) + +diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c +index 08e9f5fc26a8..b6f5510f3d91 100644 +--- a/arch/x86/kernel/setup.c ++++ b/arch/x86/kernel/setup.c +@@ -18,6 +18,7 @@ + #include <linux/sfi.h> + #include <linux/hugetlb.h> + #include <linux/tboot.h> ++#include <linux/security.h> + #include <linux/usb/xhci-dbgp.h> + + #include <uapi/linux/mount.h> +@@ -1099,6 +1100,13 @@ void __init setup_arch(char **cmdline_p) + if (efi_enabled(EFI_BOOT)) + efi_init(); + ++ efi_set_secure_boot(boot_params.secure_boot); ++ ++#ifdef CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT ++ if (efi_enabled(EFI_SECURE_BOOT)) ++ security_lock_kernel_down("EFI Secure Boot mode", LOCKDOWN_INTEGRITY_MAX); ++#endif ++ + dmi_setup(); + + /* +diff --git a/security/lockdown/Kconfig b/security/lockdown/Kconfig +index e84ddf484010..d0501353a4b9 100644 +--- a/security/lockdown/Kconfig ++++ b/security/lockdown/Kconfig +@@ -16,6 +16,19 @@ config SECURITY_LOCKDOWN_LSM_EARLY + subsystem is fully initialised. If enabled, lockdown will + unconditionally be called before any other LSMs. + ++config LOCK_DOWN_IN_EFI_SECURE_BOOT ++ bool "Lock down the kernel in EFI Secure Boot mode" ++ default n ++ depends on EFI && SECURITY_LOCKDOWN_LSM_EARLY ++ help ++ UEFI Secure Boot provides a mechanism for ensuring that the firmware ++ will only load signed bootloaders and kernels. Secure boot mode may ++ be determined from EFI variables provided by the system firmware if ++ not indicated by the boot parameters. ++ ++ Enabling this option results in kernel lockdown being triggered if ++ EFI Secure Boot is set. ++ + choice + prompt "Kernel default lockdown mode" + default LOCK_DOWN_KERNEL_FORCE_NONE +-- +2.26.2 + diff --git a/0001-firmware-raspberrypi-Introduce-vl805-init-routine.patch b/0001-firmware-raspberrypi-Introduce-vl805-init-routine.patch new file mode 100644 index 000000000..db8a4a16c --- /dev/null +++ b/0001-firmware-raspberrypi-Introduce-vl805-init-routine.patch @@ -0,0 +1,110 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Date: Tue, 10 Mar 2020 13:52:40 +0100 +Subject: [PATCH] firmware: raspberrypi: Introduce vl805 init routine + +On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be +loaded directly from an EEPROM or, if not present, by the SoC's +VideCore. The function informs VideCore that VL805 was just reset, or +requests for a probe defer. + +Based on Tim Gover's downstream implementation. + +Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +--- + drivers/firmware/raspberrypi.c | 38 ++++++++++++++++++++++ + include/soc/bcm2835/raspberrypi-firmware.h | 7 ++++ + 2 files changed, 45 insertions(+) + +diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c +index da26a584dca0..cbb495aff6a0 100644 +--- a/drivers/firmware/raspberrypi.c ++++ b/drivers/firmware/raspberrypi.c +@@ -12,6 +12,7 @@ + #include <linux/of_platform.h> + #include <linux/platform_device.h> + #include <linux/slab.h> ++#include <linux/pci.h> + #include <soc/bcm2835/raspberrypi-firmware.h> + + #define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) & 0xf)) +@@ -286,6 +287,43 @@ struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) + } + EXPORT_SYMBOL_GPL(rpi_firmware_get); + ++/* ++ * On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be ++ * loaded directly from an EEPROM or, if not present, by the SoC's VideCore. ++ * Inform VideCore that VL805 was just reset, or defer xhci's probe if not yet ++ * joinable trough the mailbox interface. ++ */ ++int rpi_firmware_init_vl805(struct pci_dev *pdev) ++{ ++ struct device_node *fw_np; ++ struct rpi_firmware *fw; ++ u32 dev_addr; ++ int ret; ++ ++ fw_np = of_find_compatible_node(NULL, NULL, ++ "raspberrypi,bcm2835-firmware"); ++ if (!fw_np) ++ return 0; ++ ++ fw = rpi_firmware_get(fw_np); ++ of_node_put(fw_np); ++ if (!fw) ++ return -EPROBE_DEFER; ++ ++ dev_addr = pdev->bus->number << 20 | PCI_SLOT(pdev->devfn) << 15 | ++ PCI_FUNC(pdev->devfn) << 12; ++ ++ ret = rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_XHCI_RESET, ++ &dev_addr, sizeof(dev_addr)); ++ if (ret) ++ return ret; ++ ++ dev_dbg(&pdev->dev, "loaded Raspberry Pi's VL805 firmware\n"); ++ ++ return 0; ++} ++EXPORT_SYMBOL_GPL(rpi_firmware_init_vl805); ++ + static const struct of_device_id rpi_firmware_of_match[] = { + { .compatible = "raspberrypi,bcm2835-firmware", }, + {}, +diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h +index cc9cdbc66403..3025aca3c358 100644 +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -10,6 +10,7 @@ + #include <linux/of_device.h> + + struct rpi_firmware; ++struct pci_dev; + + enum rpi_firmware_property_status { + RPI_FIRMWARE_STATUS_REQUEST = 0, +@@ -141,6 +142,7 @@ int rpi_firmware_property(struct rpi_firmware *fw, + int rpi_firmware_property_list(struct rpi_firmware *fw, + void *data, size_t tag_size); + struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node); ++int rpi_firmware_init_vl805(struct pci_dev *pdev); + #else + static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, + void *data, size_t len) +@@ -158,6 +160,11 @@ static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware + { + return NULL; + } ++ ++static inline int rpi_firmware_init_vl805(struct pci_dev *pdev) ++{ ++ return 0; ++} + #endif + + #endif /* __SOC_RASPBERRY_FIRMWARE_H__ */ +-- +2.26.2 + diff --git a/0001-iommu-arm-smmu-workaround-DMA-mode-issues.patch b/0001-iommu-arm-smmu-workaround-DMA-mode-issues.patch new file mode 100644 index 000000000..e6eef22d6 --- /dev/null +++ b/0001-iommu-arm-smmu-workaround-DMA-mode-issues.patch @@ -0,0 +1,98 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Laura Abbott <labbott@redhat.com> +Date: Mon, 20 May 2019 22:21:02 -0400 +Subject: [PATCH] iommu/arm-smmu: workaround DMA mode issues + +Message-id: <20190520222102.19488-1-labbott@redhat.com> +Patchwork-id: 259215 +O-Subject: [ARK INTERNAL PATCH] iommu/arm-smmu: workaround DMA mode issues +Bugzilla: +RH-Acked-by: Mark Langsdorf <mlangsdo@redhat.com> +RH-Acked-by: Mark Salter <msalter@redhat.com> + +From: Mark Salter <msalter@redhat.com> + +Rebased for v5.2-rc1 + + Bugzilla: 1652259 + Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=19244562 + Upstream status: RHEL only. + + rhel8 commit 65feb1ed0ec9a088a63a90d46c0f7563ac96ad0f + Author: Mark Salter <msalter@redhat.com> + Date: Wed Nov 21 17:15:59 2018 +0100 + + [iommu] iommu/arm-smmu: workaround DMA mode issues + + Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1624077 + Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=18112820 + Testing: Verified iommu.passthrough=1 no longer needed on gigabyte platforms. + Upstream Status: RHEL-only + + In RHEL_ALT 7.5 we carried a RHEL-only patch which forced the arm smmuv2 + into bypass mode due to performance issues on CN88xx. This was intended + to be a temporary hack until the issues were resolved. Another vendor + had issues with the iommu in bypass mode so we reverted the RHEL-only + patch so that iommu is in DMA mode by default (upstream default). + + It turns on that there are remaining SMMU DMA mode issues on Gigabyte + platformws with CN88xx cpus. The problem manifests itself by pcie + card drivers failing to initialize the cards when SMMU is in DMA mode. + The root cause has not been determined yet, but looks likely to be + a hw or firmware issue. This patch forces bypass mode for Gigabyte + platforms. CN88xx isn't officially supported in RHEL but we have a + lot of them being used internally for testing, so I think we want + this to support that use case in RHEL8. + + Signed-off-by: Mark Salter <msalter@redhat.com> + Signed-off-by: Herton R. Krzesinski <herton@redhat.com> + + Acked-by: Mark Salter <msalter@redhat.com> + Acked-by: Donald Dutile <ddutile@redhat.com> + +Upstream Status: RHEL only +Signed-off-by: Laura Abbott <labbott@redhat.com> +--- + drivers/iommu/iommu.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c +index 03d6a26687bc..86981f228c90 100644 +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -7,6 +7,7 @@ + #define pr_fmt(fmt) "iommu: " fmt + + #include <linux/device.h> ++#include <linux/dmi.h> + #include <linux/kernel.h> + #include <linux/bug.h> + #include <linux/types.h> +@@ -2664,3 +2665,24 @@ int iommu_sva_get_pasid(struct iommu_sva *handle) + return ops->sva_get_pasid(handle); + } + EXPORT_SYMBOL_GPL(iommu_sva_get_pasid); ++ ++#ifdef CONFIG_ARM64 ++static int __init iommu_quirks(void) ++{ ++ const char *vendor, *name; ++ ++ vendor = dmi_get_system_info(DMI_SYS_VENDOR); ++ name = dmi_get_system_info(DMI_PRODUCT_NAME); ++ ++ if (vendor && ++ (strncmp(vendor, "GIGABYTE", 8) == 0 && name && ++ (strncmp(name, "R120", 4) == 0 || ++ strncmp(name, "R270", 4) == 0))) { ++ pr_warn("Gigabyte %s detected, force iommu passthrough mode", name); ++ iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY; ++ } ++ ++ return 0; ++} ++arch_initcall(iommu_quirks); ++#endif +-- +2.26.2 + diff --git a/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch b/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch new file mode 100644 index 000000000..aad7ef066 --- /dev/null +++ b/0001-ipmi-do-not-configure-ipmi-for-HPE-m400.patch @@ -0,0 +1,123 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Laura Abbott <labbott@redhat.com> +Date: Sun, 10 Feb 2019 01:27:54 +0000 +Subject: [PATCH] ipmi: do not configure ipmi for HPE m400 + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1670017 +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=20147017 + +Commit 913a89f009d9 ("ipmi: Don't initialize anything in the core until +something uses it") added new locking which broke context. + + Message-id: <20180713142210.15700-1-tcamuso@redhat.com> + Patchwork-id: 224899 + O-Subject: [RHEL8 BZ 1583537 1/1] ipmi: do not configure ipmi for HPE m400 + Bugzilla: 1583537 + RH-Acked-by: Dean Nelson <dnelson@redhat.com> + RH-Acked-by: Al Stone <ahs3@redhat.com> + RH-Acked-by: Mark Salter <msalter@redhat.com> + + bugzilla:https://bugzilla.redhat.com/show_bug.cgi?id=1583537 + brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=17150528 + + RHEL-only + + The ARM-based HPE m400 reports host-side ipmi as residing in intel + port-io space, which does not exist in ARM processors. Therefore, when + running on an m400, host-side ipmi configuration code must simply return + zero without trying to configure the host-side ipmi. + + This patch prevents panic on boot by averting attempts to configure + host-side ipmi on this platform. + + Though HPE m400 is not certified with RHEL, and HPE has relegated it to + EOL status, the platform is still used extensively in ARM development + and test for RHEL. + + Testing: + Boot without blacklisting ipmi and check to see that no ipmi modules + are loaded. + + Signed-off-by: Tony Camuso <tcamuso@redhat.com> + + cc: Prarit Bhargava <prarit@redhat.com> + cc: Brendan Conoboy <blc@redhat.com> + cc: Jeff Bastian <jbastian@redhat.com> + cc: Scott Herold <sherold@redhat.com> + Signed-off-by: Herton R. Krzesinski <herton@redhat.com> + +Upstream Status: RHEL only +Signed-off-by: Laura Abbott <labbott@redhat.com> +Acked-by: Tony Camuso <tcamuso@redhat.com> +Acked-by: Dean Nelson <dnelson@redhat.com> +Acked-by: Jarod Wilson <jarod@redhat.com> +Acked-by: Mark Salter <msalter@redhat.com> +--- + drivers/char/ipmi/ipmi_dmi.c | 15 +++++++++++++++ + drivers/char/ipmi/ipmi_msghandler.c | 16 +++++++++++++++- + 2 files changed, 30 insertions(+), 1 deletion(-) + +diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c +index bbf7029e224b..cf7faa970dd6 100644 +--- a/drivers/char/ipmi/ipmi_dmi.c ++++ b/drivers/char/ipmi/ipmi_dmi.c +@@ -215,6 +215,21 @@ static int __init scan_for_dmi_ipmi(void) + { + const struct dmi_device *dev = NULL; + ++#ifdef CONFIG_ARM64 ++ /* RHEL-only ++ * If this is ARM-based HPE m400, return now, because that platform ++ * reports the host-side ipmi address as intel port-io space, which ++ * does not exist in the ARM architecture. ++ */ ++ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME); ++ ++ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) { ++ pr_debug("%s does not support host ipmi\n", dmistr); ++ return 0; ++ } ++ /* END RHEL-only */ ++#endif ++ + while ((dev = dmi_find_device(DMI_DEV_TYPE_IPMI, NULL, dev))) + dmi_decode_ipmi((const struct dmi_header *) dev->device_data); + +diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c +index c48d8f086382..0fc980a87ed0 100644 +--- a/drivers/char/ipmi/ipmi_msghandler.c ++++ b/drivers/char/ipmi/ipmi_msghandler.c +@@ -33,6 +33,7 @@ + #include <linux/uuid.h> + #include <linux/nospec.h> + #include <linux/vmalloc.h> ++#include <linux/dmi.h> + + #define IPMI_DRIVER_VERSION "39.2" + +@@ -5154,8 +5155,21 @@ static int __init ipmi_init_msghandler_mod(void) + { + int rv; + +- pr_info("version " IPMI_DRIVER_VERSION "\n"); ++#ifdef CONFIG_ARM64 ++ /* RHEL-only ++ * If this is ARM-based HPE m400, return now, because that platform ++ * reports the host-side ipmi address as intel port-io space, which ++ * does not exist in the ARM architecture. ++ */ ++ const char *dmistr = dmi_get_system_info(DMI_PRODUCT_NAME); + ++ if (dmistr && (strcmp("ProLiant m400 Server", dmistr) == 0)) { ++ pr_debug("%s does not support host ipmi\n", dmistr); ++ return -ENOSYS; ++ } ++ /* END RHEL-only */ ++#endif ++ pr_info("version " IPMI_DRIVER_VERSION "\n"); + mutex_lock(&ipmi_interfaces_mutex); + rv = ipmi_register_driver(); + mutex_unlock(&ipmi_interfaces_mutex); +-- +2.26.2 + diff --git a/0001-kdump-add-support-for-crashkernel-auto.patch b/0001-kdump-add-support-for-crashkernel-auto.patch new file mode 100644 index 000000000..83eb38e6d --- /dev/null +++ b/0001-kdump-add-support-for-crashkernel-auto.patch @@ -0,0 +1,189 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jeremy Cline <jcline@redhat.com> +Date: Tue, 23 Jul 2019 15:24:30 +0000 +Subject: [PATCH] kdump: add support for crashkernel=auto + +Rebased for v5.3-rc1 because the documentation has moved. + + Message-id: <20180604013831.574215750@redhat.com> + Patchwork-id: 8166 + O-Subject: [kernel team] [PATCH RHEL8.0 V2 2/2] kdump: add support for crashkernel=auto + Bugzilla: 1507353 + RH-Acked-by: Don Zickus <dzickus@redhat.com> + RH-Acked-by: Baoquan He <bhe@redhat.com> + RH-Acked-by: Pingfan Liu <piliu@redhat.com> + + Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353 + Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16534135 + Tested: ppc64le, x86_64 with several memory sizes. + kdump qe tested 160M on various x86 machines in lab. + + We continue to provide crashkernel=auto like we did in RHEL6 + and RHEL7, this will simplify the kdump deployment for common + use cases that kdump just works with the auto reserved values. + But this is still a best effort estimation, we can not know the + exact memory requirement because it depends on a lot of different + factors. + + The implementation of crashkernel=auto is simplified as a wrapper + to use below kernel cmdline: + x86_64: crashkernel=1G-64G:160M,64G-1T:256M,1T-:512M + s390x: crashkernel=4G-64G:160M,64G-1T:256M,1T-:512M + arm64: crashkernel=2G-:512M + ppc64: crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G + + The difference between this way and the old implementation in + RHEL6/7 is we do not scale the crash reserved memory size according + to system memory size anymore. + + Latest effort to move upstream is below thread: + https://lkml.org/lkml/2018/5/20/262 + But unfortunately it is still unlikely to be accepted, thus we + will still use a RHEL only patch in RHEL8. + + Copied old patch description about the history reason see below: + ''' + Non-upstream explanations: + Besides "crashkenrel=X@Y" format, upstream also has advanced + "crashkernel=range1:size1[,range2:size2,...][@offset]", and + "crashkernel=X,high{low}" formats, but they need more careful + manual configuration, and have different values for different + architectures. + + Most of the distributions use the standard "crashkernel=X@Y" + upstream format, and use crashkernel range format for advanced + scenarios, heavily relying on the user's involvement. + + While "crashkernel=auto" is redhat's special feature, it exists + and has been used as the default boot cmdline since 2008 rhel6. + It does not require users to figure out how many crash memory + size for their systems, also has been proved to be able to work + pretty well for common scenarios. + + "crashkernel=auto" was tested/based on rhel-related products, as + we have stable kernel configurations which means more or less + stable memory consumption. In 2014 we tried to post them again to + upstream but NACKed by people because they think it's not general + and unnecessary, users can specify their own values or do that by + scripts. However our customers insist on having it added to rhel. + + Also see one previous discussion related to this backport to Pegas: + On 10/17/2016 at 10:15 PM, Don Zickus wrote: + > On Fri, Oct 14, 2016 at 10:57:41AM +0800, Dave Young wrote: + >> Don, agree with you we should evaluate them instead of just inherit + >> them blindly. Below is what I think about kdump auto memory: + >> There are two issues for crashkernel=auto in upstream: + >> 1) It will be seen as a policy which should not go to kernel + >> 2) It is hard to get a good number for the crash reserved size, + >> considering various different kernel config options one can setups. + >> In RHEL we are easier because our supported Kconfig is limited. + >> I digged the upstream mail archive, but I'm not sure I got all the + >> information, at least Michael Ellerman was objecting the series for + >> 1). + > Yes, I know. Vivek and I have argued about this for years. :-) + > + > I had hoped all the changes internally to the makedumpfile would allow + > the memory configuration to stabilize at a number like 192M or 128M and + > only in the rare cases extend beyond that. + > + > So I always treated that as a temporary hack until things were better. + > With the hope of every new RHEL release we get smarter and better. :-) + > Ideally it would be great if we could get the number down to 64M for most + > cases and just turn it on in Fedora. Maybe someday.... ;-) + > + > We can have this conversation when the patch gets reposted/refreshed + > for upstream on rhkl? + > + > Cheers, + > Don + + We had proposed to drop the historic crashkernel=auto code and move + to use crashkernel=range:size format and pass them in anaconda. + + The initial reason is crashkernel=range:size works just fine because + we do not need complex algorithm to scale crashkernel reserved size + any more. The old linear scaling is mainly for old makedumpfile + requirements, now it is not necessary. + + But With the new approach, backward compatibility is potentially at risk. + For e.g. let's consider the following cases: + 1) When we upgrade from an older distribution like rhel-alt-7.4(which + uses crashkernel=auto) to rhel-alt-7.5 (which uses the crashkernel=xY + format) + In this case we can use anaconda scripts for checking + 'crashkernel=auto' in kernel spec and update to the new + 'crashkernel=range:size' format. + 2) When we upgrade from rhel-alt-7.5(which uses crashkernel=xY format) + to rhel-alt-7.6(which uses crashkernel=xY format), but the x and/or Y + values are changed in rhel-alt-7.6. + For example from crashkernel=2G-:160M to crashkernel=2G-:192M, then we have + no way to determine if the X and/or Y values were distribution + provided or user specified ones. + Since it is recommended to give precedence to user-specified values, + so we cannot do an upgrade in such a case." + + Thus turn back to resolve it in kernel, and add a simpler version + which just hacks to use the range:size style in code, and make + rhel-only code easily to maintain. + ''' + + Signed-off-by: Dave Young <dyoung@redhat.com> + Signed-off-by: Herton R. Krzesinski <herton@redhat.com> + +Upstream Status: RHEL only +Signed-off-by: Jeremy Cline <jcline@redhat.com> +--- + Documentation/admin-guide/kdump/kdump.rst | 11 +++++++++++ + kernel/crash_core.c | 14 ++++++++++++++ + 2 files changed, 25 insertions(+) + +diff --git a/Documentation/admin-guide/kdump/kdump.rst b/Documentation/admin-guide/kdump/kdump.rst +index ac7e131d2935..3b3bf30e537d 100644 +--- a/Documentation/admin-guide/kdump/kdump.rst ++++ b/Documentation/admin-guide/kdump/kdump.rst +@@ -285,6 +285,17 @@ This would mean: + 2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M + 3) if the RAM size is larger than 2G, then reserve 128M + ++Or you can use crashkernel=auto if you have enough memory. The threshold ++is 2G on x86_64, arm64, ppc64 and ppc64le. The threshold is 4G for s390x. ++If your system memory is less than the threshold crashkernel=auto will not ++reserve memory. ++ ++The automatically reserved memory size varies based on architecture. ++The size changes according to system memory size like below: ++ x86_64: 1G-64G:160M,64G-1T:256M,1T-:512M ++ s390x: 4G-64G:160M,64G-1T:256M,1T-:512M ++ arm64: 2G-:512M ++ ppc64: 2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G + + + Boot into System Kernel +diff --git a/kernel/crash_core.c b/kernel/crash_core.c +index d631d22089ba..c252221b2f4b 100644 +--- a/kernel/crash_core.c ++++ b/kernel/crash_core.c +@@ -258,6 +258,20 @@ static int __init __parse_crashkernel(char *cmdline, + if (suffix) + return parse_crashkernel_suffix(ck_cmdline, crash_size, + suffix); ++ ++ if (strncmp(ck_cmdline, "auto", 4) == 0) { ++#ifdef CONFIG_X86_64 ++ ck_cmdline = "1G-64G:160M,64G-1T:256M,1T-:512M"; ++#elif defined(CONFIG_S390) ++ ck_cmdline = "4G-64G:160M,64G-1T:256M,1T-:512M"; ++#elif defined(CONFIG_ARM64) ++ ck_cmdline = "2G-:512M"; ++#elif defined(CONFIG_PPC64) ++ ck_cmdline = "2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G"; ++#endif ++ pr_info("Using crashkernel=auto, the size choosed is a best effort estimation.\n"); ++ } ++ + /* + * if the commandline contains a ':', then that's the extended + * syntax -- if not, it must be the classic syntax +-- +2.26.2 + diff --git a/0001-kdump-fix-a-grammar-issue-in-a-kernel-message.patch b/0001-kdump-fix-a-grammar-issue-in-a-kernel-message.patch new file mode 100644 index 000000000..5444af2e6 --- /dev/null +++ b/0001-kdump-fix-a-grammar-issue-in-a-kernel-message.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Young <dyoung@redhat.com> +Date: Tue, 12 Jun 2018 00:54:22 -0400 +Subject: [PATCH] kdump: fix a grammar issue in a kernel message + +Message-id: <20180612005422.GA2568@dhcp-128-65.nay.redhat.com> +Patchwork-id: 8201 +O-Subject: [kernel team] [RHEL8.0 PATCH V2] kdump: fix a grammar issue in a kernel message +Bugzilla: 1507353 +RH-Acked-by: Myron Stowe <mstowe@redhat.com> +RH-Acked-by: Laszlo Ersek <lersek@redhat.com> +RH-Acked-by: Jiri Benc <jbenc@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353 +Upstream Status: RHEL-only as crashkernel=auto is not accepted in upstream +Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16661950 +Test: verified on a kvm guest + +s/choosed/chosen + +Upstream Status: RHEL only +Signed-off-by: Dave Young <dyoung@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + kernel/crash_core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/crash_core.c b/kernel/crash_core.c +index c252221b2f4b..df551fc9034c 100644 +--- a/kernel/crash_core.c ++++ b/kernel/crash_core.c +@@ -269,7 +269,7 @@ static int __init __parse_crashkernel(char *cmdline, + #elif defined(CONFIG_PPC64) + ck_cmdline = "2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G"; + #endif +- pr_info("Using crashkernel=auto, the size choosed is a best effort estimation.\n"); ++ pr_info("Using crashkernel=auto, the size chosen is a best effort estimation.\n"); + } + + /* +-- +2.26.2 + diff --git a/0001-kdump-round-up-the-total-memory-size-to-128M-for-cra.patch b/0001-kdump-round-up-the-total-memory-size-to-128M-for-cra.patch new file mode 100644 index 000000000..26576a04e --- /dev/null +++ b/0001-kdump-round-up-the-total-memory-size-to-128M-for-cra.patch @@ -0,0 +1,93 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Young <dyoung@redhat.com> +Date: Mon, 4 Jun 2018 01:38:25 -0400 +Subject: [PATCH] kdump: round up the total memory size to 128M for crashkernel + reservation + +Message-id: <20180604013831.523644967@redhat.com> +Patchwork-id: 8165 +O-Subject: [kernel team] [PATCH RHEL8.0 V2 1/2] kdump: round up the total memory size to 128M for crashkernel reservation +Bugzilla: 1507353 +RH-Acked-by: Don Zickus <dzickus@redhat.com> +RH-Acked-by: Baoquan He <bhe@redhat.com> +RH-Acked-by: Pingfan Liu <piliu@redhat.com> + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1507353 +Build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=16534135 +Tested: ppc64le, x86_64 with several memory sizes. + +The total memory size we get in kernel is usually slightly less than 2G with +2G memory module machine. The main reason is bios/firmware reserve some area +it will not export all memory as usable to Linux. + +2G memory X86 kvm guest test result of the total_mem value: +UEFI boot with ovmf: 0x7ef10000 +Legacy boot kvm guest: 0x7ff7cc00 +This is also a problem on arm64 UEFI booted system according to my test. + +Thus for example crashkernel=1G-2G:128M, if we have a 1G memory +machine, we get total size 1023M from firmware then it will not fall +into 1G-2G thus no memory reserved. User will never know that, it is +hard to let user to know the exact total value we get in kernel + +An option is to use dmi/smbios to get physical memory size, but it's not +reliable as well. According to Prarit hardware vendors sometimes screw this up. +Thus round up total size to 128M to workaround this problem. + +Posted below patch in upstream, but no response yet: +http://lists.infradead.org/pipermail/kexec/2018-April/020568.html + +Upstream Status: RHEL only +Signed-off-by: Dave Young <dyoung@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + kernel/crash_core.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/kernel/crash_core.c b/kernel/crash_core.c +index 9f1557b98468..d631d22089ba 100644 +--- a/kernel/crash_core.c ++++ b/kernel/crash_core.c +@@ -7,6 +7,7 @@ + #include <linux/crash_core.h> + #include <linux/utsname.h> + #include <linux/vmalloc.h> ++#include <linux/sizes.h> + + #include <asm/page.h> + #include <asm/sections.h> +@@ -39,6 +40,15 @@ static int __init parse_crashkernel_mem(char *cmdline, + unsigned long long *crash_base) + { + char *cur = cmdline, *tmp; ++ unsigned long long total_mem = system_ram; ++ ++ /* ++ * Firmware sometimes reserves some memory regions for it's own use. ++ * so we get less than actual system memory size. ++ * Workaround this by round up the total size to 128M which is ++ * enough for most test cases. ++ */ ++ total_mem = roundup(total_mem, SZ_128M); + + /* for each entry of the comma-separated list */ + do { +@@ -83,13 +93,13 @@ static int __init parse_crashkernel_mem(char *cmdline, + return -EINVAL; + } + cur = tmp; +- if (size >= system_ram) { ++ if (size >= total_mem) { + pr_warn("crashkernel: invalid size\n"); + return -EINVAL; + } + + /* match ? */ +- if (system_ram >= start && system_ram < end) { ++ if (total_mem >= start && total_mem < end) { + *crash_size = size; + break; + } +-- +2.26.2 + diff --git a/0001-kms-gv100-Add-support-for-interlaced-modes.patch b/0001-kms-gv100-Add-support-for-interlaced-modes.patch new file mode 100644 index 000000000..c50c826b8 --- /dev/null +++ b/0001-kms-gv100-Add-support-for-interlaced-modes.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:25 -0400 +Subject: [PATCH] kms/gv100-: Add support for interlaced modes + +We advertise being able to set interlaced modes, so let's actually make +sure to do that. Otherwise, we'll end up hanging the display engine due +to trying to set a mode with timings adjusted for interlacing without +telling the hardware it's actually an interlaced mode. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/headc37d.c | 5 +++-- + drivers/gpu/drm/nouveau/dispnv50/headc57d.c | 5 +++-- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/headc37d.c b/drivers/gpu/drm/nouveau/dispnv50/headc37d.c +index 00011ce109a6..4a9a32b89f74 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/headc37d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/headc37d.c +@@ -168,14 +168,15 @@ headc37d_mode(struct nv50_head *head, struct nv50_head_atom *asyh) + struct nv50_dmac *core = &nv50_disp(head->base.base.dev)->core->chan; + struct nv50_head_mode *m = &asyh->mode; + u32 *push; +- if ((push = evo_wait(core, 12))) { ++ if ((push = evo_wait(core, 13))) { + evo_mthd(push, 0x2064 + (head->base.index * 0x400), 5); + evo_data(push, (m->v.active << 16) | m->h.active ); + evo_data(push, (m->v.synce << 16) | m->h.synce ); + evo_data(push, (m->v.blanke << 16) | m->h.blanke ); + evo_data(push, (m->v.blanks << 16) | m->h.blanks ); + evo_data(push, (m->v.blank2e << 16) | m->v.blank2s); +- evo_mthd(push, 0x200c + (head->base.index * 0x400), 1); ++ evo_mthd(push, 0x2008 + (head->base.index * 0x400), 2); ++ evo_data(push, m->interlace); + evo_data(push, m->clock * 1000); + evo_mthd(push, 0x2028 + (head->base.index * 0x400), 1); + evo_data(push, m->clock * 1000); +diff --git a/drivers/gpu/drm/nouveau/dispnv50/headc57d.c b/drivers/gpu/drm/nouveau/dispnv50/headc57d.c +index 938d910a1b1e..859131a8bc3c 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/headc57d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/headc57d.c +@@ -173,14 +173,15 @@ headc57d_mode(struct nv50_head *head, struct nv50_head_atom *asyh) + struct nv50_dmac *core = &nv50_disp(head->base.base.dev)->core->chan; + struct nv50_head_mode *m = &asyh->mode; + u32 *push; +- if ((push = evo_wait(core, 12))) { ++ if ((push = evo_wait(core, 13))) { + evo_mthd(push, 0x2064 + (head->base.index * 0x400), 5); + evo_data(push, (m->v.active << 16) | m->h.active ); + evo_data(push, (m->v.synce << 16) | m->h.synce ); + evo_data(push, (m->v.blanke << 16) | m->h.blanke ); + evo_data(push, (m->v.blanks << 16) | m->h.blanks ); + evo_data(push, (m->v.blank2e << 16) | m->v.blank2s); +- evo_mthd(push, 0x200c + (head->base.index * 0x400), 1); ++ evo_mthd(push, 0x2008 + (head->base.index * 0x400), 2); ++ evo_data(push, m->interlace); + evo_data(push, m->clock * 1000); + evo_mthd(push, 0x2028 + (head->base.index * 0x400), 1); + evo_data(push, m->clock * 1000); +-- +2.26.2 + diff --git a/0001-kms-nv50-Initialize-core-channel-in-nouveau_display_.patch b/0001-kms-nv50-Initialize-core-channel-in-nouveau_display_.patch new file mode 100644 index 000000000..b590bb06c --- /dev/null +++ b/0001-kms-nv50-Initialize-core-channel-in-nouveau_display_.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:23 -0400 +Subject: [PATCH] kms/nv50-: Initialize core channel in + nouveau_display_create() + +We'll need the core channel initialized and ready by the time that we +start creating modesetting objects, so that we can call the +NV507D_GET_CAPABILITIES method to make the hardware expose it's +modesetting capabilities for later probing. + +So, when loading the driver prepare the core channel from within +nouveau_display_create(). Everywhere else, we initialize the core +channel during resume. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/disp.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c +index 2625ed84fc44..2afd56b9887d 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c +@@ -2373,7 +2373,8 @@ nv50_display_init(struct drm_device *dev, bool resume, bool runtime) + struct drm_encoder *encoder; + struct drm_plane *plane; + +- core->func->init(core); ++ if (resume || runtime) ++ core->func->init(core); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { + if (encoder->encoder_type != DRM_MODE_ENCODER_DPMST) { +@@ -2460,6 +2461,8 @@ nv50_display_create(struct drm_device *dev) + if (ret) + goto out; + ++ disp->core->func->init(disp->core); ++ + /* create crtc objects to represent the hw heads */ + if (disp->disp->object.oclass >= GV100_DISP) + crtcs = nvif_rd32(&device->object, 0x610060) & 0xff; +-- +2.26.2 + diff --git a/0001-kms-nv50-Move-8BPC-limit-for-MST-into-nv50_mstc_get_.patch b/0001-kms-nv50-Move-8BPC-limit-for-MST-into-nv50_mstc_get_.patch new file mode 100644 index 000000000..0a6a4cfa8 --- /dev/null +++ b/0001-kms-nv50-Move-8BPC-limit-for-MST-into-nv50_mstc_get_.patch @@ -0,0 +1,65 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:26 -0400 +Subject: [PATCH] kms/nv50-: Move 8BPC limit for MST into nv50_mstc_get_modes() + +This just limits the BPC for MST connectors to a maximum of 8 from +nv50_mstc_get_modes(), instead of doing so during +nv50_msto_atomic_check(). This doesn't introduce any functional changes +yet (other then userspace now lying about the max bpc, but we can't +support that yet anyway so meh). But, we'll need this in a moment so +that we can share mode validation between SST and MST which will fix +some real world issues. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/disp.c | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c +index 1db4f20b8697..e92e7bf49780 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c +@@ -908,15 +908,9 @@ nv50_msto_atomic_check(struct drm_encoder *encoder, + if (!state->duplicated) { + const int clock = crtc_state->adjusted_mode.clock; + +- /* +- * XXX: Since we don't use HDR in userspace quite yet, limit +- * the bpc to 8 to save bandwidth on the topology. In the +- * future, we'll want to properly fix this by dynamically +- * selecting the highest possible bpc that would fit in the +- * topology +- */ +- asyh->or.bpc = min(connector->display_info.bpc, 8U); +- asyh->dp.pbn = drm_dp_calc_pbn_mode(clock, asyh->or.bpc * 3, false); ++ asyh->or.bpc = connector->display_info.bpc; ++ asyh->dp.pbn = drm_dp_calc_pbn_mode(clock, asyh->or.bpc * 3, ++ false); + } + + slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr, mstc->port, +@@ -1076,8 +1070,17 @@ nv50_mstc_get_modes(struct drm_connector *connector) + if (mstc->edid) + ret = drm_add_edid_modes(&mstc->connector, mstc->edid); + +- if (!mstc->connector.display_info.bpc) +- mstc->connector.display_info.bpc = 8; ++ /* ++ * XXX: Since we don't use HDR in userspace quite yet, limit the bpc ++ * to 8 to save bandwidth on the topology. In the future, we'll want ++ * to properly fix this by dynamically selecting the highest possible ++ * bpc that would fit in the topology ++ */ ++ if (connector->display_info.bpc) ++ connector->display_info.bpc = ++ clamp(connector->display_info.bpc, 6U, 8U); ++ else ++ connector->display_info.bpc = 8; + + if (mstc->native) + drm_mode_destroy(mstc->connector.dev, mstc->native); +-- +2.26.2 + diff --git a/0001-kms-nv50-Probe-SOR-and-PIOR-caps-for-DP-interlacing-.patch b/0001-kms-nv50-Probe-SOR-and-PIOR-caps-for-DP-interlacing-.patch new file mode 100644 index 000000000..e74501bef --- /dev/null +++ b/0001-kms-nv50-Probe-SOR-and-PIOR-caps-for-DP-interlacing-.patch @@ -0,0 +1,439 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:24 -0400 +Subject: [PATCH] kms/nv50-: Probe SOR and PIOR caps for DP interlacing support + +Right now, we make the mistake of allowing interlacing on all +connectors. Nvidia hardware does not always support interlacing with DP +though, so we need to make sure that we don't allow interlaced modes to +be set in such situations as otherwise we'll end up accidentally hanging +the display HW. + +This fixes some hangs with Turing, which would be caused by attempting +to set an interlaced mode on hardware that doesn't support it. This +patch likely fixes other hardware hanging in the same way as well. + +Note that we say we probe PIOR caps, but they don't actually have any +interlacing caps. So, the get_caps() function for PIORs just sets +interlacing support to true. + +Changes since v1: +* Actually probe caps correctly this time, both on EVO and NVDisplay. +Changes since v2: +* Fix probing for < GF119 +* Use vfunc table, in prep for adding more caps in the future. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/core.h | 7 ++++++ + drivers/gpu/drm/nouveau/dispnv50/core507d.c | 15 ++++++++++++ + drivers/gpu/drm/nouveau/dispnv50/core827d.c | 1 + + drivers/gpu/drm/nouveau/dispnv50/core907d.c | 1 + + drivers/gpu/drm/nouveau/dispnv50/core917d.c | 1 + + drivers/gpu/drm/nouveau/dispnv50/corec37d.c | 26 +++++++++++++++++++++ + drivers/gpu/drm/nouveau/dispnv50/corec57d.c | 1 + + drivers/gpu/drm/nouveau/dispnv50/disp.c | 19 +++++++++++++-- + drivers/gpu/drm/nouveau/dispnv50/disp.h | 1 + + drivers/gpu/drm/nouveau/dispnv50/pior507d.c | 8 +++++++ + drivers/gpu/drm/nouveau/dispnv50/sor507d.c | 7 ++++++ + drivers/gpu/drm/nouveau/dispnv50/sor907d.c | 11 +++++++++ + drivers/gpu/drm/nouveau/dispnv50/sorc37d.c | 9 +++++++ + drivers/gpu/drm/nouveau/nouveau_connector.c | 10 +++++++- + drivers/gpu/drm/nouveau/nouveau_encoder.h | 4 ++++ + 15 files changed, 118 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/core.h b/drivers/gpu/drm/nouveau/dispnv50/core.h +index ff94f3f6f264..99157dc94d23 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/core.h ++++ b/drivers/gpu/drm/nouveau/dispnv50/core.h +@@ -2,6 +2,7 @@ + #define __NV50_KMS_CORE_H__ + #include "disp.h" + #include "atom.h" ++#include <nouveau_encoder.h> + + struct nv50_core { + const struct nv50_core_func *func; +@@ -15,6 +16,7 @@ void nv50_core_del(struct nv50_core **); + struct nv50_core_func { + void (*init)(struct nv50_core *); + void (*ntfy_init)(struct nouveau_bo *, u32 offset); ++ int (*caps_init)(struct nouveau_drm *, struct nv50_disp *); + int (*ntfy_wait_done)(struct nouveau_bo *, u32 offset, + struct nvif_device *); + void (*update)(struct nv50_core *, u32 *interlock, bool ntfy); +@@ -27,6 +29,9 @@ struct nv50_core_func { + const struct nv50_outp_func { + void (*ctrl)(struct nv50_core *, int or, u32 ctrl, + struct nv50_head_atom *); ++ /* XXX: Only used by SORs and PIORs for now */ ++ void (*get_caps)(struct nv50_disp *, ++ struct nouveau_encoder *, int or); + } *dac, *pior, *sor; + }; + +@@ -35,6 +40,7 @@ int core507d_new_(const struct nv50_core_func *, struct nouveau_drm *, s32, + struct nv50_core **); + void core507d_init(struct nv50_core *); + void core507d_ntfy_init(struct nouveau_bo *, u32); ++int core507d_caps_init(struct nouveau_drm *, struct nv50_disp *); + int core507d_ntfy_wait_done(struct nouveau_bo *, u32, struct nvif_device *); + void core507d_update(struct nv50_core *, u32 *, bool); + +@@ -51,6 +57,7 @@ extern const struct nv50_outp_func sor907d; + int core917d_new(struct nouveau_drm *, s32, struct nv50_core **); + + int corec37d_new(struct nouveau_drm *, s32, struct nv50_core **); ++int corec37d_caps_init(struct nouveau_drm *, struct nv50_disp *); + int corec37d_ntfy_wait_done(struct nouveau_bo *, u32, struct nvif_device *); + void corec37d_update(struct nv50_core *, u32 *, bool); + void corec37d_wndw_owner(struct nv50_core *); +diff --git a/drivers/gpu/drm/nouveau/dispnv50/core507d.c b/drivers/gpu/drm/nouveau/dispnv50/core507d.c +index c5152c39c684..e341f572c269 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/core507d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/core507d.c +@@ -62,6 +62,20 @@ core507d_ntfy_init(struct nouveau_bo *bo, u32 offset) + nouveau_bo_wr32(bo, offset / 4, 0x00000000); + } + ++int ++core507d_caps_init(struct nouveau_drm *drm, struct nv50_disp *disp) ++{ ++ u32 *push = evo_wait(&disp->core->chan, 2); ++ ++ if (push) { ++ evo_mthd(push, 0x008c, 1); ++ evo_data(push, 0x0); ++ evo_kick(push, &disp->core->chan); ++ } ++ ++ return 0; ++} ++ + void + core507d_init(struct nv50_core *core) + { +@@ -77,6 +91,7 @@ static const struct nv50_core_func + core507d = { + .init = core507d_init, + .ntfy_init = core507d_ntfy_init, ++ .caps_init = core507d_caps_init, + .ntfy_wait_done = core507d_ntfy_wait_done, + .update = core507d_update, + .head = &head507d, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/core827d.c b/drivers/gpu/drm/nouveau/dispnv50/core827d.c +index 6123a068f836..2e0c1c536afe 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/core827d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/core827d.c +@@ -26,6 +26,7 @@ static const struct nv50_core_func + core827d = { + .init = core507d_init, + .ntfy_init = core507d_ntfy_init, ++ .caps_init = core507d_caps_init, + .ntfy_wait_done = core507d_ntfy_wait_done, + .update = core507d_update, + .head = &head827d, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/core907d.c b/drivers/gpu/drm/nouveau/dispnv50/core907d.c +index ef822f813435..271629832629 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/core907d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/core907d.c +@@ -26,6 +26,7 @@ static const struct nv50_core_func + core907d = { + .init = core507d_init, + .ntfy_init = core507d_ntfy_init, ++ .caps_init = core507d_caps_init, + .ntfy_wait_done = core507d_ntfy_wait_done, + .update = core507d_update, + .head = &head907d, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/core917d.c b/drivers/gpu/drm/nouveau/dispnv50/core917d.c +index 392338df5bfd..5cc072d4c30f 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/core917d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/core917d.c +@@ -26,6 +26,7 @@ static const struct nv50_core_func + core917d = { + .init = core507d_init, + .ntfy_init = core507d_ntfy_init, ++ .caps_init = core507d_caps_init, + .ntfy_wait_done = core507d_ntfy_wait_done, + .update = core507d_update, + .head = &head917d, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/corec37d.c b/drivers/gpu/drm/nouveau/dispnv50/corec37d.c +index c03cb987856b..e0c8811fb8e4 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/corec37d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/corec37d.c +@@ -22,6 +22,7 @@ + #include "core.h" + #include "head.h" + ++#include <nvif/class.h> + #include <nouveau_bo.h> + + #include <nvif/timer.h> +@@ -87,6 +88,30 @@ corec37d_ntfy_init(struct nouveau_bo *bo, u32 offset) + nouveau_bo_wr32(bo, offset / 4 + 3, 0x00000000); + } + ++int corec37d_caps_init(struct nouveau_drm *drm, struct nv50_disp *disp) ++{ ++ int ret; ++ ++ ret = nvif_object_init(&disp->disp->object, 0, GV100_DISP_CAPS, ++ NULL, 0, &disp->caps); ++ if (ret) { ++ NV_ERROR(drm, ++ "Failed to init notifier caps region: %d\n", ++ ret); ++ return ret; ++ } ++ ++ ret = nvif_object_map(&disp->caps, NULL, 0); ++ if (ret) { ++ NV_ERROR(drm, ++ "Failed to map notifier caps region: %d\n", ++ ret); ++ return ret; ++ } ++ ++ return 0; ++} ++ + static void + corec37d_init(struct nv50_core *core) + { +@@ -111,6 +136,7 @@ static const struct nv50_core_func + corec37d = { + .init = corec37d_init, + .ntfy_init = corec37d_ntfy_init, ++ .caps_init = corec37d_caps_init, + .ntfy_wait_done = corec37d_ntfy_wait_done, + .update = corec37d_update, + .wndw.owner = corec37d_wndw_owner, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/corec57d.c b/drivers/gpu/drm/nouveau/dispnv50/corec57d.c +index 147adcd60937..10ba9e9e4ae6 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/corec57d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/corec57d.c +@@ -46,6 +46,7 @@ static const struct nv50_core_func + corec57d = { + .init = corec57d_init, + .ntfy_init = corec37d_ntfy_init, ++ .caps_init = corec37d_caps_init, + .ntfy_wait_done = corec37d_ntfy_wait_done, + .update = corec37d_update, + .wndw.owner = corec37d_wndw_owner, +diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c +index 2afd56b9887d..1db4f20b8697 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c +@@ -1663,6 +1663,7 @@ nv50_sor_create(struct drm_connector *connector, struct dcb_output *dcbe) + struct nvkm_i2c *i2c = nvxx_i2c(&drm->client.device); + struct nouveau_encoder *nv_encoder; + struct drm_encoder *encoder; ++ struct nv50_disp *disp = nv50_disp(connector->dev); + int type, ret; + + switch (dcbe->type) { +@@ -1689,10 +1690,12 @@ nv50_sor_create(struct drm_connector *connector, struct dcb_output *dcbe) + + drm_connector_attach_encoder(connector, encoder); + ++ disp->core->func->sor->get_caps(disp, nv_encoder, ffs(dcbe->or) - 1); ++ + if (dcbe->type == DCB_OUTPUT_DP) { +- struct nv50_disp *disp = nv50_disp(encoder->dev); + struct nvkm_i2c_aux *aux = + nvkm_i2c_aux_find(i2c, dcbe->i2c_index); ++ + if (aux) { + if (disp->disp->object.oclass < GF110_DISP) { + /* HW has no support for address-only +@@ -1805,7 +1808,9 @@ nv50_pior_func = { + static int + nv50_pior_create(struct drm_connector *connector, struct dcb_output *dcbe) + { +- struct nouveau_drm *drm = nouveau_drm(connector->dev); ++ struct drm_device *dev = connector->dev; ++ struct nouveau_drm *drm = nouveau_drm(dev); ++ struct nv50_disp *disp = nv50_disp(dev); + struct nvkm_i2c *i2c = nvxx_i2c(&drm->client.device); + struct nvkm_i2c_bus *bus = NULL; + struct nvkm_i2c_aux *aux = NULL; +@@ -1844,6 +1849,9 @@ nv50_pior_create(struct drm_connector *connector, struct dcb_output *dcbe) + drm_encoder_helper_add(encoder, &nv50_pior_help); + + drm_connector_attach_encoder(connector, encoder); ++ ++ disp->core->func->pior->get_caps(disp, nv_encoder, ffs(dcbe->or) - 1); ++ + return 0; + } + +@@ -2401,6 +2409,8 @@ nv50_display_destroy(struct drm_device *dev) + + nv50_audio_component_fini(nouveau_drm(dev)); + ++ nvif_object_unmap(&disp->caps); ++ nvif_object_fini(&disp->caps); + nv50_core_del(&disp->core); + + nouveau_bo_unmap(disp->sync); +@@ -2462,6 +2472,11 @@ nv50_display_create(struct drm_device *dev) + goto out; + + disp->core->func->init(disp->core); ++ if (disp->core->func->caps_init) { ++ ret = disp->core->func->caps_init(drm, disp); ++ if (ret) ++ goto out; ++ } + + /* create crtc objects to represent the hw heads */ + if (disp->disp->object.oclass >= GV100_DISP) +diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.h b/drivers/gpu/drm/nouveau/dispnv50/disp.h +index d54fe00ac3a3..89c3b38c32a5 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/disp.h ++++ b/drivers/gpu/drm/nouveau/dispnv50/disp.h +@@ -9,6 +9,7 @@ struct nv50_msto; + struct nv50_disp { + struct nvif_disp *disp; + struct nv50_core *core; ++ struct nvif_object caps; + + #define NV50_DISP_SYNC(c, o) ((c) * 0x040 + (o)) + #define NV50_DISP_CORE_NTFY NV50_DISP_SYNC(0 , 0x00) +diff --git a/drivers/gpu/drm/nouveau/dispnv50/pior507d.c b/drivers/gpu/drm/nouveau/dispnv50/pior507d.c +index d2bac6a341dc..45d8ce7d2c28 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/pior507d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/pior507d.c +@@ -38,7 +38,15 @@ pior507d_ctrl(struct nv50_core *core, int or, u32 ctrl, + } + } + ++static void ++pior507d_get_caps(struct nv50_disp *disp, struct nouveau_encoder *outp, ++ int or) ++{ ++ outp->caps.dp_interlace = true; ++} ++ + const struct nv50_outp_func + pior507d = { + .ctrl = pior507d_ctrl, ++ .get_caps = pior507d_get_caps, + }; +diff --git a/drivers/gpu/drm/nouveau/dispnv50/sor507d.c b/drivers/gpu/drm/nouveau/dispnv50/sor507d.c +index 5222fe6a9b21..9a59fa7da00d 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/sor507d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/sor507d.c +@@ -38,7 +38,14 @@ sor507d_ctrl(struct nv50_core *core, int or, u32 ctrl, + } + } + ++static void ++sor507d_get_caps(struct nv50_disp *core, struct nouveau_encoder *outp, int or) ++{ ++ outp->caps.dp_interlace = true; ++} ++ + const struct nv50_outp_func + sor507d = { + .ctrl = sor507d_ctrl, ++ .get_caps = sor507d_get_caps, + }; +diff --git a/drivers/gpu/drm/nouveau/dispnv50/sor907d.c b/drivers/gpu/drm/nouveau/dispnv50/sor907d.c +index b0314ec11fb3..9577ccf1c809 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/sor907d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/sor907d.c +@@ -21,6 +21,7 @@ + */ + #include "core.h" + ++#include <nouveau_bo.h> + #include <nvif/class.h> + + static void +@@ -35,7 +36,17 @@ sor907d_ctrl(struct nv50_core *core, int or, u32 ctrl, + } + } + ++static void ++sor907d_get_caps(struct nv50_disp *disp, struct nouveau_encoder *outp, int or) ++{ ++ const int off = or * 2; ++ u32 tmp = nouveau_bo_rd32(disp->sync, 0x000014 + off); ++ ++ outp->caps.dp_interlace = !!(tmp & 0x04000000); ++} ++ + const struct nv50_outp_func + sor907d = { + .ctrl = sor907d_ctrl, ++ .get_caps = sor907d_get_caps, + }; +diff --git a/drivers/gpu/drm/nouveau/dispnv50/sorc37d.c b/drivers/gpu/drm/nouveau/dispnv50/sorc37d.c +index dff059241c5d..c86ca955fdcd 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/sorc37d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/sorc37d.c +@@ -33,7 +33,16 @@ sorc37d_ctrl(struct nv50_core *core, int or, u32 ctrl, + } + } + ++static void ++sorc37d_get_caps(struct nv50_disp *disp, struct nouveau_encoder *outp, int or) ++{ ++ u32 tmp = nvif_rd32(&disp->caps, 0x000144 + (or * 8)); ++ ++ outp->caps.dp_interlace = !!(tmp & 0x04000000); ++} ++ + const struct nv50_outp_func + sorc37d = { + .ctrl = sorc37d_ctrl, ++ .get_caps = sorc37d_get_caps, + }; +diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c +index 9a9a7f5003d3..6dae00da5d7e 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_connector.c ++++ b/drivers/gpu/drm/nouveau/nouveau_connector.c +@@ -509,7 +509,11 @@ nouveau_connector_set_encoder(struct drm_connector *connector, + nv_connector->detected_encoder = nv_encoder; + + if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_TESLA) { +- connector->interlace_allowed = true; ++ if (nv_encoder->dcb->type == DCB_OUTPUT_DP) ++ connector->interlace_allowed = ++ nv_encoder->caps.dp_interlace; ++ else ++ connector->interlace_allowed = true; + connector->doublescan_allowed = true; + } else + if (nv_encoder->dcb->type == DCB_OUTPUT_LVDS || +@@ -1060,6 +1064,10 @@ nouveau_connector_mode_valid(struct drm_connector *connector, + case DCB_OUTPUT_TV: + return get_slave_funcs(encoder)->mode_valid(encoder, mode); + case DCB_OUTPUT_DP: ++ if (mode->flags & DRM_MODE_FLAG_INTERLACE && ++ !nv_encoder->caps.dp_interlace) ++ return MODE_NO_INTERLACE; ++ + max_clock = nv_encoder->dp.link_nr; + max_clock *= nv_encoder->dp.link_bw; + clock = clock * (connector->display_info.bpc * 3) / 10; +diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h +index 3517f920bf89..3217f587eceb 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_encoder.h ++++ b/drivers/gpu/drm/nouveau/nouveau_encoder.h +@@ -66,6 +66,10 @@ struct nouveau_encoder { + } dp; + }; + ++ struct { ++ bool dp_interlace : 1; ++ } caps; ++ + void (*enc_save)(struct drm_encoder *encoder); + void (*enc_restore)(struct drm_encoder *encoder); + void (*update)(struct nouveau_encoder *, u8 head, +-- +2.26.2 + diff --git a/0001-kms-nv50-Share-DP-SST-mode_valid-handling-with-MST.patch b/0001-kms-nv50-Share-DP-SST-mode_valid-handling-with-MST.patch new file mode 100644 index 000000000..c14aed7ea --- /dev/null +++ b/0001-kms-nv50-Share-DP-SST-mode_valid-handling-with-MST.patch @@ -0,0 +1,209 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:27 -0400 +Subject: [PATCH] kms/nv50-: Share DP SST mode_valid() handling with MST + +Currently, the nv50_mstc_mode_valid() function is happy to take any and +all modes, even the ones we can't actually support sometimes like +interlaced modes. + +Luckily, the only difference between the mode validation that needs to +be performed for MST vs. SST is that eventually we'll need to check the +minimum PBN against the MSTB's full PBN capabilities (remember-we don't +care about the current bw state here). Otherwise, all of the other code +can be shared. + +So, we move all of the common mode validation in +nouveau_connector_mode_valid() into a separate helper, +nv50_dp_mode_valid(), and use that from both nv50_mstc_mode_valid() and +nouveau_connector_mode_valid(). Note that we allow for returning the +calculated clock that nv50_dp_mode_valid() came up with, since we'll +eventually want to use that for PBN calculation in +nv50_mstc_mode_valid(). + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/disp.c | 9 +++- + drivers/gpu/drm/nouveau/nouveau_connector.c | 46 ++++++++++++--------- + drivers/gpu/drm/nouveau/nouveau_connector.h | 5 +++ + drivers/gpu/drm/nouveau/nouveau_dp.c | 31 ++++++++++++++ + drivers/gpu/drm/nouveau/nouveau_encoder.h | 4 ++ + 5 files changed, 75 insertions(+), 20 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c +index e92e7bf49780..d5d69532f3c5 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c +@@ -1056,7 +1056,14 @@ static enum drm_mode_status + nv50_mstc_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) + { +- return MODE_OK; ++ struct nv50_mstc *mstc = nv50_mstc(connector); ++ struct nouveau_encoder *outp = mstc->mstm->outp; ++ ++ /* TODO: calculate the PBN from the dotclock and validate against the ++ * MSTB's max possible PBN ++ */ ++ ++ return nv50_dp_mode_valid(connector, outp, mode, NULL); + } + + static int +diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c +index 6dae00da5d7e..1b383ae0248f 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_connector.c ++++ b/drivers/gpu/drm/nouveau/nouveau_connector.c +@@ -38,6 +38,7 @@ + #include "nouveau_reg.h" + #include "nouveau_drv.h" + #include "dispnv04/hw.h" ++#include "dispnv50/disp.h" + #include "nouveau_acpi.h" + + #include "nouveau_display.h" +@@ -1033,6 +1034,29 @@ get_tmds_link_bandwidth(struct drm_connector *connector) + return 112000 * duallink_scale; + } + ++enum drm_mode_status ++nouveau_conn_mode_clock_valid(const struct drm_display_mode *mode, ++ const unsigned min_clock, ++ const unsigned max_clock, ++ unsigned int *clock_out) ++{ ++ unsigned int clock = mode->clock; ++ ++ if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == ++ DRM_MODE_FLAG_3D_FRAME_PACKING) ++ clock *= 2; ++ ++ if (clock < min_clock) ++ return MODE_CLOCK_LOW; ++ if (clock > max_clock) ++ return MODE_CLOCK_HIGH; ++ ++ if (clock_out) ++ *clock_out = clock; ++ ++ return MODE_OK; ++} ++ + static enum drm_mode_status + nouveau_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +@@ -1041,7 +1065,6 @@ nouveau_connector_mode_valid(struct drm_connector *connector, + struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; + struct drm_encoder *encoder = to_drm_encoder(nv_encoder); + unsigned min_clock = 25000, max_clock = min_clock; +- unsigned clock = mode->clock; + + switch (nv_encoder->dcb->type) { + case DCB_OUTPUT_LVDS: +@@ -1064,29 +1087,14 @@ nouveau_connector_mode_valid(struct drm_connector *connector, + case DCB_OUTPUT_TV: + return get_slave_funcs(encoder)->mode_valid(encoder, mode); + case DCB_OUTPUT_DP: +- if (mode->flags & DRM_MODE_FLAG_INTERLACE && +- !nv_encoder->caps.dp_interlace) +- return MODE_NO_INTERLACE; +- +- max_clock = nv_encoder->dp.link_nr; +- max_clock *= nv_encoder->dp.link_bw; +- clock = clock * (connector->display_info.bpc * 3) / 10; +- break; ++ return nv50_dp_mode_valid(connector, nv_encoder, mode, NULL); + default: + BUG(); + return MODE_BAD; + } + +- if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING) +- clock *= 2; +- +- if (clock < min_clock) +- return MODE_CLOCK_LOW; +- +- if (clock > max_clock) +- return MODE_CLOCK_HIGH; +- +- return MODE_OK; ++ return nouveau_conn_mode_clock_valid(mode, min_clock, max_clock, ++ NULL); + } + + static struct drm_encoder * +diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.h b/drivers/gpu/drm/nouveau/nouveau_connector.h +index de84fb4708c7..9e062c7adec8 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_connector.h ++++ b/drivers/gpu/drm/nouveau/nouveau_connector.h +@@ -195,6 +195,11 @@ int nouveau_conn_atomic_get_property(struct drm_connector *, + const struct drm_connector_state *, + struct drm_property *, u64 *); + struct drm_display_mode *nouveau_conn_native_mode(struct drm_connector *); ++enum drm_mode_status ++nouveau_conn_mode_clock_valid(const struct drm_display_mode *, ++ const unsigned min_clock, ++ const unsigned max_clock, ++ unsigned *clock); + + #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT + extern int nouveau_backlight_init(struct drm_connector *); +diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c +index 2674f1587457..8a0f7994e1ae 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_dp.c ++++ b/drivers/gpu/drm/nouveau/nouveau_dp.c +@@ -98,3 +98,34 @@ nouveau_dp_detect(struct nouveau_encoder *nv_encoder) + return NOUVEAU_DP_SST; + return ret; + } ++ ++/* TODO: ++ * - Use the minimum possible BPC here, once we add support for the max bpc ++ * property. ++ * - Validate the mode against downstream port caps (see ++ * drm_dp_downstream_max_clock()) ++ * - Validate against the DP caps advertised by the GPU (we don't check these ++ * yet) ++ */ ++enum drm_mode_status ++nv50_dp_mode_valid(struct drm_connector *connector, ++ struct nouveau_encoder *outp, ++ const struct drm_display_mode *mode, ++ unsigned *out_clock) ++{ ++ const unsigned min_clock = 25000; ++ unsigned max_clock, clock; ++ enum drm_mode_status ret; ++ ++ if (mode->flags & DRM_MODE_FLAG_INTERLACE && !outp->caps.dp_interlace) ++ return MODE_NO_INTERLACE; ++ ++ max_clock = outp->dp.link_nr * outp->dp.link_bw; ++ clock = mode->clock * (connector->display_info.bpc * 3) / 10; ++ ++ ret = nouveau_conn_mode_clock_valid(mode, min_clock, max_clock, ++ &clock); ++ if (out_clock) ++ *out_clock = clock; ++ return ret; ++} +diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h +index 3217f587eceb..de51733b0476 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_encoder.h ++++ b/drivers/gpu/drm/nouveau/nouveau_encoder.h +@@ -104,6 +104,10 @@ enum nouveau_dp_status { + }; + + int nouveau_dp_detect(struct nouveau_encoder *); ++enum drm_mode_status nv50_dp_mode_valid(struct drm_connector *, ++ struct nouveau_encoder *, ++ const struct drm_display_mode *, ++ unsigned *clock); + + struct nouveau_connector * + nouveau_encoder_connector_get(struct nouveau_encoder *encoder); +-- +2.26.2 + diff --git a/0001-mm-kmemleak-skip-late_init-if-not-skip-disable.patch b/0001-mm-kmemleak-skip-late_init-if-not-skip-disable.patch index e87612358..2e055125c 100644 --- a/0001-mm-kmemleak-skip-late_init-if-not-skip-disable.patch +++ b/0001-mm-kmemleak-skip-late_init-if-not-skip-disable.patch @@ -1,4 +1,4 @@ -From 14d329da03ea1145efce866b127b10ea6390b5e1 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Murphy Zhou <jencce.kernel@gmail.com> Date: Sun, 29 Sep 2019 17:56:59 +0800 Subject: [PATCH] mm/kmemleak: skip late_init if not skip disable @@ -51,10 +51,10 @@ Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com> 1 file changed, 5 insertions(+) diff --git a/mm/kmemleak.c b/mm/kmemleak.c -index 03a8d84badad..b9baf617fe35 100644 +index e362dc3d2028..0c3dfb8eef67 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c -@@ -1946,6 +1946,11 @@ void __init kmemleak_init(void) +@@ -1958,6 +1958,11 @@ void __init kmemleak_init(void) */ static int __init kmemleak_late_init(void) { @@ -64,8 +64,8 @@ index 03a8d84badad..b9baf617fe35 100644 + } + kmemleak_initialized = 1; - + debugfs_create_file("kmemleak", 0644, NULL, NULL, &kmemleak_fops); -- -2.21.0 +2.26.2 diff --git a/0001-mmu-Remove-unneeded-semicolon.patch b/0001-mmu-Remove-unneeded-semicolon.patch new file mode 100644 index 000000000..3931ff586 --- /dev/null +++ b/0001-mmu-Remove-unneeded-semicolon.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zheng Bin <zhengbin13@huawei.com> +Date: Fri, 24 Apr 2020 15:36:01 +0800 +Subject: [PATCH] mmu: Remove unneeded semicolon + +Fixes coccicheck warning: + +drivers/gpu/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h:307:2-3: Unneeded semicolon +drivers/gpu/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c:583:2-3: Unneeded semicolon + +Reported-by: Hulk Robot <hulkci@huawei.com> +Signed-off-by: Zheng Bin <zhengbin13@huawei.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c | 2 +- + drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c +index 41640e0584ac..199f94e15c5f 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c ++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c +@@ -580,7 +580,7 @@ nvkm_vmm_iter(struct nvkm_vmm *vmm, const struct nvkm_vmm_page *page, + it.pte[it.lvl]++; + } + } +- }; ++ } + + nvkm_vmm_flush(&it); + return ~0ULL; +diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h +index 5e55ecbd8005..d3f8f916d0db 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h ++++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h +@@ -304,7 +304,7 @@ int tu102_vmm_new(struct nvkm_mmu *, bool, u64, u64, void *, u32, + FILL(VMM, PT, PTEI, _ptes, MAP, _addr); \ + PTEI += _ptes; \ + PTEN -= _ptes; \ +- }; \ ++ } \ + nvkm_done((PT)->memory); \ + } while(0) + +-- +2.26.2 + diff --git a/0001-perf-cs-etm-Move-defined-of-traceid_list.patch b/0001-perf-cs-etm-Move-defined-of-traceid_list.patch new file mode 100644 index 000000000..63cbefa93 --- /dev/null +++ b/0001-perf-cs-etm-Move-defined-of-traceid_list.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Leo Yan <leo.yan@linaro.org> +Date: Tue, 5 May 2020 21:36:42 +0800 +Subject: [PATCH] perf cs-etm: Move defined of traceid_list + +The variable 'traceid_list' is defined in the header file cs-etm.h, +if multiple C files include cs-etm.h the compiler might complaint for +multiple definition of 'traceid_list'. + +To fix multiple definition error, move the definition of 'traceid_list' +into cs-etm.c. + +Fixes: cd8bfd8c973e ("perf tools: Add processing of coresight metadata") +Reported-by: Thomas Backlund <tmb@mageia.org> +Signed-off-by: Leo Yan <leo.yan@linaro.org> +Tested-by: Thomas Backlund <tmb@mageia.org> +Tested-by: Mike Leach <mike.leach@linaro.org> +Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> +Reviewed-by: Mike Leach <mike.leach@linaro.org> +Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> + +Upstream Status: https://lore.kernel.org/lkml/20200505133642.4756-1-leo.yan@linaro.org/ +--- + tools/perf/util/cs-etm.c | 3 +++ + tools/perf/util/cs-etm.h | 3 --- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c +index 62d2f9b9ce1b..381d9708e9bd 100644 +--- a/tools/perf/util/cs-etm.c ++++ b/tools/perf/util/cs-etm.c +@@ -94,6 +94,9 @@ struct cs_etm_queue { + struct cs_etm_traceid_queue **traceid_queues; + }; + ++/* RB tree for quick conversion between traceID and metadata pointers */ ++static struct intlist *traceid_list; ++ + static int cs_etm__update_queues(struct cs_etm_auxtrace *etm); + static int cs_etm__process_queues(struct cs_etm_auxtrace *etm); + static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm, +diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h +index 650ecc2a6349..4ad925d6d799 100644 +--- a/tools/perf/util/cs-etm.h ++++ b/tools/perf/util/cs-etm.h +@@ -114,9 +114,6 @@ enum cs_etm_isa { + CS_ETM_ISA_T32, + }; + +-/* RB tree for quick conversion between traceID and metadata pointers */ +-struct intlist *traceid_list; +- + struct cs_etm_queue; + + struct cs_etm_packet { +-- +2.26.2 + diff --git a/0001-pwm-lpss-Fix-get_state-runtime-pm-reference-handling.patch b/0001-pwm-lpss-Fix-get_state-runtime-pm-reference-handling.patch deleted file mode 100644 index f5232e408..000000000 --- a/0001-pwm-lpss-Fix-get_state-runtime-pm-reference-handling.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 3666fb55d53fb40f75ec4d665416fed1a714ef09 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 12 May 2020 00:39:24 +0200 -Subject: [PATCH] pwm: lpss: Fix get_state runtime-pm reference handling - -Before commit cfc4c189bc70 ("pwm: Read initial hardware state at request -time"), a driver's get_state callback would get called once per PWM from -pwmchip_add(). - -pwm-lpss' runtime-pm code was relying on this, getting a runtime-pm ref for -PWMs which are enabled at probe time from within its get_state callback, -before enabling runtime-pm. - -The change to calling get_state at request time causes a number of -problems: - -1. PWMs enabled at probe time may get runtime suspended before they are -requested, causing e.g. a LCD backlight controlled by the PWM to turn off. - -2. When the request happens when the PWM has been runtime suspended, the -ctrl register will read all 1 / 0xffffffff, causing get_state to store -bogus values in the pwm_state. - -3. get_state was using an async pm_runtime_get() call, because it assumed -that runtime-pm has not been enabled yet. If shortly after the request an -apply call is made, then the pwm_lpss_is_updating() check may trigger -because the resume triggered by the pm_runtime_get() call is not complete -yet, so the ctrl register still reads all 1 / 0xffffffff. - -This commit fixes these issues by moving the initial pm_runtime_get() call -for PWMs which are enabled at probe time to the pwm_lpss_probe() function; -and by making get_state take a runtime-pm ref before reading the ctrl reg. - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1828927 -Fixes: cfc4c189bc70 ("pwm: Read initial hardware state at request time") -Cc: stable@vger.kernel.org -Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Upstream Status: https://lore.kernel.org/linux-acpi/5f15f6bc-8650-d86e-893f-0d41557c57c7@redhat.com/ ---- - drivers/pwm/pwm-lpss.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c -index 75bbfe5f3bc2..9d965ffe66d1 100644 ---- a/drivers/pwm/pwm-lpss.c -+++ b/drivers/pwm/pwm-lpss.c -@@ -158,7 +158,6 @@ static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm, - return 0; - } - --/* This function gets called once from pwmchip_add to get the initial state */ - static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm, - struct pwm_state *state) - { -@@ -167,6 +166,8 @@ static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm, - unsigned long long base_unit, freq, on_time_div; - u32 ctrl; - -+ pm_runtime_get_sync(chip->dev); -+ - base_unit_range = BIT(lpwm->info->base_unit_bits); - - ctrl = pwm_lpss_read(pwm); -@@ -187,8 +188,7 @@ static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm, - state->polarity = PWM_POLARITY_NORMAL; - state->enabled = !!(ctrl & PWM_ENABLE); - -- if (state->enabled) -- pm_runtime_get(chip->dev); -+ pm_runtime_put(chip->dev); - } - - static const struct pwm_ops pwm_lpss_ops = { -@@ -202,7 +202,8 @@ struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r, - { - struct pwm_lpss_chip *lpwm; - unsigned long c; -- int ret; -+ int i, ret; -+ u32 ctrl; - - if (WARN_ON(info->npwm > MAX_PWMS)) - return ERR_PTR(-ENODEV); -@@ -232,6 +233,12 @@ struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r, - return ERR_PTR(ret); - } - -+ for (i = 0; i < lpwm->info->npwm; i++) { -+ ctrl = pwm_lpss_read(&lpwm->chip.pwms[i]); -+ if (ctrl & PWM_ENABLE) -+ pm_runtime_get(dev); -+ } -+ - return lpwm; - } - EXPORT_SYMBOL_GPL(pwm_lpss_probe); --- -2.26.2 - diff --git a/s390-Lock-down-the-kernel-when-the-IPL-secure-flag-i.patch b/0001-s390-Lock-down-the-kernel-when-the-IPL-secure-flag-i.patch index 70e3f76a8..4332472bb 100644 --- a/s390-Lock-down-the-kernel-when-the-IPL-secure-flag-i.patch +++ b/0001-s390-Lock-down-the-kernel-when-the-IPL-secure-flag-i.patch @@ -1,11 +1,12 @@ -From eaa12998810bd9db85dec71f0da55fd5aae73d0f Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jeremy Cline <jcline@redhat.com> Date: Wed, 30 Oct 2019 14:37:49 +0000 Subject: [PATCH] s390: Lock down the kernel when the IPL secure flag is set -Automatically lock down the kernel to LOCKDOWN_INTEGRITY_MAX if +Automatically lock down the kernel to LOCKDOWN_CONFIDENTIALITY_MAX if the IPL secure flag is set. +Upstream Status: RHEL only Suggested-by: Philipp Rudo <prudo@redhat.com> Signed-off-by: Jeremy Cline <jcline@redhat.com> --- @@ -15,7 +16,7 @@ Signed-off-by: Jeremy Cline <jcline@redhat.com> 3 files changed, 10 insertions(+) diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h -index 084e71b7272a..1d1b5ec7357b 100644 +index b63bd66404b8..3482d9602e68 100644 --- a/arch/s390/include/asm/ipl.h +++ b/arch/s390/include/asm/ipl.h @@ -109,6 +109,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf, @@ -23,16 +24,16 @@ index 084e71b7272a..1d1b5ec7357b 100644 int ipl_report_add_certificate(struct ipl_report *report, void *key, unsigned long addr, unsigned long len); +bool ipl_get_secureboot(void); - + /* * DIAG 308 support diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c -index 6837affc19e8..2d3f3d00e05c 100644 +index 4a71061974fd..9baf0b570c3d 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c -@@ -1842,3 +1842,8 @@ int ipl_report_free(struct ipl_report *report) +@@ -1901,3 +1901,8 @@ int ipl_report_free(struct ipl_report *report) } - + #endif + +bool ipl_get_secureboot(void) @@ -40,7 +41,7 @@ index 6837affc19e8..2d3f3d00e05c 100644 + return !!ipl_secure_flag; +} diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c -index 9cbf490fd162..0510ecdfc3f6 100644 +index 36445dd40fdb..b338a050c5aa 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -49,6 +49,7 @@ @@ -48,13 +49,13 @@ index 9cbf490fd162..0510ecdfc3f6 100644 #include <linux/compat.h> #include <linux/start_kernel.h> +#include <linux/security.h> - + #include <asm/boot_data.h> #include <asm/ipl.h> -@@ -1096,6 +1097,9 @@ void __init setup_arch(char **cmdline_p) - +@@ -1093,6 +1094,9 @@ void __init setup_arch(char **cmdline_p) + log_component_list(); - + + if (ipl_get_secureboot()) + security_lock_kernel_down("Secure IPL mode", LOCKDOWN_INTEGRITY_MAX); + @@ -62,5 +63,5 @@ index 9cbf490fd162..0510ecdfc3f6 100644 /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; -- -2.24.1 +2.26.2 diff --git a/0001-scsi-smartpqi-add-inspur-advantech-ids.patch b/0001-scsi-smartpqi-add-inspur-advantech-ids.patch new file mode 100644 index 000000000..4e2bbb794 --- /dev/null +++ b/0001-scsi-smartpqi-add-inspur-advantech-ids.patch @@ -0,0 +1,70 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Don Brace <dbrace@redhat.com> +Date: Mon, 16 Jul 2018 19:20:41 -0400 +Subject: [PATCH] scsi: smartpqi: add inspur advantech ids + +Message-id: <1531768843-2544-4-git-send-email-dbrace@redhat.com> +Patchwork-id: 224988 +O-Subject: [RHEL 8.0 e-stor V2 PATCH 3/5] scsi: smartpqi: add inspur advantech ids +Bugzilla: 1503736 +RH-Acked-by: Ewan Milne <emilne@redhat.com> +RH-Acked-by: Tomas Henzl <thenzl@redhat.com> + +From: Kevin Barnett <kevin.barnett@microsemi.com> + +Add support for these new device IDs: + + Advantech MIC-8312BridgeB + INSPUR PM8204-2GB + INSPUR PM8204-4GB + INSPUR PM8222-SHBA + +Upstream Status: RHEL only +Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> +Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com> +Signed-off-by: Don Brace <don.brace@microsemi.com> +Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> +(cherry picked from commit 9f8d05fa98442de78d1ab30235b0cc656ed7aff0) +Signed-off-by: Don Brace <dbrace@redhat.com> +Signed-off-by: Herton R. Krzesinski <herton@redhat.com> +--- + drivers/scsi/smartpqi/smartpqi_init.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c +index cd157f11eb22..c5dc6cf57a71 100644 +--- a/drivers/scsi/smartpqi/smartpqi_init.c ++++ b/drivers/scsi/smartpqi/smartpqi_init.c +@@ -8247,6 +8247,18 @@ static const struct pci_device_id pqi_pci_id_table[] = { + PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, + 0x19e5, 0xd22c) + }, ++ { ++ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, ++ 0x1bd4, 0x004a) ++ }, ++ { ++ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, ++ 0x1bd4, 0x004b) ++ }, ++ { ++ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, ++ 0x1bd4, 0x004c) ++ }, + { + PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, + PCI_VENDOR_ID_ADAPTEC2, 0x0110) +@@ -8383,6 +8395,10 @@ static const struct pci_device_id pqi_pci_id_table[] = { + PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, + PCI_VENDOR_ID_ADVANTECH, 0x8312) + }, ++ { ++ PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, ++ PCI_VENDOR_ID_ADVANTECH, 0x8312) ++ }, + { + PCI_DEVICE_SUB(PCI_VENDOR_ID_ADAPTEC2, 0x028f, + PCI_VENDOR_ID_DELL, 0x1fe0) +-- +2.26.2 + diff --git a/0001-security-lockdown-expose-a-hook-to-lock-the-kernel-d.patch b/0001-security-lockdown-expose-a-hook-to-lock-the-kernel-d.patch new file mode 100644 index 000000000..fc6b78ad0 --- /dev/null +++ b/0001-security-lockdown-expose-a-hook-to-lock-the-kernel-d.patch @@ -0,0 +1,103 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jeremy Cline <jcline@redhat.com> +Date: Mon, 30 Sep 2019 21:22:47 +0000 +Subject: [PATCH] security: lockdown: expose a hook to lock the kernel down + +In order to automatically lock down kernels running on UEFI machines +booted in Secure Boot mode, expose the lock_kernel_down() hook. + +Upstream Status: RHEL only +Signed-off-by: Jeremy Cline <jcline@redhat.com> +--- + include/linux/lsm_hook_defs.h | 2 ++ + include/linux/lsm_hooks.h | 6 ++++++ + include/linux/security.h | 5 +++++ + security/lockdown/lockdown.c | 1 + + security/security.c | 6 ++++++ + 5 files changed, 20 insertions(+) + +diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h +index 5616b2567aa7..bc5caab1413b 100644 +--- a/include/linux/lsm_hook_defs.h ++++ b/include/linux/lsm_hook_defs.h +@@ -371,6 +371,8 @@ LSM_HOOK(void, LSM_RET_VOID, bpf_prog_free_security, struct bpf_prog_aux *aux) + #endif /* CONFIG_BPF_SYSCALL */ + + LSM_HOOK(int, 0, locked_down, enum lockdown_reason what) ++LSM_HOOK(int, 0, lock_kernel_down, const char *where, enum lockdown_reason level) ++ + + #ifdef CONFIG_PERF_EVENTS + LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type) +diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h +index 988ca0df7824..4ed37b95417c 100644 +--- a/include/linux/lsm_hooks.h ++++ b/include/linux/lsm_hooks.h +@@ -1476,6 +1476,12 @@ + * + * @what: kernel feature being accessed + * ++ * @lock_kernel_down ++ * Put the kernel into lock-down mode. ++ * ++ * @where: Where the lock-down is originating from (e.g. command line option) ++ * @level: The lock-down level (can only increase) ++ * + * Security hooks for perf events + * + * @perf_event_open: +diff --git a/include/linux/security.h b/include/linux/security.h +index a8d9310472df..381305889d89 100644 +--- a/include/linux/security.h ++++ b/include/linux/security.h +@@ -446,6 +446,7 @@ int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen); + int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen); + int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen); + int security_locked_down(enum lockdown_reason what); ++int security_lock_kernel_down(const char *where, enum lockdown_reason level); + #else /* CONFIG_SECURITY */ + + static inline int call_blocking_lsm_notifier(enum lsm_event event, void *data) +@@ -1273,6 +1274,10 @@ static inline int security_locked_down(enum lockdown_reason what) + { + return 0; + } ++static inline int security_lock_kernel_down(const char *where, enum lockdown_reason level) ++{ ++ return 0; ++} + #endif /* CONFIG_SECURITY */ + + #ifdef CONFIG_SECURITY_NETWORK +diff --git a/security/lockdown/lockdown.c b/security/lockdown/lockdown.c +index 5a952617a0eb..61cc3cdc4d25 100644 +--- a/security/lockdown/lockdown.c ++++ b/security/lockdown/lockdown.c +@@ -73,6 +73,7 @@ static int lockdown_is_locked_down(enum lockdown_reason what) + + static struct security_hook_list lockdown_hooks[] __lsm_ro_after_init = { + LSM_HOOK_INIT(locked_down, lockdown_is_locked_down), ++ LSM_HOOK_INIT(lock_kernel_down, lock_kernel_down), + }; + + static int __init lockdown_lsm_init(void) +diff --git a/security/security.c b/security/security.c +index 51de970fbb1e..48d05f8067f2 100644 +--- a/security/security.c ++++ b/security/security.c +@@ -2468,6 +2468,12 @@ int security_locked_down(enum lockdown_reason what) + } + EXPORT_SYMBOL(security_locked_down); + ++int security_lock_kernel_down(const char *where, enum lockdown_reason level) ++{ ++ return call_int_hook(lock_kernel_down, 0, where, level); ++} ++EXPORT_SYMBOL(security_lock_kernel_down); ++ + #ifdef CONFIG_PERF_EVENTS + int security_perf_event_open(struct perf_event_attr *attr, int type) + { +-- +2.26.2 + diff --git a/0001-soc-bcm2835-Sync-xHCI-reset-firmware-property-with-d.patch b/0001-soc-bcm2835-Sync-xHCI-reset-firmware-property-with-d.patch new file mode 100644 index 000000000..3dd66b141 --- /dev/null +++ b/0001-soc-bcm2835-Sync-xHCI-reset-firmware-property-with-d.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Date: Tue, 10 Mar 2020 13:52:39 +0100 +Subject: [PATCH] soc: bcm2835: Sync xHCI reset firmware property with + downstream + +The property is needed in order to trigger VL805's firmware load. Note +that there is a gap between the property introduced and the previous +one. This is also the case downstream. + +Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +--- + include/soc/bcm2835/raspberrypi-firmware.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h +index 7800e12ee042..cc9cdbc66403 100644 +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -90,7 +90,7 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, + RPI_FIRMWARE_GET_POE_HAT_VAL = 0x00030049, + RPI_FIRMWARE_SET_POE_HAT_VAL = 0x00030050, +- ++ RPI_FIRMWARE_NOTIFY_XHCI_RESET = 0x00030058, + + /* Dispmanx TAGS */ + RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, +-- +2.26.2 + diff --git a/usb-fusb302-Convert-to-use-GPIO-descriptors.patch b/0001-usb-fusb302-Convert-to-use-GPIO-descriptors.patch index 8ba00ea69..40732340c 100644 --- a/usb-fusb302-Convert-to-use-GPIO-descriptors.patch +++ b/0001-usb-fusb302-Convert-to-use-GPIO-descriptors.patch @@ -1,6 +1,6 @@ -From 619bb30cc0fe1754f8dfa0fa4ea94fd937857fbd Mon Sep 17 00:00:00 2001 +From 2c36867719d93db8d7f365310587578ab980762c Mon Sep 17 00:00:00 2001 From: Linus Walleij <linus.walleij@linaro.org> -Date: Mon, 20 Apr 2020 09:55:38 +0100 +Date: Wed, 15 Apr 2020 21:24:48 +0200 Subject: [PATCH] usb: fusb302: Convert to use GPIO descriptors This converts the FUSB302 driver to use GPIO descriptors. @@ -38,14 +38,21 @@ Create a quirk in the GPIO OF library to allow this property specifically to be specified without the "-gpios" suffix, we have other such bindings already. +Cc: Tobias Schramm <t.schramm@manjaro.org> +Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> +Cc: Yueyao Zhu <yueyao@google.com> +Cc: Guenter Roeck <linux@roeck-us.net> +Cc: devicetree@vger.kernel.org Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +Link: https://lore.kernel.org/r/20200415192448.305257-1-linus.walleij@linaro.org +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/gpio/gpiolib-of.c | 21 +++++++++++++++++++++ drivers/usb/typec/tcpm/fusb302.c | 32 +++++++++----------------------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c -index ccc449df3792..20c2c428168e 100644 +index ccc449df3792a..20c2c428168e4 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -460,6 +460,24 @@ static struct gpio_desc *of_find_arizona_gpio(struct device *dev, @@ -84,7 +91,7 @@ index ccc449df3792..20c2c428168e 100644 return desc; diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c -index b498960ff72b..b28facece43c 100644 +index b498960ff72b5..b28facece43c4 100644 --- a/drivers/usb/typec/tcpm/fusb302.c +++ b/drivers/usb/typec/tcpm/fusb302.c @@ -9,14 +9,13 @@ @@ -151,5 +158,5 @@ index b498960ff72b..b28facece43c 100644 return ret; } -- -2.26.1 +2.26.2 diff --git a/0001-virt-vbox-Add-a-few-new-vmmdev-request-types-to-the-.patch b/0001-virt-vbox-Add-a-few-new-vmmdev-request-types-to-the-.patch new file mode 100644 index 000000000..92c93e835 --- /dev/null +++ b/0001-virt-vbox-Add-a-few-new-vmmdev-request-types-to-the-.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 11:05:40 +0200 +Subject: [PATCH] virt: vbox: Add a few new vmmdev request types to the + userspace whitelist + +Upstream VirtualBox has defined and is using a few new request types for +vmmdev requests passed through /dev/vboxguest to the hypervisor. + +Add the defines for these to vbox_vmmdev_types.h and add add them to the +whitelists of vmmdev requests which userspace is allowed to make. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1789545 +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 2 ++ + include/uapi/linux/vbox_vmmdev_types.h | 3 +++ + 2 files changed, 5 insertions(+) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index 4f1addaa3f6f..ffd76b949276 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -1299,7 +1299,9 @@ static int vbg_req_allowed(struct vbg_dev *gdev, struct vbg_session *session, + case VMMDEVREQ_VIDEO_ACCEL_ENABLE: + case VMMDEVREQ_VIDEO_ACCEL_FLUSH: + case VMMDEVREQ_VIDEO_SET_VISIBLE_REGION: ++ case VMMDEVREQ_VIDEO_UPDATE_MONITOR_POSITIONS: + case VMMDEVREQ_GET_DISPLAY_CHANGE_REQEX: ++ case VMMDEVREQ_GET_DISPLAY_CHANGE_REQ_MULTI: + case VMMDEVREQ_GET_SEAMLESS_CHANGE_REQ: + case VMMDEVREQ_GET_VRDPCHANGE_REQ: + case VMMDEVREQ_LOG_STRING: +diff --git a/include/uapi/linux/vbox_vmmdev_types.h b/include/uapi/linux/vbox_vmmdev_types.h +index c27289fd619a..f8a8d6b3c521 100644 +--- a/include/uapi/linux/vbox_vmmdev_types.h ++++ b/include/uapi/linux/vbox_vmmdev_types.h +@@ -63,6 +63,7 @@ enum vmmdev_request_type { + VMMDEVREQ_SET_GUEST_CAPABILITIES = 56, + VMMDEVREQ_VIDEMODE_SUPPORTED2 = 57, /* since version 3.2.0 */ + VMMDEVREQ_GET_DISPLAY_CHANGE_REQEX = 80, /* since version 4.2.4 */ ++ VMMDEVREQ_GET_DISPLAY_CHANGE_REQ_MULTI = 81, + VMMDEVREQ_HGCM_CONNECT = 60, + VMMDEVREQ_HGCM_DISCONNECT = 61, + VMMDEVREQ_HGCM_CALL32 = 62, +@@ -92,6 +93,8 @@ enum vmmdev_request_type { + VMMDEVREQ_WRITE_COREDUMP = 218, + VMMDEVREQ_GUEST_HEARTBEAT = 219, + VMMDEVREQ_HEARTBEAT_CONFIGURE = 220, ++ VMMDEVREQ_NT_BUG_CHECK = 221, ++ VMMDEVREQ_VIDEO_UPDATE_MONITOR_POSITIONS = 222, + /* Ensure the enum is a 32 bit data-type */ + VMMDEVREQ_SIZEHACK = 0x7fffffff + }; +-- +2.26.2 + diff --git a/0001-virt-vbox-Add-support-for-the-new-VBG_IOCTL_ACQUIRE_.patch b/0001-virt-vbox-Add-support-for-the-new-VBG_IOCTL_ACQUIRE_.patch new file mode 100644 index 000000000..c001fe5d4 --- /dev/null +++ b/0001-virt-vbox-Add-support-for-the-new-VBG_IOCTL_ACQUIRE_.patch @@ -0,0 +1,320 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 18:04:30 +0200 +Subject: [PATCH] virt: vbox: Add support for the new + VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES ioctl + +Add support for the new VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES ioctl, this +is necessary for automatic resizing of the guest resolution to match the +VM-window size to work with the new VMSVGA virtual GPU which is now the +new default in VirtualBox. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1789545 +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 163 +++++++++++++++++++++++- + drivers/virt/vboxguest/vboxguest_core.h | 14 ++ + include/uapi/linux/vboxguest.h | 24 ++++ + 3 files changed, 200 insertions(+), 1 deletion(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index 15b3cb618c6e..4f1addaa3f6f 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -679,7 +679,7 @@ static int vbg_set_host_capabilities(struct vbg_dev *gdev, + + WARN_ON(!mutex_is_locked(&gdev->session_mutex)); + +- caps = gdev->set_guest_caps_tracker.mask; ++ caps = gdev->acquired_guest_caps | gdev->set_guest_caps_tracker.mask; + + if (gdev->guest_caps_host == caps) + return 0; +@@ -703,6 +703,113 @@ static int vbg_set_host_capabilities(struct vbg_dev *gdev, + return vbg_status_code_to_errno(rc); + } + ++/** ++ * Acquire (get exclusive access) guest capabilities for a session. ++ * Takes the session mutex. ++ * Return: 0 or negative errno value. ++ * @gdev: The Guest extension device. ++ * @session: The session. ++ * @flags: Flags (VBGL_IOC_AGC_FLAGS_XXX). ++ * @or_mask: The capabilities to add. ++ * @not_mask: The capabilities to remove. ++ * @session_termination: Set if we're called by the session cleanup code. ++ * This tweaks the error handling so we perform ++ * proper session cleanup even if the host ++ * misbehaves. ++ */ ++static int vbg_acquire_session_capabilities(struct vbg_dev *gdev, ++ struct vbg_session *session, ++ u32 or_mask, u32 not_mask, ++ u32 flags, bool session_termination) ++{ ++ unsigned long irqflags; ++ bool wakeup = false; ++ int ret = 0; ++ ++ mutex_lock(&gdev->session_mutex); ++ ++ if (gdev->set_guest_caps_tracker.mask & or_mask) { ++ vbg_err("%s error: cannot acquire caps which are currently set\n", ++ __func__); ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ /* ++ * Mark any caps in the or_mask as now being in acquire-mode. Note ++ * once caps are in acquire_mode they always stay in this mode. ++ * This impacts event handling, so we take the event-lock. ++ */ ++ spin_lock_irqsave(&gdev->event_spinlock, irqflags); ++ gdev->acquire_mode_guest_caps |= or_mask; ++ spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); ++ ++ /* If we only have to switch the caps to acquire mode, we're done. */ ++ if (flags & VBGL_IOC_AGC_FLAGS_CONFIG_ACQUIRE_MODE) ++ goto out; ++ ++ not_mask &= ~or_mask; /* or_mask takes priority over not_mask */ ++ not_mask &= session->acquired_guest_caps; ++ or_mask &= ~session->acquired_guest_caps; ++ ++ if (or_mask == 0 && not_mask == 0) ++ goto out; ++ ++ if (gdev->acquired_guest_caps & or_mask) { ++ ret = -EBUSY; ++ goto out; ++ } ++ ++ gdev->acquired_guest_caps |= or_mask; ++ gdev->acquired_guest_caps &= ~not_mask; ++ /* session->acquired_guest_caps impacts event handling, take the lock */ ++ spin_lock_irqsave(&gdev->event_spinlock, irqflags); ++ session->acquired_guest_caps |= or_mask; ++ session->acquired_guest_caps &= ~not_mask; ++ spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); ++ ++ ret = vbg_set_host_capabilities(gdev, session, session_termination); ++ /* Roll back on failure, unless it's session termination time. */ ++ if (ret < 0 && !session_termination) { ++ gdev->acquired_guest_caps &= ~or_mask; ++ gdev->acquired_guest_caps |= not_mask; ++ spin_lock_irqsave(&gdev->event_spinlock, irqflags); ++ session->acquired_guest_caps &= ~or_mask; ++ session->acquired_guest_caps |= not_mask; ++ spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); ++ } ++ ++ /* ++ * If we added a capability, check if that means some other thread in ++ * our session should be unblocked because there are events pending ++ * (the result of vbg_get_allowed_event_mask_for_session() may change). ++ * ++ * HACK ALERT! When the seamless support capability is added we generate ++ * a seamless change event so that the ring-3 client can sync with ++ * the seamless state. ++ */ ++ if (ret == 0 && or_mask != 0) { ++ spin_lock_irqsave(&gdev->event_spinlock, irqflags); ++ ++ if (or_mask & VMMDEV_GUEST_SUPPORTS_SEAMLESS) ++ gdev->pending_events |= ++ VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; ++ ++ if (gdev->pending_events) ++ wakeup = true; ++ ++ spin_unlock_irqrestore(&gdev->event_spinlock, irqflags); ++ ++ if (wakeup) ++ wake_up(&gdev->event_wq); ++ } ++ ++out: ++ mutex_unlock(&gdev->session_mutex); ++ ++ return ret; ++} ++ + /** + * Sets the guest capabilities for a session. Takes the session spinlock. + * Return: 0 or negative errno value. +@@ -725,6 +832,13 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + + mutex_lock(&gdev->session_mutex); + ++ if (gdev->acquire_mode_guest_caps & or_mask) { ++ vbg_err("%s error: cannot set caps which are in acquire_mode\n", ++ __func__); ++ ret = -EBUSY; ++ goto out; ++ } ++ + /* Apply the changes to the session mask. */ + previous = session->set_guest_caps; + session->set_guest_caps |= or_mask; +@@ -962,6 +1076,7 @@ void vbg_core_close_session(struct vbg_session *session) + struct vbg_dev *gdev = session->gdev; + int i, rc; + ++ vbg_acquire_session_capabilities(gdev, session, 0, U32_MAX, 0, true); + vbg_set_session_capabilities(gdev, session, 0, U32_MAX, true); + vbg_set_session_event_filter(gdev, session, 0, U32_MAX, true); + +@@ -1019,6 +1134,25 @@ static int vbg_ioctl_driver_version_info( + return 0; + } + ++/* Must be called with the event_lock held */ ++static u32 vbg_get_allowed_event_mask_for_session(struct vbg_dev *gdev, ++ struct vbg_session *session) ++{ ++ u32 acquire_mode_caps = gdev->acquire_mode_guest_caps; ++ u32 session_acquired_caps = session->acquired_guest_caps; ++ u32 allowed_events = VMMDEV_EVENT_VALID_EVENT_MASK; ++ ++ if ((acquire_mode_caps & VMMDEV_GUEST_SUPPORTS_GRAPHICS) && ++ !(session_acquired_caps & VMMDEV_GUEST_SUPPORTS_GRAPHICS)) ++ allowed_events &= ~VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST; ++ ++ if ((acquire_mode_caps & VMMDEV_GUEST_SUPPORTS_SEAMLESS) && ++ !(session_acquired_caps & VMMDEV_GUEST_SUPPORTS_SEAMLESS)) ++ allowed_events &= ~VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; ++ ++ return allowed_events; ++} ++ + static bool vbg_wait_event_cond(struct vbg_dev *gdev, + struct vbg_session *session, + u32 event_mask) +@@ -1030,6 +1164,7 @@ static bool vbg_wait_event_cond(struct vbg_dev *gdev, + spin_lock_irqsave(&gdev->event_spinlock, flags); + + events = gdev->pending_events & event_mask; ++ events &= vbg_get_allowed_event_mask_for_session(gdev, session); + wakeup = events || session->cancel_waiters; + + spin_unlock_irqrestore(&gdev->event_spinlock, flags); +@@ -1044,6 +1179,7 @@ static u32 vbg_consume_events_locked(struct vbg_dev *gdev, + { + u32 events = gdev->pending_events & event_mask; + ++ events &= vbg_get_allowed_event_mask_for_session(gdev, session); + gdev->pending_events &= ~events; + return events; + } +@@ -1445,6 +1581,29 @@ static int vbg_ioctl_change_filter_mask(struct vbg_dev *gdev, + false); + } + ++static int vbg_ioctl_acquire_guest_capabilities(struct vbg_dev *gdev, ++ struct vbg_session *session, ++ struct vbg_ioctl_acquire_guest_caps *caps) ++{ ++ u32 flags, or_mask, not_mask; ++ ++ if (vbg_ioctl_chk(&caps->hdr, sizeof(caps->u.in), 0)) ++ return -EINVAL; ++ ++ flags = caps->u.in.flags; ++ or_mask = caps->u.in.or_mask; ++ not_mask = caps->u.in.not_mask; ++ ++ if (flags & ~VBGL_IOC_AGC_FLAGS_VALID_MASK) ++ return -EINVAL; ++ ++ if ((or_mask | not_mask) & ~VMMDEV_GUEST_CAPABILITIES_MASK) ++ return -EINVAL; ++ ++ return vbg_acquire_session_capabilities(gdev, session, or_mask, ++ not_mask, flags, false); ++} ++ + static int vbg_ioctl_change_guest_capabilities(struct vbg_dev *gdev, + struct vbg_session *session, struct vbg_ioctl_set_guest_caps *caps) + { +@@ -1554,6 +1713,8 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) + return vbg_ioctl_interrupt_all_wait_events(gdev, session, data); + case VBG_IOCTL_CHANGE_FILTER_MASK: + return vbg_ioctl_change_filter_mask(gdev, session, data); ++ case VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: ++ return vbg_ioctl_acquire_guest_capabilities(gdev, session, data); + case VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: + return vbg_ioctl_change_guest_capabilities(gdev, session, data); + case VBG_IOCTL_CHECK_BALLOON: +diff --git a/drivers/virt/vboxguest/vboxguest_core.h b/drivers/virt/vboxguest/vboxguest_core.h +index dc745a033164..ab4bf64e2cec 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.h ++++ b/drivers/virt/vboxguest/vboxguest_core.h +@@ -117,6 +117,15 @@ struct vbg_dev { + */ + u32 event_filter_host; + ++ /** ++ * Guest capabilities which have been switched to acquire_mode. ++ */ ++ u32 acquire_mode_guest_caps; ++ /** ++ * Guest capabilities acquired by vbg_acquire_session_capabilities(). ++ * Only one session can acquire a capability at a time. ++ */ ++ u32 acquired_guest_caps; + /** + * Usage counters for guest capabilities requested through + * vbg_set_session_capabilities(). Indexed by capability bit +@@ -164,6 +173,11 @@ struct vbg_session { + * host filter. Protected by vbg_gdev.session_mutex. + */ + u32 event_filter; ++ /** ++ * Guest capabilities acquired by vbg_acquire_session_capabilities(). ++ * Only one session can acquire a capability at a time. ++ */ ++ u32 acquired_guest_caps; + /** + * Guest capabilities set through vbg_set_session_capabilities(). + * A capability claimed by any guest session will be reported to the +diff --git a/include/uapi/linux/vboxguest.h b/include/uapi/linux/vboxguest.h +index f79d7abe27db..15125f6ec60d 100644 +--- a/include/uapi/linux/vboxguest.h ++++ b/include/uapi/linux/vboxguest.h +@@ -257,6 +257,30 @@ VMMDEV_ASSERT_SIZE(vbg_ioctl_change_filter, 24 + 8); + _IOWR('V', 12, struct vbg_ioctl_change_filter) + + ++/** VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES data structure. */ ++struct vbg_ioctl_acquire_guest_caps { ++ /** The header. */ ++ struct vbg_ioctl_hdr hdr; ++ union { ++ struct { ++ /** Flags (VBGL_IOC_AGC_FLAGS_XXX). */ ++ __u32 flags; ++ /** Capabilities to set (VMMDEV_GUEST_SUPPORTS_XXX). */ ++ __u32 or_mask; ++ /** Capabilities to drop (VMMDEV_GUEST_SUPPORTS_XXX). */ ++ __u32 not_mask; ++ } in; ++ } u; ++}; ++VMMDEV_ASSERT_SIZE(vbg_ioctl_acquire_guest_caps, 24 + 12); ++ ++#define VBGL_IOC_AGC_FLAGS_CONFIG_ACQUIRE_MODE 0x00000001 ++#define VBGL_IOC_AGC_FLAGS_VALID_MASK 0x00000001 ++ ++#define VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES \ ++ _IOWR('V', 13, struct vbg_ioctl_acquire_guest_caps) ++ ++ + /** VBG_IOCTL_CHANGE_GUEST_CAPABILITIES data structure. */ + struct vbg_ioctl_set_guest_caps { + /** The header. */ +-- +2.26.2 + diff --git a/0001-virt-vbox-Add-vbg_set_host_capabilities-helper-funct.patch b/0001-virt-vbox-Add-vbg_set_host_capabilities-helper-funct.patch new file mode 100644 index 000000000..3362eaddf --- /dev/null +++ b/0001-virt-vbox-Add-vbg_set_host_capabilities-helper-funct.patch @@ -0,0 +1,130 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 15:30:29 +0200 +Subject: [PATCH] virt: vbox: Add vbg_set_host_capabilities() helper function + +Add vbg_set_host_capabilities() helper function, this is a preparation +patch for adding support for the VBGL_IOCTL_GUEST_CAPS_ACQUIRE ioctl. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 79 ++++++++++++++----------- + 1 file changed, 46 insertions(+), 33 deletions(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index aee5eff229f2..15b3cb618c6e 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -661,6 +661,48 @@ static int vbg_reset_host_capabilities(struct vbg_dev *gdev) + return vbg_status_code_to_errno(rc); + } + ++/** ++ * Set guest capabilities on the host. ++ * Must be called with gdev->session_mutex hold. ++ * Return: 0 or negative errno value. ++ * @gdev: The Guest extension device. ++ * @session: The session. ++ * @session_termination: Set if we're called by the session cleanup code. ++ */ ++static int vbg_set_host_capabilities(struct vbg_dev *gdev, ++ struct vbg_session *session, ++ bool session_termination) ++{ ++ struct vmmdev_mask *req; ++ u32 caps; ++ int rc; ++ ++ WARN_ON(!mutex_is_locked(&gdev->session_mutex)); ++ ++ caps = gdev->set_guest_caps_tracker.mask; ++ ++ if (gdev->guest_caps_host == caps) ++ return 0; ++ ++ /* On termination the requestor is the kernel, as we're cleaning up. */ ++ req = vbg_req_alloc(sizeof(*req), VMMDEVREQ_SET_GUEST_CAPABILITIES, ++ session_termination ? VBG_KERNEL_REQUEST : ++ session->requestor); ++ if (!req) { ++ gdev->guest_caps_host = U32_MAX; ++ return -ENOMEM; ++ } ++ ++ req->or_mask = caps; ++ req->not_mask = ~caps; ++ rc = vbg_req_perform(gdev, req); ++ vbg_req_free(req, sizeof(*req)); ++ ++ gdev->guest_caps_host = (rc >= 0) ? caps : U32_MAX; ++ ++ return vbg_status_code_to_errno(rc); ++} ++ + /** + * Sets the guest capabilities for a session. Takes the session spinlock. + * Return: 0 or negative errno value. +@@ -678,23 +720,8 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + u32 or_mask, u32 not_mask, + bool session_termination) + { +- struct vmmdev_mask *req; + u32 changed, previous; +- int rc, ret = 0; +- +- /* +- * Allocate a request buffer before taking the spinlock, when +- * the session is being terminated the requestor is the kernel, +- * as we're cleaning up. +- */ +- req = vbg_req_alloc(sizeof(*req), VMMDEVREQ_SET_GUEST_CAPABILITIES, +- session_termination ? VBG_KERNEL_REQUEST : +- session->requestor); +- if (!req) { +- if (!session_termination) +- return -ENOMEM; +- /* Ignore allocation failure, we must do session cleanup. */ +- } ++ int ret = 0; + + mutex_lock(&gdev->session_mutex); + +@@ -709,23 +736,10 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + goto out; + + vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, previous); +- or_mask = gdev->set_guest_caps_tracker.mask; +- +- if (gdev->guest_caps_host == or_mask || !req) +- goto out; +- +- gdev->guest_caps_host = or_mask; +- req->or_mask = or_mask; +- req->not_mask = ~or_mask; +- rc = vbg_req_perform(gdev, req); +- if (rc < 0) { +- ret = vbg_status_code_to_errno(rc); +- +- /* Failed, roll back (unless it's session termination time). */ +- gdev->guest_caps_host = U32_MAX; +- if (session_termination) +- goto out; + ++ ret = vbg_set_host_capabilities(gdev, session, session_termination); ++ /* Roll back on failure, unless it's session termination time. */ ++ if (ret < 0 && !session_termination) { + vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, + session->set_guest_caps); + session->set_guest_caps = previous; +@@ -733,7 +747,6 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + + out: + mutex_unlock(&gdev->session_mutex); +- vbg_req_free(req, sizeof(*req)); + + return ret; + } +-- +2.26.2 + diff --git a/0001-virt-vbox-Fix-VBGL_IOCTL_VMMDEV_REQUEST_BIG-and-_LOG.patch b/0001-virt-vbox-Fix-VBGL_IOCTL_VMMDEV_REQUEST_BIG-and-_LOG.patch new file mode 100644 index 000000000..daf372ec2 --- /dev/null +++ b/0001-virt-vbox-Fix-VBGL_IOCTL_VMMDEV_REQUEST_BIG-and-_LOG.patch @@ -0,0 +1,123 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 12:21:30 +0200 +Subject: [PATCH] virt: vbox: Fix VBGL_IOCTL_VMMDEV_REQUEST_BIG and _LOG req + numbers to match upstream + +Until this commit the mainline kernel version (this version) of the +vboxguest module contained a bug where it defined +VBGL_IOCTL_VMMDEV_REQUEST_BIG and VBGL_IOCTL_LOG using +_IOC(_IOC_READ | _IOC_WRITE, 'V', ...) instead of +_IO(V, ...) as the out of tree VirtualBox upstream version does. + +Since the VirtualBox userspace bits are always built against VirtualBox +upstream's headers, this means that so far the mainline kernel version +of the vboxguest module has been failing these 2 ioctls with -ENOTTY. +I guess that VBGL_IOCTL_VMMDEV_REQUEST_BIG is never used causing us to +not hit that one and sofar the vboxguest driver has failed to actually +log any log messages passed it through VBGL_IOCTL_LOG. + +This commit changes the VBGL_IOCTL_VMMDEV_REQUEST_BIG and VBGL_IOCTL_LOG +defines to match the out of tree VirtualBox upstream vboxguest version, +while keeping compatibility with the old wrong request defines so as +to not break the kernel ABI in case someone has been using the old +request defines. + +Fixes: f6ddd094f579 ("virt: Add vboxguest driver for Virtual Box Guest integration UAPI") +Cc: stable@vger.kernel.org +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 4 +++- + drivers/virt/vboxguest/vboxguest_core.h | 15 +++++++++++++++ + drivers/virt/vboxguest/vboxguest_linux.c | 3 ++- + include/uapi/linux/vboxguest.h | 4 ++-- + 4 files changed, 22 insertions(+), 4 deletions(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index b690a8a4bf9e..8fab04e76c14 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -1520,7 +1520,8 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) + + /* For VMMDEV_REQUEST hdr->type != VBG_IOCTL_HDR_TYPE_DEFAULT */ + if (req_no_size == VBG_IOCTL_VMMDEV_REQUEST(0) || +- req == VBG_IOCTL_VMMDEV_REQUEST_BIG) ++ req == VBG_IOCTL_VMMDEV_REQUEST_BIG || ++ req == VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT) + return vbg_ioctl_vmmrequest(gdev, session, data); + + if (hdr->type != VBG_IOCTL_HDR_TYPE_DEFAULT) +@@ -1558,6 +1559,7 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) + case VBG_IOCTL_HGCM_CALL(0): + return vbg_ioctl_hgcm_call(gdev, session, f32bit, data); + case VBG_IOCTL_LOG(0): ++ case VBG_IOCTL_LOG_ALT(0): + return vbg_ioctl_log(data); + } + +diff --git a/drivers/virt/vboxguest/vboxguest_core.h b/drivers/virt/vboxguest/vboxguest_core.h +index 4188c12b839f..77c3a9c8255d 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.h ++++ b/drivers/virt/vboxguest/vboxguest_core.h +@@ -15,6 +15,21 @@ + #include <linux/vboxguest.h> + #include "vmmdev.h" + ++/* ++ * The mainline kernel version (this version) of the vboxguest module ++ * contained a bug where it defined VBGL_IOCTL_VMMDEV_REQUEST_BIG and ++ * VBGL_IOCTL_LOG using _IOC(_IOC_READ | _IOC_WRITE, 'V', ...) instead ++ * of _IO(V, ...) as the out of tree VirtualBox upstream version does. ++ * ++ * These _ALT definitions keep compatibility with the wrong defines the ++ * mainline kernel version used for a while. ++ * Note the VirtualBox userspace bits have always been built against ++ * VirtualBox upstream's headers, so this is likely not necessary. But ++ * we must never break our ABI so we keep these around to be 100% sure. ++ */ ++#define VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT _IOC(_IOC_READ | _IOC_WRITE, 'V', 3, 0) ++#define VBG_IOCTL_LOG_ALT(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 9, s) ++ + struct vbg_session; + + /** VBox guest memory balloon. */ +diff --git a/drivers/virt/vboxguest/vboxguest_linux.c b/drivers/virt/vboxguest/vboxguest_linux.c +index 6e8c0f1c1056..32c2c52f7e84 100644 +--- a/drivers/virt/vboxguest/vboxguest_linux.c ++++ b/drivers/virt/vboxguest/vboxguest_linux.c +@@ -131,7 +131,8 @@ static long vbg_misc_device_ioctl(struct file *filp, unsigned int req, + * the need for a bounce-buffer and another copy later on. + */ + is_vmmdev_req = (req & ~IOCSIZE_MASK) == VBG_IOCTL_VMMDEV_REQUEST(0) || +- req == VBG_IOCTL_VMMDEV_REQUEST_BIG; ++ req == VBG_IOCTL_VMMDEV_REQUEST_BIG || ++ req == VBG_IOCTL_VMMDEV_REQUEST_BIG_ALT; + + if (is_vmmdev_req) + buf = vbg_req_alloc(size, VBG_IOCTL_HDR_TYPE_DEFAULT, +diff --git a/include/uapi/linux/vboxguest.h b/include/uapi/linux/vboxguest.h +index 9cec58a6a5ea..f79d7abe27db 100644 +--- a/include/uapi/linux/vboxguest.h ++++ b/include/uapi/linux/vboxguest.h +@@ -103,7 +103,7 @@ VMMDEV_ASSERT_SIZE(vbg_ioctl_driver_version_info, 24 + 20); + + + /* IOCTL to perform a VMM Device request larger then 1KB. */ +-#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IOC(_IOC_READ | _IOC_WRITE, 'V', 3, 0) ++#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IO('V', 3) + + + /** VBG_IOCTL_HGCM_CONNECT data structure. */ +@@ -198,7 +198,7 @@ struct vbg_ioctl_log { + } u; + }; + +-#define VBG_IOCTL_LOG(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 9, s) ++#define VBG_IOCTL_LOG(s) _IO('V', 9) + + + /** VBG_IOCTL_WAIT_FOR_EVENTS data structure. */ +-- +2.26.2 + diff --git a/0001-virt-vbox-Fix-guest-capabilities-mask-check.patch b/0001-virt-vbox-Fix-guest-capabilities-mask-check.patch new file mode 100644 index 000000000..77dbde8f5 --- /dev/null +++ b/0001-virt-vbox-Fix-guest-capabilities-mask-check.patch @@ -0,0 +1,47 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 13:23:06 +0200 +Subject: [PATCH] virt: vbox: Fix guest capabilities mask check + +Check the passed in capabilities against VMMDEV_GUEST_CAPABILITIES_MASK +instead of against VMMDEV_EVENT_VALID_EVENT_MASK. +This tightens the allowed mask from 0x7ff to 0x7. + +Fixes: 0ba002bc4393 ("virt: Add vboxguest driver for Virtual Box Guest integration") +Cc: stable@vger.kernel.org +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 2 +- + drivers/virt/vboxguest/vmmdev.h | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index 8fab04e76c14..18ebd7a6af98 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -1444,7 +1444,7 @@ static int vbg_ioctl_change_guest_capabilities(struct vbg_dev *gdev, + or_mask = caps->u.in.or_mask; + not_mask = caps->u.in.not_mask; + +- if ((or_mask | not_mask) & ~VMMDEV_EVENT_VALID_EVENT_MASK) ++ if ((or_mask | not_mask) & ~VMMDEV_GUEST_CAPABILITIES_MASK) + return -EINVAL; + + ret = vbg_set_session_capabilities(gdev, session, or_mask, not_mask, +diff --git a/drivers/virt/vboxguest/vmmdev.h b/drivers/virt/vboxguest/vmmdev.h +index 6337b8d75d96..21f408120e3f 100644 +--- a/drivers/virt/vboxguest/vmmdev.h ++++ b/drivers/virt/vboxguest/vmmdev.h +@@ -206,6 +206,8 @@ VMMDEV_ASSERT_SIZE(vmmdev_mask, 24 + 8); + * not. + */ + #define VMMDEV_GUEST_SUPPORTS_GRAPHICS BIT(2) ++/* The mask of valid capabilities, for sanity checking. */ ++#define VMMDEV_GUEST_CAPABILITIES_MASK 0x00000007U + + /** struct vmmdev_hypervisorinfo - Hypervisor info structure. */ + struct vmmdev_hypervisorinfo { +-- +2.26.2 + diff --git a/0001-virt-vbox-Log-unknown-ioctl-requests-as-error.patch b/0001-virt-vbox-Log-unknown-ioctl-requests-as-error.patch new file mode 100644 index 000000000..b9a90c4cd --- /dev/null +++ b/0001-virt-vbox-Log-unknown-ioctl-requests-as-error.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 11:24:43 +0200 +Subject: [PATCH] virt: vbox: Log unknown ioctl requests as error + +Every now and then upstream adds new ioctls without notifying us, +log unknown ioctl requests as an error to catch these. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index ffd76b949276..e0e343d0ba93 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -1739,7 +1739,7 @@ int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data) + return vbg_ioctl_log(data); + } + +- vbg_debug("VGDrvCommonIoCtl: Unknown req %#08x\n", req); ++ vbg_err("Userspace made an unknown ioctl req %#08x\n", req); + return -ENOTTY; + } + +-- +2.26.2 + diff --git a/0001-virt-vbox-Rename-guest_caps-struct-members-to-set_gu.patch b/0001-virt-vbox-Rename-guest_caps-struct-members-to-set_gu.patch new file mode 100644 index 000000000..e92eac034 --- /dev/null +++ b/0001-virt-vbox-Rename-guest_caps-struct-members-to-set_gu.patch @@ -0,0 +1,103 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 19 May 2020 14:33:13 +0200 +Subject: [PATCH] virt: vbox: Rename guest_caps struct members to + set_guest_caps + +Rename guest_caps[_tracker] struct members to set_guest_caps[_tracker] +this is a preparation patch for adding support for the +VBGL_IOCTL_GUEST_CAPS_ACQUIRE ioctl. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Upstream Status: https://lore.kernel.org/lkml/20200520195440.38759-1-hdegoede@redhat.com/ +--- + drivers/virt/vboxguest/vboxguest_core.c | 20 ++++++++++---------- + drivers/virt/vboxguest/vboxguest_core.h | 9 +++++---- + 2 files changed, 15 insertions(+), 14 deletions(-) + +diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c +index 18ebd7a6af98..aee5eff229f2 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.c ++++ b/drivers/virt/vboxguest/vboxguest_core.c +@@ -699,17 +699,17 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + mutex_lock(&gdev->session_mutex); + + /* Apply the changes to the session mask. */ +- previous = session->guest_caps; +- session->guest_caps |= or_mask; +- session->guest_caps &= ~not_mask; ++ previous = session->set_guest_caps; ++ session->set_guest_caps |= or_mask; ++ session->set_guest_caps &= ~not_mask; + + /* If anything actually changed, update the global usage counters. */ +- changed = previous ^ session->guest_caps; ++ changed = previous ^ session->set_guest_caps; + if (!changed) + goto out; + +- vbg_track_bit_usage(&gdev->guest_caps_tracker, changed, previous); +- or_mask = gdev->guest_caps_tracker.mask; ++ vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, previous); ++ or_mask = gdev->set_guest_caps_tracker.mask; + + if (gdev->guest_caps_host == or_mask || !req) + goto out; +@@ -726,9 +726,9 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, + if (session_termination) + goto out; + +- vbg_track_bit_usage(&gdev->guest_caps_tracker, changed, +- session->guest_caps); +- session->guest_caps = previous; ++ vbg_track_bit_usage(&gdev->set_guest_caps_tracker, changed, ++ session->set_guest_caps); ++ session->set_guest_caps = previous; + } + + out: +@@ -1452,7 +1452,7 @@ static int vbg_ioctl_change_guest_capabilities(struct vbg_dev *gdev, + if (ret) + return ret; + +- caps->u.out.session_caps = session->guest_caps; ++ caps->u.out.session_caps = session->set_guest_caps; + caps->u.out.global_caps = gdev->guest_caps_host; + + return 0; +diff --git a/drivers/virt/vboxguest/vboxguest_core.h b/drivers/virt/vboxguest/vboxguest_core.h +index 77c3a9c8255d..dc745a033164 100644 +--- a/drivers/virt/vboxguest/vboxguest_core.h ++++ b/drivers/virt/vboxguest/vboxguest_core.h +@@ -118,11 +118,12 @@ struct vbg_dev { + u32 event_filter_host; + + /** +- * Usage counters for guest capabilities. Indexed by capability bit ++ * Usage counters for guest capabilities requested through ++ * vbg_set_session_capabilities(). Indexed by capability bit + * number, one count per session using a capability. + * Protected by session_mutex. + */ +- struct vbg_bit_usage_tracker guest_caps_tracker; ++ struct vbg_bit_usage_tracker set_guest_caps_tracker; + /** + * The guest capabilities last reported to the host (or UINT32_MAX). + * Protected by session_mutex. +@@ -164,11 +165,11 @@ struct vbg_session { + */ + u32 event_filter; + /** +- * Guest capabilities for this session. ++ * Guest capabilities set through vbg_set_session_capabilities(). + * A capability claimed by any guest session will be reported to the + * host. Protected by vbg_gdev.session_mutex. + */ +- u32 guest_caps; ++ u32 set_guest_caps; + /** VMMDEV_REQUESTOR_* flags */ + u32 requestor; + /** Set on CANCEL_ALL_WAITEVENTS, protected by vbg_devevent_spinlock. */ +-- +2.26.2 + diff --git a/0001-xfs-add-agf-freeblocks-verify-in-xfs_agf_verify.patch b/0001-xfs-add-agf-freeblocks-verify-in-xfs_agf_verify.patch deleted file mode 100644 index 8409a1f30..000000000 --- a/0001-xfs-add-agf-freeblocks-verify-in-xfs_agf_verify.patch +++ /dev/null @@ -1,107 +0,0 @@ -From d0c7feaf87678371c2c09b3709400be416b2dc62 Mon Sep 17 00:00:00 2001 -From: Zheng Bin <zhengbin13@huawei.com> -Date: Fri, 21 Feb 2020 07:38:20 -0800 -Subject: [PATCH] xfs: add agf freeblocks verify in xfs_agf_verify - -We recently used fuzz(hydra) to test XFS and automatically generate -tmp.img(XFS v5 format, but some metadata is wrong) - -xfs_repair information(just one AG): -agf_freeblks 0, counted 3224 in ag 0 -agf_longest 536874136, counted 3224 in ag 0 -sb_fdblocks 613, counted 3228 - -Test as follows: -mount tmp.img tmpdir -cp file1M tmpdir -sync - -In 4.19-stable, sync will stuck, the reason is: -xfs_mountfs - xfs_check_summary_counts - if ((!xfs_sb_version_haslazysbcount(&mp->m_sb) || - XFS_LAST_UNMOUNT_WAS_CLEAN(mp)) && - !xfs_fs_has_sickness(mp, XFS_SICK_FS_COUNTERS)) - return 0; -->just return, incore sb_fdblocks still be 613 - xfs_initialize_perag_data - -cp file1M tmpdir -->ok(write file to pagecache) -sync -->stuck(write pagecache to disk) -xfs_map_blocks - xfs_iomap_write_allocate - while (count_fsb != 0) { - nimaps = 0; - while (nimaps == 0) { --> endless loop - nimaps = 1; - xfs_bmapi_write(..., &nimaps) --> nimaps becomes 0 again -xfs_bmapi_write - xfs_bmap_alloc - xfs_bmap_btalloc - xfs_alloc_vextent - xfs_alloc_fix_freelist - xfs_alloc_space_available -->fail(agf_freeblks is 0) - -In linux-next, sync not stuck, cause commit c2b3164320b5 ("xfs: -use the latest extent at writeback delalloc conversion time") remove -the above while, dmesg is as follows: -[ 55.250114] XFS (loop0): page discard on page ffffea0008bc7380, inode 0x1b0c, offset 0. - -Users do not know why this page is discard, the better soultion is: -1. Like xfs_repair, make sure sb_fdblocks is equal to counted -(xfs_initialize_perag_data did this, who is not called at this mount) -2. Add agf verify, if fail, will tell users to repair - -This patch use the second soultion. - -Signed-off-by: Zheng Bin <zhengbin13@huawei.com> -Signed-off-by: Ren Xudong <renxudong1@huawei.com> -Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> -Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> ---- - fs/xfs/libxfs/xfs_alloc.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c -index d8053bc96c4d..183dc2587092 100644 ---- a/fs/xfs/libxfs/xfs_alloc.c -+++ b/fs/xfs/libxfs/xfs_alloc.c -@@ -2858,6 +2858,13 @@ xfs_agf_verify( - be32_to_cpu(agf->agf_flcount) <= xfs_agfl_size(mp))) - return __this_address; - -+ if (be32_to_cpu(agf->agf_length) > mp->m_sb.sb_dblocks) -+ return __this_address; -+ -+ if (be32_to_cpu(agf->agf_freeblks) < be32_to_cpu(agf->agf_longest) || -+ be32_to_cpu(agf->agf_freeblks) > be32_to_cpu(agf->agf_length)) -+ return __this_address; -+ - if (be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]) < 1 || - be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]) < 1 || - be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]) > XFS_BTREE_MAXLEVELS || -@@ -2869,6 +2876,10 @@ xfs_agf_verify( - be32_to_cpu(agf->agf_levels[XFS_BTNUM_RMAP]) > XFS_BTREE_MAXLEVELS)) - return __this_address; - -+ if (xfs_sb_version_hasrmapbt(&mp->m_sb) && -+ be32_to_cpu(agf->agf_rmap_blocks) > be32_to_cpu(agf->agf_length)) -+ return __this_address; -+ - /* - * during growfs operations, the perag is not fully initialised, - * so we can't use it for any useful checking. growfs ensures we can't -@@ -2882,6 +2893,11 @@ xfs_agf_verify( - be32_to_cpu(agf->agf_btreeblks) > be32_to_cpu(agf->agf_length)) - return __this_address; - -+ if (xfs_sb_version_hasreflink(&mp->m_sb) && -+ be32_to_cpu(agf->agf_refcount_blocks) > -+ be32_to_cpu(agf->agf_length)) -+ return __this_address; -+ - if (xfs_sb_version_hasreflink(&mp->m_sb) && - (be32_to_cpu(agf->agf_refcount_level) < 1 || - be32_to_cpu(agf->agf_refcount_level) > XFS_BTREE_MAXLEVELS)) --- -2.26.2 - diff --git a/0002-dt-bindings-panel-Convert-rocktech-jh057n00900-to-ya.patch b/0002-dt-bindings-panel-Convert-rocktech-jh057n00900-to-ya.patch new file mode 100644 index 000000000..0d05e02e0 --- /dev/null +++ b/0002-dt-bindings-panel-Convert-rocktech-jh057n00900-to-ya.patch @@ -0,0 +1,120 @@ +From 789d3f52a1cf675ba68c3578fe2b259bc44caba2 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:50 +0200 +Subject: [PATCH 02/13] dt-bindings: panel: Convert rocktech, jh057n00900 to + yaml + +Convert Rocktech MIPI DSI panel driver from txt to yaml bindings. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + .../display/panel/rocktech,jh057n00900.txt | 23 ------- + .../display/panel/rocktech,jh057n00900.yaml | 66 +++++++++++++++++++ + 2 files changed, 66 insertions(+), 23 deletions(-) + delete mode 100644 Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt + create mode 100644 Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml + +diff --git a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt +deleted file mode 100644 +index a372c5d846956..0000000000000 +--- a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt ++++ /dev/null +@@ -1,23 +0,0 @@ +-Rocktech jh057n00900 5.5" 720x1440 TFT LCD panel +- +-Required properties: +-- compatible: should be "rocktech,jh057n00900" +-- reg: DSI virtual channel of the peripheral +-- reset-gpios: panel reset gpio +-- backlight: phandle of the backlight device attached to the panel +-- vcc-supply: phandle of the regulator that provides the vcc supply voltage. +-- iovcc-supply: phandle of the regulator that provides the iovcc supply +- voltage. +- +-Example: +- +- &mipi_dsi { +- panel@0 { +- compatible = "rocktech,jh057n00900"; +- reg = <0>; +- backlight = <&backlight>; +- reset-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>; +- vcc-supply = <®_2v8_p>; +- iovcc-supply = <®_1v8_p>; +- }; +- }; +diff --git a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml +new file mode 100644 +index 0000000000000..f97c48550741c +--- /dev/null ++++ b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml +@@ -0,0 +1,66 @@ ++# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) ++%YAML 1.2 ++--- ++$id: http://devicetree.org/schemas/display/panel/rocktech,jh057n00900.yaml# ++$schema: http://devicetree.org/meta-schemas/core.yaml# ++ ++title: Rocktech JH057N00900 5.5" 720x1440 TFT LCD panel ++ ++maintainers: ++ - Ondrej Jirman <megi@xff.cz> ++ ++description: | ++ Rocktech JH057N00900 is a 720x1440 TFT LCD panel ++ connected using a MIPI-DSI video interface. ++ ++allOf: ++ - $ref: panel-common.yaml# ++ ++properties: ++ compatible: ++ const: rocktech,jh057n00900 ++ ++ reg: ++ maxItems: 1 ++ description: DSI virtual channel ++ ++ vcc-supply: ++ description: Panel power supply ++ ++ vccio-supply: ++ description: I/O voltage supply ++ ++ reset-gpios: ++ description: GPIO used for the reset pin ++ maxItems: 1 ++ ++ backlight: ++ description: Backlight used by the panel ++ $ref: "/schemas/types.yaml#/definitions/phandle" ++ ++required: ++ - compatible ++ - reg ++ - vcc-supply ++ - vccio-supply ++ - reset-gpios ++ ++additionalProperties: false ++ ++examples: ++ - | ++ #include <dt-bindings/gpio/gpio.h> ++ ++ dsi { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ panel@0 { ++ compatible = "rocktech,jh057n00900"; ++ reg = <0>; ++ vcc-supply = <®_2v8_p>; ++ iovcc-supply = <®_1v8_p>; ++ reset-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>; ++ backlight = <&backlight>; ++ }; ++ }; ++... +-- +2.26.2 + diff --git a/0003-dt-bindings-panel-Add-compatible-for-Xingbangda-XBD5.patch b/0003-dt-bindings-panel-Add-compatible-for-Xingbangda-XBD5.patch new file mode 100644 index 000000000..a7099de05 --- /dev/null +++ b/0003-dt-bindings-panel-Add-compatible-for-Xingbangda-XBD5.patch @@ -0,0 +1,37 @@ +From 12146093602e0dedb7ee431224fc4a58d40697f8 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:51 +0200 +Subject: [PATCH 03/13] dt-bindings: panel: Add compatible for Xingbangda + XBD599 panel + +Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI LCD panel. It is based on +Sitronix ST7703 LCD controller just like rocktech,jh057n00900. It is +used in PinePhone. + +Add a compatible for it. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + .../bindings/display/panel/rocktech,jh057n00900.yaml | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml +index f97c48550741c..4d43a1b36d7c7 100644 +--- a/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml ++++ b/Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml +@@ -18,7 +18,11 @@ allOf: + + properties: + compatible: +- const: rocktech,jh057n00900 ++ enum: ++ # Rocktech JH057N00900 5.5" 720x1440 TFT LCD panel ++ - rocktech,jh057n00900 ++ # Xingbangda XBD599 5.99" 720x1440 TFT LCD panel ++ - xingbangda,xbd599 + + reg: + maxItems: 1 +-- +2.26.2 + diff --git a/0004-drm-panel-rocktech-jh057n00900-Rename-the-driver-to-.patch b/0004-drm-panel-rocktech-jh057n00900-Rename-the-driver-to-.patch new file mode 100644 index 000000000..c4c947641 --- /dev/null +++ b/0004-drm-panel-rocktech-jh057n00900-Rename-the-driver-to-.patch @@ -0,0 +1,91 @@ +From e82044df3332199c63904d86b4b1ad0963a6f8e0 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:52 +0200 +Subject: [PATCH 04/13] drm/panel: rocktech-jh057n00900: Rename the driver to + st7703 + +This rename is done so that the driver matches the name of the +display controller and in preparation for adding support for more +panels to the driver. + +This is just a basic file rename, with no code changes. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/Kconfig | 26 +++++++++---------- + drivers/gpu/drm/panel/Makefile | 2 +- + ...-jh057n00900.c => panel-sitronix-st7703.c} | 0 + 3 files changed, 14 insertions(+), 14 deletions(-) + rename drivers/gpu/drm/panel/{panel-rocktech-jh057n00900.c => panel-sitronix-st7703.c} (100%) + +diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig +index a1723c1b5fbf8..7cf1f160fdd51 100644 +--- a/drivers/gpu/drm/panel/Kconfig ++++ b/drivers/gpu/drm/panel/Kconfig +@@ -262,19 +262,6 @@ config DRM_PANEL_RAYDIUM_RM68200 + Say Y here if you want to enable support for Raydium RM68200 + 720x1280 DSI video mode panel. + +-config DRM_PANEL_ROCKTECH_JH057N00900 +- tristate "Rocktech JH057N00900 MIPI touchscreen panel" +- depends on OF +- depends on DRM_MIPI_DSI +- depends on BACKLIGHT_CLASS_DEVICE +- help +- Say Y here if you want to enable support for Rocktech JH057N00900 +- MIPI DSI panel as e.g. used in the Librem 5 devkit. It has a +- resolution of 720x1440 pixels, a built in backlight and touch +- controller. +- Touch input support is provided by the goodix driver and needs to be +- selected separately. +- + config DRM_PANEL_RONBO_RB070D30 + tristate "Ronbo Electronics RB070D30 panel" + depends on OF +@@ -374,6 +361,19 @@ config DRM_PANEL_SITRONIX_ST7701 + ST7701 controller for 480X864 LCD panels with MIPI/RGB/SPI + system interfaces. + ++config DRM_PANEL_SITRONIX_ST7703 ++ tristate "Sitronix ST7703 based MIPI touchscreen panels" ++ depends on OF ++ depends on DRM_MIPI_DSI ++ depends on BACKLIGHT_CLASS_DEVICE ++ help ++ Say Y here if you want to enable support for Sitronix ST7703 based ++ panels, souch as Rocktech JH057N00900 MIPI DSI panel as e.g. used in ++ the Librem 5 devkit. It has a resolution of 720x1440 pixels, a built ++ in backlight and touch controller. ++ Touch input support is provided by the goodix driver and needs to be ++ selected separately. ++ + config DRM_PANEL_SITRONIX_ST7789V + tristate "Sitronix ST7789V panel" + depends on OF && SPI +diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile +index 96a883cd66305..0519fdf0710d5 100644 +--- a/drivers/gpu/drm/panel/Makefile ++++ b/drivers/gpu/drm/panel/Makefile +@@ -25,7 +25,6 @@ obj-$(CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00) += panel-panasonic-vvx10f034n00.o + obj-$(CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN) += panel-raspberrypi-touchscreen.o + obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM67191) += panel-raydium-rm67191.o + obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM68200) += panel-raydium-rm68200.o +-obj-$(CONFIG_DRM_PANEL_ROCKTECH_JH057N00900) += panel-rocktech-jh057n00900.o + obj-$(CONFIG_DRM_PANEL_RONBO_RB070D30) += panel-ronbo-rb070d30.o + obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o + obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6D16D0) += panel-samsung-s6d16d0.o +@@ -39,6 +38,7 @@ obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o + obj-$(CONFIG_DRM_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o + obj-$(CONFIG_DRM_PANEL_SHARP_LS043T1LE01) += panel-sharp-ls043t1le01.o + obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7701) += panel-sitronix-st7701.o ++obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7703) += panel-sitronix-st7703.o + obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7789V) += panel-sitronix-st7789v.o + obj-$(CONFIG_DRM_PANEL_SONY_ACX424AKP) += panel-sony-acx424akp.o + obj-$(CONFIG_DRM_PANEL_SONY_ACX565AKM) += panel-sony-acx565akm.o +diff --git a/drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +similarity index 100% +rename from drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c +rename to drivers/gpu/drm/panel/panel-sitronix-st7703.c +-- +2.26.2 + diff --git a/0005-drm-panel-st7703-Rename-functions-from-jh057n-prefix.patch b/0005-drm-panel-st7703-Rename-functions-from-jh057n-prefix.patch new file mode 100644 index 000000000..5432e1bba --- /dev/null +++ b/0005-drm-panel-st7703-Rename-functions-from-jh057n-prefix.patch @@ -0,0 +1,265 @@ +From 6fad8493b27ade51f37d88acc7ce6fd7dbc9da69 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:53 +0200 +Subject: [PATCH 05/13] drm/panel: st7703: Rename functions from jh057n prefix + to st7703 + +This is done so that code that's not specific to a particular +jh057n panel is named after the controller. Functions specific +to the panel are kept named after the panel. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 90 ++++++++++--------- + 1 file changed, 46 insertions(+), 44 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index 38ff742bc1209..511af659f273b 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -1,6 +1,8 @@ + // SPDX-License-Identifier: GPL-2.0 + /* +- * Rockteck jh057n00900 5.5" MIPI-DSI panel driver ++ * Driver for panels based on Sitronix ST7703 controller, souch as: ++ * ++ * - Rocktech jh057n00900 5.5" MIPI-DSI panel + * + * Copyright (C) Purism SPC 2019 + */ +@@ -21,7 +23,7 @@ + #include <drm/drm_panel.h> + #include <drm/drm_print.h> + +-#define DRV_NAME "panel-rocktech-jh057n00900" ++#define DRV_NAME "panel-sitronix-st7703" + + /* Manufacturer specific Commands send via DSI */ + #define ST7703_CMD_ALL_PIXEL_OFF 0x22 +@@ -45,7 +47,7 @@ + #define ST7703_CMD_SETGIP1 0xE9 + #define ST7703_CMD_SETGIP2 0xEA + +-struct jh057n { ++struct st7703 { + struct device *dev; + struct drm_panel panel; + struct gpio_desc *reset_gpio; +@@ -56,9 +58,9 @@ struct jh057n { + struct dentry *debugfs; + }; + +-static inline struct jh057n *panel_to_jh057n(struct drm_panel *panel) ++static inline struct st7703 *panel_to_st7703(struct drm_panel *panel) + { +- return container_of(panel, struct jh057n, panel); ++ return container_of(panel, struct st7703, panel); + } + + #define dsi_generic_write_seq(dsi, seq...) do { \ +@@ -69,7 +71,7 @@ static inline struct jh057n *panel_to_jh057n(struct drm_panel *panel) + return ret; \ + } while (0) + +-static int jh057n_init_sequence(struct jh057n *ctx) ++static int jh057n_init_sequence(struct st7703 *ctx) + { + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + struct device *dev = ctx->dev; +@@ -141,9 +143,9 @@ static int jh057n_init_sequence(struct jh057n *ctx) + return 0; + } + +-static int jh057n_enable(struct drm_panel *panel) ++static int st7703_enable(struct drm_panel *panel) + { +- struct jh057n *ctx = panel_to_jh057n(panel); ++ struct st7703 *ctx = panel_to_st7703(panel); + int ret; + + ret = jh057n_init_sequence(ctx); +@@ -156,17 +158,17 @@ static int jh057n_enable(struct drm_panel *panel) + return 0; + } + +-static int jh057n_disable(struct drm_panel *panel) ++static int st7703_disable(struct drm_panel *panel) + { +- struct jh057n *ctx = panel_to_jh057n(panel); ++ struct st7703 *ctx = panel_to_st7703(panel); + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + + return mipi_dsi_dcs_set_display_off(dsi); + } + +-static int jh057n_unprepare(struct drm_panel *panel) ++static int st7703_unprepare(struct drm_panel *panel) + { +- struct jh057n *ctx = panel_to_jh057n(panel); ++ struct st7703 *ctx = panel_to_st7703(panel); + + if (!ctx->prepared) + return 0; +@@ -178,9 +180,9 @@ static int jh057n_unprepare(struct drm_panel *panel) + return 0; + } + +-static int jh057n_prepare(struct drm_panel *panel) ++static int st7703_prepare(struct drm_panel *panel) + { +- struct jh057n *ctx = panel_to_jh057n(panel); ++ struct st7703 *ctx = panel_to_st7703(panel); + int ret; + + if (ctx->prepared) +@@ -230,10 +232,10 @@ static const struct drm_display_mode default_mode = { + .height_mm = 130, + }; + +-static int jh057n_get_modes(struct drm_panel *panel, ++static int st7703_get_modes(struct drm_panel *panel, + struct drm_connector *connector) + { +- struct jh057n *ctx = panel_to_jh057n(panel); ++ struct st7703 *ctx = panel_to_st7703(panel); + struct drm_display_mode *mode; + + mode = drm_mode_duplicate(connector->dev, &default_mode); +@@ -254,17 +256,17 @@ static int jh057n_get_modes(struct drm_panel *panel, + return 1; + } + +-static const struct drm_panel_funcs jh057n_drm_funcs = { +- .disable = jh057n_disable, +- .unprepare = jh057n_unprepare, +- .prepare = jh057n_prepare, +- .enable = jh057n_enable, +- .get_modes = jh057n_get_modes, ++static const struct drm_panel_funcs st7703_drm_funcs = { ++ .disable = st7703_disable, ++ .unprepare = st7703_unprepare, ++ .prepare = st7703_prepare, ++ .enable = st7703_enable, ++ .get_modes = st7703_get_modes, + }; + + static int allpixelson_set(void *data, u64 val) + { +- struct jh057n *ctx = data; ++ struct st7703 *ctx = data; + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + + DRM_DEV_DEBUG_DRIVER(ctx->dev, "Setting all pixels on\n"); +@@ -282,7 +284,7 @@ static int allpixelson_set(void *data, u64 val) + DEFINE_SIMPLE_ATTRIBUTE(allpixelson_fops, NULL, + allpixelson_set, "%llu\n"); + +-static void jh057n_debugfs_init(struct jh057n *ctx) ++static void st7703_debugfs_init(struct st7703 *ctx) + { + ctx->debugfs = debugfs_create_dir(DRV_NAME, NULL); + +@@ -290,16 +292,16 @@ static void jh057n_debugfs_init(struct jh057n *ctx) + &allpixelson_fops); + } + +-static void jh057n_debugfs_remove(struct jh057n *ctx) ++static void st7703_debugfs_remove(struct st7703 *ctx) + { + debugfs_remove_recursive(ctx->debugfs); + ctx->debugfs = NULL; + } + +-static int jh057n_probe(struct mipi_dsi_device *dsi) ++static int st7703_probe(struct mipi_dsi_device *dsi) + { + struct device *dev = &dsi->dev; +- struct jh057n *ctx; ++ struct st7703 *ctx; + int ret; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); +@@ -340,7 +342,7 @@ static int jh057n_probe(struct mipi_dsi_device *dsi) + return ret; + } + +- drm_panel_init(&ctx->panel, dev, &jh057n_drm_funcs, ++ drm_panel_init(&ctx->panel, dev, &st7703_drm_funcs, + DRM_MODE_CONNECTOR_DSI); + + ret = drm_panel_of_backlight(&ctx->panel); +@@ -363,13 +365,13 @@ static int jh057n_probe(struct mipi_dsi_device *dsi) + default_mode.vrefresh, + mipi_dsi_pixel_format_to_bpp(dsi->format), dsi->lanes); + +- jh057n_debugfs_init(ctx); ++ st7703_debugfs_init(ctx); + return 0; + } + +-static void jh057n_shutdown(struct mipi_dsi_device *dsi) ++static void st7703_shutdown(struct mipi_dsi_device *dsi) + { +- struct jh057n *ctx = mipi_dsi_get_drvdata(dsi); ++ struct st7703 *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + + ret = drm_panel_unprepare(&ctx->panel); +@@ -383,12 +385,12 @@ static void jh057n_shutdown(struct mipi_dsi_device *dsi) + ret); + } + +-static int jh057n_remove(struct mipi_dsi_device *dsi) ++static int st7703_remove(struct mipi_dsi_device *dsi) + { +- struct jh057n *ctx = mipi_dsi_get_drvdata(dsi); ++ struct st7703 *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + +- jh057n_shutdown(dsi); ++ st7703_shutdown(dsi); + + ret = mipi_dsi_detach(dsi); + if (ret < 0) +@@ -397,28 +399,28 @@ static int jh057n_remove(struct mipi_dsi_device *dsi) + + drm_panel_remove(&ctx->panel); + +- jh057n_debugfs_remove(ctx); ++ st7703_debugfs_remove(ctx); + + return 0; + } + +-static const struct of_device_id jh057n_of_match[] = { ++static const struct of_device_id st7703_of_match[] = { + { .compatible = "rocktech,jh057n00900" }, + { /* sentinel */ } + }; +-MODULE_DEVICE_TABLE(of, jh057n_of_match); ++MODULE_DEVICE_TABLE(of, st7703_of_match); + +-static struct mipi_dsi_driver jh057n_driver = { +- .probe = jh057n_probe, +- .remove = jh057n_remove, +- .shutdown = jh057n_shutdown, ++static struct mipi_dsi_driver st7703_driver = { ++ .probe = st7703_probe, ++ .remove = st7703_remove, ++ .shutdown = st7703_shutdown, + .driver = { + .name = DRV_NAME, +- .of_match_table = jh057n_of_match, ++ .of_match_table = st7703_of_match, + }, + }; +-module_mipi_dsi_driver(jh057n_driver); ++module_mipi_dsi_driver(st7703_driver); + + MODULE_AUTHOR("Guido Günther <agx@sigxcpu.org>"); +-MODULE_DESCRIPTION("DRM driver for Rocktech JH057N00900 MIPI DSI panel"); ++MODULE_DESCRIPTION("DRM driver for Sitronix ST7703 based MIPI DSI panels"); + MODULE_LICENSE("GPL v2"); +-- +2.26.2 + diff --git a/0006-drm-panel-st7703-Prepare-for-supporting-multiple-pan.patch b/0006-drm-panel-st7703-Prepare-for-supporting-multiple-pan.patch new file mode 100644 index 000000000..8436ea3cb --- /dev/null +++ b/0006-drm-panel-st7703-Prepare-for-supporting-multiple-pan.patch @@ -0,0 +1,129 @@ +From 19802e031428f7cf967259fdf8794a971164a44a Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:54 +0200 +Subject: [PATCH 06/13] drm/panel: st7703: Prepare for supporting multiple + panels + +Parametrize the driver so that it can support more panels based +on st7703 controller. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 43 +++++++++++++------ + 1 file changed, 31 insertions(+), 12 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index 511af659f273b..08cbc316266c1 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -13,6 +13,7 @@ + #include <linux/media-bus-format.h> + #include <linux/mod_devicetable.h> + #include <linux/module.h> ++#include <linux/of_device.h> + #include <linux/regulator/consumer.h> + + #include <video/display_timing.h> +@@ -56,6 +57,15 @@ struct st7703 { + bool prepared; + + struct dentry *debugfs; ++ const struct st7703_panel_desc *desc; ++}; ++ ++struct st7703_panel_desc { ++ const struct drm_display_mode *mode; ++ unsigned int lanes; ++ unsigned long mode_flags; ++ enum mipi_dsi_pixel_format format; ++ int (*init_sequence)(struct st7703 *ctx); + }; + + static inline struct st7703 *panel_to_st7703(struct drm_panel *panel) +@@ -148,7 +158,7 @@ static int st7703_enable(struct drm_panel *panel) + struct st7703 *ctx = panel_to_st7703(panel); + int ret; + +- ret = jh057n_init_sequence(ctx); ++ ret = ctx->desc->init_sequence(ctx); + if (ret < 0) { + DRM_DEV_ERROR(ctx->dev, "Panel init sequence failed: %d\n", + ret); +@@ -216,7 +226,7 @@ static int st7703_prepare(struct drm_panel *panel) + return ret; + } + +-static const struct drm_display_mode default_mode = { ++static const struct drm_display_mode jh057n00900_mode = { + .hdisplay = 720, + .hsync_start = 720 + 90, + .hsync_end = 720 + 90 + 20, +@@ -232,17 +242,26 @@ static const struct drm_display_mode default_mode = { + .height_mm = 130, + }; + ++struct st7703_panel_desc jh057n00900_panel_desc = { ++ .mode = &jh057n00900_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | ++ MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_VIDEO_SYNC_PULSE, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = jh057n_init_sequence, ++}; ++ + static int st7703_get_modes(struct drm_panel *panel, + struct drm_connector *connector) + { + struct st7703 *ctx = panel_to_st7703(panel); + struct drm_display_mode *mode; + +- mode = drm_mode_duplicate(connector->dev, &default_mode); ++ mode = drm_mode_duplicate(connector->dev, ctx->desc->mode); + if (!mode) { + DRM_DEV_ERROR(ctx->dev, "Failed to add mode %ux%u@%u\n", +- default_mode.hdisplay, default_mode.vdisplay, +- default_mode.vrefresh); ++ ctx->desc->mode->hdisplay, ctx->desc->mode->vdisplay, ++ ctx->desc->mode->vrefresh); + return -ENOMEM; + } + +@@ -317,11 +336,11 @@ static int st7703_probe(struct mipi_dsi_device *dsi) + mipi_dsi_set_drvdata(dsi, ctx); + + ctx->dev = dev; ++ ctx->desc = of_device_get_match_data(dev); + +- dsi->lanes = 4; +- dsi->format = MIPI_DSI_FMT_RGB888; +- dsi->mode_flags = MIPI_DSI_MODE_VIDEO | +- MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_VIDEO_SYNC_PULSE; ++ dsi->mode_flags = ctx->desc->mode_flags; ++ dsi->format = ctx->desc->format; ++ dsi->lanes = ctx->desc->lanes; + + ctx->vcc = devm_regulator_get(dev, "vcc"); + if (IS_ERR(ctx->vcc)) { +@@ -361,8 +380,8 @@ static int st7703_probe(struct mipi_dsi_device *dsi) + } + + DRM_DEV_INFO(dev, "%ux%u@%u %ubpp dsi %udl - ready\n", +- default_mode.hdisplay, default_mode.vdisplay, +- default_mode.vrefresh, ++ ctx->desc->mode->hdisplay, ctx->desc->mode->vdisplay, ++ ctx->desc->mode->vrefresh, + mipi_dsi_pixel_format_to_bpp(dsi->format), dsi->lanes); + + st7703_debugfs_init(ctx); +@@ -405,7 +424,7 @@ static int st7703_remove(struct mipi_dsi_device *dsi) + } + + static const struct of_device_id st7703_of_match[] = { +- { .compatible = "rocktech,jh057n00900" }, ++ { .compatible = "rocktech,jh057n00900", .data = &jh057n00900_panel_desc }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, st7703_of_match); +-- +2.26.2 + diff --git a/0007-drm-panel-st7703-Move-code-specific-to-jh057n-closer.patch b/0007-drm-panel-st7703-Move-code-specific-to-jh057n-closer.patch new file mode 100644 index 000000000..fcdf0482d --- /dev/null +++ b/0007-drm-panel-st7703-Move-code-specific-to-jh057n-closer.patch @@ -0,0 +1,84 @@ +From b93e129534a0556a03a343f95e622ae9c3893854 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:55 +0200 +Subject: [PATCH 07/13] drm/panel: st7703: Move code specific to jh057n closer + together + +It's better than having it spread around the driver. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 50 +++++++++---------- + 1 file changed, 25 insertions(+), 25 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index 08cbc316266c1..d03aab10cfef1 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -153,6 +153,31 @@ static int jh057n_init_sequence(struct st7703 *ctx) + return 0; + } + ++static const struct drm_display_mode jh057n00900_mode = { ++ .hdisplay = 720, ++ .hsync_start = 720 + 90, ++ .hsync_end = 720 + 90 + 20, ++ .htotal = 720 + 90 + 20 + 20, ++ .vdisplay = 1440, ++ .vsync_start = 1440 + 20, ++ .vsync_end = 1440 + 20 + 4, ++ .vtotal = 1440 + 20 + 4 + 12, ++ .vrefresh = 60, ++ .clock = 75276, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ .width_mm = 65, ++ .height_mm = 130, ++}; ++ ++struct st7703_panel_desc jh057n00900_panel_desc = { ++ .mode = &jh057n00900_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | ++ MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_VIDEO_SYNC_PULSE, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = jh057n_init_sequence, ++}; ++ + static int st7703_enable(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); +@@ -226,31 +251,6 @@ static int st7703_prepare(struct drm_panel *panel) + return ret; + } + +-static const struct drm_display_mode jh057n00900_mode = { +- .hdisplay = 720, +- .hsync_start = 720 + 90, +- .hsync_end = 720 + 90 + 20, +- .htotal = 720 + 90 + 20 + 20, +- .vdisplay = 1440, +- .vsync_start = 1440 + 20, +- .vsync_end = 1440 + 20 + 4, +- .vtotal = 1440 + 20 + 4 + 12, +- .vrefresh = 60, +- .clock = 75276, +- .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, +- .width_mm = 65, +- .height_mm = 130, +-}; +- +-struct st7703_panel_desc jh057n00900_panel_desc = { +- .mode = &jh057n00900_mode, +- .lanes = 4, +- .mode_flags = MIPI_DSI_MODE_VIDEO | +- MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_VIDEO_SYNC_PULSE, +- .format = MIPI_DSI_FMT_RGB888, +- .init_sequence = jh057n_init_sequence, +-}; +- + static int st7703_get_modes(struct drm_panel *panel, + struct drm_connector *connector) + { +-- +2.26.2 + diff --git a/0008-drm-panel-st7703-Move-generic-part-of-init-sequence-.patch b/0008-drm-panel-st7703-Move-generic-part-of-init-sequence-.patch new file mode 100644 index 000000000..bae442451 --- /dev/null +++ b/0008-drm-panel-st7703-Move-generic-part-of-init-sequence-.patch @@ -0,0 +1,84 @@ +From 5e9a6f49f8056963a4b8d2408f0c0f211cdab799 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:56 +0200 +Subject: [PATCH 08/13] drm/panel: st7703: Move generic part of init sequence + to enable callback + +Calling sleep out and display on is a controller specific part +of the initialization process. Move it out of the panel specific +initialization function to the enable callback. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 33 ++++++++++--------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index d03aab10cfef1..cdbf7dfb4dd48 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -84,8 +84,6 @@ static inline struct st7703 *panel_to_st7703(struct drm_panel *panel) + static int jh057n_init_sequence(struct st7703 *ctx) + { + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); +- struct device *dev = ctx->dev; +- int ret; + + /* + * Init sequence was supplied by the panel vendor. Most of the commands +@@ -136,20 +134,7 @@ static int jh057n_init_sequence(struct st7703 *ctx) + 0x18, 0x00, 0x09, 0x0E, 0x29, 0x2D, 0x3C, 0x41, + 0x37, 0x07, 0x0B, 0x0D, 0x10, 0x11, 0x0F, 0x10, + 0x11, 0x18); +- msleep(20); +- +- ret = mipi_dsi_dcs_exit_sleep_mode(dsi); +- if (ret < 0) { +- DRM_DEV_ERROR(dev, "Failed to exit sleep mode: %d\n", ret); +- return ret; +- } +- /* Panel is operational 120 msec after reset */ +- msleep(60); +- ret = mipi_dsi_dcs_set_display_on(dsi); +- if (ret) +- return ret; + +- DRM_DEV_DEBUG_DRIVER(dev, "Panel init sequence done\n"); + return 0; + } + +@@ -181,6 +166,7 @@ struct st7703_panel_desc jh057n00900_panel_desc = { + static int st7703_enable(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); ++ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); + int ret; + + ret = ctx->desc->init_sequence(ctx); +@@ -190,6 +176,23 @@ static int st7703_enable(struct drm_panel *panel) + return ret; + } + ++ msleep(20); ++ ++ ret = mipi_dsi_dcs_exit_sleep_mode(dsi); ++ if (ret < 0) { ++ DRM_DEV_ERROR(ctx->dev, "Failed to exit sleep mode: %d\n", ret); ++ return ret; ++ } ++ ++ /* Panel is operational 120 msec after reset */ ++ msleep(60); ++ ++ ret = mipi_dsi_dcs_set_display_on(dsi); ++ if (ret) ++ return ret; ++ ++ DRM_DEV_DEBUG_DRIVER(ctx->dev, "Panel init sequence done\n"); ++ + return 0; + } + +-- +2.26.2 + diff --git a/0009-drm-panel-st7703-Add-support-for-Xingbangda-XBD599.patch b/0009-drm-panel-st7703-Add-support-for-Xingbangda-XBD599.patch new file mode 100644 index 000000000..5ac4e6ee8 --- /dev/null +++ b/0009-drm-panel-st7703-Add-support-for-Xingbangda-XBD599.patch @@ -0,0 +1,251 @@ +From d2fb5b980f071d542ca912dac5a0e27c49de7e2d Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:57 +0200 +Subject: [PATCH 09/13] drm/panel: st7703: Add support for Xingbangda XBD599 + +Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI LCD panel used in +PinePhone. Add support for it. + +Signed-off-by: Icenowy Zheng <icenowy@aosc.io> +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 199 +++++++++++++++++- + 1 file changed, 197 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index cdbf7dfb4dd48..33611419059a9 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -39,10 +39,11 @@ + #define ST7703_CMD_SETEXTC 0xB9 + #define ST7703_CMD_SETMIPI 0xBA + #define ST7703_CMD_SETVDC 0xBC +-#define ST7703_CMD_UNKNOWN0 0xBF ++#define ST7703_CMD_UNKNOWN_BF 0xBF + #define ST7703_CMD_SETSCR 0xC0 + #define ST7703_CMD_SETPOWER 0xC1 + #define ST7703_CMD_SETPANEL 0xCC ++#define ST7703_CMD_UNKNOWN_C6 0xC6 + #define ST7703_CMD_SETGAMMA 0xE0 + #define ST7703_CMD_SETEQ 0xE3 + #define ST7703_CMD_SETGIP1 0xE9 +@@ -109,7 +110,7 @@ static int jh057n_init_sequence(struct st7703 *ctx) + msleep(20); + + dsi_generic_write_seq(dsi, ST7703_CMD_SETVCOM, 0x3F, 0x3F); +- dsi_generic_write_seq(dsi, ST7703_CMD_UNKNOWN0, 0x02, 0x11, 0x00); ++ dsi_generic_write_seq(dsi, ST7703_CMD_UNKNOWN_BF, 0x02, 0x11, 0x00); + dsi_generic_write_seq(dsi, ST7703_CMD_SETGIP1, + 0x82, 0x10, 0x06, 0x05, 0x9E, 0x0A, 0xA5, 0x12, + 0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38, +@@ -163,6 +164,199 @@ struct st7703_panel_desc jh057n00900_panel_desc = { + .init_sequence = jh057n_init_sequence, + }; + ++#define dsi_dcs_write_seq(dsi, cmd, seq...) do { \ ++ static const u8 d[] = { seq }; \ ++ int ret; \ ++ ret = mipi_dsi_dcs_write(dsi, cmd, d, ARRAY_SIZE(d)); \ ++ if (ret < 0) \ ++ return ret; \ ++ } while (0) ++ ++ ++static int xbd599_init_sequence(struct st7703 *ctx) ++{ ++ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); ++ ++ /* ++ * Init sequence was supplied by the panel vendor. ++ */ ++ ++ /* Magic sequence to unlock user commands below. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEXTC, 0xF1, 0x12, 0x83); ++ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETMIPI, ++ 0x33, /* VC_main = 0, Lane_Number = 3 (4 lanes) */ ++ 0x81, /* DSI_LDO_SEL = 1.7V, RTERM = 90 Ohm */ ++ 0x05, /* IHSRX = x6 (Low High Speed driving ability) */ ++ 0xF9, /* TX_CLK_SEL = fDSICLK/16 */ ++ 0x0E, /* HFP_OSC (min. HFP number in DSI mode) */ ++ 0x0E, /* HBP_OSC (min. HBP number in DSI mode) */ ++ /* The rest is undocumented in ST7703 datasheet */ ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x44, 0x25, 0x00, 0x91, 0x0a, 0x00, 0x00, 0x02, ++ 0x4F, 0x11, 0x00, 0x00, 0x37); ++ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER_EXT, ++ 0x25, /* PCCS = 2, ECP_DC_DIV = 1/4 HSYNC */ ++ 0x22, /* DT = 15ms XDK_ECP = x2 */ ++ 0x20, /* PFM_DC_DIV = /1 */ ++ 0x03 /* ECP_SYNC_EN = 1, VGX_SYNC_EN = 1 */); ++ ++ /* RGB I/F porch timing */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETRGBIF, ++ 0x10, /* VBP_RGB_GEN */ ++ 0x10, /* VFP_RGB_GEN */ ++ 0x05, /* DE_BP_RGB_GEN */ ++ 0x05, /* DE_FP_RGB_GEN */ ++ /* The rest is undocumented in ST7703 datasheet */ ++ 0x03, 0xFF, ++ 0x00, 0x00, ++ 0x00, 0x00); ++ ++ /* Source driving settings. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETSCR, ++ 0x73, /* N_POPON */ ++ 0x73, /* N_NOPON */ ++ 0x50, /* I_POPON */ ++ 0x50, /* I_NOPON */ ++ 0x00, /* SCR[31,24] */ ++ 0xC0, /* SCR[23,16] */ ++ 0x08, /* SCR[15,8] */ ++ 0x70, /* SCR[7,0] */ ++ 0x00 /* Undocumented */); ++ ++ /* NVDDD_SEL = -1.8V, VDDD_SEL = out of range (possibly 1.9V?) */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVDC, 0x4E); ++ ++ /* ++ * SS_PANEL = 1 (reverse scan), GS_PANEL = 0 (normal scan) ++ * REV_PANEL = 1 (normally black panel), BGR_PANEL = 1 (BGR) ++ */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPANEL, 0x0B); ++ ++ /* Zig-Zag Type C column inversion. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETCYC, 0x80); ++ ++ /* Set display resolution. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETDISP, ++ 0xF0, /* NL = 240 */ ++ 0x12, /* RES_V_LSB = 0, BLK_CON = VSSD, ++ * RESO_SEL = 720RGB ++ */ ++ 0xF0 /* WHITE_GND_EN = 1 (GND), ++ * WHITE_FRAME_SEL = 7 frames, ++ * ISC = 0 frames ++ */); ++ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEQ, ++ 0x00, /* PNOEQ */ ++ 0x00, /* NNOEQ */ ++ 0x0B, /* PEQGND */ ++ 0x0B, /* NEQGND */ ++ 0x10, /* PEQVCI */ ++ 0x10, /* NEQVCI */ ++ 0x00, /* PEQVCI1 */ ++ 0x00, /* NEQVCI1 */ ++ 0x00, /* reserved */ ++ 0x00, /* reserved */ ++ 0xFF, /* reserved */ ++ 0x00, /* reserved */ ++ 0xC0, /* ESD_DET_DATA_WHITE = 1, ESD_WHITE_EN = 1 */ ++ 0x10 /* SLPIN_OPTION = 1 (no need vsync after sleep-in) ++ * VEDIO_NO_CHECK_EN = 0 ++ * ESD_WHITE_GND_EN = 0 ++ * ESD_DET_TIME_SEL = 0 frames ++ */); ++ ++ /* Undocumented command. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_UNKNOWN_C6, 0x01, 0x00, 0xFF, 0xFF, 0x00); ++ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER, ++ 0x74, /* VBTHS, VBTLS: VGH = 17V, VBL = -11V */ ++ 0x00, /* FBOFF_VGH = 0, FBOFF_VGL = 0 */ ++ 0x32, /* VRP */ ++ 0x32, /* VRN */ ++ 0x77, /* reserved */ ++ 0xF1, /* APS = 1 (small), ++ * VGL_DET_EN = 1, VGH_DET_EN = 1, ++ * VGL_TURBO = 1, VGH_TURBO = 1 ++ */ ++ 0xFF, /* VGH1_L_DIV, VGL1_L_DIV (1.5MHz) */ ++ 0xFF, /* VGH1_R_DIV, VGL1_R_DIV (1.5MHz) */ ++ 0xCC, /* VGH2_L_DIV, VGL2_L_DIV (2.6MHz) */ ++ 0xCC, /* VGH2_R_DIV, VGL2_R_DIV (2.6MHz) */ ++ 0x77, /* VGH3_L_DIV, VGL3_L_DIV (4.5MHz) */ ++ 0x77 /* VGH3_R_DIV, VGL3_R_DIV (4.5MHz) */); ++ ++ /* Reference voltage. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETBGP, ++ 0x07, /* VREF_SEL = 4.2V */ ++ 0x07 /* NVREF_SEL = 4.2V */); ++ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVCOM, ++ 0x2C, /* VCOMDC_F = -0.67V */ ++ 0x2C /* VCOMDC_B = -0.67V */); ++ ++ /* Undocumented command. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_UNKNOWN_BF, 0x02, 0x11, 0x00); ++ ++ /* This command is to set forward GIP timing. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP1, ++ 0x82, 0x10, 0x06, 0x05, 0xA2, 0x0A, 0xA5, 0x12, ++ 0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38, ++ 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, ++ 0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64, ++ 0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); ++ ++ /* This command is to set backward GIP timing. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP2, ++ 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13, ++ 0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A, ++ 0xA5, 0x00, 0x00, 0x00, 0x00); ++ ++ /* Adjust the gamma characteristics of the panel. */ ++ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGAMMA, ++ 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, 0x35, ++ 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, 0x12, ++ 0x18, 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, ++ 0x35, 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, ++ 0x12, 0x18); ++ ++ return 0; ++} ++ ++static const struct drm_display_mode xbd599_mode = { ++ .hdisplay = 720, ++ .hsync_start = 720 + 40, ++ .hsync_end = 720 + 40 + 40, ++ .htotal = 720 + 40 + 40 + 40, ++ .vdisplay = 1440, ++ .vsync_start = 1440 + 18, ++ .vsync_end = 1440 + 18 + 10, ++ .vtotal = 1440 + 18 + 10 + 17, ++ .vrefresh = 60, ++ .clock = 69000, ++ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, ++ .width_mm = 68, ++ .height_mm = 136, ++}; ++ ++static const struct st7703_panel_desc xbd599_desc = { ++ .mode = &xbd599_mode, ++ .lanes = 4, ++ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE, ++ .format = MIPI_DSI_FMT_RGB888, ++ .init_sequence = xbd599_init_sequence, ++}; ++ + static int st7703_enable(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); +@@ -428,6 +622,7 @@ static int st7703_remove(struct mipi_dsi_device *dsi) + + static const struct of_device_id st7703_of_match[] = { + { .compatible = "rocktech,jh057n00900", .data = &jh057n00900_panel_desc }, ++ { .compatible = "xingbangda,xbd599", .data = &xbd599_desc }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, st7703_of_match); +-- +2.26.2 + diff --git a/0010-drm-panel-st7703-Enter-sleep-after-display-off.patch b/0010-drm-panel-st7703-Enter-sleep-after-display-off.patch new file mode 100644 index 000000000..867962865 --- /dev/null +++ b/0010-drm-panel-st7703-Enter-sleep-after-display-off.patch @@ -0,0 +1,41 @@ +From 7c9c58114d277e570f667ac670ef28725e51814e Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:58 +0200 +Subject: [PATCH 10/13] drm/panel: st7703: Enter sleep after display off + +The datasheet suggests to issue sleep in after display off +as a part of the panel's shutdown sequence. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index 33611419059a9..e771281eb5472 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -394,8 +394,19 @@ static int st7703_disable(struct drm_panel *panel) + { + struct st7703 *ctx = panel_to_st7703(panel); + struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); ++ int ret; ++ ++ ret = mipi_dsi_dcs_set_display_off(dsi); ++ if (ret < 0) ++ DRM_DEV_ERROR(ctx->dev, ++ "Failed to turn off the display: %d\n", ret); + +- return mipi_dsi_dcs_set_display_off(dsi); ++ ret = mipi_dsi_dcs_enter_sleep_mode(dsi); ++ if (ret < 0) ++ DRM_DEV_ERROR(ctx->dev, ++ "Failed to enter sleep mode: %d\n", ret); ++ ++ return 0; + } + + static int st7703_unprepare(struct drm_panel *panel) +-- +2.26.2 + diff --git a/0011-drm-panel-st7703-Assert-reset-prior-to-powering-down.patch b/0011-drm-panel-st7703-Assert-reset-prior-to-powering-down.patch new file mode 100644 index 000000000..f5871906c --- /dev/null +++ b/0011-drm-panel-st7703-Assert-reset-prior-to-powering-down.patch @@ -0,0 +1,29 @@ +From f290f11b42df0d9d42679b93bb6a488f9e12e00d Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:55:59 +0200 +Subject: [PATCH 11/13] drm/panel: st7703: Assert reset prior to powering down + the regulators + +The reset pin is inverted, so if we don't assert reset, the actual gpio +will be high and may keep driving the IO port of the panel. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + drivers/gpu/drm/panel/panel-sitronix-st7703.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7703.c b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +index e771281eb5472..92930e1275592 100644 +--- a/drivers/gpu/drm/panel/panel-sitronix-st7703.c ++++ b/drivers/gpu/drm/panel/panel-sitronix-st7703.c +@@ -416,6 +416,7 @@ static int st7703_unprepare(struct drm_panel *panel) + if (!ctx->prepared) + return 0; + ++ gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_disable(ctx->iovcc); + regulator_disable(ctx->vcc); + ctx->prepared = false; +-- +2.26.2 + diff --git a/0012-arm64-dts-sun50i-a64-pinephone-Enable-LCD-support-on.patch b/0012-arm64-dts-sun50i-a64-pinephone-Enable-LCD-support-on.patch new file mode 100644 index 000000000..0c8ca994e --- /dev/null +++ b/0012-arm64-dts-sun50i-a64-pinephone-Enable-LCD-support-on.patch @@ -0,0 +1,112 @@ +From 3ac5eb0c8bc2da9e81e04fc6106a79b476ec9219 Mon Sep 17 00:00:00 2001 +From: Icenowy Zheng <icenowy@aosc.io> +Date: Fri, 26 Jun 2020 02:56:00 +0200 +Subject: [PATCH 12/13] arm64: dts: sun50i-a64-pinephone: Enable LCD support on + PinePhone + +PinePhone uses PWM backlight and a XBD599 LCD panel over DSI for +display. + +Backlight levels curve was optimized by Martijn Braam using a +lux meter. + +Add its device nodes. + +Signed-off-by: Icenowy Zheng <icenowy@aosc.io> +Signed-off-by: Martijn Braam <martijn@brixit.nl> +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + .../allwinner/sun50i-a64-pinephone-1.1.dts | 19 ++++++++++ + .../dts/allwinner/sun50i-a64-pinephone.dtsi | 35 +++++++++++++++++++ + 2 files changed, 54 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts +index 06a775c41664b..3e99a87e9ce52 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts +@@ -9,3 +9,22 @@ / { + model = "Pine64 PinePhone Braveheart (1.1)"; + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64"; + }; ++ ++&backlight { ++ power-supply = <®_ldo_io0>; ++ /* ++ * PWM backlight circuit on this PinePhone revision was changed since ++ * 1.0, and the lowest PWM duty cycle that doesn't lead to backlight ++ * being off is around 20%. Duty cycle for the lowest brightness level ++ * also varries quite a bit between individual boards, so the lowest ++ * value here was chosen as a safe default. ++ */ ++ brightness-levels = < ++ 774 793 814 842 ++ 882 935 1003 1088 ++ 1192 1316 1462 1633 ++ 1830 2054 2309 2596 ++ 2916 3271 3664 4096>; ++ num-interpolated-steps = <50>; ++ default-brightness-level = <400>; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +index cefda145c3c9d..85a7aa5efd326 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +@@ -16,6 +16,13 @@ aliases { + serial0 = &uart0; + }; + ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>; ++ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ ++ /* Backlight configuration differs per PinePhone revision. */ ++ }; ++ + chosen { + stdout-path = "serial0:115200n8"; + }; +@@ -84,6 +91,30 @@ &dai { + status = "okay"; + }; + ++&de { ++ status = "okay"; ++}; ++ ++&dphy { ++ status = "okay"; ++}; ++ ++&dsi { ++ vcc-dsi-supply = <®_dldo1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "xingbangda,xbd599"; ++ reg = <0>; ++ reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */ ++ iovcc-supply = <®_dldo2>; ++ vcc-supply = <®_ldo_io0>; ++ backlight = <&backlight>; ++ }; ++}; ++ + &ehci0 { + status = "okay"; + }; +@@ -188,6 +219,10 @@ &r_pio { + */ + }; + ++&r_pwm { ++ status = "okay"; ++}; ++ + &r_rsb { + status = "okay"; + +-- +2.26.2 + diff --git a/0013-arm64-dts-sun50i-a64-pinephone-Add-touchscreen-suppo.patch b/0013-arm64-dts-sun50i-a64-pinephone-Add-touchscreen-suppo.patch new file mode 100644 index 000000000..211eb2797 --- /dev/null +++ b/0013-arm64-dts-sun50i-a64-pinephone-Add-touchscreen-suppo.patch @@ -0,0 +1,47 @@ +From 786358ed986e4788b992d98e1d3b198a4e01a9d5 Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman <megous@megous.com> +Date: Fri, 26 Jun 2020 02:56:01 +0200 +Subject: [PATCH 13/13] arm64: dts: sun50i-a64-pinephone: Add touchscreen + support + +Pinephone has a Goodix GT917S capacitive touchscreen controller on +I2C0 bus. Add support for it. + +Signed-off-by: Ondrej Jirman <megous@megous.com> +--- + .../dts/allwinner/sun50i-a64-pinephone.dtsi | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +index 85a7aa5efd326..2d5694446d176 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +@@ -123,6 +123,25 @@ &ehci1 { + status = "okay"; + }; + ++&i2c0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c0_pins>; ++ status = "okay"; ++ ++ touchscreen@5d { ++ compatible = "goodix,gt917s", "goodix,gt911"; ++ reg = <0x5d>; ++ interrupt-parent = <&pio>; ++ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ ++ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ ++ AVDD28-supply = <®_ldo_io0>; ++ VDDIO-supply = <®_ldo_io0>; ++ touchscreen-size-x = <720>; ++ touchscreen-size-y = <1440>; ++ }; ++}; ++ + &i2c1 { + status = "okay"; + +-- +2.26.2 + diff --git a/ARM-dts-bcm2711-Move-emmc2-into-its-own-bus.patch b/ARM-dts-bcm2711-Move-emmc2-into-its-own-bus.patch deleted file mode 100644 index dd0087104..000000000 --- a/ARM-dts-bcm2711-Move-emmc2-into-its-own-bus.patch +++ /dev/null @@ -1,168 +0,0 @@ -From patchwork Wed Mar 4 13:24:37 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: 11420129 -Return-Path: - <SRS0=pU4t=4V=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C6D01139A - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 13:24:52 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 8EA4C20848 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 13:24:52 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="rVot4hOX" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8EA4C20848 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To - :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: - Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: - List-Owner; bh=8vOVvuwuEiZ/+aeWTFI6G54jitKev/MSiGHvL/NuYpM=; b=rVot4hOXzlJULi - AIV0tWo7xq5srSJPr0aW3ccsKyfTNsVGmB0Y4G8A2Wqd+29xOVNJGk9jIAaRqBaAEGozzfFQj8JuQ - YRKsDyKXSMgpM5EHFtlq7TSvY21pe6uHhTkMCYnhLdZu7BrX9V2BLfnG7b7kx+wVgh2SDk5Tu8iJI - 3vNkR22Qd4bIZAMQVwr97BN6IasYg2C9Q1hACZKKYVTxOvCw1MDDfedhRK9IxgZXV8eacZco5TlC+ - 3FlBQSP6dxBhpgAZ2VSD8k94TZe8Vnj1HMmja4MShu5hUOaBMzV/cvTA0y9OFseFvzL3YES1oyPzk - vPYT4iiUYIWQEEsfDJoA==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9U10-0004Kq-KB; Wed, 04 Mar 2020 13:24:46 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9U0x-0004KG-Lg; Wed, 04 Mar 2020 13:24:45 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 28610AAC7; - Wed, 4 Mar 2020 13:24:42 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: Rob Herring <robh+dt@kernel.org>, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Subject: [PATCH v2] ARM: dts: bcm2711: Move emmc2 into its own bus -Date: Wed, 4 Mar 2020 14:24:37 +0100 -Message-Id: <20200304132437.20164-1-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.25.1 -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200304_052443_860022_0913505C -X-CRM114-Status: GOOD ( 14.37 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: devicetree@vger.kernel.org, f.fainelli@gmail.com, phil@raspberrypi.org, - linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, - linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -Depending on bcm2711's revision its emmc2 controller might have -different DMA constraints. Raspberry Pi 4's firmware will take care of -updating those, but only if a certain alias is found in the device tree. -So, move emmc2 into its own bus, so as not to pollute other devices with -dma-ranges changes and create the emmc2bus alias. - -Based in Phil ELwell's downstream implementation. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - -Changes since v1: - - Add comment in dt - - Fix commit title - - arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 1 + - arch/arm/boot/dts/bcm2711.dtsi | 25 ++++++++++++++++++++----- - 2 files changed, 21 insertions(+), 5 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 1d4b589fe233..e26ea9006378 100644 ---- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -20,6 +20,7 @@ memory@0 { - }; - - aliases { -+ emmc2bus = &emmc2bus; - ethernet0 = &genet; - pcie0 = &pcie0; - }; -diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index d1e684d0acfd..a91cf68e3c4c 100644 ---- a/arch/arm/boot/dts/bcm2711.dtsi -+++ b/arch/arm/boot/dts/bcm2711.dtsi -@@ -241,17 +241,32 @@ pwm1: pwm@7e20c800 { - status = "disabled"; - }; - -+ hvs@7e400000 { -+ interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; -+ }; -+ }; -+ -+ /* -+ * emmc2 has different DMA constraints based on SoC revisions. It was -+ * moved into its own bus, so as for RPi4's firmware to update them. -+ * The firmware will find whether the emmc2bus alias is defined, and if -+ * so, it'll edit the dma-ranges property below accordingly. -+ */ -+ emmc2bus: emmc2bus { -+ compatible = "simple-bus"; -+ #address-cells = <2>; -+ #size-cells = <1>; -+ -+ ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>; -+ dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>; -+ - emmc2: emmc2@7e340000 { - compatible = "brcm,bcm2711-emmc2"; -- reg = <0x7e340000 0x100>; -+ reg = <0x0 0x7e340000 0x100>; - interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&clocks BCM2711_CLOCK_EMMC2>; - status = "disabled"; - }; -- -- hvs@7e400000 { -- interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; -- }; - }; - - arm-pmu { diff --git a/ARM64-Tegra-fixes.patch b/ARM64-Tegra-fixes.patch deleted file mode 100644 index 6ddfc2322..000000000 --- a/ARM64-Tegra-fixes.patch +++ /dev/null @@ -1,477 +0,0 @@ -From patchwork Mon Feb 24 14:34:33 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter <jonathanh@nvidia.com> -X-Patchwork-Id: 1243145 -Return-Path: <linux-tegra-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-tegra-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=duOxTEf6; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 48R4Mz3K4gz9sRR - for <incoming@patchwork.ozlabs.org>; - Tue, 25 Feb 2020 01:34:55 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1727815AbgBXOew (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Mon, 24 Feb 2020 09:34:52 -0500 -Received: from hqnvemgate24.nvidia.com ([216.228.121.143]:6094 "EHLO - hqnvemgate24.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727498AbgBXOew (ORCPT - <rfc822;linux-tegra@vger.kernel.org>); - Mon, 24 Feb 2020 09:34:52 -0500 -Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e53debf0001>; Mon, 24 Feb 2020 06:33:35 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate101.nvidia.com (PGP Universal service); - Mon, 24 Feb 2020 06:34:51 -0800 -X-PGP-Universal: processed; - by hqpgpgate101.nvidia.com on Mon, 24 Feb 2020 06:34:51 -0800 -Received: from HQMAIL105.nvidia.com (172.20.187.12) by HQMAIL101.nvidia.com - (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Mon, 24 Feb 2020 14:34:50 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL105.nvidia.com - (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Mon, 24 Feb 2020 14:34:50 +0000 -Received: from thunderball.nvidia.com (Not Verified[10.21.140.91]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e53df090001>; Mon, 24 Feb 2020 06:34:50 -0800 -From: Jon Hunter <jonathanh@nvidia.com> -To: Thierry Reding <thierry.reding@gmail.com> -CC: <devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>, - Jon Hunter <jonathanh@nvidia.com>, <stable@vger.kernel.org> -Subject: [PATCH 1/4] ARM64: Tegra: Enable I2C controller for EEPROM -Date: Mon, 24 Feb 2020 14:34:33 +0000 -Message-ID: <20200224143436.5438-1-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1582554815; bh=SKhUz0YkoB6pD4YoE/4KFxZbYw2qmSp519cZdmcBM3o=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - X-NVConfidentiality:MIME-Version:Content-Type; - b=duOxTEf6wTpBnmdA4GzgtJ0CYXr5t34ZZNN48pc9hExmRqaCcppGHAY2wcXqnjNmL - YwvDy0gfFikGS9gPJKICW2X6f4iOcgfnVhYOWdgnzSFD1bhtOoN+bEcXPC+LRDY89m - uAwuuKQR4MMohz9C8MW8xyatlc13ZEU0jeW1+S3PYfX2GhwRUooeFCGnmLUso5s2DZ - 65p26CoCGdQNBARsw2TNevBzLshNSXvHBdlFiKSs4S0hB7yJJrCwZx2JsjOm+aRtb3 - dgVHvAZAd8GLLKC8NvPCAhbIRhDt0vkyWmqHnB5suduti7g4QA1Eb8HLAXB5ptvzeK - jor+qP+NC8CVQ== -Sender: linux-tegra-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-tegra.vger.kernel.org> -X-Mailing-List: linux-tegra@vger.kernel.org - -Commit a5b6b67364cb ("arm64: tegra: Add ID EEPROM for Jetson TX1 -module") populated the EEPROM on the Jetson TX1 module, but did not -enable the corresponding I2C controller. Enable the I2C controller so -that this EEPROM can be accessed. - -Fixes: a5b6b67364cb ("arm64: tegra: Add ID EEPROM for Jetson TX1 module") - -Cc: <stable@vger.kernel.org> -Signed-off-by: Jon Hunter <jonathanh@nvidia.com> ---- - arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -index cb58f79deb48..95b1a6e76e6e 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -@@ -265,6 +265,8 @@ - }; - - i2c@7000c500 { -+ status = "okay"; -+ - /* module ID EEPROM */ - eeprom@50 { - compatible = "atmel,24c02"; - -From patchwork Mon Feb 24 14:34:34 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter <jonathanh@nvidia.com> -X-Patchwork-Id: 1243146 -Return-Path: <linux-tegra-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-tegra-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=YrupJt5o; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 48R4N1059Pz9sRR - for <incoming@patchwork.ozlabs.org>; - Tue, 25 Feb 2020 01:34:57 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1727498AbgBXOe4 (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Mon, 24 Feb 2020 09:34:56 -0500 -Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:8365 "EHLO - hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727803AbgBXOe4 (ORCPT - <rfc822;linux-tegra@vger.kernel.org>); - Mon, 24 Feb 2020 09:34:56 -0500 -Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e53deec0000>; Mon, 24 Feb 2020 06:34:20 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate101.nvidia.com (PGP Universal service); - Mon, 24 Feb 2020 06:34:55 -0800 -X-PGP-Universal: processed; - by hqpgpgate101.nvidia.com on Mon, 24 Feb 2020 06:34:55 -0800 -Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Mon, 24 Feb 2020 14:34:55 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL107.nvidia.com - (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Mon, 24 Feb 2020 14:34:55 +0000 -Received: from thunderball.nvidia.com (Not Verified[10.21.140.91]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e53df0d0000>; Mon, 24 Feb 2020 06:34:54 -0800 -From: Jon Hunter <jonathanh@nvidia.com> -To: Thierry Reding <thierry.reding@gmail.com> -CC: <devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>, - Jon Hunter <jonathanh@nvidia.com> -Subject: [PATCH 2/4] ARM64: tegra: Add EEPROM supplies -Date: Mon, 24 Feb 2020 14:34:34 +0000 -Message-ID: <20200224143436.5438-2-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200224143436.5438-1-jonathanh@nvidia.com> -References: <20200224143436.5438-1-jonathanh@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1582554860; bh=XQRed+hM+dOmUn7lEyFBRTITiHe/kmVf6bYnTKyb4yU=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=YrupJt5osNrArZbD3/6N+E76P788S2kgwb7HnwldZ99/x70lrAIXTKHOx35uqz7o0 - bsYj1jAiz+BrmkHt678TBaesev2pBBcp8G+zkGDX+M6MWEvTixhn0bBERoHpnmuhQl - 1fWBcDKGg9r4KT46RFxrjCcRek8FB1gb1nM00FneNHFyguKuZEzRuMvoPfZEPr0Pm3 - HaB3AybSYgm2KABS5aZo/a2/9sIP0Bx2St673Bx+9vz89pPr8lWjHZO9QjIUdJn2Qw - 5rEeeEdOKkbx0RMyKaPAPIdhmrnVzrcyrnZYmf0KnxXJCWitqt2cyAu6uDjPI8kiL+ - JhWqRAza5osKg== -Sender: linux-tegra-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-tegra.vger.kernel.org> -X-Mailing-List: linux-tegra@vger.kernel.org - -The following warning is observed on Jetson TX1, Jetson Nano and Jetson -TX2 platforms because the supply regulators are not specified for the -EEPROMs. - - WARNING KERN at24 0-0050: 0-0050 supply vcc not found, using dummy regulator - WARNING KERN at24 0-0057: 0-0057 supply vcc not found, using dummy regulator - -For both of these platforms the EEPROM is powered by the main 1.8V -supply rail and so populate the supply for these devices to fix these -warnings. - -Signed-off-by: Jon Hunter <jonathanh@nvidia.com> ---- - arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 1 + - arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi | 1 + - arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 1 + - arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 1 + - arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 2 ++ - 5 files changed, 6 insertions(+) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -index d7628f5afb85..961b1be0c56b 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -@@ -226,6 +226,7 @@ - compatible = "atmel,24c02"; - reg = <0x57>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; -diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi -index 947744d0f04c..da96de04d003 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi -@@ -171,6 +171,7 @@ - compatible = "atmel,24c02"; - reg = <0x50>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -index 95b1a6e76e6e..f87d2437d11c 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -@@ -272,6 +272,7 @@ - compatible = "atmel,24c02"; - reg = <0x50>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -index a3cafe39ba4c..c70a610f8e3a 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -@@ -85,6 +85,7 @@ - compatible = "atmel,24c02"; - reg = <0x57>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts -index 848afd855da6..21ed1756b889 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts -@@ -114,6 +114,7 @@ - compatible = "atmel,24c02"; - reg = <0x50>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; -@@ -124,6 +125,7 @@ - compatible = "atmel,24c02"; - reg = <0x57>; - -+ vcc-supply = <&vdd_1v8>; - address-bits = <8>; - page-size = <8>; - size = <256>; - -From patchwork Mon Feb 24 14:34:35 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter <jonathanh@nvidia.com> -X-Patchwork-Id: 1243147 -Return-Path: <linux-tegra-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-tegra-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=cDDn02CY; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 48R4N43Xmtz9sRQ - for <incoming@patchwork.ozlabs.org>; - Tue, 25 Feb 2020 01:35:00 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1727825AbgBXOfA (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Mon, 24 Feb 2020 09:35:00 -0500 -Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:8373 "EHLO - hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727803AbgBXOfA (ORCPT - <rfc822;linux-tegra@vger.kernel.org>); - Mon, 24 Feb 2020 09:35:00 -0500 -Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e53def00000>; Mon, 24 Feb 2020 06:34:24 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate102.nvidia.com (PGP Universal service); - Mon, 24 Feb 2020 06:34:59 -0800 -X-PGP-Universal: processed; - by hqpgpgate102.nvidia.com on Mon, 24 Feb 2020 06:34:59 -0800 -Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Mon, 24 Feb 2020 14:34:59 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL107.nvidia.com - (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Mon, 24 Feb 2020 14:34:58 +0000 -Received: from thunderball.nvidia.com (Not Verified[10.21.140.91]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e53df110000>; Mon, 24 Feb 2020 06:34:58 -0800 -From: Jon Hunter <jonathanh@nvidia.com> -To: Thierry Reding <thierry.reding@gmail.com> -CC: <devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>, - Jon Hunter <jonathanh@nvidia.com>, <stable@vger.kernel.org> -Subject: [PATCH 3/4] ARM64: tegra: Fix Tegra186 SOR supply -Date: Mon, 24 Feb 2020 14:34:35 +0000 -Message-ID: <20200224143436.5438-3-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200224143436.5438-1-jonathanh@nvidia.com> -References: <20200224143436.5438-1-jonathanh@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1582554864; bh=lUBb2WrI059cKuJQ/lQ6zAeA/dUVGu1GIMzWYnFLzuA=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=cDDn02CYOMd1x5bK/t7LoZ9fYn59xu8HcaGTMnsTAUfJYYkF5vUqcWjve/5PtksEv - +bYF/ELx+KLrbyXQ4LtKHW1V8F2iDHhNR1Rrs+/MUuPuxuOXwTsaYJgLd2A/FWO54O - men6fW7E5dJS7lmfJ050sgzZs+TABrFO/dyzOfrekczCVpqlnJEsPvdpFlBbzg125A - ZW3sMSe1pW+54pvkCWL7YF/RFnb9zefc0feJmu0Ky+kMH2QOFPSvufzsFBxOr1bUaJ - wqzLNTYwY6tWNy7axusq4KLKuCViERaAqSs/UlzzsrOQHJeecBOlH2GkFi8z7JASz2 - ucv0C5PUNzlTg== -Sender: linux-tegra-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-tegra.vger.kernel.org> -X-Mailing-List: linux-tegra@vger.kernel.org - -The following warning is observed on the Jetson TX2 platform ... - - WARNING KERN tegra-sor 15540000.sor: 15540000.sor supply \ - vdd-hdmi-dp-pll not found, using dummy regulator - -The problem is caused because the regulator for the SOR device is -missing the '-supply' suffix in Device-Tree. Therefore, add the -'-supply' suffix to fix this warning. - -Fixes: 3fdfaf8718fa arm64: tegra: Enable DP support on Jetson TX2 - -Cc: <stable@vger.kernel.org> -Signed-off-by: Jon Hunter <jonathanh@nvidia.com> ---- - arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -index 961b1be0c56b..1af7f9ffb7b6 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts -@@ -278,7 +278,7 @@ - status = "okay"; - - avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>; -- vdd-hdmi-dp-pll = <&vdd_1v8_ap>; -+ vdd-hdmi-dp-pll-supply = <&vdd_1v8_ap>; - - nvidia,dpaux = <&dpaux>; - }; - -From patchwork Mon Feb 24 14:34:36 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter <jonathanh@nvidia.com> -X-Patchwork-Id: 1243148 -Return-Path: <linux-tegra-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-tegra-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=K9z8jYfd; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 48R4N71cwzz9sRQ - for <incoming@patchwork.ozlabs.org>; - Tue, 25 Feb 2020 01:35:03 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1727830AbgBXOfC (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Mon, 24 Feb 2020 09:35:02 -0500 -Received: from hqnvemgate24.nvidia.com ([216.228.121.143]:6117 "EHLO - hqnvemgate24.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727803AbgBXOfC (ORCPT - <rfc822;linux-tegra@vger.kernel.org>); - Mon, 24 Feb 2020 09:35:02 -0500 -Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e53deca0000>; Mon, 24 Feb 2020 06:33:46 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate102.nvidia.com (PGP Universal service); - Mon, 24 Feb 2020 06:35:01 -0800 -X-PGP-Universal: processed; - by hqpgpgate102.nvidia.com on Mon, 24 Feb 2020 06:35:01 -0800 -Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL111.nvidia.com - (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Mon, 24 Feb 2020 14:35:01 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com - (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Mon, 24 Feb 2020 14:35:01 +0000 -Received: from thunderball.nvidia.com (Not Verified[10.21.140.91]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e53df140006>; Mon, 24 Feb 2020 06:35:01 -0800 -From: Jon Hunter <jonathanh@nvidia.com> -To: Thierry Reding <thierry.reding@gmail.com> -CC: <devicetree@vger.kernel.org>, <linux-tegra@vger.kernel.org>, - Jon Hunter <jonathanh@nvidia.com> -Subject: [PATCH 4/4] ARM64: tegra: Populate LP8557 backlight regulator -Date: Mon, 24 Feb 2020 14:34:36 +0000 -Message-ID: <20200224143436.5438-4-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200224143436.5438-1-jonathanh@nvidia.com> -References: <20200224143436.5438-1-jonathanh@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1582554826; bh=8MBs7jrK7WrFNE7o6bG0zu41Sicfxu97bK94j6RYNJs=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=K9z8jYfdaYDh/XGz5S/vyzBWYN4ZPYT6jkue5E5YiUVIyQgLCoZqfSIh3h9luB+/C - DhYTYMkUQRLasUE0VX9dr4Bn0Hxeaw8DjYS7BUq4LqfNwWjsCSsNEhk26FGBEUvhRH - i2nMUMk5Ivw78ouR6qNZhI6freANsproJ+yQkA0cC9WXj5mQw4xcKRmL48dccxrX47 - aQi0BDk3SCzZBAa+4G3yynAGiRNiFuLVWkg/vFMcq1JDp6a2mVs/CS3Qj0/heE9gPn - Qr2Wy0Oa6tg3jhxR9hk7qyy5FlkfDAtJOlUt6sPloPS4bhqqDJtbnXZL7lzHDP+sw+ - RZcjavnvJtCIQ== -Sender: linux-tegra-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-tegra.vger.kernel.org> -X-Mailing-List: linux-tegra@vger.kernel.org - -The following warning is observed on Jetson TX1 platform because the -supply regulator is not specified for the backlight. - - WARNING KERN lp855x 0-002c: 0-002c supply power not found, using dummy regulator - -The backlight supply is provided by the 3.3V SYS rail and so add this -as the supply for the backlight. - -Signed-off-by: Jon Hunter <jonathanh@nvidia.com> ---- - arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -index c70a610f8e3a..ea0e1efa6973 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts -@@ -56,6 +56,7 @@ - backlight: backlight@2c { - compatible = "ti,lp8557"; - reg = <0x2c>; -+ power-supply = <&vdd_3v3_sys>; - - dev-ctrl = /bits/ 8 <0x80>; - init-brt = /bits/ 8 <0xff>; diff --git a/Add-LCD-support-for-Pine64-Pinebook-1080p.patch b/Add-LCD-support-for-Pine64-Pinebook-1080p.patch deleted file mode 100644 index 632601e4c..000000000 --- a/Add-LCD-support-for-Pine64-Pinebook-1080p.patch +++ /dev/null @@ -1,1033 +0,0 @@ -From patchwork Wed Feb 26 08:10:07 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vasily Khoruzhick <anarsoul@gmail.com> -X-Patchwork-Id: 11405511 -Return-Path: - <SRS0=yLUK=4O=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7C17F138D - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:10:50 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 285BF20714 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:10:50 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="cdeyR8r0"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="Q0cii6N4" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 285BF20714 -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=Peo+SfFmr062rl3tgDW98UrixycGQzBn/gdB0fqrEec=; b=cdeyR8r0WrrQXL - fhHLecv9WUzj5mN4Jb7+S8U3VVCIJu7TkDD13MiIv2xqHbC9HXLBkGdb2Vrq2Rcfkl/jwWjXcgwST - vrUCWMU4jaNlxmeTiAXDyI1I6SEZ/9haXD8IUv7hU1BNoVyeH2GeaVHvTAwIA7TKEWzJHb3/naGAz - Yir51L7gXJoATQ86WVBgdnZ/6rUUmZe1Gs9aHwEjMZ5Rz/9WNydTH/VLWBCVDA9zdZiq8+jhja7y6 - Dh8VhWGpCuvJ/6W0c7viQtFIuJAYI2cYQmI+ebHLMeiv0g7cZnaTxi/PPSICIl3iA9MSUbfVcYSoC - Ro1yQC9H+yqHToXqdWTg==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmK-0000to-Bs; Wed, 26 Feb 2020 08:10:48 +0000 -Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmH-0000rv-7o - for linux-arm-kernel@lists.infradead.org; Wed, 26 Feb 2020 08:10:46 +0000 -Received: by mail-pl1-x644.google.com with SMTP id a6so990257plm.3 - for <linux-arm-kernel@lists.infradead.org>; - Wed, 26 Feb 2020 00:10:44 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=bV3ZvEYwFOIunmpWLGzAgCdGTlK6S+EV6uVEHB+FGxY=; - b=Q0cii6N45xFi8jvZk47bAoc1Nxu6hFKn2R/6gr1ZfjKbVoDJZ64PKB8Z3UWgfpC96z - m858biDFlV7/4mo1LjVTUmbbBHm1yKrJnJ3uLVZBlEdyOFSDznZRxrzu6B/mSXoBfdGU - mlGpBVLSLPU/z8ykPcedU1XFyCgTRivYgIcpSqG+QITc7/eIRdzyugFFz9Yzl27ql70w - 8AlOefrAt/HgAlO+4L6JoXtZp+YN7BobPP6qXr0OfqH/1PLZecbnI0vC7uItRmmZkPfN - j7AsPd8mIOV8s5KgCaaK+xwtreytUn7QQZvq+Frfrl0pLWndKlgav8D5uWnV85pooXdR - SCgg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=bV3ZvEYwFOIunmpWLGzAgCdGTlK6S+EV6uVEHB+FGxY=; - b=ECNexu4zW9OhYucRWaQRPAtEEWE7WmtUxDePEa2BlUp2b5Kd9R3BagblFLB6VAHhjR - wSrCiVTMvlAgNAiXJuKq/J5YnOKBFR7YdGYc9odgo3waiK/XQw5lNOjmNA3hJepAn0wb - MXB9jYsbW2B5kyNLwCFFG6d6jTJEY6Q87mzTx3wqL6nBq6sjdHN5JvBkaERdHCCqKUVH - /jOwV7W2QFG0Kb+DYvfelZbfBCUOMf68VHiwQICiY52q5geL/Oa8/ZO56kEfCx3geUXF - qCuCL4PKAO3hL6jqm5peuzVj69VP64wtkL/eTdM7KKlJDTczayTs3A6DMsI9lRzmA7Ro - w63A== -X-Gm-Message-State: APjAAAWTEdsoaCfLa1vBLhPyuzgRQw35FJ8aGRWduCgpvWjMqcy6TWNi - T7YrobqhUcuRzq8O/y3mjZo= -X-Google-Smtp-Source: - APXvYqwzmN2dNDKDPwprqjYoy3wHRxeIo1QTGdy8Nrs8WKG2CT6K8e2fuBfcpdmu4anfHjvkmdpjJQ== -X-Received: by 2002:a17:902:6184:: with SMTP id - u4mr2301682plj.216.1582704644297; - Wed, 26 Feb 2020 00:10:44 -0800 (PST) -Received: from anarsoul-thinkpad.lan (216-71-213-236.dyn.novuscom.net. - [216.71.213.236]) - by smtp.gmail.com with ESMTPSA id v7sm1679230pfn.61.2020.02.26.00.10.43 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 26 Feb 2020 00:10:43 -0800 (PST) -From: Vasily Khoruzhick <anarsoul@gmail.com> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, - Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Maxime Ripard <maxime@cerno.tech>, Chen-Yu Tsai <wens@csie.org>, - Andrzej Hajda <a.hajda@samsung.com>, - Neil Armstrong <narmstrong@baylibre.com>, - Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, - Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@siol.net>, - Torsten Duwe <duwe@suse.de>, Icenowy Zheng <icenowy@aosc.io>, - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>, - Stephan Gerhold <stephan@gerhold.net>, Mark Brown <broonie@kernel.org>, - Stephen Rothwell <sfr@canb.auug.org.au>, - Samuel Holland <samuel@sholland.org>, dri-devel@lists.freedesktop.org, - devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org -Subject: [PATCH v2 2/6] drm/bridge: anx6345: don't print error message if - regulator is not ready -Date: Wed, 26 Feb 2020 00:10:07 -0800 -Message-Id: <20200226081011.1347245-3-anarsoul@gmail.com> -X-Mailer: git-send-email 2.25.0 -In-Reply-To: <20200226081011.1347245-1-anarsoul@gmail.com> -References: <20200226081011.1347245-1-anarsoul@gmail.com> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200226_001045_305939_7F59723B -X-CRM114-Status: GOOD ( 13.16 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2607:f8b0:4864:20:0:0:0:644 listed in] - [list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [anarsoul[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -We don't want to print scary message if devm_regulator_get() returns --EPROBE_DEFER - -Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> ---- - drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c -index 0d8d083b0207..0bf81b9b5faa 100644 ---- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c -+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c -@@ -714,14 +714,18 @@ static int anx6345_i2c_probe(struct i2c_client *client, - /* 1.2V digital core power regulator */ - anx6345->dvdd12 = devm_regulator_get(dev, "dvdd12"); - if (IS_ERR(anx6345->dvdd12)) { -- DRM_ERROR("dvdd12-supply not found\n"); -+ if (PTR_ERR(anx6345->dvdd12) != -EPROBE_DEFER) -+ DRM_ERROR("Failed to get dvdd12 supply (%ld)\n", -+ PTR_ERR(anx6345->dvdd12)); - return PTR_ERR(anx6345->dvdd12); - } - - /* 2.5V digital core power regulator */ - anx6345->dvdd25 = devm_regulator_get(dev, "dvdd25"); - if (IS_ERR(anx6345->dvdd25)) { -- DRM_ERROR("dvdd25-supply not found\n"); -+ if (PTR_ERR(anx6345->dvdd25) != -EPROBE_DEFER) -+ DRM_ERROR("Failed to get dvdd25 supply (%ld)\n", -+ PTR_ERR(anx6345->dvdd25)); - return PTR_ERR(anx6345->dvdd25); - } - - -From patchwork Wed Feb 26 08:10:08 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vasily Khoruzhick <anarsoul@gmail.com> -X-Patchwork-Id: 11405525 -Return-Path: - <SRS0=yLUK=4O=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BA056930 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:11:35 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 9013820714 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:11:35 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="LGhb4fkQ"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="ZqFr2Xde" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9013820714 -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=8ADp0ZCf/RXeiG8WcqeiUa/p9bRVFg9MWHrmkEvydR4=; b=LGhb4fkQPVOahi - BJtXEN4XzL/JpAolHzThXXSCz6Ga6a4XRsdusD5lW+G9d20OKblS1Li2yUXQBF3gD69zww/f2uZ89 - SCjOIeF8YUi4eRd//H2ki/ugHNFjjr7D5+6X8lBg3oTpatQ2D+Snv83BF6PgDCBec7lxy6SgUaP77 - ouDw0lLlP00NBYXZp31b5lBknpI4oolPTNfq/3hCcsnQGKORXv4xPzuVGOj8m4Aj9K9Uc1D9o+S9t - kYan/5JdjUcE2XmXgKkvQ4mK60O74eH9QZ1nqDxgtvQHnX7+JWnWoTTiYsV+8A/TxWEOTIeLpKZQJ - f5BizujU0K80o5bM8ckg==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rn4-0001aC-Nf; Wed, 26 Feb 2020 08:11:34 +0000 -Received: from mail-pj1-x1044.google.com ([2607:f8b0:4864:20::1044]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmI-0000se-31 - for linux-arm-kernel@lists.infradead.org; Wed, 26 Feb 2020 08:10:47 +0000 -Received: by mail-pj1-x1044.google.com with SMTP id fa20so941191pjb.1 - for <linux-arm-kernel@lists.infradead.org>; - Wed, 26 Feb 2020 00:10:45 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=vEnVySXBYfW3b1su9MemqgqPSinDbCdHAw5n+ZVHXKA=; - b=ZqFr2XdedoNMMzSdc2eWipJbPoWCSoIWOaxz1zsBu+w5FRw0nlJVp7B9aMcVR/ECrM - fWpYYrpUhtSvO1rGsvHH3i7x8JxpD2QgM4DK0weubmj2twGyNSOa9Gvtg6KWDj0oARIV - ossJG+QlPSs1QhoRE2faVAv1lrRd7/LwUBqX6m+LwRkGl9SmUJ5qeccTbXxGKO/jke+J - hejsi+GJu4wBCG1LLI2Rb9i3hLwtSZ88dY/P2BygJXrOuCX1Xh6+4AO3P044cgvoby3X - oVgYppEgNor2/7HskWoAIOtOe2teNJqCPhYgfnRcBTVY+U0Ce7WQEZmjOKtWi3whIYeH - uQBQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=vEnVySXBYfW3b1su9MemqgqPSinDbCdHAw5n+ZVHXKA=; - b=j3wqnMuutM7fm6+CgtpzUtqOybHnpB5v7GqNm5NrPLnZppqmIhQfo+XB29LZIR96Qs - Jy7BnRxwn82nTsr0gsi1J1SPyTVkFBfD/FPq2K+ScOhP7bMVMYU+T7gh7VCDvj1OqGCr - lwQ1+LNbccyZRW86D//6ySKwTfecrJ56FsWmrvWHvXykcnH8BIPijoOUTk7JgDMifSKZ - KGWkKaKZsVGgzycQMDy2UnKCcgvfJ8NNCHS0aJEy7YIhVHyHct2MLeU2jOQsBNJAoB8p - khuqKa1HHg9kFHvXcBokIyToppXiELRtmWg5Aixj6554KNk33a1wSglXIpxPHxncZ8sX - wMUw== -X-Gm-Message-State: APjAAAVIaRZ6h9Ll6HvsBP2/ITar71fuZ8QWSrR6RUAlo4+/JyCCMCmC - nfYQIUTeyMaWhjT3gpH48Ag= -X-Google-Smtp-Source: - APXvYqySsTMpSDO1lKEob5Z3qPaMibUnculbDtGi+2b/LHKNJPcUDEb49L+OdYHplPurgC0YCZJGNA== -X-Received: by 2002:a17:90a:32e4:: with SMTP id - l91mr3675046pjb.23.1582704645464; - Wed, 26 Feb 2020 00:10:45 -0800 (PST) -Received: from anarsoul-thinkpad.lan (216-71-213-236.dyn.novuscom.net. - [216.71.213.236]) - by smtp.gmail.com with ESMTPSA id v7sm1679230pfn.61.2020.02.26.00.10.44 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 26 Feb 2020 00:10:44 -0800 (PST) -From: Vasily Khoruzhick <anarsoul@gmail.com> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, - Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Maxime Ripard <maxime@cerno.tech>, Chen-Yu Tsai <wens@csie.org>, - Andrzej Hajda <a.hajda@samsung.com>, - Neil Armstrong <narmstrong@baylibre.com>, - Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, - Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@siol.net>, - Torsten Duwe <duwe@suse.de>, Icenowy Zheng <icenowy@aosc.io>, - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>, - Stephan Gerhold <stephan@gerhold.net>, Mark Brown <broonie@kernel.org>, - Stephen Rothwell <sfr@canb.auug.org.au>, - Samuel Holland <samuel@sholland.org>, dri-devel@lists.freedesktop.org, - devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org -Subject: [PATCH v2 3/6] dt-bindings: Add Guangdong Neweast Optoelectronics CO. - LTD vendor prefix -Date: Wed, 26 Feb 2020 00:10:08 -0800 -Message-Id: <20200226081011.1347245-4-anarsoul@gmail.com> -X-Mailer: git-send-email 2.25.0 -In-Reply-To: <20200226081011.1347245-1-anarsoul@gmail.com> -References: <20200226081011.1347245-1-anarsoul@gmail.com> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200226_001046_126436_F508C228 -X-CRM114-Status: GOOD ( 10.72 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [anarsoul[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -Add vendor prefix for Guangdong Neweast Optoelectronics CO. LTD - -Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> -Acked-by: Rob Herring <robh@kernel.org> ---- - Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml -index 6456a6dfd83d..5dfbad67aa81 100644 ---- a/Documentation/devicetree/bindings/vendor-prefixes.yaml -+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml -@@ -661,6 +661,8 @@ patternProperties: - description: Netron DY - "^netxeon,.*": - description: Shenzhen Netxeon Technology CO., LTD -+ "^neweast,.*": -+ description: Guangdong Neweast Optoelectronics CO., LTD - "^nexbox,.*": - description: Nexbox - "^nextthing,.*": - -From patchwork Wed Feb 26 08:10:09 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vasily Khoruzhick <anarsoul@gmail.com> -X-Patchwork-Id: 11405527 -Return-Path: - <SRS0=yLUK=4O=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2CC5A930 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:11:45 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id D99A220714 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:11:44 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="NUXv3B19"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="TBrP0h2w" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D99A220714 -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=anQFpGzSkI8IBbKtjkscYMGuTNi8IBx1f7ryKOpbIQ4=; b=NUXv3B191+285a - VyP0wvrXMEDMQsqqwv88YNzVR2CeJlhZYqbOVNDVdMHvHr7VbKohas0brz70I9kD9oQKr8t4lNbcq - p27kG4qmaeRzFa9TSIHJ6PLhfmuWhOctg7DrOaYPazvpEuklClpuIdh1nARq7aHgGVbwUQ2d9UAeL - DNq8Ux3oAlmn2fRtjEYbI2QEFz9SsD8mL0pK+qeYhw864dbHZoD4qv2z3wiRIOFxP5kjt9+cGXF32 - U1GcKdog5IoElC7tP0e4kSeB6uhotxHuDO0FXghwnV/ScLxd+6TtAaNNox4x40LRQl7k4Cj5QGKgC - VUXOowbwTnzHE53PQGUQ==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rnE-0001ln-0r; Wed, 26 Feb 2020 08:11:44 +0000 -Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmJ-0000tK-MR - for linux-arm-kernel@lists.infradead.org; Wed, 26 Feb 2020 08:10:48 +0000 -Received: by mail-pf1-x42d.google.com with SMTP id i19so1066942pfa.2 - for <linux-arm-kernel@lists.infradead.org>; - Wed, 26 Feb 2020 00:10:47 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=UNDrMK3Cuph8hAawynxP4ClnMYdwocSlmGrvdp+XI7U=; - b=TBrP0h2wisco9iwCPRUPdbzfKPQaem8N0CCbkufM0ubNMvNGPVi7J4OrKi6XaCKbH6 - hh3Y+bgMR/KAzZy3SJxpHSn/W55kTsTGse062SF7bXdc1s6lOwPqxkWqbnhYBTrOOQRL - P5UEoGPV5IsF76w8fyduRaTE03AV7RIeG3tdyzE6dWtIWMgpvpx224lpnK6HQOTLFKGx - 8NN0VzAznR0u0zIR0NAXJZCtJ32GmXNwAp/DudApysZdxoB5XwxmgmLNpboYi0ogxMJL - H4NuemzoK00dffBEXYJVCaGEH3TCcpoSWqSDpn+UxmqlsA7Meikom5RyLGooaap33bAj - PsSg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=UNDrMK3Cuph8hAawynxP4ClnMYdwocSlmGrvdp+XI7U=; - b=tNIHOh5/U2zSCDF9YxBv2gBrXaOp1Ic3Ed0/DF9W1SwZlsOm8NdJnPoG/Qzz4Zzq9f - XO2KlEwTsZL/p5cUoBsgJp31//jbQwtydKN7A6Bc8syqlzNqTKkbH0lWw27byIqRQNVb - LZPrt8szaFd6cOQMgYuhMuft7xy3AEwAflpXSPhYxAZ/7/+17p9vRxIYfeQL25gxolY5 - wcpVsTQNM58hJqeMjh5zlpTHzNVNi6eK1DfN4jgGyciaKSD2NkiJ8h94ilf+WPFSg2EC - tfX9NpVWx/fPa+99QUAGGBQZ6Rda+Iwf3iK2ypaJcz83ttVMLmZuoHn2gUauHWp5uwPX - nOQg== -X-Gm-Message-State: APjAAAXSV09JyCccUw4DNzettQ7Qf47judkIMcKg29H1A33F/f9wiexa - clMeRPA3ejNUAeXoRpvNjIE= -X-Google-Smtp-Source: - APXvYqx16ATSH0Ri7QydUSr5etiFpP7VXGwv2ajzCwfEDuf3Fsc6V5gruuHjTDm3C4cjgRnxu80rnQ== -X-Received: by 2002:a63:42c2:: with SMTP id - p185mr2844380pga.268.1582704646751; - Wed, 26 Feb 2020 00:10:46 -0800 (PST) -Received: from anarsoul-thinkpad.lan (216-71-213-236.dyn.novuscom.net. - [216.71.213.236]) - by smtp.gmail.com with ESMTPSA id v7sm1679230pfn.61.2020.02.26.00.10.45 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 26 Feb 2020 00:10:46 -0800 (PST) -From: Vasily Khoruzhick <anarsoul@gmail.com> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, - Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Maxime Ripard <maxime@cerno.tech>, Chen-Yu Tsai <wens@csie.org>, - Andrzej Hajda <a.hajda@samsung.com>, - Neil Armstrong <narmstrong@baylibre.com>, - Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, - Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@siol.net>, - Torsten Duwe <duwe@suse.de>, Icenowy Zheng <icenowy@aosc.io>, - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>, - Stephan Gerhold <stephan@gerhold.net>, Mark Brown <broonie@kernel.org>, - Stephen Rothwell <sfr@canb.auug.org.au>, - Samuel Holland <samuel@sholland.org>, dri-devel@lists.freedesktop.org, - devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org -Subject: [PATCH v2 4/6] dt-bindings: display: simple: Add NewEast - Optoelectronics WJFH116008A compatible -Date: Wed, 26 Feb 2020 00:10:09 -0800 -Message-Id: <20200226081011.1347245-5-anarsoul@gmail.com> -X-Mailer: git-send-email 2.25.0 -In-Reply-To: <20200226081011.1347245-1-anarsoul@gmail.com> -References: <20200226081011.1347245-1-anarsoul@gmail.com> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200226_001047_734455_8E1B858A -X-CRM114-Status: GOOD ( 10.74 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2607:f8b0:4864:20:0:0:0:42d listed in] - [list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [anarsoul[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -This commit adds compatible for NewEast Optoelectronics WJFH116008A panel -to panel-simple binding - -Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> ---- - .../devicetree/bindings/display/panel/panel-simple.yaml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml -index 8fe60ee2531c..0e5d01ac32e1 100644 ---- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml -+++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml -@@ -39,6 +39,8 @@ properties: - - boe,nv140fhmn49 - # GiantPlus GPM940B0 3.0" QVGA TFT LCD panel - - giantplus,gpm940b0 -+ # NewEast Optoelectronics CO., LTD WJFH116008A eDP TFT LCD panel -+ - neweast,wjfh116008a - # Satoz SAT050AT40H12R2 5.0" WVGA TFT LCD panel - - satoz,sat050at40h12r2 - # Sharp LS020B1DD01D 2.0" HQVGA TFT LCD panel - -From patchwork Wed Feb 26 08:10:10 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vasily Khoruzhick <anarsoul@gmail.com> -X-Patchwork-Id: 11405529 -Return-Path: - <SRS0=yLUK=4O=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98009138D - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:12:06 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 706E22084E - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:12:06 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="RFmzpGxa"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="l/TW+lXA" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 706E22084E -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=Pjezg2eBVUZyXclyd85ezSxR08wks+q8A4EL9XqNFV8=; b=RFmzpGxaCKDN3Z - TKB9iB1O5CpLIOo6BJ5GeTFZUYua2bsR/5wdIkFR8fHe0NtrBQBgr9UFC3bn7vAR4ElOOPsqyiY/U - sSFoABabi3ubYjB5EsEFderIxHy3jM1GCiATMOVuVlQUCp+RBUOrZ0BRaeCfZHQwQ+TC1XczMZi7K - 3XAWciGmtAuQ0Fc+gjavhcSmThyAtlQ6dsXPA4Hs4tprQ4d1n4JaaPj/aoigY2QgcBGm3ZoTjSf67 - lYjS0cBqOBMPxzeebuHILvAdrgyxP4euSXXQdM7ufztwwR60nibOMdsv9qjDABojmkq8B5MTZqdOH - 0ZaZ5qKKNoBg4Cc0s4tw==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rnW-00022y-I8; Wed, 26 Feb 2020 08:12:02 +0000 -Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmK-0000tn-HT - for linux-arm-kernel@lists.infradead.org; Wed, 26 Feb 2020 08:10:49 +0000 -Received: by mail-pf1-x444.google.com with SMTP id x185so1062134pfc.5 - for <linux-arm-kernel@lists.infradead.org>; - Wed, 26 Feb 2020 00:10:48 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=2c6a2wUIf1607PZkN1rZk+L4ET6oyW/A+dmD8ze92gI=; - b=l/TW+lXATIXM17aGIZ9zrNTKWKrYbTiLzzjCckt2sYGCNOgBJIAM/09gAYIyO8Ix1n - UHbe88pAp1n0plvmre5V5bbjfK092LKIqAYUkzsgoJS7/2xUSMZgE5o2q6j40HA9jjre - FF8uZvB+fx7B6YmX6nxlrWe2JsyENeFsB23HdsKTAR2dEJOG0eVZaT0pJNwkmq0+XMJC - c9jFO1zsFW7hO9kM7570YJrU/mpImzvlnR4RWJMtjUx3BXAFto3xHr0udkFVc1dm8Tg0 - Ip4cwJcKanfhov2dNsyjvshdovNKgTGIdSWpGBGikwWBexhz01R0zL94DTwVMPuTLhGV - /+nw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=2c6a2wUIf1607PZkN1rZk+L4ET6oyW/A+dmD8ze92gI=; - b=AFqJOlne6XiqyfXbe7Qg6mrk2SdVqJ7iExvkHRxNVYmdxUbR/6yRhvzOZQSVBtKC5i - TmW2u4Q8eZPHYreKvOIUWITey052Zg4u9hGHB3rMw7Av/4qxpWNPtkFqzZfU7XRxu98o - CGp2OcESKg6Ut1utUOOlHQrkxQCAKOG9z7/J5db2Ia8pCEzog0sZXpgIY4VSkT8+trYy - WcqYWGslvZVqZM/Vdc/26b2UTKBa6wqGA8lwIZ8hdr/UmSELSpEf6BVvU08zKfxoF/1B - 75us7suZtGwlG5X7xkj/8QUNiraZ4UQF4XTR7cywE+zar2l5vCrFG2751fJZrx9xW5+1 - w3oQ== -X-Gm-Message-State: APjAAAUZZE/KK0NMOoMfAeeMMg5NlS/caB+zFkrqz5jH670/oibneZxJ - h4YLd4JzSbuB9egyQmmLO68= -X-Google-Smtp-Source: - APXvYqy00/8d+Wer4Z0MFSOy0sPlhrq7zbo/TdsWVeXFTKfHPPar8rV+DBjhxAWH91y4lWNMO4S3Pw== -X-Received: by 2002:a63:ec0c:: with SMTP id j12mr2609426pgh.78.1582704647920; - Wed, 26 Feb 2020 00:10:47 -0800 (PST) -Received: from anarsoul-thinkpad.lan (216-71-213-236.dyn.novuscom.net. - [216.71.213.236]) - by smtp.gmail.com with ESMTPSA id v7sm1679230pfn.61.2020.02.26.00.10.46 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 26 Feb 2020 00:10:47 -0800 (PST) -From: Vasily Khoruzhick <anarsoul@gmail.com> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, - Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Maxime Ripard <maxime@cerno.tech>, Chen-Yu Tsai <wens@csie.org>, - Andrzej Hajda <a.hajda@samsung.com>, - Neil Armstrong <narmstrong@baylibre.com>, - Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, - Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@siol.net>, - Torsten Duwe <duwe@suse.de>, Icenowy Zheng <icenowy@aosc.io>, - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>, - Stephan Gerhold <stephan@gerhold.net>, Mark Brown <broonie@kernel.org>, - Stephen Rothwell <sfr@canb.auug.org.au>, - Samuel Holland <samuel@sholland.org>, dri-devel@lists.freedesktop.org, - devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org -Subject: [PATCH v2 5/6] drm/panel: simple: Add NewEast Optoelectronics CO., - LTD WJFH116008A panel support -Date: Wed, 26 Feb 2020 00:10:10 -0800 -Message-Id: <20200226081011.1347245-6-anarsoul@gmail.com> -X-Mailer: git-send-email 2.25.0 -In-Reply-To: <20200226081011.1347245-1-anarsoul@gmail.com> -References: <20200226081011.1347245-1-anarsoul@gmail.com> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200226_001048_596182_84BBBB6A -X-CRM114-Status: GOOD ( 13.16 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2607:f8b0:4864:20:0:0:0:444 listed in] - [list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [anarsoul[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -This commit adds support for the NewEast Optoelectronics CO., LTD -WJFH116008A 11.6" 1920x1080 TFT LCD panel. - -Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> ---- - drivers/gpu/drm/panel/panel-simple.c | 48 ++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - -diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index e14c14ac62b5..4292e3e3a461 100644 ---- a/drivers/gpu/drm/panel/panel-simple.c -+++ b/drivers/gpu/drm/panel/panel-simple.c -@@ -2224,6 +2224,51 @@ static const struct panel_desc netron_dy_e231732 = { - .bus_format = MEDIA_BUS_FMT_RGB666_1X18, - }; - -+static const struct drm_display_mode neweast_wjfh116008a_modes[] = { -+ { -+ .clock = 138500, -+ .hdisplay = 1920, -+ .hsync_start = 1920 + 48, -+ .hsync_end = 1920 + 48 + 32, -+ .htotal = 1920 + 48 + 32 + 80, -+ .vdisplay = 1080, -+ .vsync_start = 1080 + 3, -+ .vsync_end = 1080 + 3 + 5, -+ .vtotal = 1080 + 3 + 5 + 23, -+ .vrefresh = 60, -+ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, -+ }, { -+ .clock = 110920, -+ .hdisplay = 1920, -+ .hsync_start = 1920 + 48, -+ .hsync_end = 1920 + 48 + 32, -+ .htotal = 1920 + 48 + 32 + 80, -+ .vdisplay = 1080, -+ .vsync_start = 1080 + 3, -+ .vsync_end = 1080 + 3 + 5, -+ .vtotal = 1080 + 3 + 5 + 23, -+ .vrefresh = 48, -+ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, -+ } -+}; -+ -+static const struct panel_desc neweast_wjfh116008a = { -+ .modes = neweast_wjfh116008a_modes, -+ .num_modes = 2, -+ .bpc = 6, -+ .size = { -+ .width = 260, -+ .height = 150, -+ }, -+ .delay = { -+ .prepare = 110, -+ .enable = 20, -+ .unprepare = 500, -+ }, -+ .bus_format = MEDIA_BUS_FMT_RGB666_1X18, -+ .connector_type = DRM_MODE_CONNECTOR_eDP, -+}; -+ - static const struct drm_display_mode newhaven_nhd_43_480272ef_atxl_mode = { - .clock = 9000, - .hdisplay = 480, -@@ -3399,6 +3444,9 @@ static const struct of_device_id platform_of_match[] = { - }, { - .compatible = "netron-dy,e231732", - .data = &netron_dy_e231732, -+ }, { -+ .compatible = "neweast,wjfh116008a", -+ .data = &neweast_wjfh116008a, - }, { - .compatible = "newhaven,nhd-4.3-480272ef-atxl", - .data = &newhaven_nhd_43_480272ef_atxl, - -From patchwork Wed Feb 26 08:10:11 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vasily Khoruzhick <anarsoul@gmail.com> -X-Patchwork-Id: 11405531 -Return-Path: - <SRS0=yLUK=4O=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 77856930 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:12:17 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 51B0C24670 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 26 Feb 2020 08:12:17 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="Ttb9cpIi"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="Uj9USULV" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 51B0C24670 -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=LnkqG8iA0ymdTA2w7CdGVHSCIBdn7y28YqcNDvsJWNU=; b=Ttb9cpIiR16OSX - C+0UQyaaAqkD801MCZ65bwRsQy+0yRPSFzRfv8Tc2s5Gm5L6TR05fd2w3uM9MocpU2FRV80A2XmKG - rVRDRn0q7jNpoxIYIc+2RWUuL1Jr7YvueQgU57O5c69nl3SgTzbc1r1xUS/q3mQkrGHbpmY2PlayQ - RPA4BQ3hNGi6naA71o8hf+uG9U8PousU2XUFhROHgAx7hePPf25ESKTbZVfKke7QuDJBw4JFxYJym - MH/qF08Y4EMH0jZYh/oeBwEf8X3Kb0CWHSTjMi9ppWH/SimAViI2NWVuusqvOdmXWorBM0vPTx8dG - 0xJZ511Bv5LYDdz46Zgw==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rnk-0002Fx-FU; Wed, 26 Feb 2020 08:12:16 +0000 -Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j6rmL-0000vN-TN - for linux-arm-kernel@lists.infradead.org; Wed, 26 Feb 2020 08:10:51 +0000 -Received: by mail-pf1-x441.google.com with SMTP id s1so1047374pfh.10 - for <linux-arm-kernel@lists.infradead.org>; - Wed, 26 Feb 2020 00:10:49 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=1/9ulr35We1VvK4OKOtO+SeDdjZAIuN626KlRGL51e8=; - b=Uj9USULV1YhIjRQTGet+GBQYuuhLAkRgQq5aOXkZU55ZeXZOwYCvjYC0XTbkwI02vn - nMqNb637FbLBsLL+0OixEVNpFP/WYWrCLF5zLIEBTSZkXEK2J8hPyn24masq/KXBnUXK - 1WpXqTxgjbgl1eq/uxSXJMuc6aResWHy1sQuEaEYBEWdEyvPqtQts5z5Su639wYEgo9n - wE96FuZQY46tDJyTJqt+ZJrzDYNCNenLNiqWFwxe/zxWzBuM58iQ9ur+6Ym5ldZxRpj8 - JJ2JlN+8/BPq8Wk9S0SAMAUumaOifHahGje65ULSbNA6Krngc4WuiBgliS4rekKjbPPq - Xcow== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=1/9ulr35We1VvK4OKOtO+SeDdjZAIuN626KlRGL51e8=; - b=NlA7PKzSo4EOEYlOtdfcH6TkSjbixH6f2CBb9+YjK0Qva2JOIWHVkd/xLF8DiM7+a5 - WsI9c+6xtz/2NumAXPb3HJFRydr5L7HJjDvivJsN7nfSEG7DEhH69XXTIvEZenriDrMi - Y/e4D3KpvoqbzqXxLHj8aeWp4qLjT8qZkPhI2+wLfkiFn3RhC0Z7dPFHKp5axa/eBHDl - /P2wVZuhjA35KPAjAYlfuV8D1o3WnCOLw0ZUU3WlqU13p/3JBnZcqIzYgbspdp0VpGuF - FgeJtSaGyjIGdX5dS4zCvctLEovV3BWeFzMmx5oz2ugpokl4iACnNbBecKLEvWf5onEA - Iiow== -X-Gm-Message-State: APjAAAW9K1sMiX2Ac7+xWeNX1IDTamXxZ1XKYfBb0FZh75fpIBHjo5qr - ZkS5JBqo+VG0fyrC0fmOg4c= -X-Google-Smtp-Source: - APXvYqwdqfkaKNsVj/z20Fl00qUooa5Fc8g4w6gy6KhAC3QgiEMz+qOhI4aMxTYoHDNd7Lx/skz8fQ== -X-Received: by 2002:a62:1883:: with SMTP id 125mr3012096pfy.166.1582704649041; - Wed, 26 Feb 2020 00:10:49 -0800 (PST) -Received: from anarsoul-thinkpad.lan (216-71-213-236.dyn.novuscom.net. - [216.71.213.236]) - by smtp.gmail.com with ESMTPSA id v7sm1679230pfn.61.2020.02.26.00.10.48 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 26 Feb 2020 00:10:48 -0800 (PST) -From: Vasily Khoruzhick <anarsoul@gmail.com> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, - Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Maxime Ripard <maxime@cerno.tech>, Chen-Yu Tsai <wens@csie.org>, - Andrzej Hajda <a.hajda@samsung.com>, - Neil Armstrong <narmstrong@baylibre.com>, - Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, - Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@siol.net>, - Torsten Duwe <duwe@suse.de>, Icenowy Zheng <icenowy@aosc.io>, - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>, - Stephan Gerhold <stephan@gerhold.net>, Mark Brown <broonie@kernel.org>, - Stephen Rothwell <sfr@canb.auug.org.au>, - Samuel Holland <samuel@sholland.org>, dri-devel@lists.freedesktop.org, - devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - linux-arm-kernel@lists.infradead.org -Subject: [PATCH v2 6/6] arm64: allwinner: a64: enable LCD-related hardware for - Pinebook -Date: Wed, 26 Feb 2020 00:10:11 -0800 -Message-Id: <20200226081011.1347245-7-anarsoul@gmail.com> -X-Mailer: git-send-email 2.25.0 -In-Reply-To: <20200226081011.1347245-1-anarsoul@gmail.com> -References: <20200226081011.1347245-1-anarsoul@gmail.com> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200226_001050_010315_52B91C3C -X-CRM114-Status: GOOD ( 14.29 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2607:f8b0:4864:20:0:0:0:441 listed in] - [list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [anarsoul[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -From: Icenowy Zheng <icenowy@aosc.io> - -Pinebook has an ANX6345 bridge connected to the RGB666 LCD output and -eDP panel input. The bridge is controlled via I2C that's connected to -R_I2C bus. - -Enable all this hardware in device tree. - -Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: Icenowy Zheng <icenowy@aosc.io> -Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com> ---- - .../dts/allwinner/sun50i-a64-pinebook.dts | 61 ++++++++++++++++++- - 1 file changed, 60 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -index c06c540e6c08..0033f6a43d98 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -@@ -48,6 +48,18 @@ lid_switch { - }; - }; - -+ panel_edp: panel-edp { -+ compatible = "neweast,wjfh116008a"; -+ backlight = <&backlight>; -+ power-supply = <®_dc1sw>; -+ -+ port { -+ panel_edp_in: endpoint { -+ remote-endpoint = <&anx6345_out_edp>; -+ }; -+ }; -+ }; -+ - reg_vbklt: vbklt { - compatible = "regulator-fixed"; - regulator-name = "vbklt"; -@@ -109,6 +121,10 @@ &dai { - status = "okay"; - }; - -+&de { -+ status = "okay"; -+}; -+ - &ehci0 { - phys = <&usbphy 0>; - phy-names = "usb"; -@@ -119,6 +135,10 @@ &ehci1 { - status = "okay"; - }; - -+&mixer0 { -+ status = "okay"; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins>; -@@ -177,12 +197,38 @@ &pwm { - status = "okay"; - }; - --/* The ANX6345 eDP-bridge is on r_i2c */ - &r_i2c { - clock-frequency = <100000>; - pinctrl-names = "default"; - pinctrl-0 = <&r_i2c_pl89_pins>; - status = "okay"; -+ -+ anx6345: anx6345@38 { -+ compatible = "analogix,anx6345"; -+ reg = <0x38>; -+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ -+ dvdd25-supply = <®_dldo2>; -+ dvdd12-supply = <®_fldo1>; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ anx6345_in: port@0 { -+ reg = <0>; -+ anx6345_in_tcon0: endpoint { -+ remote-endpoint = <&tcon0_out_anx6345>; -+ }; -+ }; -+ -+ anx6345_out: port@1 { -+ reg = <1>; -+ anx6345_out_edp: endpoint { -+ remote-endpoint = <&panel_edp_in>; -+ }; -+ }; -+ }; -+ }; - }; - - &r_pio { -@@ -357,6 +403,19 @@ &sound { - "MIC2", "Internal Microphone Right"; - }; - -+&tcon0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcd_rgb666_pins>; -+ -+ status = "okay"; -+}; -+ -+&tcon0_out { -+ tcon0_out_anx6345: endpoint { -+ remote-endpoint = <&anx6345_in_tcon0>; -+ }; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pb_pins>; diff --git a/Add-support-for-PinePhone-LCD-panel.patch b/Add-support-for-PinePhone-LCD-panel.patch deleted file mode 100644 index a8cfd239a..000000000 --- a/Add-support-for-PinePhone-LCD-panel.patch +++ /dev/null @@ -1,1121 +0,0 @@ -From patchwork Mon Mar 16 13:35:00 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng <icenowy@aosc.io> -X-Patchwork-Id: 11440381 -Return-Path: - <SRS0=bcds=5B=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 11A10913 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:37:33 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id D823220658 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:37:32 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="tONvF8xL"; - dkim=fail reason="signature verification failed" (1024-bit key) - header.d=aosc.io header.i=@aosc.io header.b="OUlaYo/F" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D823220658 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=jopI4a0lnvKcPoWIQDtsU3+Ud4Almv/gYxD7C8b74AM=; b=tONvF8xLa0JOdp - lOlDz1mTuocTtleB1tz2mVLFhSSnvPuEVHfe/+tTd0RxGBi7RgesJwyproaLem7CQJC9XdeBHMAZi - GNHPDPwS11F/9Q5j0RGa9hqzmBn4auXeKB00LRPKKoNjIlbcXQzzU8tkGtvEHi7rHOS+k1TFWgSaM - UlnBfqD6z8rSAHHbAEPb9+dE9/gMuw6M8wi+4UwFZY8i8yxkjP00OfL3P1GUjX5Z8m3OTawi2jupS - yVUtKm/2fMPvyfC2x1YWUbTWiJoY1bznqv51lHwfOL60HJobKpisG/QRBWTmCdk3khQTjVBhrf7vG - syf/hIWeb2vFaaPjGf+g==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpvt-0007Bn-Dl; Mon, 16 Mar 2020 13:37:29 +0000 -Received: from dodo.xh.is ([2001:19f0:8001:184d:5400:2ff:fe7b:e8bd]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpvq-0007Ax-Dr - for linux-arm-kernel@lists.infradead.org; Mon, 16 Mar 2020 13:37:28 +0000 -X-Spam: yes -X-Spam-Score: 6.6 / 99999 -X-Spam-Symbols: FROM_HAS_DN, RCPT_COUNT_TWELVE, FREEMAIL_TO, FROM_EQ_ENVFROM, - SUSPICIOUS_RECIPS, ARC_NA, RCVD_VIA_SMTP_AUTH, TAGGED_RCPT, - RCVD_COUNT_TWO, BROKEN_CONTENT_TYPE, TO_MATCH_ENVRCPT_SOME, - MIME_TRACE, ASN, TO_DN_SOME, FREEMAIL_ENVRCPT, - RCVD_NO_TLS_LAST, R_MISSING_CHARSET, MID_CONTAINS_FROM -Received: by dodo.xh.is (OpenSMTPD) with ESMTPSA id 040dde7f - (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); - Mon, 16 Mar 2020 06:37:23 -0700 (PDT) -Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: - icenowy@aosc.io) - by hermes.aosc.io (Postfix) with ESMTPSA id 4124F4C196; - Mon, 16 Mar 2020 13:37:10 +0000 (UTC) -From: Icenowy Zheng <icenowy@aosc.io> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - Rob Herring <robh+dt@kernel.org>, Maxime Ripard <mripard@kernel.org>, - Chen-Yu Tsai <wens@csie.org>, Ondrej Jirman <megous@megous.com> -Subject: [PATCH v2 2/5] dt-bindings: panel: add binding for Xingbangda XBD599 - panel -Date: Mon, 16 Mar 2020 21:35:00 +0800 -Message-Id: <20200316133503.144650-3-icenowy@aosc.io> -In-Reply-To: <20200316133503.144650-1-icenowy@aosc.io> -References: <20200316133503.144650-1-icenowy@aosc.io> -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aosc.io; s=dkim; - t=1584365841; - h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; - bh=k5dZsJ/q6rrXyDSO2nmOTWqvPhDI4C+8rut25MFD+Sk=; - b=OUlaYo/FyQ18QC+9N7l4EKPc9OYtnaEJ6rHTTmw5vWDG6bE4z3Dc0JryPNmmzGXHubXOqg - vnAixztTiQggjBI+b2WQ1uKGq0JCKJczHDkbgeZsFMqH3T47xzNMNhu6qv5Xdi+haGzyNU - I+cG4IhCqhUW5fahJroACP3Tm5imnHs= -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200316_063726_515303_1C969948 -X-CRM114-Status: GOOD ( 12.18 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2001:19f0:8001:184d:5400:2ff:fe7b:e8bd listed in] - [list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com, - linux-arm-kernel@lists.infradead.org, Icenowy Zheng <icenowy@aosc.io> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI LCD panel. - -Add its device tree binding. - -Signed-off-by: Icenowy Zheng <icenowy@aosc.io> ---- -Changes in v2: -- Example fix. -- Format fix. - - .../display/panel/xingbangda,xbd599.yaml | 50 +++++++++++++++++++ - 1 file changed, 50 insertions(+) - create mode 100644 Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml - -diff --git a/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml -new file mode 100644 -index 000000000000..b27bcf11198f ---- /dev/null -+++ b/Documentation/devicetree/bindings/display/panel/xingbangda,xbd599.yaml -@@ -0,0 +1,50 @@ -+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) -+%YAML 1.2 -+--- -+$id: http://devicetree.org/schemas/display/panel/xingbangda,xbd599.yaml# -+$schema: http://devicetree.org/meta-schemas/core.yaml# -+ -+title: Xingbangda XBD599 5.99in MIPI-DSI LCD panel -+ -+maintainers: -+ - Icenowy Zheng <icenowy@aosc.io> -+ -+allOf: -+ - $ref: panel-common.yaml# -+ -+properties: -+ compatible: -+ const: xingbangda,xbd599 -+ reg: true -+ backlight: true -+ reset-gpios: true -+ vcc-supply: -+ description: regulator that supplies the VCC voltage -+ iovcc-supply: -+ description: regulator that supplies the IOVCC voltage -+ -+required: -+ - compatible -+ - reg -+ - backlight -+ - vcc-supply -+ - iovcc-supply -+ -+additionalProperties: false -+ -+examples: -+ - | -+ dsi { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ panel@0 { -+ compatible = "xingbangda,xbd599"; -+ reg = <0>; -+ backlight = <&backlight>; -+ iovcc-supply = <®_dldo2>; -+ vcc-supply = <®_ldo_io0>; -+ }; -+ }; -+ -+... - -From patchwork Mon Mar 16 13:35:01 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng <icenowy@aosc.io> -X-Patchwork-Id: 11440383 -Return-Path: - <SRS0=bcds=5B=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 04CA013B1 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:37:50 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id D4F1120658 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:37:49 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="Jauls22L"; - dkim=fail reason="signature verification failed" (1024-bit key) - header.d=aosc.io header.i=@aosc.io header.b="OnKcz19D" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D4F1120658 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=TxGU4PiXBW274B0/qrcSGwYW6OdGxEdBGH504PoyIqM=; b=Jauls22LYE5NsX - fIslO/JUfhiN/XQQPdC2Q86jHiYF+bbm4r85Xyq09Ea+0sSxxchTeTfcHA7HMyk4GRem3FQJXH2yK - Rzs6OLQ/fL1rBVeMyXfJbyfR5Pq5ODc+lAI83DF0iPoCSFpcv40jQxkZnIkcrVvsbpilK1ord7fQ0 - 1hf6hPDvswsxcgSbirrbJMfnYSIEzsUT5rrFvv9ws9J8ukRYOqsS9lXTdrXk03uLskptzBYp5sYVw - Jb34Fq+gtFhgoUE8jONVa6Puexcl2grtch82d6/Lwcy3v7KtztAQyeFw88UVUF+rNx/Q67yiLMNiF - OPLOwCemY5TZ4eYEkWgA==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpwA-0007PW-5b; Mon, 16 Mar 2020 13:37:46 +0000 -Received: from dodo.xh.is ([2001:19f0:8001:184d:5400:2ff:fe7b:e8bd]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpw4-0007Ng-T4 - for linux-arm-kernel@lists.infradead.org; Mon, 16 Mar 2020 13:37:42 +0000 -X-Spam: yes -X-Spam-Score: 6.6 / 99999 -X-Spam-Symbols: MID_CONTAINS_FROM, FREEMAIL_TO, RCVD_COUNT_TWO, - FROM_EQ_ENVFROM, ASN, SUSPICIOUS_RECIPS, RCVD_VIA_SMTP_AUTH, - TO_DN_SOME, FREEMAIL_ENVRCPT, TAGGED_RCPT, RCVD_NO_TLS_LAST, - ARC_NA, R_MISSING_CHARSET, BROKEN_CONTENT_TYPE, - RCPT_COUNT_TWELVE, FROM_HAS_DN, TO_MATCH_ENVRCPT_SOME, - MIME_TRACE -Received: by dodo.xh.is (OpenSMTPD) with ESMTPSA id 2c12d690 - (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); - Mon, 16 Mar 2020 06:37:40 -0700 (PDT) -Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: - icenowy@aosc.io) - by hermes.aosc.io (Postfix) with ESMTPSA id E8D484C196; - Mon, 16 Mar 2020 13:37:25 +0000 (UTC) -From: Icenowy Zheng <icenowy@aosc.io> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - Rob Herring <robh+dt@kernel.org>, Maxime Ripard <mripard@kernel.org>, - Chen-Yu Tsai <wens@csie.org>, Ondrej Jirman <megous@megous.com> -Subject: [PATCH v2 3/5] drm: panel: add Xingbangda XBD599 panel -Date: Mon, 16 Mar 2020 21:35:01 +0800 -Message-Id: <20200316133503.144650-4-icenowy@aosc.io> -In-Reply-To: <20200316133503.144650-1-icenowy@aosc.io> -References: <20200316133503.144650-1-icenowy@aosc.io> -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aosc.io; s=dkim; - t=1584365858; - h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; - bh=r0lAtSWiBn8DOOqWzP8ERo3YcHe6/FA1xbvH5pEdRgw=; - b=OnKcz19DT6MgLt+rgH0qVaATJ7fQDnAVAXaZvZQM3agXAI3XDxnHoi+2DeVncogjT1bp0P - ljZ0XWs8BoeGtQ0sIdrAMvsBTCbnxBJHQqa3OWxS5inT7+90pxlCDVLERhwqIefwzeZDVJ - liP/v36WTzYINROF0nSPe1azOWltJ/g= -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200316_063740_985291_78D98883 -X-CRM114-Status: GOOD ( 20.73 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2001:19f0:8001:184d:5400:2ff:fe7b:e8bd listed in] - [list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com, - linux-arm-kernel@lists.infradead.org, Icenowy Zheng <icenowy@aosc.io> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -Xingbangda XBD599 is a 5.99" 720x1440 MIPI-DSI IPS LCD panel made by -Xingbangda, which is used on PinePhone final assembled phones. - -Add support for it. - -Signed-off-by: Icenowy Zheng <icenowy@aosc.io> ---- -Changes in v2: -- Raised copyright info to 2020. -- Sort panel operation functions. -- Sort inclusion. - - drivers/gpu/drm/panel/Kconfig | 9 + - drivers/gpu/drm/panel/Makefile | 1 + - .../gpu/drm/panel/panel-xingbangda-xbd599.c | 366 ++++++++++++++++++ - 3 files changed, 376 insertions(+) - create mode 100644 drivers/gpu/drm/panel/panel-xingbangda-xbd599.c - -diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig -index a1723c1b5fbf..cf0c59015a44 100644 ---- a/drivers/gpu/drm/panel/Kconfig -+++ b/drivers/gpu/drm/panel/Kconfig -@@ -433,6 +433,15 @@ config DRM_PANEL_TRULY_NT35597_WQXGA - Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI - Video Mode panel - -+config DRM_PANEL_XINGBANGDA_XBD599 -+ tristate "Xingbangda XBD599 panel" -+ depends on OF -+ depends on DRM_MIPI_DSI -+ depends on BACKLIGHT_CLASS_DEVICE -+ help -+ Say Y here if you want to enable support for the Xingbangda XBD599 -+ MIPI DSI Video Mode panel. -+ - config DRM_PANEL_XINPENG_XPP055C272 - tristate "Xinpeng XPP055C272 panel driver" - depends on OF -diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile -index 96a883cd6630..c84ed5215984 100644 ---- a/drivers/gpu/drm/panel/Makefile -+++ b/drivers/gpu/drm/panel/Makefile -@@ -46,4 +46,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o - obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o - obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o - obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o -+obj-$(CONFIG_DRM_PANEL_XINGBANGDA_XBD599) += panel-xingbangda-xbd599.o - obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o -diff --git a/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c -new file mode 100644 -index 000000000000..8d56b6579111 ---- /dev/null -+++ b/drivers/gpu/drm/panel/panel-xingbangda-xbd599.c -@@ -0,0 +1,366 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Xingbangda XBD599 MIPI-DSI panel driver -+ * -+ * Copyright (C) 2019-2020 Icenowy Zheng <icenowy@aosc.io> -+ * -+ * Based on panel-rocktech-jh057n00900.c, which is: -+ * Copyright (C) Purism SPC 2019 -+ */ -+ -+#include <linux/delay.h> -+#include <linux/gpio/consumer.h> -+#include <linux/mod_devicetable.h> -+#include <linux/module.h> -+#include <linux/of_device.h> -+#include <linux/regulator/consumer.h> -+ -+#include <drm/drm_mipi_dsi.h> -+#include <drm/drm_modes.h> -+#include <drm/drm_panel.h> -+#include <drm/drm_print.h> -+ -+/* Manufacturer specific Commands send via DSI */ -+#define ST7703_CMD_ALL_PIXEL_OFF 0x22 -+#define ST7703_CMD_ALL_PIXEL_ON 0x23 -+#define ST7703_CMD_SETDISP 0xB2 -+#define ST7703_CMD_SETRGBIF 0xB3 -+#define ST7703_CMD_SETCYC 0xB4 -+#define ST7703_CMD_SETBGP 0xB5 -+#define ST7703_CMD_SETVCOM 0xB6 -+#define ST7703_CMD_SETOTP 0xB7 -+#define ST7703_CMD_SETPOWER_EXT 0xB8 -+#define ST7703_CMD_SETEXTC 0xB9 -+#define ST7703_CMD_SETMIPI 0xBA -+#define ST7703_CMD_SETVDC 0xBC -+#define ST7703_CMD_SETSCR 0xC0 -+#define ST7703_CMD_SETPOWER 0xC1 -+#define ST7703_CMD_UNK_C6 0xC6 -+#define ST7703_CMD_SETPANEL 0xCC -+#define ST7703_CMD_SETGAMMA 0xE0 -+#define ST7703_CMD_SETEQ 0xE3 -+#define ST7703_CMD_SETGIP1 0xE9 -+#define ST7703_CMD_SETGIP2 0xEA -+ -+static const char * const regulator_names[] = { -+ "iovcc", -+ "vcc", -+}; -+ -+struct xbd599 { -+ struct device *dev; -+ struct drm_panel panel; -+ struct gpio_desc *reset_gpio; -+ struct regulator_bulk_data supplies[ARRAY_SIZE(regulator_names)]; -+ bool prepared; -+}; -+ -+static inline struct xbd599 *panel_to_xbd599(struct drm_panel *panel) -+{ -+ return container_of(panel, struct xbd599, panel); -+} -+ -+#define dsi_dcs_write_seq(dsi, cmd, seq...) do { \ -+ static const u8 d[] = { seq }; \ -+ int ret; \ -+ ret = mipi_dsi_dcs_write(dsi, cmd, d, ARRAY_SIZE(d)); \ -+ if (ret < 0) \ -+ return ret; \ -+ } while (0) -+ -+static int xbd599_init_sequence(struct xbd599 *ctx) -+{ -+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); -+ struct device *dev = ctx->dev; -+ int ret; -+ -+ /* -+ * Init sequence was supplied by the panel vendor. -+ */ -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEXTC, -+ 0xF1, 0x12, 0x83); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETMIPI, -+ 0x33, 0x81, 0x05, 0xF9, 0x0E, 0x0E, 0x20, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, -+ 0x00, 0x91, 0x0a, 0x00, 0x00, 0x02, 0x4F, 0x11, -+ 0x00, 0x00, 0x37); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER_EXT, -+ 0x25, 0x22, 0x20, 0x03); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETRGBIF, -+ 0x10, 0x10, 0x05, 0x05, 0x03, 0xFF, 0x00, 0x00, -+ 0x00, 0x00); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETSCR, -+ 0x73, 0x73, 0x50, 0x50, 0x00, 0xC0, 0x08, 0x70, -+ 0x00); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVDC, 0x4E); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPANEL, 0x0B); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETCYC, 0x80); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETDISP, 0xF0, 0x12, 0xF0); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETEQ, -+ 0x00, 0x00, 0x0B, 0x0B, 0x10, 0x10, 0x00, 0x00, -+ 0x00, 0x00, 0xFF, 0x00, 0xC0, 0x10); -+ dsi_dcs_write_seq(dsi, 0xC6, 0x01, 0x00, 0xFF, 0xFF, 0x00); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETPOWER, -+ 0x74, 0x00, 0x32, 0x32, 0x77, 0xF1, 0xFF, 0xFF, -+ 0xCC, 0xCC, 0x77, 0x77); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETBGP, 0x07, 0x07); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETVCOM, 0x2C, 0x2C); -+ dsi_dcs_write_seq(dsi, 0xBF, 0x02, 0x11, 0x00); -+ -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP1, -+ 0x82, 0x10, 0x06, 0x05, 0xA2, 0x0A, 0xA5, 0x12, -+ 0x31, 0x23, 0x37, 0x83, 0x04, 0xBC, 0x27, 0x38, -+ 0x0C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, -+ 0x03, 0x00, 0x00, 0x00, 0x75, 0x75, 0x31, 0x88, -+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x13, 0x88, 0x64, -+ 0x64, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -+ 0x02, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGIP2, -+ 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x46, 0x02, 0x88, -+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x64, 0x88, 0x13, -+ 0x57, 0x13, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -+ 0x75, 0x88, 0x23, 0x14, 0x00, 0x00, 0x02, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0A, -+ 0xA5, 0x00, 0x00, 0x00, 0x00); -+ dsi_dcs_write_seq(dsi, ST7703_CMD_SETGAMMA, -+ 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, 0x35, -+ 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, 0x12, -+ 0x18, 0x00, 0x09, 0x0D, 0x23, 0x27, 0x3C, 0x41, -+ 0x35, 0x07, 0x0D, 0x0E, 0x12, 0x13, 0x10, 0x12, -+ 0x12, 0x18); -+ msleep(20); -+ -+ ret = mipi_dsi_dcs_exit_sleep_mode(dsi); -+ if (ret < 0) { -+ DRM_DEV_ERROR(dev, "Failed to exit sleep mode\n"); -+ return ret; -+ } -+ msleep(250); -+ -+ ret = mipi_dsi_dcs_set_display_on(dsi); -+ if (ret) -+ return ret; -+ msleep(50); -+ -+ DRM_DEV_DEBUG_DRIVER(dev, "Panel init sequence done\n"); -+ return 0; -+} -+ -+static int xbd599_prepare(struct drm_panel *panel) -+{ -+ struct xbd599 *ctx = panel_to_xbd599(panel); -+ int ret; -+ -+ if (ctx->prepared) -+ return 0; -+ -+ ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); -+ if (ret) -+ return ret; -+ -+ DRM_DEV_DEBUG_DRIVER(ctx->dev, "Resetting the panel\n"); -+ gpiod_set_value_cansleep(ctx->reset_gpio, 1); -+ usleep_range(20, 40); -+ gpiod_set_value_cansleep(ctx->reset_gpio, 0); -+ msleep(20); -+ -+ ctx->prepared = true; -+ -+ return 0; -+} -+ -+static int xbd599_enable(struct drm_panel *panel) -+{ -+ struct xbd599 *ctx = panel_to_xbd599(panel); -+ int ret; -+ -+ ret = xbd599_init_sequence(ctx); -+ if (ret < 0) { -+ DRM_DEV_ERROR(ctx->dev, "Panel init sequence failed: %d\n", -+ ret); -+ return ret; -+ } -+ -+ return 0; -+} -+ -+static int xbd599_disable(struct drm_panel *panel) -+{ -+ struct xbd599 *ctx = panel_to_xbd599(panel); -+ struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev); -+ -+ return mipi_dsi_dcs_set_display_off(dsi); -+} -+ -+static int xbd599_unprepare(struct drm_panel *panel) -+{ -+ struct xbd599 *ctx = panel_to_xbd599(panel); -+ -+ if (!ctx->prepared) -+ return 0; -+ -+ gpiod_set_value_cansleep(ctx->reset_gpio, 1); -+ regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); -+ ctx->prepared = false; -+ -+ return 0; -+} -+ -+static const struct drm_display_mode xbd599_default_mode = { -+ .hdisplay = 720, -+ .hsync_start = 720 + 40, -+ .hsync_end = 720 + 40 + 40, -+ .htotal = 720 + 40 + 40 + 40, -+ .vdisplay = 1440, -+ .vsync_start = 1440 + 18, -+ .vsync_end = 1440 + 18 + 10, -+ .vtotal = 1440 + 18 + 10 + 17, -+ .vrefresh = 60, -+ .clock = 69000, -+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, -+ -+ .width_mm = 68, -+ .height_mm = 136, -+ .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, -+}; -+ -+static int xbd599_get_modes(struct drm_panel *panel, -+ struct drm_connector *connector) -+{ -+ struct xbd599 *ctx = panel_to_xbd599(panel); -+ struct drm_display_mode *mode; -+ -+ mode = drm_mode_duplicate(connector->dev, &xbd599_default_mode); -+ if (!mode) { -+ DRM_DEV_ERROR(ctx->dev, "Failed to add mode\n"); -+ return -ENOMEM; -+ } -+ -+ drm_mode_set_name(mode); -+ -+ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; -+ connector->display_info.width_mm = mode->width_mm; -+ connector->display_info.height_mm = mode->height_mm; -+ drm_mode_probed_add(connector, mode); -+ -+ return 1; -+} -+ -+static const struct drm_panel_funcs xbd599_drm_funcs = { -+ .prepare = xbd599_prepare, -+ .enable = xbd599_enable, -+ .disable = xbd599_disable, -+ .unprepare = xbd599_unprepare, -+ .get_modes = xbd599_get_modes, -+}; -+ -+static int xbd599_probe(struct mipi_dsi_device *dsi) -+{ -+ struct device *dev = &dsi->dev; -+ struct xbd599 *ctx; -+ int i, ret; -+ -+ ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); -+ if (!ctx) -+ return -ENOMEM; -+ -+ for (i = 0; i < ARRAY_SIZE(ctx->supplies); i++) -+ ctx->supplies[i].supply = regulator_names[i]; -+ -+ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), -+ ctx->supplies); -+ if (ret < 0) { -+ DRM_DEV_ERROR(&dsi->dev, "cannot get regulators\n"); -+ return ret; -+ } -+ -+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); -+ if (IS_ERR(ctx->reset_gpio)) { -+ DRM_DEV_ERROR(dev, "cannot get reset gpio\n"); -+ return PTR_ERR(ctx->reset_gpio); -+ } -+ -+ mipi_dsi_set_drvdata(dsi, ctx); -+ -+ ctx->dev = dev; -+ -+ dsi->lanes = 4; -+ dsi->format = MIPI_DSI_FMT_RGB888; -+ dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE; -+ -+ drm_panel_init(&ctx->panel, &dsi->dev, &xbd599_drm_funcs, -+ DRM_MODE_CONNECTOR_DSI); -+ -+ ret = drm_panel_of_backlight(&ctx->panel); -+ if (ret) -+ return ret; -+ -+ drm_panel_add(&ctx->panel); -+ -+ ret = mipi_dsi_attach(dsi); -+ if (ret < 0) { -+ DRM_DEV_ERROR(dev, "mipi_dsi_attach failed. Is host ready?\n"); -+ drm_panel_remove(&ctx->panel); -+ return ret; -+ } -+ -+ DRM_DEV_INFO(dev, "%ux%u@%u %ubpp dsi %udl - ready\n", -+ xbd599_default_mode.hdisplay, -+ xbd599_default_mode.vdisplay, -+ xbd599_default_mode.vrefresh, -+ mipi_dsi_pixel_format_to_bpp(dsi->format), dsi->lanes); -+ -+ return 0; -+} -+ -+static void xbd599_shutdown(struct mipi_dsi_device *dsi) -+{ -+ struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi); -+ int ret; -+ -+ ret = drm_panel_unprepare(&ctx->panel); -+ if (ret < 0) -+ DRM_DEV_ERROR(&dsi->dev, "Failed to unprepare panel: %d\n", -+ ret); -+} -+ -+static int xbd599_remove(struct mipi_dsi_device *dsi) -+{ -+ struct xbd599 *ctx = mipi_dsi_get_drvdata(dsi); -+ int ret; -+ -+ xbd599_shutdown(dsi); -+ -+ ret = mipi_dsi_detach(dsi); -+ if (ret < 0) -+ DRM_DEV_ERROR(&dsi->dev, "Failed to detach from DSI host: %d\n", -+ ret); -+ -+ drm_panel_remove(&ctx->panel); -+ -+ return 0; -+} -+ -+static const struct of_device_id xbd599_of_match[] = { -+ { .compatible = "xingbangda,xbd599", }, -+ { /* sentinel */ } -+}; -+MODULE_DEVICE_TABLE(of, xbd599_of_match); -+ -+static struct mipi_dsi_driver xbd599_driver = { -+ .probe = xbd599_probe, -+ .remove = xbd599_remove, -+ .shutdown = xbd599_shutdown, -+ .driver = { -+ .name = "panel-xingbangda-xbd599", -+ .of_match_table = xbd599_of_match, -+ }, -+}; -+module_mipi_dsi_driver(xbd599_driver); -+ -+MODULE_AUTHOR("Icenowy Zheng <icenowy@aosc.io>"); -+MODULE_DESCRIPTION("DRM driver for Xingbangda XBD599 MIPI DSI panel"); -+MODULE_LICENSE("GPL v2"); - -From patchwork Mon Mar 16 13:35:02 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng <icenowy@aosc.io> -X-Patchwork-Id: 11440385 -Return-Path: - <SRS0=bcds=5B=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3551613B1 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:38:04 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 12F1120658 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:38:04 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="FXIsTC05"; - dkim=fail reason="signature verification failed" (1024-bit key) - header.d=aosc.io header.i=@aosc.io header.b="quP9cKqY" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 12F1120658 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=Ok8n9BLE8SnVMofHytH8sKJgOZAdRVkUgENm5rZmFlM=; b=FXIsTC05LwmLW8 - JIUJYcuGPwnerCktLqhIRVMIoUACV+PBjwCaXLEWUaLpYsx/fkH/6JQM4BBzg1AyfDq3atRF/nnBb - XD4OWFZC8nCVDiR7dqlEAxyOti5i1hsKYi1uKkOlwNdMx50Vklm+IEr5nd2rtKoWSFgNvr0LIQmYR - jk2fY+4TpwdEjCfSfCDoDlZsCssNnoQsaN2VRgkV0bKKSaQ+OTufaRoG4E3Ktjp2f0+IE0+saR8OT - ah8mB5WNxc5/MFTGoh8hq8aF2GlOfdhjRuNORBTjH7FRmGVFIsFY1dfMmTBQOnsDrxzz2guZVksZN - nf60u+PrkKp4zaAGdb8A==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpwP-0007eD-4F; Mon, 16 Mar 2020 13:38:01 +0000 -Received: from dodo.xh.is ([2001:19f0:8001:184d:5400:2ff:fe7b:e8bd]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpwL-0007bo-FZ - for linux-arm-kernel@lists.infradead.org; Mon, 16 Mar 2020 13:37:58 +0000 -X-Spam: yes -X-Spam-Score: 6.6 / 99999 -X-Spam-Symbols: TO_DN_SOME, FREEMAIL_ENVRCPT, TO_MATCH_ENVRCPT_SOME, - MID_CONTAINS_FROM, RCVD_NO_TLS_LAST, RCVD_COUNT_TWO, - SUSPICIOUS_RECIPS, FROM_EQ_ENVFROM, ASN, R_MISSING_CHARSET, - TAGGED_RCPT, RCPT_COUNT_TWELVE, FREEMAIL_TO, ARC_NA, - RCVD_VIA_SMTP_AUTH, FROM_HAS_DN, BROKEN_CONTENT_TYPE, - MIME_TRACE -Received: by dodo.xh.is (OpenSMTPD) with ESMTPSA id d83d4fb8 - (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); - Mon, 16 Mar 2020 06:37:56 -0700 (PDT) -Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: - icenowy@aosc.io) - by hermes.aosc.io (Postfix) with ESMTPSA id 904224CA5E; - Mon, 16 Mar 2020 13:37:47 +0000 (UTC) -From: Icenowy Zheng <icenowy@aosc.io> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - Rob Herring <robh+dt@kernel.org>, Maxime Ripard <mripard@kernel.org>, - Chen-Yu Tsai <wens@csie.org>, Ondrej Jirman <megous@megous.com> -Subject: [PATCH v2 4/5] drm/sun4i: sun6i_mipi_dsi: fix horizontal timing - calculation -Date: Mon, 16 Mar 2020 21:35:02 +0800 -Message-Id: <20200316133503.144650-5-icenowy@aosc.io> -In-Reply-To: <20200316133503.144650-1-icenowy@aosc.io> -References: <20200316133503.144650-1-icenowy@aosc.io> -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aosc.io; s=dkim; - t=1584365875; - h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; - bh=I9YOqCvznKIa+lsR+6QqRxbL27UJzO8C40dZ4CFdKfA=; - b=quP9cKqYYDD232RMGPzPh7YZaHSfncJHKNCNVORZvb7EzFJyswyLBv7GzoCIM/6KvGiH5Z - xbpDQs4fRsR5P/Cp7hTcnx+MoFGO3XV0SD6R82gTqKwejhi4j3ozUQiiIMTMC0P2NzAMb0 - tDkRk8CMwU/bfv3YHZlXvgGaYrZkMd8= -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200316_063757_563065_ED0BFB74 -X-CRM114-Status: GOOD ( 13.77 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2001:19f0:8001:184d:5400:2ff:fe7b:e8bd listed in] - [list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com, - linux-arm-kernel@lists.infradead.org, Icenowy Zheng <icenowy@aosc.io> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -The max() function call in horizontal timing calculation shouldn't pad a -length already subtracted with overhead to overhead, instead it should -only prevent the set timing to underflow. - -Signed-off-by: Icenowy Zheng <icenowy@aosc.io> ---- -No changes in v2. - - drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c -index 059939789730..5f2313c40328 100644 ---- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c -+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c -@@ -555,7 +555,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi, - */ - #define HSA_PACKET_OVERHEAD 10 - hsa = max((unsigned int)HSA_PACKET_OVERHEAD, -- (mode->hsync_end - mode->hsync_start) * Bpp - HSA_PACKET_OVERHEAD); -+ (mode->hsync_end - mode->hsync_start) * Bpp) - HSA_PACKET_OVERHEAD; - - /* - * The backporch is set using a blanking packet (4 -@@ -564,7 +564,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi, - */ - #define HBP_PACKET_OVERHEAD 6 - hbp = max((unsigned int)HBP_PACKET_OVERHEAD, -- (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD); -+ (mode->htotal - mode->hsync_end) * Bpp) - HBP_PACKET_OVERHEAD; - - /* - * The frontporch is set using a sync event (4 bytes) -@@ -574,7 +574,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi, - */ - #define HFP_PACKET_OVERHEAD 16 - hfp = max((unsigned int)HFP_PACKET_OVERHEAD, -- (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD); -+ (mode->hsync_start - mode->hdisplay) * Bpp) - HFP_PACKET_OVERHEAD; - - /* - * The blanking is set using a sync event (4 bytes) -@@ -583,8 +583,8 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi, - */ - #define HBLK_PACKET_OVERHEAD 10 - hblk = max((unsigned int)HBLK_PACKET_OVERHEAD, -- (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp - -- HBLK_PACKET_OVERHEAD); -+ (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp) - -+ HBLK_PACKET_OVERHEAD; - - /* - * And I'm not entirely sure what vblk is about. The driver in - -From patchwork Mon Mar 16 13:35:03 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng <icenowy@aosc.io> -X-Patchwork-Id: 11440387 -Return-Path: - <SRS0=bcds=5B=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7CB09913 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:38:25 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 5A3CF20663 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 16 Mar 2020 13:38:25 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="Dprxe0zU"; - dkim=fail reason="signature verification failed" (1024-bit key) - header.d=aosc.io header.i=@aosc.io header.b="gvv4Mt/p" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5A3CF20663 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=rXiGf8B3g87rqGluDPPXHBPgLye0619C2/zq9YpC9mk=; b=Dprxe0zU40XkWN - m+hX9Icm5bhrdxLR5kmA+FetKifUp/T2toYOeoCfxA03wi/xuH83eTC/NNNeq2exi4vAQPAiKe4kJ - VnYn8drWuau9JdHE7b/KFeIhkULj3sy4MxJnnpxYCj63wXO+BDHm00cs1r8PoIzBtkP4DksqayKx7 - wGb6miY8D9JjeHzt6zhSeG5JXUzPatdZnw/q8zhpgoOk8Y1QDjKgVEgypDPBDp95TtiEO5wv/uPhf - mIFdAYoKy01EX0IF5/r/kyAEQTh95K7IXUz6SJM00+3rHPB7Ut7n48eG0C2qJhljJEsSEWJ1DxbjM - X629GHE95cSsRkq5gd9A==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpwj-0007wT-EM; Mon, 16 Mar 2020 13:38:21 +0000 -Received: from dodo.xh.is ([2001:19f0:8001:184d:5400:2ff:fe7b:e8bd]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jDpwZ-0007oi-Fv - for linux-arm-kernel@lists.infradead.org; Mon, 16 Mar 2020 13:38:13 +0000 -X-Spam: yes -X-Spam-Score: 6.6 / 99999 -X-Spam-Symbols: FREEMAIL_ENVRCPT, TO_MATCH_ENVRCPT_SOME, FROM_EQ_ENVFROM, - RCVD_VIA_SMTP_AUTH, FREEMAIL_TO, RCVD_COUNT_TWO, ARC_NA, - FROM_HAS_DN, TO_DN_SOME, RCPT_COUNT_TWELVE, RCVD_NO_TLS_LAST, - MIME_TRACE, R_MISSING_CHARSET, TAGGED_RCPT, - BROKEN_CONTENT_TYPE, MID_CONTAINS_FROM, ASN, SUSPICIOUS_RECIPS -Received: by dodo.xh.is (OpenSMTPD) with ESMTPSA id 3f67ee70 - (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); - Mon, 16 Mar 2020 06:38:10 -0700 (PDT) -Received: from localhost (localhost [127.0.0.1]) (Authenticated sender: - icenowy@aosc.io) - by hermes.aosc.io (Postfix) with ESMTPSA id 718DE4CA5E; - Mon, 16 Mar 2020 13:38:00 +0000 (UTC) -From: Icenowy Zheng <icenowy@aosc.io> -To: Thierry Reding <thierry.reding@gmail.com>, - Sam Ravnborg <sam@ravnborg.org>, - Rob Herring <robh+dt@kernel.org>, Maxime Ripard <mripard@kernel.org>, - Chen-Yu Tsai <wens@csie.org>, Ondrej Jirman <megous@megous.com> -Subject: [PATCH v2 5/5] arm64: allwinner: dts: a64: add LCD-related device - nodes for PinePhone -Date: Mon, 16 Mar 2020 21:35:03 +0800 -Message-Id: <20200316133503.144650-6-icenowy@aosc.io> -In-Reply-To: <20200316133503.144650-1-icenowy@aosc.io> -References: <20200316133503.144650-1-icenowy@aosc.io> -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aosc.io; s=dkim; - t=1584365889; - h=from:subject:date:message-id:to:cc:mime-version:content-transfer-encoding:in-reply-to:references; - bh=vdJB1xaYREfjx8A1fc+UP5D7fCK/5ZczA3DRbH+hq08=; - b=gvv4Mt/ppP1U5dpUHA5n8qTEzN2afgaBkT+M0HHnD2QpiRBO0b4PVtnd5WiFOkLgnHm3Cm - uS+WljMpibhdzup+UJWKXGt9n3IFyflFgVAqemHSAFN5h+VJ1vskMjGMiiu1teCs1nUAhP - zGvHhAcI1EY4J2t587DsvuxH/d6lNFs= -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200316_063811_575168_FBAB174A -X-CRM114-Status: GOOD ( 11.16 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2001:19f0:8001:184d:5400:2ff:fe7b:e8bd listed in] - [list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, - dri-devel@lists.freedesktop.org, linux-sunxi@googlegroups.com, - linux-arm-kernel@lists.infradead.org, Icenowy Zheng <icenowy@aosc.io> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -PinePhone uses PWM backlight and a XBD599 LCD panel over DSI for -display. - -Add its device nodes. - -Signed-off-by: Icenowy Zheng <icenowy@aosc.io> ---- -No changes in v2. - - .../dts/allwinner/sun50i-a64-pinephone.dtsi | 37 +++++++++++++++++++ - 1 file changed, 37 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi -index cefda145c3c9..96d9150423e0 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi -@@ -16,6 +16,15 @@ aliases { - serial0 = &uart0; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>; -+ default-brightness-level = <15>; -+ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ -+ power-supply = <®_ldo_io0>; -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; -@@ -84,6 +93,30 @@ &dai { - status = "okay"; - }; - -+&de { -+ status = "okay"; -+}; -+ -+&dphy { -+ status = "okay"; -+}; -+ -+&dsi { -+ vcc-dsi-supply = <®_dldo1>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "xingbangda,xbd599"; -+ reg = <0>; -+ reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */ -+ iovcc-supply = <®_dldo2>; -+ vcc-supply = <®_ldo_io0>; -+ backlight = <&backlight>; -+ }; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -188,6 +221,10 @@ &r_pio { - */ - }; - -+&r_pwm { -+ status = "okay"; -+}; -+ - &r_rsb { - status = "okay"; - diff --git a/Add-support-for-the-pine64-Pinebook-Pro.patch b/Add-support-for-the-pine64-Pinebook-Pro.patch deleted file mode 100644 index d35ee323b..000000000 --- a/Add-support-for-the-pine64-Pinebook-Pro.patch +++ /dev/null @@ -1,1360 +0,0 @@ -From patchwork Wed Mar 4 21:30:22 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Tobias Schramm <t.schramm@manjaro.org> -X-Patchwork-Id: 11420805 -Return-Path: - <SRS0=pU4t=4V=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 82C16139A - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 21:31:11 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 6132920828 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 21:31:11 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="HKFX/pPT" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6132920828 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=manjaro.org -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To - :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: - Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: - List-Owner; bh=w5RNMezlBKSJB0tCSEk4sJPOWhOWYWdtbkVGYQNDXFI=; b=HKFX/pPTL0fcDF - R9qC74ZcvmWsNe9+XRGoe/CFa6E5wpufnBwGVBlWAMf6TP3NxrI2eK9XCD6TAmQW18/85HychEgId - qGCU/seUa+UV6WOVWgQ5g3Ea+6kBaMM4cYYgsYaK3h3VlUQQtM3SvPArRNF1VYcj1uZiwX1ek7PO6 - B8Btks26iWloBhYYW62B5FA9wYcw0+Bcg2DE9NyPZ1i63GA6P8esgYpDnGLkmWehpZDYy8tJK00rE - ABbvK0xNgIIKCbbomExLAdMHg8PO14V/BNR1Bf9QBVZpnxt8xfr7GG33Znp7N1Nf19YJecmdUw5e2 - FnFUvjvPmLh4pIdxyp6Q==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9bbh-0003te-QG; Wed, 04 Mar 2020 21:31:09 +0000 -Received: from mail.manjaro.org ([176.9.38.148]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9bbe-0003tI-SU; Wed, 04 Mar 2020 21:31:08 +0000 -Received: from localhost (localhost [127.0.0.1]) - by mail.manjaro.org (Postfix) with ESMTP id 9C0823701125; - Wed, 4 Mar 2020 22:31:05 +0100 (CET) -X-Virus-Scanned: Debian amavisd-new at manjaro.org -Received: from mail.manjaro.org ([127.0.0.1]) - by localhost (manjaro.org [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id fkagLefmcj9V; Wed, 4 Mar 2020 22:31:03 +0100 (CET) -From: Tobias Schramm <t.schramm@manjaro.org> -To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Heiko Stuebner <heiko@sntech.de>, Andy Yan <andy.yan@rock-chips.com>, - Johan Jonker <jbx6244@gmail.com> -Subject: [PATCH v4 1/2] dt-bindings: Add doc for Pine64 Pinebook Pro -Date: Wed, 4 Mar 2020 22:30:22 +0100 -Message-Id: <20200304213023.689983-2-t.schramm@manjaro.org> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200304_133107_065063_D9B62F20 -X-CRM114-Status: UNSURE ( 6.54 ) -X-CRM114-Notice: Please train this message. -X-Spam-Score: 0.0 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (0.0 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [176.9.38.148 listed in list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, - Emmanuel Vadot <manu@freebsd.org>, Alexis Ballier <aballier@gentoo.org>, - Tobias Schramm <t.schramm@manjaro.org>, Rob Herring <robh@kernel.org>, - Katsuhiro Suzuki <katsuhiro@katsuster.net>, linux-kernel@vger.kernel.org, - Douglas Anderson <dianders@chromium.org>, - Kever Yang <kever.yang@rock-chips.com>, - Markus Reichl <m.reichl@fivetechno.de>, - linux-rockchip@lists.infradead.org, Matthias Kaehlcke <mka@chromium.org>, - Jagan Teki <jagan@amarulasolutions.com>, Nick Xie <nick@khadas.com>, - Vivek Unune <npcomplete13@gmail.com> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -From: Emmanuel Vadot <manu@freebsd.org> - -Add a compatible for Pine64 Pinebook Pro - -Signed-off-by: Emmanuel Vadot <manu@freebsd.org> -Reviewed-by: Rob Herring <robh@kernel.org> ---- - Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml -index 874b0eaa2a75..17f0ab0b8832 100644 ---- a/Documentation/devicetree/bindings/arm/rockchip.yaml -+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml -@@ -415,6 +415,11 @@ properties: - - const: pine64,rockpro64 - - const: rockchip,rk3399 - -+ - description: Pine64 PinebookPro -+ items: -+ - const: pine64,pinebook-pro -+ - const: rockchip,rk3399 -+ - - description: Radxa Rock - items: - - const: radxa,rock - -From patchwork Wed Mar 4 21:30:23 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Tobias Schramm <t.schramm@manjaro.org> -X-Patchwork-Id: 11420809 -Return-Path: - <SRS0=pU4t=4V=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F1D201395 - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 21:31:26 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id C71432084E - for <patchwork-linux-arm@patchwork.kernel.org>; - Wed, 4 Mar 2020 21:31:26 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="aaCRZACh" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C71432084E -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=manjaro.org -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=T4TZmXOPB1yBA/Cy6SktfxnDKyf4qoHPOaLfabPHwCI=; b=aaCRZAChIzBlJw - Ccci1IXygLymnzWTblUo/AuYY6tojwziDu90m20Ec1bJbXl27yBAYEeR3CEj4ELNSOiGKzqSpqE+k - rb7uRA7jjVfvj/gJJ2IFxGtd1CKBI6e0S+1qyN/l8ET6UykVavViDDtrsFHt7iD3X2+Bgbs9R8VLi - hB6gZwnuOsWb8JqpNLfrOPiCrkqTega/z2olbgct2T/Mb/85eH/l+SvyINCfyQCQyuOk9d2blYcA9 - 1i4TJi3MpRw7Pa68BnGPO7zK/ttk4SRxKYPi3On226GN5bGg9jNgSEpALbI+CK0wrYS0mIxGg0q7k - Gy09LxFJP7I1IxV6BR2w==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9bbv-00047c-LS; Wed, 04 Mar 2020 21:31:23 +0000 -Received: from mail.manjaro.org ([176.9.38.148]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j9bbk-0003vp-EA; Wed, 04 Mar 2020 21:31:15 +0000 -Received: from localhost (localhost [127.0.0.1]) - by mail.manjaro.org (Postfix) with ESMTP id 26030370112C; - Wed, 4 Mar 2020 22:31:11 +0100 (CET) -X-Virus-Scanned: Debian amavisd-new at manjaro.org -Received: from mail.manjaro.org ([127.0.0.1]) - by localhost (manjaro.org [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id OKG7wH7ZOt7o; Wed, 4 Mar 2020 22:31:07 +0100 (CET) -From: Tobias Schramm <t.schramm@manjaro.org> -To: Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, - Heiko Stuebner <heiko@sntech.de>, Andy Yan <andy.yan@rock-chips.com>, - Johan Jonker <jbx6244@gmail.com> -Subject: [PATCH v4 2/2] arm64: dts: rockchip: Add initial support for Pinebook - Pro -Date: Wed, 4 Mar 2020 22:30:23 +0100 -Message-Id: <20200304213023.689983-3-t.schramm@manjaro.org> -In-Reply-To: <20200304213023.689983-2-t.schramm@manjaro.org> -References: <20200304213023.689983-2-t.schramm@manjaro.org> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200304_133112_802914_89F85872 -X-CRM114-Status: GOOD ( 13.85 ) -X-Spam-Score: 0.0 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (0.0 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [176.9.38.148 listed in list.dnswl.org] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, - Emmanuel Vadot <manu@freebsd.org>, Alexis Ballier <aballier@gentoo.org>, - Tobias Schramm <t.schramm@manjaro.org>, - Katsuhiro Suzuki <katsuhiro@katsuster.net>, linux-kernel@vger.kernel.org, - Douglas Anderson <dianders@chromium.org>, - Kever Yang <kever.yang@rock-chips.com>, - Markus Reichl <m.reichl@fivetechno.de>, - linux-rockchip@lists.infradead.org, Matthias Kaehlcke <mka@chromium.org>, - Jagan Teki <jagan@amarulasolutions.com>, Nick Xie <nick@khadas.com>, - Vivek Unune <npcomplete13@gmail.com> -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -This commit adds initial dt support for the rk3399 based Pinebook Pro. - -Signed-off-by: Tobias Schramm <t.schramm@manjaro.org> ---- - arch/arm64/boot/dts/rockchip/Makefile | 1 + - .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 1096 +++++++++++++++++ - 2 files changed, 1097 insertions(+) - create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts - -diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile -index 60d9437096c7..ae7621309e92 100644 ---- a/arch/arm64/boot/dts/rockchip/Makefile -+++ b/arch/arm64/boot/dts/rockchip/Makefile -@@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb -+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb - dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc-mezzanine.dtb -diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts -new file mode 100644 -index 000000000000..8f77ee4f256c ---- /dev/null -+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts -@@ -0,0 +1,1098 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. -+ * Copyright (c) 2018 Akash Gajjar <Akash_Gajjar@mentor.com> -+ * Copyright (c) 2020 Tobias Schramm <t.schramm@manjaro.org> -+ */ -+ -+/dts-v1/; -+#include <dt-bindings/input/gpio-keys.h> -+#include <dt-bindings/input/linux-event-codes.h> -+#include <dt-bindings/pwm/pwm.h> -+#include <dt-bindings/usb/pd.h> -+#include <dt-bindings/leds/common.h> -+#include "rk3399.dtsi" -+#include "rk3399-opp.dtsi" -+ -+/ { -+ model = "Pine64 Pinebook Pro"; -+ compatible = "pine64,pinebook-pro", "rockchip,rk3399"; -+ -+ chosen { -+ stdout-path = "serial2:1500000n8"; -+ }; -+ -+ backlight: edp-backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_12v>; -+ pwms = <&pwm0 0 740740 0>; -+ }; -+ -+ edp_panel: edp-panel { -+ compatible = "boe,nv140fhmn49"; -+ backlight = <&backlight>; -+ enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&panel_en_gpio>; -+ power-supply = <&vcc3v3_panel>; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ port@0 { -+ reg = <0>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ panel_in_edp: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&edp_out_panel>; -+ }; -+ }; -+ }; -+ }; -+ -+ /* -+ * Use separate nodes for gpio-keys to allow for selective deactivation -+ * of wakeup sources via sysfs without disabling the whole key -+ */ -+ gpio-key-lid { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lidbtn_gpio>; -+ -+ lid { -+ debounce-interval = <20>; -+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "Lid"; -+ linux,code = <SW_LID>; -+ linux,input-type = <EV_SW>; -+ wakeup-event-action = <EV_ACT_DEASSERTED>; -+ wakeup-source; -+ }; -+ }; -+ -+ gpio-key-power { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwrbtn_gpio>; -+ -+ power { -+ debounce-interval = <20>; -+ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "Power"; -+ linux,code = <KEY_POWER>; -+ wakeup-source; -+ }; -+ }; -+ -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwrled_gpio &slpled_gpio>; -+ -+ green-led { -+ color = <LED_COLOR_ID_GREEN>; -+ default-state = "on"; -+ function = LED_FUNCTION_POWER; -+ gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; -+ label = "green:power"; -+ }; -+ -+ red-led { -+ color = <LED_COLOR_ID_RED>; -+ default-state = "off"; -+ function = LED_FUNCTION_STANDBY; -+ gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; -+ label = "red:standby"; -+ panic-indicator; -+ retain-state-suspended; -+ }; -+ }; -+ -+ /* Power sequence for SDIO WiFi module */ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk808 1>; -+ clock-names = "ext_clock"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&wifi_enable_h_gpio>; -+ post-power-on-delay-ms = <100>; -+ power-off-delay-us = <500000>; -+ -+ /* WL_REG_ON on module */ -+ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* Audio components */ -+ es8316-sound { -+ compatible = "simple-audio-card"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&hp_det_gpio>; -+ simple-audio-card,name = "rockchip,es8316-codec"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,mclk-fs = <256>; -+ -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Speaker"; -+ simple-audio-card,routing = -+ "MIC1", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Speaker Amplifier INL", "HPOL", -+ "Speaker Amplifier INR", "HPOR", -+ "Speaker", "Speaker Amplifier OUTL", -+ "Speaker", "Speaker Amplifier OUTR"; -+ -+ simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; -+ simple-audio-card,aux-devs = <&speaker_amp>; -+ simple-audio-card,pin-switches = "Speaker"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&es8316>; -+ }; -+ }; -+ -+ speaker_amp: speaker-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; -+ sound-name-prefix = "Speaker Amplifier"; -+ VCC-supply = <&pa_5v>; -+ }; -+ -+ /* Power tree */ -+ /* Root power source */ -+ vcc_sysin: vcc-sysin { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc_sysin"; -+ }; -+ -+ /* Regulators supplied by vcc_sysin */ -+ /* LCD backlight supply */ -+ vcc_12v: vcc-12v { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <12000000>; -+ regulator-max-microvolt = <12000000>; -+ regulator-name = "vcc_12v"; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Main 3.3 V supply */ -+ vcc3v3_sys: wifi_bat: vcc3v3-sys { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_sys"; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ /* 5 V USB power supply */ -+ vcc5v0_usb: pa_5v: vcc5v0-usb-regulator { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwr_5v_gpio>; -+ regulator-always-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-name = "vcc5v0_usb"; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* RK3399 logic supply */ -+ vdd_log: vdd-log { -+ compatible = "pwm-regulator"; -+ pwms = <&pwm2 0 25000 1>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <800000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd_log"; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc3v3_sys */ -+ /* 0.9 V supply, always on */ -+ vcc_0v9: vcc-0v9 { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ regulator-name = "vcc_0v9"; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* S3 1.8 V supply, switched by vcc1v8_s3 */ -+ vcca1v8_s3: vcc1v8-s3 { -+ compatible = "regulator-fixed"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_s3"; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* micro SD card power */ -+ vcc3v0_sd: vcc3v0-sd { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc0_pwr_h_gpio>; -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc3v0_sd"; -+ vin-supply = <&vcc3v3_sys>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* LCD panel power, called VCC3V3_S0 in schematic */ -+ vcc3v3_panel: vcc3v3-panel { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcdvcc_en_gpio>; -+ regulator-always-on; -+ regulator-enable-ramp-delay = <100000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_panel"; -+ vin-supply = <&vcc3v3_sys>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* M.2 adapter power, switched by vcc1v8_s3 */ -+ vcc3v3_ssd: vcc3v3-ssd { -+ compatible = "regulator-fixed"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc3v3_ssd"; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* Regulators supplied by vcc5v0_usb */ -+ /* USB 3 port power supply regulator */ -+ vcc5v0_otg: vcc5v0-otg { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vcc5v0_host_en_gpio>; -+ regulator-always-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-name = "vcc5v0_otg"; -+ vin-supply = <&vcc5v0_usb>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc5v0_usb */ -+ /* Type C port power supply regulator */ -+ vbus_5vout: vbus_typec: vbus-5vout { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vcc5v0_typec0_en_gpio>; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-name = "vbus_5vout"; -+ vin-supply = <&vcc5v0_usb>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc_1v8 */ -+ /* Primary 0.9 V LDO */ -+ vcca0v9_s3: vcca0v9-s3 { -+ compatible = "regulator-fixed"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-name = "vcc0v9_s3"; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ mains_charger: dc-charger { -+ compatible = "gpio-charger"; -+ charger-type = "mains"; -+ gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>; -+ -+ /* Also triggered by USB charger */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&dc_det_gpio>; -+ }; -+}; -+ -+&cdn_dp { -+ status = "okay"; -+}; -+ -+&cpu_b0 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&cpu_b1 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&cpu_l0 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l1 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l2 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l3 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&edp { -+ force-hpd; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&edp_hpd>; -+ status = "okay"; -+ -+ ports { -+ edp_out: port@1 { -+ reg = <1>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ edp_out_panel: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&panel_in_edp>; -+ }; -+ }; -+ }; -+}; -+ -+&emmc_phy { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ i2c-scl-falling-time-ns = <4>; -+ i2c-scl-rising-time-ns = <168>; -+ status = "okay"; -+ -+ rk808: pmic@1b { -+ compatible = "rockchip,rk808"; -+ reg = <0x1b>; -+ #clock-cells = <1>; -+ clock-output-names = "xin32k", "rk808-clkout2"; -+ interrupt-parent = <&gpio3>; -+ interrupts = <10 IRQ_TYPE_LEVEL_LOW>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pmic_int_l_gpio>; -+ rockchip,system-power-controller; -+ wakeup-source; -+ -+ vcc1-supply = <&vcc_sysin>; -+ vcc2-supply = <&vcc_sysin>; -+ vcc3-supply = <&vcc_sysin>; -+ vcc4-supply = <&vcc_sysin>; -+ vcc6-supply = <&vcc_sysin>; -+ vcc7-supply = <&vcc_sysin>; -+ vcc8-supply = <&vcc3v3_sys>; -+ vcc9-supply = <&vcc_sysin>; -+ vcc10-supply = <&vcc_sysin>; -+ vcc11-supply = <&vcc_sysin>; -+ vcc12-supply = <&vcc3v3_sys>; -+ vcc13-supply = <&vcc_sysin>; -+ vcc14-supply = <&vcc_sysin>; -+ -+ regulators { -+ /* rk3399 center logic supply */ -+ vdd_center: DCDC_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <750000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-name = "vdd_center"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_cpu_l: DCDC_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <750000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-name = "vdd_cpu_l"; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc_ddr"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_1v8: vcc_wl: DCDC_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc_1v8"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ /* not used */ -+ LDO_REG1 { -+ }; -+ -+ /* not used */ -+ LDO_REG2 { -+ }; -+ -+ vcc1v8_pmupll: LDO_REG3 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc1v8_pmupll"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vcc_sdio: LDO_REG4 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc_sdio"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3000000>; -+ }; -+ }; -+ -+ vcca3v0_codec: LDO_REG5 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcca3v0_codec"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_1v5: LDO_REG6 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc_1v5"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1500000>; -+ }; -+ }; -+ -+ vcca1v8_codec: LDO_REG7 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca1v8_codec"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_3v0: LDO_REG8 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc_3v0"; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3000000>; -+ }; -+ }; -+ -+ vcc3v3_s3: SWITCH_REG1 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc3v3_s3"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_s0: SWITCH_REG2 { -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-name = "vcc3v3_s0"; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ }; -+ -+ vdd_cpu_b: regulator@40 { -+ compatible = "silergy,syr827"; -+ reg = <0x40>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel1_gpio>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-compatible = "fan53555-reg"; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vdd_cpu_b"; -+ regulator-ramp-delay = <1000>; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_gpu: regulator@41 { -+ compatible = "silergy,syr828"; -+ reg = <0x41>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel2_gpio>; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-compatible = "fan53555-reg"; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vdd_gpu"; -+ regulator-ramp-delay = <1000>; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c1 { -+ clock-frequency = <100000>; -+ i2c-scl-falling-time-ns = <4>; -+ i2c-scl-rising-time-ns = <168>; -+ status = "okay"; -+ -+ es8316: es8316@11 { -+ compatible = "everest,es8316"; -+ reg = <0x11>; -+ clocks = <&cru SCLK_I2S_8CH_OUT>; -+ clock-names = "mclk"; -+ #sound-dai-cells = <0>; -+ }; -+}; -+ -+&i2c3 { -+ i2c-scl-falling-time-ns = <15>; -+ i2c-scl-rising-time-ns = <450>; -+ status = "okay"; -+}; -+ -+&i2c4 { -+ i2c-scl-falling-time-ns = <20>; -+ i2c-scl-rising-time-ns = <600>; -+ status = "okay"; -+ -+ fusb0: fusb30x@22 { -+ compatible = "fcs,fusb302"; -+ reg = <0x22>; -+ fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&fusb0_int_gpio>; -+ vbus-supply = <&vbus_typec>; -+ -+ connector { -+ compatible = "usb-c-connector"; -+ data-role = "host"; -+ label = "USB-C"; -+ op-sink-microwatt = <1000000>; -+ power-role = "dual"; -+ sink-pdos = -+ <PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>; -+ source-pdos = -+ <PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>; -+ try-power-role = "sink"; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ -+ usbc_hs: endpoint { -+ remote-endpoint = -+ <&u2phy0_typec_hs>; -+ }; -+ }; -+ -+ port@1 { -+ reg = <1>; -+ -+ usbc_ss: endpoint { -+ remote-endpoint = -+ <&tcphy0_typec_ss>; -+ }; -+ }; -+ -+ port@2 { -+ reg = <2>; -+ -+ usbc_dp: endpoint { -+ remote-endpoint = -+ <&tcphy0_typec_dp>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -+ -+&i2s1 { -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>; -+ rockchip,capture-channels = <8>; -+ rockchip,playback-channels = <8>; -+ status = "okay"; -+}; -+ -+&io_domains { -+ audio-supply = <&vcc_3v0>; -+ gpio1830-supply = <&vcc_3v0>; -+ sdmmc-supply = <&vcc_sdio>; -+ status = "okay"; -+}; -+ -+&pcie_phy { -+ status = "okay"; -+}; -+ -+&pcie0 { -+ bus-scan-delay-ms = <1000>; -+ ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; -+ max-link-speed = <2>; -+ num-lanes = <4>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pcie_clkreqn_cpm>; -+ vpcie0v9-supply = <&vcca0v9_s3>; -+ vpcie1v8-supply = <&vcca1v8_s3>; -+ vpcie3v3-supply = <&vcc3v3_ssd>; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ buttons { -+ pwrbtn_gpio: pwrbtn-gpio { -+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ lidbtn_gpio: lidbtn-gpio { -+ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ dc-charger { -+ dc_det_gpio: dc-det-gpio { -+ rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ es8316 { -+ hp_det_gpio: hp-det-gpio { -+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ fusb302x { -+ fusb0_int_gpio: fusb0-int-gpio { -+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ i2s1 { -+ i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio { -+ rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>; -+ }; -+ }; -+ -+ lcd-panel { -+ lcdvcc_en_gpio: lcdvcc-en-gpio { -+ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ panel_en_gpio: panel-en-gpio { -+ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ lcd_panel_reset_gpio: lcd-panel-reset-gpio { -+ rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ leds { -+ pwrled_gpio: pwrled_gpio { -+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ slpled_gpio: slpled_gpio { -+ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l_gpio: pmic-int-l-gpio { -+ rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ vsel1_gpio: vsel1-gpio { -+ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ vsel2_gpio: vsel2-gpio { -+ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ sdcard { -+ sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio { -+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h_gpio: wifi-enable-h-gpio { -+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ usb-typec { -+ vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio { -+ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ usb2 { -+ pwr_5v_gpio: pwr-5v-gpio { -+ rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ vcc5v0_host_en_gpio: vcc5v0-host-en-gpio { -+ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ wireless-bluetooth { -+ bt_wake_gpio: bt-wake-gpio { -+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_host_wake_gpio: bt-host-wake-gpio { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_reset_gpio: bt-reset-gpio { -+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ pmu1830-supply = <&vcc_3v0>; -+ status = "okay"; -+}; -+ -+&pwm0 { -+ status = "okay"; -+}; -+ -+&pwm2 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcca1v8_s3>; -+ status = "okay"; -+}; -+ -+&sdmmc { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc3v0_sd>; -+ vqmmc-supply = <&vcc_sdio>; -+ status = "okay"; -+}; -+ -+&sdio0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; -+ sd-uhs-sdr104; -+ status = "okay"; -+}; -+ -+&sdhci { -+ bus-width = <8>; -+ mmc-hs200-1_8v; -+ non-removable; -+ status = "okay"; -+}; -+ -+&spi1 { -+ max-freq = <10000000>; -+ status = "okay"; -+ -+ spiflash: flash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ m25p,fast-read; -+ spi-max-frequency = <10000000>; -+ }; -+}; -+ -+&tcphy0 { -+ status = "okay"; -+}; -+ -+&tcphy0_dp { -+ port { -+ tcphy0_typec_dp: endpoint { -+ remote-endpoint = <&usbc_dp>; -+ }; -+ }; -+}; -+ -+&tcphy0_usb3 { -+ port { -+ tcphy0_typec_ss: endpoint { -+ remote-endpoint = <&usbc_ss>; -+ }; -+ }; -+}; -+ -+&tcphy1 { -+ status = "okay"; -+}; -+ -+&tsadc { -+ /* tshut mode 0:CRU 1:GPIO */ -+ rockchip,hw-tshut-mode = <1>; -+ /* tshut polarity 0:LOW 1:HIGH */ -+ rockchip,hw-tshut-polarity = <1>; -+ status = "okay"; -+}; -+ -+&u2phy0 { -+ status = "okay"; -+ -+ u2phy0_otg: otg-port { -+ status = "okay"; -+ }; -+ -+ u2phy0_host: host-port { -+ phy-supply = <&vcc5v0_otg>; -+ status = "okay"; -+ }; -+ -+ port { -+ u2phy0_typec_hs: endpoint { -+ remote-endpoint = <&usbc_hs>; -+ }; -+ }; -+}; -+ -+&u2phy1 { -+ status = "okay"; -+ -+ u2phy1_otg: otg-port { -+ status = "okay"; -+ }; -+ -+ u2phy1_host: host-port { -+ phy-supply = <&vcc5v0_otg>; -+ status = "okay"; -+ }; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "brcm,bcm4345c5"; -+ clocks = <&rk808 1>; -+ clock-names = "lpo"; -+ device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; -+ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; -+ max-speed = <1500000>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>; -+ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; -+ vbat-supply = <&wifi_bat>; -+ vddio-supply = <&vcc_wl>; -+ }; -+}; -+ -+&uart2 { -+ status = "okay"; -+}; -+ -+&usb_host0_ehci { -+ status = "okay"; -+}; -+ -+&usb_host0_ohci { -+ status = "okay"; -+}; -+ -+&usb_host1_ehci { -+ status = "okay"; -+}; -+ -+&usb_host1_ohci { -+ status = "okay"; -+}; -+ -+&usbdrd3_0 { -+ status = "okay"; -+}; -+ -+&usbdrd_dwc3_0 { -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ -+&usbdrd3_1 { -+ status = "okay"; -+}; -+ -+&usbdrd_dwc3_1 { -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ -+&vopb { -+ status = "okay"; -+}; -+ -+&vopb_mmu { -+ status = "okay"; -+}; -+ -+&vopl { -+ status = "okay"; -+}; -+ -+&vopl_mmu { -+ status = "okay"; -+}; diff --git a/PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch b/PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch deleted file mode 100644 index 1d859bb57..000000000 --- a/PCI-Add-MCFG-quirks-for-Tegra194-host-controllers.patch +++ /dev/null @@ -1,481 +0,0 @@ -From patchwork Fri Jan 10 19:14:59 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vidya Sagar <vidyas@nvidia.com> -X-Patchwork-Id: 1221384 -Return-Path: <linux-pci-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-pci-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=gf35ja2k; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 47vXkJ2PJMz9sPJ - for <incoming@patchwork.ozlabs.org>; - Sat, 11 Jan 2020 06:15:20 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1728167AbgAJTPQ (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Fri, 10 Jan 2020 14:15:16 -0500 -Received: from hqnvemgate26.nvidia.com ([216.228.121.65]:1668 "EHLO - hqnvemgate26.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727612AbgAJTPQ (ORCPT - <rfc822; linux-pci@vger.kernel.org>); Fri, 10 Jan 2020 14:15:16 -0500 -Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e18cd310000>; Fri, 10 Jan 2020 11:14:57 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate101.nvidia.com (PGP Universal service); - Fri, 10 Jan 2020 11:15:15 -0800 -X-PGP-Universal: processed; - by hqpgpgate101.nvidia.com on Fri, 10 Jan 2020 11:15:15 -0800 -Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL101.nvidia.com - (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Fri, 10 Jan 2020 19:15:15 +0000 -Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Fri, 10 Jan 2020 19:15:14 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL107.nvidia.com - (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Fri, 10 Jan 2020 19:15:14 +0000 -Received: from vidyas-desktop.nvidia.com (Not Verified[10.24.37.48]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e18cd3e0001>; Fri, 10 Jan 2020 11:15:14 -0800 -From: Vidya Sagar <vidyas@nvidia.com> -To: <bhelgaas@google.com>, <lorenzo.pieralisi@arm.com>, - <rjw@rjwysocki.net>, <lenb@kernel.org>, <andrew.murray@arm.com>, - <treding@nvidia.com>, <jonathanh@nvidia.com> -CC: <linux-tegra@vger.kernel.org>, <linux-pci@vger.kernel.org>, - <linux-acpi@vger.kernel.org>, <linux-kernel@vger.kernel.org>, - <kthota@nvidia.com>, <mmaddireddy@nvidia.com>, <vidyas@nvidia.com>, - <sagar.tv@gmail.com> -Subject: [PATCH V3 1/2] arm64: tegra: Re-order PCIe aperture mappings to - support ACPI boot -Date: Sat, 11 Jan 2020 00:44:59 +0530 -Message-ID: <20200110191500.9538-2-vidyas@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200110191500.9538-1-vidyas@nvidia.com> -References: <20200106082709.14370-1-vidyas@nvidia.com> - <20200110191500.9538-1-vidyas@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1578683697; bh=A9295dTyR+j2yr8EqSviqtTgED4nGyVgvOv0oWR2ueU=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=gf35ja2k7JnAqX+jyF1OxPVsYL5Fk4U+zYrMvTudBnjv0lLjB+7vnkXuO5FnSX28a - o2Mvk9yks+a7NYLZkVfmKCXKbeDNoGPlPSy+g8CAyeAd5u7leSGONsy5awV83vmud7 - /KuuExw/Ko4JihAJdQ57/4EaaohgPWUNbodkmI5Wo0e7qyfgf5PvkAkwe1PdtgEKls - t9tsBwoqjGJn5WWPiQMaUZ8OHdSvPrUDuyKEFPjjr9IpczNvMzJE8SyHDZci42N+s+ - f0iCjfLLhugetglYqrGi5j8eknYwfvMIV+vnkZj0dSmiS70Y1G31dVfgR/s3ueHnRy - jBNjNRTUtey9w== -Sender: linux-pci-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-pci.vger.kernel.org> -X-Mailing-List: linux-pci@vger.kernel.org - -Re-order Tegra194's PCIe aperture mappings to have IO window moved to -64-bit aperture and have the entire 32-bit aperture used for accessing -the configuration space. This makes it to use the entire 32MB of the 32-bit -aperture for ECAM purpose while booting through ACPI. - -Signed-off-by: Vidya Sagar <vidyas@nvidia.com> ---- -V3: -* New change in this series - - arch/arm64/boot/dts/nvidia/tegra194.dtsi | 36 ++++++++++++------------ - 1 file changed, 18 insertions(+), 18 deletions(-) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra194.dtsi b/arch/arm64/boot/dts/nvidia/tegra194.dtsi -index ccac43be12ac..5d790ec5bdef 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra194.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra194.dtsi -@@ -1247,9 +1247,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x30100000 0x0 0x30100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x12 0x00000000 0x12 0x00000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -- 0x82000000 0x0 0x40000000 0x12 0x30000000 0x0 0x10000000>; /* non-prefetchable memory (256MB) */ -+ ranges = <0xc2000000 0x12 0x00000000 0x12 0x00000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -+ 0x82000000 0x00 0x40000000 0x12 0x30000000 0x0 0x0fff0000 /* non-prefetchable memory (256MB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x12 0x3fff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie@14120000 { -@@ -1292,9 +1292,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x32100000 0x0 0x32100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x12 0x40000000 0x12 0x40000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -- 0x82000000 0x0 0x40000000 0x12 0x70000000 0x0 0x10000000>; /* non-prefetchable memory (256MB) */ -+ ranges = <0xc2000000 0x12 0x40000000 0x12 0x40000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -+ 0x82000000 0x00 0x40000000 0x12 0x70000000 0x0 0x0fff0000 /* non-prefetchable memory (256MB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x12 0x7fff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie@14140000 { -@@ -1337,9 +1337,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x34100000 0x0 0x34100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x12 0x80000000 0x12 0x80000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -- 0x82000000 0x0 0x40000000 0x12 0xb0000000 0x0 0x10000000>; /* non-prefetchable memory (256MB) */ -+ ranges = <0xc2000000 0x12 0x80000000 0x12 0x80000000 0x0 0x30000000 /* prefetchable memory (768MB) */ -+ 0x82000000 0x00 0x40000000 0x12 0xb0000000 0x0 0x0fff0000 /* non-prefetchable memory (256MB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x12 0xbfff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie@14160000 { -@@ -1382,9 +1382,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x36100000 0x0 0x36100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x14 0x00000000 0x14 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -- 0x82000000 0x0 0x40000000 0x17 0x40000000 0x0 0xc0000000>; /* non-prefetchable memory (3GB) */ -+ ranges = <0xc2000000 0x14 0x00000000 0x14 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -+ 0x82000000 0x00 0x40000000 0x17 0x40000000 0x0 0xbfff0000 /* non-prefetchable memory (3GB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x17 0xffff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie@14180000 { -@@ -1427,9 +1427,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x38100000 0x0 0x38100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x18 0x00000000 0x18 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -- 0x82000000 0x0 0x40000000 0x1b 0x40000000 0x0 0xc0000000>; /* non-prefetchable memory (3GB) */ -+ ranges = <0xc2000000 0x18 0x00000000 0x18 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -+ 0x82000000 0x00 0x40000000 0x1b 0x40000000 0x0 0xbfff0000 /* non-prefetchable memory (3GB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x1b 0xffff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie@141a0000 { -@@ -1476,9 +1476,9 @@ - nvidia,aspm-l0s-entrance-latency-us = <3>; - - bus-range = <0x0 0xff>; -- ranges = <0x81000000 0x0 0x3a100000 0x0 0x3a100000 0x0 0x00100000 /* downstream I/O (1MB) */ -- 0xc2000000 0x1c 0x00000000 0x1c 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -- 0x82000000 0x0 0x40000000 0x1f 0x40000000 0x0 0xc0000000>; /* non-prefetchable memory (3GB) */ -+ ranges = <0xc2000000 0x1c 0x00000000 0x1c 0x00000000 0x3 0x40000000 /* prefetchable memory (13GB) */ -+ 0x82000000 0x00 0x40000000 0x1f 0x40000000 0x0 0xbfff0000 /* non-prefetchable memory (3GB - 64KB) */ -+ 0x81000000 0x00 0x00000000 0x1f 0xffff0000 0x0 0x00010000>; /* downstream I/O (64KB) */ - }; - - pcie_ep@14160000 { - -From patchwork Fri Jan 10 19:15:00 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Vidya Sagar <vidyas@nvidia.com> -X-Patchwork-Id: 1221385 -Return-Path: <linux-pci-owner@vger.kernel.org> -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=none (no SPF record) - smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; - helo=vger.kernel.org; - envelope-from=linux-pci-owner@vger.kernel.org; - receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com - header.a=rsa-sha256 header.s=n1 header.b=KDh6KAfT; - dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by ozlabs.org (Postfix) with ESMTP id 47vXkS04dtz9sR0 - for <incoming@patchwork.ozlabs.org>; - Sat, 11 Jan 2020 06:15:28 +1100 (AEDT) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1728451AbgAJTPX (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Fri, 10 Jan 2020 14:15:23 -0500 -Received: from hqnvemgate24.nvidia.com ([216.228.121.143]:9177 "EHLO - hqnvemgate24.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1727612AbgAJTPX (ORCPT - <rfc822; linux-pci@vger.kernel.org>); Fri, 10 Jan 2020 14:15:23 -0500 -Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id <B5e18cd160001>; Fri, 10 Jan 2020 11:14:30 -0800 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate101.nvidia.com (PGP Universal service); - Fri, 10 Jan 2020 11:15:21 -0800 -X-PGP-Universal: processed; - by hqpgpgate101.nvidia.com on Fri, 10 Jan 2020 11:15:21 -0800 -Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL111.nvidia.com - (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Fri, 10 Jan 2020 19:15:21 +0000 -Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Fri, 10 Jan 2020 19:15:21 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Fri, 10 Jan 2020 19:15:20 +0000 -Received: from vidyas-desktop.nvidia.com (Not Verified[10.24.37.48]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id <B5e18cd440002>; Fri, 10 Jan 2020 11:15:20 -0800 -From: Vidya Sagar <vidyas@nvidia.com> -To: <bhelgaas@google.com>, <lorenzo.pieralisi@arm.com>, - <rjw@rjwysocki.net>, <lenb@kernel.org>, <andrew.murray@arm.com>, - <treding@nvidia.com>, <jonathanh@nvidia.com> -CC: <linux-tegra@vger.kernel.org>, <linux-pci@vger.kernel.org>, - <linux-acpi@vger.kernel.org>, <linux-kernel@vger.kernel.org>, - <kthota@nvidia.com>, <mmaddireddy@nvidia.com>, <vidyas@nvidia.com>, - <sagar.tv@gmail.com> -Subject: [PATCH V3 2/2] PCI: Add MCFG quirks for Tegra194 host controllers -Date: Sat, 11 Jan 2020 00:45:00 +0530 -Message-ID: <20200110191500.9538-3-vidyas@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200110191500.9538-1-vidyas@nvidia.com> -References: <20200106082709.14370-1-vidyas@nvidia.com> - <20200110191500.9538-1-vidyas@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1578683671; bh=6wJT/II+S2upRtJe41MS3kcnFzRRB57EIPkoU3txnnc=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=KDh6KAfT+xBJE0n0yRibTvav8qocX0wdxtjjCMNH+VNrt1Gvwgt8htMQvTCpi08Hz - OLS6piubtsXb2Fk+J0rDcwmB2QM0YMKe6eA3DQkuJTPhl6PRxtvXdAYPfl/Z2pvG38 - dq6SIor6Yw4e76ncsvt69w6UXoLZHF7AywICq0jGnmPjWoKDnjID3qKSj5/u7tE+/L - 6hJUZ2QQebXRI17dRdfleyir+rRCS0wMl9tVNiAHplY3Wlxw895LJqvmVRZDVA+kg5 - 8DPKJY2JbazS6P4QcywESwuhDfejJGaJUz+1/6oSiHBMCI5OhfhFZ/lyTf0iZycdTQ - gnZUMkPu2QZOg== -Sender: linux-pci-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-pci.vger.kernel.org> -X-Mailing-List: linux-pci@vger.kernel.org - -The PCIe controller in Tegra194 SoC is not completely ECAM-compliant. -With the current hardware design limitations in place, ECAM can be enabled -only for one controller (C5 controller to be precise) with bus numbers -starting from 160 instead of 0. A different approach is taken to avoid this -abnormal way of enabling ECAM for just one controller but to enable -configuration space access for all the other controllers. In this approach, -ops are added through MCFG quirk mechanism which access the configuration -spaces by dynamically programming iATU (internal AddressTranslation Unit) -to generate respective configuration accesses just like the way it is -done in DesignWare core sub-system. - -Signed-off-by: Vidya Sagar <vidyas@nvidia.com> -Reported-by: kbuild test robot <lkp@intel.com> -Acked-by: Thierry Reding <treding@nvidia.com> ---- -V3: -* Removed MCFG address hardcoding in pci_mcfg.c file -* Started using 'dbi_base' for accessing root port's own config space -* and using 'config_base' for accessing config space of downstream hierarchy - -V2: -* Fixed build issues reported by kbuild test bot - - drivers/acpi/pci_mcfg.c | 7 ++ - drivers/pci/controller/dwc/Kconfig | 3 +- - drivers/pci/controller/dwc/Makefile | 2 +- - drivers/pci/controller/dwc/pcie-tegra194.c | 102 +++++++++++++++++++++ - include/linux/pci-ecam.h | 1 + - 5 files changed, 113 insertions(+), 2 deletions(-) - -diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c -index 6b347d9920cc..707181408173 100644 ---- a/drivers/acpi/pci_mcfg.c -+++ b/drivers/acpi/pci_mcfg.c -@@ -116,6 +116,13 @@ static struct mcfg_fixup mcfg_quirks[] = { - THUNDER_ECAM_QUIRK(2, 12), - THUNDER_ECAM_QUIRK(2, 13), - -+ { "NVIDIA", "TEGRA194", 1, 0, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ { "NVIDIA", "TEGRA194", 1, 1, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ { "NVIDIA", "TEGRA194", 1, 2, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ { "NVIDIA", "TEGRA194", 1, 3, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ { "NVIDIA", "TEGRA194", 1, 4, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ { "NVIDIA", "TEGRA194", 1, 5, MCFG_BUS_ANY, &tegra194_pcie_ops}, -+ - #define XGENE_V1_ECAM_MCFG(rev, seg) \ - {"APM ", "XGENE ", rev, seg, MCFG_BUS_ANY, \ - &xgene_v1_pcie_ecam_ops } -diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dwc/Kconfig -index 0830dfcfa43a..f5b9e75aceed 100644 ---- a/drivers/pci/controller/dwc/Kconfig -+++ b/drivers/pci/controller/dwc/Kconfig -@@ -255,7 +255,8 @@ config PCIE_TEGRA194 - select PHY_TEGRA194_P2U - help - Say Y here if you want support for DesignWare core based PCIe host -- controller found in NVIDIA Tegra194 SoC. -+ controller found in NVIDIA Tegra194 SoC. ACPI platforms with Tegra194 -+ don't need to enable this. - - config PCIE_UNIPHIER - bool "Socionext UniPhier PCIe controllers" -diff --git a/drivers/pci/controller/dwc/Makefile b/drivers/pci/controller/dwc/Makefile -index 8a637cfcf6e9..76a6c52b8500 100644 ---- a/drivers/pci/controller/dwc/Makefile -+++ b/drivers/pci/controller/dwc/Makefile -@@ -17,7 +17,6 @@ obj-$(CONFIG_PCIE_INTEL_GW) += pcie-intel-gw.o - obj-$(CONFIG_PCIE_KIRIN) += pcie-kirin.o - obj-$(CONFIG_PCIE_HISI_STB) += pcie-histb.o - obj-$(CONFIG_PCI_MESON) += pci-meson.o --obj-$(CONFIG_PCIE_TEGRA194) += pcie-tegra194.o - obj-$(CONFIG_PCIE_UNIPHIER) += pcie-uniphier.o - - # The following drivers are for devices that use the generic ACPI -@@ -33,4 +32,5 @@ obj-$(CONFIG_PCIE_UNIPHIER) += pcie-uniphier.o - ifdef CONFIG_PCI - obj-$(CONFIG_ARM64) += pcie-al.o - obj-$(CONFIG_ARM64) += pcie-hisi.o -+obj-$(CONFIG_ARM64) += pcie-tegra194.o - endif -diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c -index cbe95f0ea0ca..660f55caa8be 100644 ---- a/drivers/pci/controller/dwc/pcie-tegra194.c -+++ b/drivers/pci/controller/dwc/pcie-tegra194.c -@@ -21,6 +21,8 @@ - #include <linux/of_irq.h> - #include <linux/of_pci.h> - #include <linux/pci.h> -+#include <linux/pci-acpi.h> -+#include <linux/pci-ecam.h> - #include <linux/phy/phy.h> - #include <linux/pinctrl/consumer.h> - #include <linux/platform_device.h> -@@ -285,6 +287,103 @@ struct tegra_pcie_dw { - struct dentry *debugfs; - }; - -+#if defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) -+struct tegra194_pcie_acpi { -+ void __iomem *config_base; -+ void __iomem *iatu_base; -+ void __iomem *dbi_base; -+}; -+ -+static int tegra194_acpi_init(struct pci_config_window *cfg) -+{ -+ struct device *dev = cfg->parent; -+ struct tegra194_pcie_acpi *pcie; -+ -+ pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); -+ if (!pcie) -+ return -ENOMEM; -+ -+ pcie->config_base = cfg->win; -+ pcie->iatu_base = cfg->win + SZ_256K; -+ pcie->dbi_base = cfg->win + SZ_512K; -+ cfg->priv = pcie; -+ -+ return 0; -+} -+ -+static inline void atu_reg_write(struct tegra194_pcie_acpi *pcie, int index, -+ u32 val, u32 reg) -+{ -+ u32 offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index); -+ -+ writel(val, pcie->iatu_base + offset + reg); -+} -+ -+static void program_outbound_atu(struct tegra194_pcie_acpi *pcie, int index, -+ int type, u64 cpu_addr, u64 pci_addr, u64 size) -+{ -+ atu_reg_write(pcie, index, lower_32_bits(cpu_addr), -+ PCIE_ATU_LOWER_BASE); -+ atu_reg_write(pcie, index, upper_32_bits(cpu_addr), -+ PCIE_ATU_UPPER_BASE); -+ atu_reg_write(pcie, index, lower_32_bits(pci_addr), -+ PCIE_ATU_LOWER_TARGET); -+ atu_reg_write(pcie, index, lower_32_bits(cpu_addr + size - 1), -+ PCIE_ATU_LIMIT); -+ atu_reg_write(pcie, index, upper_32_bits(pci_addr), -+ PCIE_ATU_UPPER_TARGET); -+ atu_reg_write(pcie, index, type, PCIE_ATU_CR1); -+ atu_reg_write(pcie, index, PCIE_ATU_ENABLE, PCIE_ATU_CR2); -+} -+ -+static void __iomem *tegra194_map_bus(struct pci_bus *bus, -+ unsigned int devfn, int where) -+{ -+ struct pci_config_window *cfg = bus->sysdata; -+ struct tegra194_pcie_acpi *pcie = cfg->priv; -+ u32 busdev; -+ int type; -+ -+ if (bus->number < cfg->busr.start || bus->number > cfg->busr.end) -+ return NULL; -+ -+ if (bus->number == cfg->busr.start) { -+ if (PCI_SLOT(devfn) == 0) -+ return pcie->dbi_base + where; -+ else -+ return NULL; -+ } -+ -+ busdev = PCIE_ATU_BUS(bus->number) | PCIE_ATU_DEV(PCI_SLOT(devfn)) | -+ PCIE_ATU_FUNC(PCI_FUNC(devfn)); -+ -+ if (bus->parent->number == cfg->busr.start) { -+ if (PCI_SLOT(devfn) == 0) -+ type = PCIE_ATU_TYPE_CFG0; -+ else -+ return NULL; -+ } else { -+ type = PCIE_ATU_TYPE_CFG1; -+ } -+ -+ program_outbound_atu(pcie, PCIE_ATU_REGION_INDEX0, type, -+ cfg->res.start, busdev, SZ_256K); -+ return (void __iomem *)(pcie->config_base + where); -+} -+ -+struct pci_ecam_ops tegra194_pcie_ops = { -+ .bus_shift = 20, -+ .init = tegra194_acpi_init, -+ .pci_ops = { -+ .map_bus = tegra194_map_bus, -+ .read = pci_generic_config_read, -+ .write = pci_generic_config_write, -+ } -+}; -+#endif /* defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) */ -+ -+#ifdef CONFIG_PCIE_TEGRA194 -+ - static inline struct tegra_pcie_dw *to_tegra_pcie(struct dw_pcie *pci) - { - return container_of(pci, struct tegra_pcie_dw, pci); -@@ -1728,3 +1827,6 @@ MODULE_DEVICE_TABLE(of, tegra_pcie_dw_of_match); - MODULE_AUTHOR("Vidya Sagar <vidyas@nvidia.com>"); - MODULE_DESCRIPTION("NVIDIA PCIe host controller driver"); - MODULE_LICENSE("GPL v2"); -+ -+#endif /* CONFIG_PCIE_TEGRA194 */ -+ -diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h -index a73164c85e78..6156140dcbb6 100644 ---- a/include/linux/pci-ecam.h -+++ b/include/linux/pci-ecam.h -@@ -57,6 +57,7 @@ extern struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */ - extern struct pci_ecam_ops xgene_v1_pcie_ecam_ops; /* APM X-Gene PCIe v1 */ - extern struct pci_ecam_ops xgene_v2_pcie_ecam_ops; /* APM X-Gene PCIe v2.x */ - extern struct pci_ecam_ops al_pcie_ops; /* Amazon Annapurna Labs PCIe */ -+extern struct pci_ecam_ops tegra194_pcie_ops; /* Tegra194 PCIe */ - #endif - - #ifdef CONFIG_PCI_HOST_COMMON diff --git a/RFC-PCI-tegra-Revert-raw_violation_fixup-for-tegra124.patch b/RFC-PCI-tegra-Revert-raw_violation_fixup-for-tegra124.patch deleted file mode 100644 index 3142df6dc..000000000 --- a/RFC-PCI-tegra-Revert-raw_violation_fixup-for-tegra124.patch +++ /dev/null @@ -1,144 +0,0 @@ -From patchwork Mon Apr 20 16:43:04 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Chauvet <kwizart@gmail.com> -X-Patchwork-Id: 1273561 -Return-Path: <linux-tegra-owner@vger.kernel.org> -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=vger.kernel.org - (client-ip=23.128.96.18; helo=vger.kernel.org; - envelope-from=linux-tegra-owner@vger.kernel.org; receiver=<UNKNOWN>) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=TzeKBoiR; dkim-atps=neutral -Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) - by ozlabs.org (Postfix) with ESMTP id 495XZC49yWz9sP7 - for <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2020 02:43:15 +1000 (AEST) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1726731AbgDTQnK (ORCPT <rfc822;incoming@patchwork.ozlabs.org>); - Mon, 20 Apr 2020 12:43:10 -0400 -Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42314 "EHLO - lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) - by vger.kernel.org with ESMTP id S1726693AbgDTQnI (ORCPT - <rfc822;linux-tegra@vger.kernel.org>); - Mon, 20 Apr 2020 12:43:08 -0400 -Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com - [IPv6:2a00:1450:4864:20::342]) - by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ED4CC061A0C; - Mon, 20 Apr 2020 09:43:08 -0700 (PDT) -Received: by mail-wm1-x342.google.com with SMTP id x25so280061wmc.0; - Mon, 20 Apr 2020 09:43:08 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=IHuj1FiuJPknu8Z7Uq/JeXw8aSg2xFkcoVYT3QRT6dA=; - b=TzeKBoiR2hu1L+OGuVzAMrvuOnCDM+J1nsGD1QbB9tkwdgx5rUc3jCkTzkFKQpJZ+g - jx96zAcsJH7FSzAMjcpWTgiixmPWJj0xuWXML6IW4oVt5Npm6F2D8UyjZyfgnUKcGU/k - Ye+bmwRUMi6cBC1Jpn93V5znfun/KPJFuOi1qLjh4g9rRAQWp4o4mZYTnxBkkMhi63gU - V7L+RQlj4buS+IXOZ/xi5chAd/gFJkADDOm8HVDAcIG6pEUCkXciuRiNL3f81ss3nwjq - uQQg7uRc8wXqOP1IqZ+W8kYP25Bty+uiykVyhv6XfOg0vWk4GK+wnM0wcP7boPe8Y8sS - dTLg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=IHuj1FiuJPknu8Z7Uq/JeXw8aSg2xFkcoVYT3QRT6dA=; - b=YcZCjbicKhCKe1SzKhwIcD9gZI/8J/QS/LQk4lcoLCwcSjlg9p0O/m5t80TGXT4lcn - wFh0VyY+SsMR6uXCPrN8QXYbEY6fFVxEY2+btKzt+ft0v4jQUljopKGOV6n85FRs89U4 - DrjNPXoL7izbuheb/tW9ZBrrMTLQ1btIJ/MiAZ2gKtlrachezXQjW1Gtn66/hEpIQybL - 9ctDGvygIAju/Yd9fx+cakfzPUGzKTc/yOhjKjbMfxF6YxTbdqPc08+0a3cOYoSoRKLE - i/drXsQpQhJHOhzZWXinld37vEHc/1pa/HYv3QR+UAproGfZq4eGqBh6cIYY87fW7nHk - lsmg== -X-Gm-Message-State: AGi0PuYqEn+eRXnjHmfYwoSYQUy0ZK+SX7Vpbgu/XErfwPhXok1ZAmWe - N87IAyxXhJOQCMJxw6TgfSo= -X-Google-Smtp-Source: APiQypLsj3XpHj4CyxtmOjlqdZs3DB8oJEEo2ghhT6QywH/SywA9LShfe1OCbQ3t6MmEGWRd+WIiVw== -X-Received: by 2002:a1c:41d7:: with SMTP id o206mr194590wma.89.1587400987185; - Mon, 20 Apr 2020 09:43:07 -0700 (PDT) -Received: from arrakis.kwizart.net (lfbn-nic-1-185-211.w2-15.abo.wanadoo.fr. - [2.15.34.211]) - by smtp.gmail.com with ESMTPSA id l4sm47922wrv.60.2020.04.20.09.43.05 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 20 Apr 2020 09:43:06 -0700 (PDT) -From: Nicolas Chauvet <kwizart@gmail.com> -To: Manikanta Maddireddy <mmaddireddy@nvidia.com>, - Thierry Reding <thierry.reding@gmail.com>, - Jonathan Hunter <jonathanh@nvidia.com> -Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, - linux-tegra@vger.kernel.org, linux-pci@vger.kernel.org, - Nicolas Chauvet <kwizart@gmail.com> -Subject: [RFC] PCI: tegra: Revert raw_violation_fixup for tegra124 -Date: Mon, 20 Apr 2020 18:43:04 +0200 -Message-Id: <20200420164304.28810-1-kwizart@gmail.com> -X-Mailer: git-send-email 2.25.2 -MIME-Version: 1.0 -Sender: linux-tegra-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-tegra.vger.kernel.org> -X-Mailing-List: linux-tegra@vger.kernel.org - -As reported in https://bugzilla.kernel.org/206217 , raw_violation_fixup -is causing more harm than good in some common use-cases. - -This patch as RFC is a partial revert of the 191cd6fb5 commit: - "PCI: tegra: Add SW fixup for RAW violations" -that was first introduced in 5.3 kernel. -This fix the following regression since then. - - -When using both the network NIC and I/O on MMC this can lead to the -following message on jetson-tk1: - - NETDEV WATCHDOG: enp1s0 (r8169): transmit queue 0 timed out - -and - - pcieport 0000:00:02.0: AER: Uncorrected (Non-Fatal) error received: 0000:01:00.0 - r8169 0000:01:00.0: AER: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID) - r8169 0000:01:00.0: AER: device [10ec:8168] error status/mask=00004000/00400000 - r8169 0000:01:00.0: AER: [14] CmpltTO (First) - r8169 0000:01:00.0: AER: can't recover (no error_detected callback) - pcieport 0000:00:02.0: AER: device recovery failed - - -After that, the ethernet NIC isn't functional anymore even after reloading -the module. -After a reboot, this is reproducible by copying a large file over the -ethernet NIC to the MMC. -For some reasons this cannot be reproduced when the same file is copied -to a tmpfs. - - -This patch is RFC because it requires more understanding from Nvidia. - - Is the fixup (available in l4t downstrem) still needed for upstream ? - - Is there a need to update the fixup values for upstream ? - - If the fixup is reverted, does the hw bug can still be seen with - upstream ? - -Others can also provides more understanding: - - Conditions to reproduce the bug (or not)... - - -Signed-off-by: Nicolas Chauvet <kwizart@gmail.com> -Reviewed-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> ---- - drivers/pci/controller/pci-tegra.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/pci/controller/pci-tegra.c b/drivers/pci/controller/pci-tegra.c -index 3e64ba6a36a8..4027e074094a 100644 ---- a/drivers/pci/controller/pci-tegra.c -+++ b/drivers/pci/controller/pci-tegra.c -@@ -2470,7 +2470,7 @@ static const struct tegra_pcie_soc tegra124_pcie = { - .program_uphy = true, - .update_clamp_threshold = true, - .program_deskew_time = false, -- .raw_violation_fixup = true, -+ .raw_violation_fixup = false, - .update_fc_timer = false, - .has_cache_bars = false, - .ectl.enable = false, diff --git a/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch b/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch deleted file mode 100644 index b1f4e7942..000000000 --- a/USB-pci-quirks-Add-Raspberry-Pi-4-quirk.patch +++ /dev/null @@ -1,714 +0,0 @@ -From patchwork Tue May 5 16:13:14 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: 11529601 -Return-Path: - <SRS0=eq5l=6T=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1BF82139A - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:13:46 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id ED4E0206A4 - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:13:45 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="u/J7plS1" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ED4E0206A4 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=bGQLzaoeWIDpTINYetpnA2L/vb7OmdXvhp2NJuW0F3A=; b=u/J7plS1Bwu25p - 31YlPyAxNHzkNz73OdF7ft5uhn9vS8dF3TEBhhmSu83IWYwAhsjyqTB+Hn8104w1KT17o0ihuNG++ - UIf6ftYyM8/v9W57OPJcwcWqPpKyFVB7fs9hgR9IE1/Qm8Ur/aUjmD1HK272ZJYsgrFqyFO4PP7DD - 1LwVH20tWs3UvX317QDIn5VIq8EAX5ImabSfeYHw1LlyhQUYF10UPX5zw4I2TlLRd2hFvfyUy7s8b - 1uMZFqLeqfTHrauQ43p5IBZs/wNGKGJbQlZvuENJxPcbBharqHBVDZrFvtV2MLnvrDOnv6A2QSfpt - vv++WCa+crrbmyL2v/pw==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0CU-00035T-KT; Tue, 05 May 2020 16:13:42 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0CF-0002rM-7U; Tue, 05 May 2020 16:13:28 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 0992CAF4F; - Tue, 5 May 2020 16:13:28 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: f.fainelli@gmail.com, gregkh@linuxfoundation.org, wahrenst@gmx.net, - helgaas@kernel.org, linux-kernel@vger.kernel.org, - Ray Jui <rjui@broadcom.com>, Scott Branden <sbranden@broadcom.com>, - bcm-kernel-feedback-list@broadcom.com, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Subject: [PATCH v8 1/4] soc: bcm2835: Add notify xHCI reset property -Date: Tue, 5 May 2020 18:13:14 +0200 -Message-Id: <20200505161318.26200-2-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505161318.26200-1-nsaenzjulienne@suse.de> -References: <20200505161318.26200-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200505_091327_410061_22E5BD39 -X-CRM114-Status: GOOD ( 13.67 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: linux-pci@vger.kernel.org, tim.gover@raspberrypi.org, - linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, - linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -The property is needed in order to trigger VL805's firmware load. Note -that gap between the property introduced and the previous one is due to -the properties not being defined. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> ---- - include/soc/bcm2835/raspberrypi-firmware.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h -index 7800e12ee042..cc9cdbc66403 100644 ---- a/include/soc/bcm2835/raspberrypi-firmware.h -+++ b/include/soc/bcm2835/raspberrypi-firmware.h -@@ -90,7 +90,7 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, - RPI_FIRMWARE_GET_POE_HAT_VAL = 0x00030049, - RPI_FIRMWARE_SET_POE_HAT_VAL = 0x00030050, -- -+ RPI_FIRMWARE_NOTIFY_XHCI_RESET = 0x00030058, - - /* Dispmanx TAGS */ - RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, - -From patchwork Tue May 5 16:13:15 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: 11529609 -Return-Path: - <SRS0=eq5l=6T=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 337F6139A - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:02 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 062432084D - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:02 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="SDl3WXtu" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 062432084D -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=Zr8RX4pUFuT9LYq/WsMx8aWZosDB52n4Q59lcyexfbE=; b=SDl3WXtuTc/nTE - liOc14IJBVmzylTRvqtl7RNlIur09j/+2VWz/L9i6UGqjG6N3L8XsQ0hQjdunHpod9jj3p3Az+4sq - FgwzoSdghy8rfnfxhcqJSbvMvX34yzGnoQBS46jClcjky9iNoijO+nBo3SE9wC8vSKKIafCzmVqHw - P7p44IgFrwgnBKbAgdUWCjUVQqolk2pLJr7jw/TG8pvfv0R6XJGmz3Lbl8gP14FyWfkkqsKqC+0g1 - Jq6JPtdl+W0AfEWVrFr6/74LhLTpnhsPqXGEPJjrLqtkbZ2c9pulOQ3f85qAed9slCbkVxe5fHetC - bwaYOp++AlOj7kNN25Qw==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0Ch-0003KV-Mk; Tue, 05 May 2020 16:13:55 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0CG-0002rw-Mm; Tue, 05 May 2020 16:13:30 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 4B6EDAF5D; - Tue, 5 May 2020 16:13:29 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: f.fainelli@gmail.com, gregkh@linuxfoundation.org, wahrenst@gmx.net, - helgaas@kernel.org, linux-kernel@vger.kernel.org, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Ray Jui <rjui@broadcom.com>, Scott Branden <sbranden@broadcom.com>, - bcm-kernel-feedback-list@broadcom.com -Subject: [PATCH v8 2/4] firmware: raspberrypi: Introduce vl805 init routine -Date: Tue, 5 May 2020 18:13:15 +0200 -Message-Id: <20200505161318.26200-3-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505161318.26200-1-nsaenzjulienne@suse.de> -References: <20200505161318.26200-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200505_091329_063893_301DE39B -X-CRM114-Status: GOOD ( 18.76 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: linux-pci@vger.kernel.org, tim.gover@raspberrypi.org, - linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, - linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -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. The function this patch -introduces triggers the aforementioned process. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - -Change since v7: -- Use usleep_delay() -- Add comment about PCI errors -- Don't wait on error -- Typos - -Change since v6: -- Add test to avoid loading the firmware when not needed -- Since we have it around, print VL805's firmware version, it'll make -debugging easier in the future -- Correct typos -- Add a clearer view of HW topology in patch description - -Changes since v4: -- Inline function definition when RASPBERRYPI_FIRMWARE is not defined - -Changes since v1: -- Move include into .c file and add forward declaration to .h - - drivers/firmware/raspberrypi.c | 61 ++++++++++++++++++++++ - include/soc/bcm2835/raspberrypi-firmware.h | 7 +++ - 2 files changed, 68 insertions(+) - -diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index da26a584dca0..a166ad0cec2c 100644 ---- a/drivers/firmware/raspberrypi.c -+++ b/drivers/firmware/raspberrypi.c -@@ -12,6 +12,8 @@ - #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)) -@@ -19,6 +21,8 @@ - #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; - -@@ -286,6 +290,63 @@ 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 cc9cdbc66403..3025aca3c358 100644 ---- a/include/soc/bcm2835/raspberrypi-firmware.h -+++ b/include/soc/bcm2835/raspberrypi-firmware.h -@@ -10,6 +10,7 @@ - #include <linux/of_device.h> - - struct rpi_firmware; -+struct pci_dev; - - enum rpi_firmware_property_status { - RPI_FIRMWARE_STATUS_REQUEST = 0, -@@ -141,6 +142,7 @@ int rpi_firmware_property(struct rpi_firmware *fw, - int rpi_firmware_property_list(struct rpi_firmware *fw, - void *data, size_t tag_size); - struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node); -+int rpi_firmware_init_vl805(struct pci_dev *pdev); - #else - static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, - void *data, size_t len) -@@ -158,6 +160,11 @@ static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware - { - return NULL; - } -+ -+static inline int rpi_firmware_init_vl805(struct pci_dev *pdev) -+{ -+ return 0; -+} - #endif - - #endif /* __SOC_RASPBERRY_FIRMWARE_H__ */ - -From patchwork Tue May 5 16:13:16 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: 11529613 -Return-Path: - <SRS0=eq5l=6T=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 09B41139A - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:12 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id D0DF22078D - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:11 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="SAMPLJUW" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D0DF22078D -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=KaAXr2YFGUN9aHABYMGoI6lDCplKLkueaLach3EcLIQ=; b=SAMPLJUWqAiuYn - Ols6qNQTSsb2o1pxY1yuF4MaX8dUzqsSCkylXQf5SkLRki0hXDsY/eVzwcypdH60m5jdk31wU1MJD - O88oZLgP0rvsSmG//a4xMHn/EpxntBmXZvNxlvZ9RuDATHjuA2w1+GKUOEvREG9jBi1M4+r5QZXrY - nRQqxUi1CldsZHzGt3IJi1mXzlNIhZq+fi48xOWUdgCSXYfpJO4qsr3b3QhwJklPSO0c4jMAHKYTQ - z3kKMMszvYgug/JraC4fZD2qDKGic3IxeOSxP2c8dLYBfxMxfBz7gya5rpBpjvFelYZMN2qXaQInv - gND7kQ/fU/heR7N6g6Dg==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0Cv-0003b2-3s; Tue, 05 May 2020 16:14:09 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0CI-0002tA-MY; Tue, 05 May 2020 16:13:32 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 3372DAF7A; - Tue, 5 May 2020 16:13:31 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: f.fainelli@gmail.com, gregkh@linuxfoundation.org, wahrenst@gmx.net, - helgaas@kernel.org, linux-kernel@vger.kernel.org, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, - Rob Herring <robh@kernel.org>, bcm-kernel-feedback-list@broadcom.com -Subject: [PATCH v8 3/4] PCI: brcmstb: Wait for Raspberry Pi's firmware when - present -Date: Tue, 5 May 2020 18:13:16 +0200 -Message-Id: <20200505161318.26200-4-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505161318.26200-1-nsaenzjulienne@suse.de> -References: <20200505161318.26200-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200505_091330_993258_A3A56727 -X-CRM114-Status: GOOD ( 11.90 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: tim.gover@raspberrypi.org, linux-pci@vger.kernel.org, - linux-usb@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, - Bjorn Helgaas <bhelgaas@google.com>, linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -xHCI's PCI fixup, run at the end of pcie-brcmstb's probe, depends on -RPi4's VideoCore firmware interface to be up and running. It's possible -for both initializations to race, so make sure it's available prior to -starting. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> ---- - -Changes since v6: -- Add more complete comment - - drivers/pci/controller/pcie-brcmstb.c | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c -index 6d79d14527a6..0b97b94c4a9a 100644 ---- a/drivers/pci/controller/pcie-brcmstb.c -+++ b/drivers/pci/controller/pcie-brcmstb.c -@@ -28,6 +28,8 @@ - #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 */ -@@ -917,11 +919,26 @@ 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; - -From patchwork Tue May 5 16:13:17 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: 11529615 -Return-Path: - <SRS0=eq5l=6T=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9C85E1392 - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:26 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 75AD8206FA - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 5 May 2020 16:14:26 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="pXZpPhrT" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 75AD8206FA -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=/GYWkYF77JxYJ9PRLu3wczjjHT+GnXqD2IyzZ0uR8KY=; b=pXZpPhrTtgd1O0 - sy/khBh4MMWq9sIqFwH9HgDbPFDzQ5eCkfiS/YZoDGJPFFwsUcitnTfFX9VGMnYzLf7eCCLfm1hta - f3X7UNpk1SvaeJKc59x7OvHTLVAwByuEPTqm4bmcqw+aRWdaYShUiv+105SG6JShQF5gjuBpEn3w0 - vzQNYGEl4BeHnlREFZU+Wi1qQ8sa1BwpU6Rx/NmGk8qLv1GOO4+UNf/ABycGTH6jZU101ck7/nvKL - Da7jehxCo1CCUiqM69fvoKabrfI76uVP4OdJcCihqzOWzmkiVwhQAWB0qFa9LR2h4CObuPthIqmW7 - oaRbCgJg+N26f/dtw1mg==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0D6-0003ov-Og; Tue, 05 May 2020 16:14:20 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jW0CJ-0002ui-S6; Tue, 05 May 2020 16:13:33 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 80D21AF4F; - Tue, 5 May 2020 16:13:32 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: f.fainelli@gmail.com, gregkh@linuxfoundation.org, wahrenst@gmx.net, - helgaas@kernel.org, linux-kernel@vger.kernel.org, - Mathias Nyman <mathias.nyman@intel.com> -Subject: [PATCH v8 4/4] USB: pci-quirks: Add Raspberry Pi 4 quirk -Date: Tue, 5 May 2020 18:13:17 +0200 -Message-Id: <20200505161318.26200-5-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505161318.26200-1-nsaenzjulienne@suse.de> -References: <20200505161318.26200-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200505_091332_068613_1A981780 -X-CRM114-Status: GOOD ( 16.37 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: tim.gover@raspberrypi.org, linux-pci@vger.kernel.org, - linux-usb@vger.kernel.org, Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, - linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -On the Raspberry Pi 4, after a PCI reset, VL805's firmware may either be -loaded directly from an EEPROM or, if not present, by the SoC's -VideoCore. Inform VideoCore that VL805 was just reset. - -Also, as this creates a dependency between USB_PCI and VideoCore's -firmware interface, and since USB_PCI can't be set as a module neither -this can. Reflect that on the firmware interface Kconfg. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - -Changes since v5: - - Fix Kconfig issue with allmodconfig - -Changes since v4: - - Do not split up error message - -Changes since v3: - - Add more complete error message - -Changes since v1: - - Make RASPBERRYPI_FIRMWARE dependent on this quirk to make sure it - gets compiled when needed. - - drivers/firmware/Kconfig | 3 ++- - drivers/usb/host/pci-quirks.c | 16 ++++++++++++++++ - 2 files changed, 18 insertions(+), 1 deletion(-) - -diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig -index 8007d4aa76dc..b42140cff8ac 100644 ---- a/drivers/firmware/Kconfig -+++ b/drivers/firmware/Kconfig -@@ -178,8 +178,9 @@ config ISCSI_IBFT - Otherwise, say N. - - config RASPBERRYPI_FIRMWARE -- tristate "Raspberry Pi Firmware Driver" -+ bool "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 92150ecdb036..0b949acfa258 100644 ---- a/drivers/usb/host/pci-quirks.c -+++ b/drivers/usb/host/pci-quirks.c -@@ -16,6 +16,9 @@ - #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" - -@@ -1243,11 +1246,24 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev) - - static void quirk_usb_early_handoff(struct pci_dev *pdev) - { -+ int ret; -+ - /* Skip Netlogic mips SoC's internal PCI USB controller. - * This device does not need/support EHCI/OHCI handoff - */ - if (pdev->vendor == 0x184e) /* vendor Netlogic */ - return; -+ -+ if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { -+ ret = rpi_firmware_init_vl805(pdev); -+ if (ret) { -+ /* Firmware might be outdated, or something failed */ -+ dev_warn(&pdev->dev, -+ "Failed to load VL805's firmware: %d. 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 && diff --git a/arm-bcm2711-mmc-sdhci-iproc-Add-custom-set_power-callback.patch b/arm-bcm2711-mmc-sdhci-iproc-Add-custom-set_power-callback.patch deleted file mode 100644 index 8c7a43185..000000000 --- a/arm-bcm2711-mmc-sdhci-iproc-Add-custom-set_power-callback.patch +++ /dev/null @@ -1,374 +0,0 @@ -From 6c92ae1e452ff3f4648b1450c9a3233a2ca53feb Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Date: Fri, 6 Mar 2020 18:44:03 +0100 -Subject: mmc: sdhci: Introduce sdhci_set_power_and_bus_voltage() - -Some controllers diverge from the standard way of setting power and need -their bus voltage register to be configured regardless of the whether -they use regulators. As this is a common pattern across sdhci hosts, -create a helper function. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Acked-by: Adrian Hunter <adrian.hunter@intel.com> -Link: https://lore.kernel.org/r/20200306174413.20634-2-nsaenzjulienne@suse.de -Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> ---- - drivers/mmc/host/sdhci.c | 19 +++++++++++++++++++ - drivers/mmc/host/sdhci.h | 3 +++ - 2 files changed, 22 insertions(+) - -diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index c59566363a42..525e0c971c6a 100644 ---- a/drivers/mmc/host/sdhci.c -+++ b/drivers/mmc/host/sdhci.c -@@ -2010,6 +2010,25 @@ void sdhci_set_power(struct sdhci_host *host, unsigned char mode, - } - EXPORT_SYMBOL_GPL(sdhci_set_power); - -+/* -+ * Some controllers need to configure a valid bus voltage on their power -+ * register regardless of whether an external regulator is taking care of power -+ * supply. This helper function takes care of it if set as the controller's -+ * sdhci_ops.set_power callback. -+ */ -+void sdhci_set_power_and_bus_voltage(struct sdhci_host *host, -+ unsigned char mode, -+ unsigned short vdd) -+{ -+ if (!IS_ERR(host->mmc->supply.vmmc)) { -+ struct mmc_host *mmc = host->mmc; -+ -+ mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); -+ } -+ sdhci_set_power_noreg(host, mode, vdd); -+} -+EXPORT_SYMBOL_GPL(sdhci_set_power_and_bus_voltage); -+ - /*****************************************************************************\ - * * - * MMC callbacks * -diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h -index 249635692112..851b81565f46 100644 ---- a/drivers/mmc/host/sdhci.h -+++ b/drivers/mmc/host/sdhci.h -@@ -772,6 +772,9 @@ void sdhci_set_clock(struct sdhci_host *host, unsigned int clock); - void sdhci_enable_clk(struct sdhci_host *host, u16 clk); - void sdhci_set_power(struct sdhci_host *host, unsigned char mode, - unsigned short vdd); -+void sdhci_set_power_and_bus_voltage(struct sdhci_host *host, -+ unsigned char mode, -+ unsigned short vdd); - void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode, - unsigned short vdd); - void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq); --- -cgit 1.2-0.3.lf.el7 -From f87391eec2c5f54269e64d655da19f2c32515e4c Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Date: Fri, 6 Mar 2020 18:44:11 +0100 -Subject: mmc: sdhci: iproc: Add custom set_power() callback for bcm2711 - -The controller needs a valid bus voltage in its power register -regardless of whether an external regulator is taking care of the power -supply. - -The sdhci core already provides a helper function for this, -sdhci_set_power_and_bus_voltage(), so create a bcm2711 specific 'struct -sdhci_ops' which makes use of it. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Acked-by: Adrian Hunter <adrian.hunter@intel.com> -Link: https://lore.kernel.org/r/20200306174413.20634-10-nsaenzjulienne@suse.de -Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> ---- - drivers/mmc/host/sdhci-iproc.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c -index f4f5f0a70cda..225603148d7d 100644 ---- a/drivers/mmc/host/sdhci-iproc.c -+++ b/drivers/mmc/host/sdhci-iproc.c -@@ -261,9 +261,24 @@ static const struct sdhci_iproc_data bcm2835_data = { - .mmc_caps = 0x00000000, - }; - -+static const struct sdhci_ops sdhci_iproc_bcm2711_ops = { -+ .read_l = sdhci_iproc_readl, -+ .read_w = sdhci_iproc_readw, -+ .read_b = sdhci_iproc_readb, -+ .write_l = sdhci_iproc_writel, -+ .write_w = sdhci_iproc_writew, -+ .write_b = sdhci_iproc_writeb, -+ .set_clock = sdhci_set_clock, -+ .set_power = sdhci_set_power_and_bus_voltage, -+ .get_max_clock = sdhci_iproc_get_max_clock, -+ .set_bus_width = sdhci_set_bus_width, -+ .reset = sdhci_reset, -+ .set_uhs_signaling = sdhci_set_uhs_signaling, -+}; -+ - static const struct sdhci_pltfm_data sdhci_bcm2711_pltfm_data = { - .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, -- .ops = &sdhci_iproc_32only_ops, -+ .ops = &sdhci_iproc_bcm2711_ops, - }; - - static const struct sdhci_iproc_data bcm2711_data = { --- -cgit 1.2-0.3.lf.el7 -From patchwork Fri Mar 6 17:44:12 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: 11424593 -Return-Path: - <SRS0=iJpk=4X=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9D86014E3 - for <patchwork-linux-arm@patchwork.kernel.org>; - Fri, 6 Mar 2020 17:46:55 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 7BFCB2072A - for <patchwork-linux-arm@patchwork.kernel.org>; - Fri, 6 Mar 2020 17:46:55 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="YjdlKV21" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7BFCB2072A -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=uwmoUBe7WYtSPXJudhI4GM1SShwysP2rkzh9oA/iygA=; b=YjdlKV21P2YnYd - uFZk/zUDicQRMv6kHWHSeOubxKYNNZjuVUmkI6PWtCuEt37bz+3qPjaDWjY6QO0qR9wHKzxaPikjZ - upSKvBHf9jcYSON0gQhjCxZEGnfO3zrdObtnjdQFTTE9rJPiUXe+bIsvhqlNCO/5Xq4pXjSVR81Fw - IVfXtxtw0tmDjrN7VDqH+dhvUPrvLDRnXOHnolvQfQyuvyvSZ9I7Wn/c4fFJsZemBA7mjvORI7cTd - lVRuIqACikY2bT4Zh+ZtglOCFxtlNjCe60Dj94AnA/j51dvC8MHQOOD+HGKjGzKBwk5FONXjvKeUZ - kR8WGaZiQsG3hj3hzxyw==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jAH3k-0003wN-91; Fri, 06 Mar 2020 17:46:52 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jAH1V-00085X-Ut; Fri, 06 Mar 2020 17:44:35 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 8906AACC2; - Fri, 6 Mar 2020 17:44:32 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: adrian.hunter@intel.com, linux-kernel@vger.kernel.org, - Rob Herring <robh+dt@kernel.org>, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Subject: [PATCH v2 10/11] ARM: dts: bcm2711: Update expgpio's GPIO labels -Date: Fri, 6 Mar 2020 18:44:12 +0100 -Message-Id: <20200306174413.20634-11-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.25.1 -In-Reply-To: <20200306174413.20634-1-nsaenzjulienne@suse.de> -References: <20200306174413.20634-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200306_094434_171925_0978A2DC -X-CRM114-Status: GOOD ( 11.64 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: stefan.wahren@i2se.com, devicetree@vger.kernel.org, f.fainelli@gmail.com, - linux-mmc@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, - linux-rpi-kernel@lists.infradead.org, phil@raspberrypi.com, - linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -The 6th line of the GPIO expander is used to power the board's SD card. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 1d4b589fe233..b0ea8233b636 100644 ---- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -68,7 +68,7 @@ expgpio: gpio { - "GLOBAL_RESET", - "VDD_SD_IO_SEL", - "CAM_GPIO", -- "", -+ "SD_PWR_ON", - ""; - status = "okay"; - }; -From patchwork Fri Mar 6 17:44:13 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: 11424599 -Return-Path: - <SRS0=iJpk=4X=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A9E8E14BC - for <patchwork-linux-arm@patchwork.kernel.org>; - Fri, 6 Mar 2020 17:47:49 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id 86F7120656 - for <patchwork-linux-arm@patchwork.kernel.org>; - Fri, 6 Mar 2020 17:47:49 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="nK9IFX75" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 86F7120656 -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: - List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: - Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: - Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: - List-Owner; bh=yrr+wQNcWoBzz3a/8/AcMlS2enrwpsgYIWUpL8bLv8o=; b=nK9IFX75hVaG6g - t8PhPIHJnIGtQxqZ65valF8dAq8JXeUle2mgnW5xdfa/YWcgzajD9/LaS1qMXKW7wDU/rQ0GbSW9t - +8F8v8NQzCf34sfHmFBEl30S1pJN/dQVJKJk0kmx6/P9N+ig3vAyMVsPsXq1Xij+OU0aU8SU1V+mE - nZnwLti9oSRWY6sNhg1MoHB2DNBt/FBNtROGqiXh13ngQTg8C/HgYapnJnXb+GjrutVM2DzH+i/tG - OtgGRm0XoLRz5QjavZZHPmlHUm8pMxfgllYbUvrESNgDT06vBiPj4idCN7X1XXxxoqPsP3/k8kido - Py713+dNVA1gqQEWqG1g==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jAH4a-0004vA-Os; Fri, 06 Mar 2020 17:47:44 +0000 -Received: from mx2.suse.de ([195.135.220.15]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1jAH1W-00086J-W9; Fri, 06 Mar 2020 17:44:36 +0000 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 8D8E5AEC5; - Fri, 6 Mar 2020 17:44:33 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: adrian.hunter@intel.com, linux-kernel@vger.kernel.org, - Rob Herring <robh+dt@kernel.org>, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -Subject: [PATCH v2 11/11] ARM: dts: bcm2711: Add vmmc regulator in emmc2 -Date: Fri, 6 Mar 2020 18:44:13 +0100 -Message-Id: <20200306174413.20634-12-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.25.1 -In-Reply-To: <20200306174413.20634-1-nsaenzjulienne@suse.de> -References: <20200306174413.20634-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200306_094435_205829_20FE02CB -X-CRM114-Status: GOOD ( 10.34 ) -X-Spam-Score: -2.3 (--) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-2.3 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) - [195.135.220.15 listed in wl.mailspike.net] - -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, - medium trust [195.135.220.15 listed in list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: stefan.wahren@i2se.com, devicetree@vger.kernel.org, f.fainelli@gmail.com, - linux-mmc@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, - linux-rpi-kernel@lists.infradead.org, phil@raspberrypi.com, - linux-arm-kernel@lists.infradead.org -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -The SD card power can be controlled trough a pin routed into the board's -external GPIO expander. Turn that into a regulator and provide it to -emmc2. - -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index b0ea8233b636..a2da058396fe 100644 ---- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -@@ -55,6 +55,16 @@ sd_io_1v8_reg: sd_io_1v8_reg { - 3300000 0x0>; - status = "okay"; - }; -+ -+ sd_vcc_reg: sd_vcc_reg { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc-sd"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-boot-on; -+ enable-active-high; -+ gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>; -+ }; - }; - - &firmware { -@@ -173,6 +183,7 @@ brcmf: wifi@1 { - /* EMMC2 is used to drive the SD card */ - &emmc2 { - vqmmc-supply = <&sd_io_1v8_reg>; -+ vmmc-supply = <&sd_vcc_reg>; - broken-cd; - status = "okay"; - }; diff --git a/arm-bcm2835-serial-8250_early-support-aux-uart.patch b/arm-bcm2835-serial-8250_early-support-aux-uart.patch deleted file mode 100644 index 5ab954996..000000000 --- a/arm-bcm2835-serial-8250_early-support-aux-uart.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 57b76faf1d7860f070a1ee2d0b7eccd9f37ecc55 Mon Sep 17 00:00:00 2001 -From: Matthias Brugger <mbrugger@suse.com> -Date: Sun, 26 Jan 2020 13:33:14 +0100 -Subject: serial: 8250_early: Add earlycon for BCM2835 aux uart - -Define the OF early console for BCM2835 aux UART, which can be enabled -by passing "earlycon" on the boot command line. This UART is found on -BCM283x and BCM27xx SoCs, a.k.a. Raspberry Pi in its variants. - -Signed-off-by: Matthias Brugger <mbrugger@suse.com> -Link: https://lore.kernel.org/r/20200126123314.3558-1-matthias.bgg@kernel.org -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - drivers/tty/serial/8250/8250_bcm2835aux.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c -index e70e3cc30050..5cc03bf24f85 100644 ---- a/drivers/tty/serial/8250/8250_bcm2835aux.c -+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c -@@ -137,6 +137,24 @@ static struct platform_driver bcm2835aux_serial_driver = { - }; - module_platform_driver(bcm2835aux_serial_driver); - -+#ifdef CONFIG_SERIAL_8250_CONSOLE -+ -+static int __init early_bcm2835aux_setup(struct earlycon_device *device, -+ const char *options) -+{ -+ if (!device->port.membase) -+ return -ENODEV; -+ -+ device->port.iotype = UPIO_MEM32; -+ device->port.regshift = 2; -+ -+ return early_serial8250_setup(device, NULL); -+} -+ -+OF_EARLYCON_DECLARE(bcm2835aux, "brcm,bcm2835-aux-uart", -+ early_bcm2835aux_setup); -+#endif -+ - MODULE_DESCRIPTION("BCM2835 auxiliar UART driver"); - MODULE_AUTHOR("Martin Sperl <kernel@martin.sperl.org>"); - MODULE_LICENSE("GPL v2"); --- -cgit 1.2-0.3.lf.el7 diff --git a/arm64-Fix-some-GPIO-setup-on-Pinebook-Pro.patch b/arm64-Fix-some-GPIO-setup-on-Pinebook-Pro.patch deleted file mode 100644 index 7bfd204b5..000000000 --- a/arm64-Fix-some-GPIO-setup-on-Pinebook-Pro.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c45fbddb2cd7ce6198e33ebe6dc4c1301d7875d4 Mon Sep 17 00:00:00 2001 -From: Peter Robinson <pbrobinson@gmail.com> -Date: Sun, 19 Apr 2020 20:50:08 +0100 -Subject: [PATCH] Fix some GPIO setup on Pinebook Pro - -This patchset contains two small fixes for the dts of the Pinebook Pro. -The first fixes inverted logic on the headphone detect GPIO. -The second patch fixes unreliable DC charger detection. - -Tobias Schramm (2): - arm64: dts: rockchip: fix inverted headphone detection - arm64: dts: rockchip: enable DC charger detection pullup - -Signed-off-by: Peter Robinson <pbrobinson@gmail.com> ---- - arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts -index 5ea281b55fe2..294d21bf45f5 100644 ---- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts -+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts -@@ -147,7 +147,7 @@ es8316-sound { - "Speaker", "Speaker Amplifier OUTL", - "Speaker", "Speaker Amplifier OUTR"; - -- simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; -+ simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; - simple-audio-card,aux-devs = <&speaker_amp>; - simple-audio-card,pin-switches = "Speaker"; - -@@ -788,13 +788,13 @@ lidbtn_gpio: lidbtn-gpio { - - dc-charger { - dc_det_gpio: dc-det-gpio { -- rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; -+ rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; - }; - }; - - es8316 { - hp_det_gpio: hp-det-gpio { -- rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; -+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; - }; - }; - --- -2.26.1 - diff --git a/arm64-a64-mbus.patch b/arm64-a64-mbus.patch deleted file mode 100644 index 46efa29cf..000000000 --- a/arm64-a64-mbus.patch +++ /dev/null @@ -1,69 +0,0 @@ -From daae9f66b29a04a94708b1b5a9b61e3ee14df031 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec <jernej.skrabec@siol.net> -Date: Mon, 10 Feb 2020 18:06:52 +0100 -Subject: [PATCH 1/2] dt-bindings: interconnect: sunxi: Add A64 MBUS compatible - -A64 contains MBUS controller. Add a compatible for it. - -Acked-by: Rob Herring <robh@kernel.org> -Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> -Signed-off-by: Maxime Ripard <maxime@cerno.tech> ---- - .../devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml -index 9370e64992dd..aa0738b4d534 100644 ---- a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml -+++ b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml -@@ -30,6 +30,7 @@ properties: - enum: - - allwinner,sun5i-a13-mbus - - allwinner,sun8i-h3-mbus -+ - allwinner,sun50i-a64-mbus - - reg: - maxItems: 1 --- -2.24.1 - -From 410bb2be7e1f1d329c238e2d6d06b6c25dcee404 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec <jernej.skrabec@siol.net> -Date: Mon, 10 Feb 2020 18:06:54 +0100 -Subject: [PATCH 2/2] arm64: dts: allwinner: a64: Add MBUS controller node - -A64 contains MBUS, which is the bus used by DMA devices to access -system memory. - -MBUS controller is responsible for arbitration between channels based -on set priority and can do some other things as well, like report -bandwidth used. It also maps RAM region to different address than CPU. - -Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net> -Signed-off-by: Maxime Ripard <maxime@cerno.tech> ---- - arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -index 862b47dc9dc9..251c91724de1 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -@@ -1061,6 +1061,14 @@ pwm: pwm@1c21400 { - status = "disabled"; - }; - -+ mbus: dram-controller@1c62000 { -+ compatible = "allwinner,sun50i-a64-mbus"; -+ reg = <0x01c62000 0x1000>; -+ clocks = <&ccu 112>; -+ dma-ranges = <0x00000000 0x40000000 0xc0000000>; -+ #interconnect-cells = <1>; -+ }; -+ - csi: csi@1cb0000 { - compatible = "allwinner,sun50i-a64-csi"; - reg = <0x01cb0000 0x1000>; --- -2.24.1 - diff --git a/arm64-dts-imx8mq-phanbell-Add-support-for-ethernet.patch b/arm64-dts-imx8mq-phanbell-Add-support-for-ethernet.patch deleted file mode 100644 index efa8393c3..000000000 --- a/arm64-dts-imx8mq-phanbell-Add-support-for-ethernet.patch +++ /dev/null @@ -1,200 +0,0 @@ -From patchwork Tue Feb 11 13:48:28 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alifer Moraes <alifer.wsdm@gmail.com> -X-Patchwork-Id: 11375533 -Return-Path: - <SRS0=9UBk=37=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E7DAC92A - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 11 Feb 2020 13:49:12 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id C5EA020714 - for <patchwork-linux-arm@patchwork.kernel.org>; - Tue, 11 Feb 2020 13:49:12 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="balGUEE3"; - dkim=fail reason="signature verification failed" (2048-bit key) - header.d=gmail.com header.i=@gmail.com header.b="d3FXu4Dc" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C5EA020714 -Authentication-Results: mail.kernel.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: - List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: - Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: - Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: - References:List-Owner; bh=Q9Eedrpm+ZQezEHXcjojgCHrYwg1NSmbBzGRJC6OAEs=; b=bal - GUEE3cweBEy/Vkjzf2O1dBoqXUeIQqctHowPUTw4Z2UghEKFuNfNsw8XoV+k/9uxO4M/XaDCgWyyp - qf26Y3SZo9+k2pqbjJt+qdqndF06tTHiH7QPQGbaWEBxURzOD+G1VW8Iyjvfi0f9vrXbv8d9b9+DI - LPpFdD/7IwXQZEYsPmaSEitj7mQXBlWZnRZrvrQfYtxXb3yABUQIUrBtZSoARs4A+Txn4vOFlT6B4 - HOAidlwfT8hESddkvjjmeCAuPLXUyIBvDoSaYgAumOSh1xoUZsswM2ALud+R1XKVlGlAd1BE6uHt2 - bWDUHrcXdge45JTn/egO1ibajqTlB/g==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j1VuW-0004DJ-JR; Tue, 11 Feb 2020 13:49:08 +0000 -Received: from mail-qt1-x841.google.com ([2607:f8b0:4864:20::841]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1j1VuM-0003zu-98 - for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2020 13:48:59 +0000 -Received: by mail-qt1-x841.google.com with SMTP id t13so7964724qto.3 - for <linux-arm-kernel@lists.infradead.org>; - Tue, 11 Feb 2020 05:48:53 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id; - bh=JIZHRdZLqtLorXZfrYCSPItmC1Dc+HGHwOIzP/XDImY=; - b=d3FXu4DcpsHeeo7NBsq1Ec3f7OKhc4SsvQnIJenSnOtjREel9IF+kdR8ma1SWkO5OR - Ou4s2dnBv7WOxC4OPWNV6d8KIVpBRVtM/ukAKzN6d3zx7MvBtQz1N27NoDx/a7ujHsmS - jvZYtEEc8DToM7semtrIS3CUfnR8Jxni2Z/6WUP8wvMdDT8C1m2PB78zzz+BFas4vec2 - VRg0vXB9eGeEdlGGMFCs2IJ9nbGhw7o3VA3WFY8plHWMmjNInC6fLgpMiA40FBmv4BzV - G9slDIDonCBacDdi6tPT8KEVnytqC8eiltqCoEj+hq8mYECNDQpWUjWhJQ4KRRh1aoXi - oAuA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id; - bh=JIZHRdZLqtLorXZfrYCSPItmC1Dc+HGHwOIzP/XDImY=; - b=VDw2Y7qVf/KFTneIHUcwsg23yYrIU2SHbDXAyjC6m5rgjl9cM292uJO9J1u+Op1Cu/ - dOhT15wf440CJpqMBTLTJJSuUVpomGxEXFT4qDa6Q84BqkWbFYl/d9HRJkcM1376rLVZ - 7nbzvWqSlLIu3wFgOabFryD13Mw65RJpKUn2vW0b7kInWJ/phJhDJ5+FwjVWJTXEIlsT - LFN5gpS5hajAUubLcUmK8avcuJGka+vT8NkK608MO8NndwUp56g4BRs7Pk4S6wvttmy3 - F8ouwAvWF2idbxWjx9MGcaM/PVLhQpDmcif8AjlEhGnbBza4u5356N4S+SKZSkd43Grw - 8ZWA== -X-Gm-Message-State: APjAAAUJWGlEecdg9M/V5ba1zVNwrP9LNv4AsXidTI7JEnOQd/PE0sMm - I4AUmnPqcCuUaNiG7XoZiUw= -X-Google-Smtp-Source: - APXvYqybhzOEAAvHZbhKNes/s71zGxqa2omF1pXH9nVpHWlE7KVvcXMkRtBbOlD4T9UG/KxmmcCT+w== -X-Received: by 2002:ac8:7caf:: with SMTP id z15mr14892626qtv.68.1581428933199; - Tue, 11 Feb 2020 05:48:53 -0800 (PST) -Received: from NXL86673.nxp.com ([177.221.114.206]) - by smtp.googlemail.com with ESMTPSA id h6sm2158936qtr.33.2020.02.11.05.48.50 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Tue, 11 Feb 2020 05:48:52 -0800 (PST) -From: Alifer Moraes <alifer.wsdm@gmail.com> -To: robh+dt@kernel.org -Subject: [PATCH] arm64: dts: imx8mq-phanbell: Add support for ethernet -Date: Tue, 11 Feb 2020 10:48:28 -0300 -Message-Id: <20200211134828.138-1-alifer.wsdm@gmail.com> -X-Mailer: git-send-email 2.17.1 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200211_054858_316312_8FE28FDF -X-CRM114-Status: GOOD ( 10.43 ) -X-Spam-Score: -0.2 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (-0.2 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [2607:f8b0:4864:20:0:0:0:841 listed in] - [list.dnswl.org] - 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail - provider [alifer.wsdm[at]gmail.com] - -0.0 SPF_PASS SPF: sender matches SPF record - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - 0.1 DKIM_SIGNED Message has a DKIM or DK signature, - not necessarily - valid - -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from - envelope-from domain - -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature - -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from - author's domain -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, festevam@gmail.com, - s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, - Alifer Moraes <alifer.wsdm@gmail.com>, marco.franchi@nxp.com, - shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org -MIME-Version: 1.0 -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -Add support for ethernet on Google's i.MX 8MQ Phanbell - -Signed-off-by: Alifer Moraes <alifer.wsdm@gmail.com> ---- - .../boot/dts/freescale/imx8mq-phanbell.dts | 41 +++++++++++++++++++ - 1 file changed, 41 insertions(+) - -diff --git a/arch/arm64/boot/dts/freescale/imx8mq-phanbell.dts b/arch/arm64/boot/dts/freescale/imx8mq-phanbell.dts -index 3f2a489a4ad8..16ed13c44a47 100644 ---- a/arch/arm64/boot/dts/freescale/imx8mq-phanbell.dts -+++ b/arch/arm64/boot/dts/freescale/imx8mq-phanbell.dts -@@ -201,6 +201,27 @@ - }; - }; - -+&fec1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pinctrl_fec1>; -+ phy-mode = "rgmii-id"; -+ phy-reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; -+ phy-reset-duration = <10>; -+ phy-reset-post-delay = <30>; -+ phy-handle = <ðphy0>; -+ fsl,magic-packet; -+ status = "okay"; -+ -+ mdio { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ ethphy0: ethernet-phy@0 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <0>; -+ }; -+ }; -+}; -+ - &uart1 { - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_uart1>; -@@ -254,6 +275,26 @@ - }; - - &iomuxc { -+ pinctrl_fec1: fec1grp { -+ fsl,pins = < -+ MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3 -+ MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23 -+ MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f -+ MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f -+ MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f -+ MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f -+ MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91 -+ MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91 -+ MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91 -+ MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91 -+ MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f -+ MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91 -+ MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91 -+ MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f -+ MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19 -+ >; -+ }; -+ - pinctrl_i2c1: i2c1grp { - fsl,pins = < - MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f diff --git a/arm64-pinctrl-bcm2835-Add-support-for-all-BCM2711-GPIOs.patch b/arm64-pinctrl-bcm2835-Add-support-for-all-BCM2711-GPIOs.patch deleted file mode 100644 index 87ef3d967..000000000 --- a/arm64-pinctrl-bcm2835-Add-support-for-all-BCM2711-GPIOs.patch +++ /dev/null @@ -1,868 +0,0 @@ -From patchwork Mon Jan 27 18:15:05 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Stefan Wahren <stefan.wahren@i2se.com> -X-Patchwork-Id: 11353081 -Return-Path: - <SRS0=MBPz=3Q=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E75D71398 - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:15:48 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id C51652087F - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:15:48 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="boj1KSY/" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C51652087F -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=i2se.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: - List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: - In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: - Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc - :Resent-Message-ID:List-Owner; - bh=vI+2qhhQ/ad2gqCbe5hUTYTYVj8IfAamleiL75V5TSM=; b=boj1KSY/v7nluMqljONFMsrQpY - TIwo7rcohwHGuN2fwWIQvlOtuoNfi2Fq0p3Scukv0Q2ADP7S7q291VcafNnFU5KN1MrzMbRGe4GnM - P3V6kUvf56szm1T1NS1MkTH0UxtSeASAdrde8x8OVZKQoaCTk7UON0PPOY27cnqVlh3c0YEdnjw7O - mqUMZ1W2xfP/jLVZPipZOqiUkCPtyOl7fcUXPVJInCLU8Ap12h/ucwxm6p7sL/miLW+RLo0gKtso8 - vE/Ub+gXij8pNQBcHeQOS3T5w7YYAKX0ckGovHYTGCE5G9DP0PYvWHj2aUr39vu4U7SF87h2rVwQ8 - lsj/6XEg==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8vL-0007qT-4l; Mon, 27 Jan 2020 18:15:47 +0000 -Received: from mout.kundenserver.de ([212.227.126.130]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8vI-0007pK-OI - for linux-arm-kernel@lists.infradead.org; Mon, 27 Jan 2020 18:15:46 +0000 -Received: from localhost.localdomain ([37.4.249.152]) by - mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) - id 1MRmwM-1j2Dig1rly-00TAt5; Mon, 27 Jan 2020 19:15:40 +0100 -From: Stefan Wahren <stefan.wahren@i2se.com> -To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Florian Fainelli <f.fainelli@gmail.com>, - Linus Walleij <linus.walleij@linaro.org>, Ray Jui <rjui@broadcom.com>, - Scott Branden <sbranden@broadcom.com> -Subject: [RFC PATCH 1/4] pinctrl: bcm2835: Drop unused define -Date: Mon, 27 Jan 2020 19:15:05 +0100 -Message-Id: <1580148908-4863-2-git-send-email-stefan.wahren@i2se.com> -X-Mailer: git-send-email 2.7.4 -In-Reply-To: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -References: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -X-Provags-ID: V03:K1:lGg05mfNcExFSuIdqSja3VB+cOAOOVkxA1mUl+WjJLfuDEYN48s - KCpfgqk9HemEgzwKhTMkYEgexHNzZfeVG5k5xAbv9CDheeQx24pa/Pz7dPaHD9i2zVtcPEX - ugday3kFGFOvKGH3QCW8oxkE91P2/fJaGsnynRzDkoSe3RjqXABLPjZW+febQ6xUrd9aF8p - OvDdu6E+cBesU1loyk22g== -X-Spam-Flag: NO -X-UI-Out-Filterresults: notjunk:1;V03:K0:FBYTcl5hsyU=:/uJXPKY5G3RK2HKm3g2afF - CA5JAlk5ZwkebJLV4bbQfKqE89ChkfNCYzAIhT9SgQhi22RYSBr1LmN//FwU0R3diFEvflVI4 - OPkci48gv0sh+mZnsk9a5fiLs2oAnSh5hggie4G8ZelqhAZ6n4CYEWIp+lz1bo5KPywuZxqek - T8GpkbU4eb/oEicxOhC8lN0DwOFD5W3GliKQ1IpWDarfz8Y9a4d+EgeY0+iBjelJHlfR3e1Q4 - 5TOF82NxXDkBp/4GoxSxM5JDUgoTnPvWCJ7ZFIchyrHbjc5NauAb/4e//OnNTPB8e7bKoOaH2 - HQ6XUp0Da/6crl8QtfuGEbHRAtkNZFJTRdT07zQtpcH89Cqto3IYQ9ND/7ijWcWxu5wb7Ve34 - RPM8gzArJAvou4fFeqPnnHkVmPuq3p5Xua81P7sTqXQN3m5U5RqmH8Lzr8w92FQrloZ2SMe9z - XjYOrjAoxuxpe2x+H3tUoY4PwEgZjz7swAA8BeyYnRzumaAVvQgvNKrW2Qj9V73nKPwgtehvz - hZDfvJgFBHEyfHVj4Fcz+N3r4xFIWS5o2UW5P2M2L2v7bQsckL4EkHWUHSjK5sJhQVDongIHo - /+aJJViGcVBiAGrzvEW2ksFVnPP5X7R2pBxPckyIx3WhJaGzC1OGqA3Wg/a2k08Ewtt7m2DXz - yYvnBfgEsV57VS3aLe8dsbJ2HqKMcqeahm6FQesAnangl4BtG6RH1BMKAaaaMeuJm2DQO+UUA - PELxUMq3dBDAOEuSMNSdvN15BCqDxAajjVLnv+b/+pnKsJ/31p3YVryA78eJ6/kZm1a/DobHg - vNu1QLjbpYkq/WH/K/LaUxt+YpwMi8egvQPLH32zMRACRbsqlMQ7nAGsZtdEkU8zYbp38yV -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200127_101545_079150_4EC20A38 -X-CRM114-Status: GOOD ( 11.11 ) -X-Spam-Score: 0.0 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (0.0 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [212.227.126.130 listed in list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Stefan Wahren <stefan.wahren@i2se.com>, linux-gpio@vger.kernel.org, - bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, - devicetree@vger.kernel.org -MIME-Version: 1.0 -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -There is no usage for this define, so drop it. - -Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> ---- - drivers/pinctrl/bcm/pinctrl-bcm2835.c | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -index 0de1a3a..3fc2638 100644 ---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c -+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -@@ -40,9 +40,6 @@ - #define BCM2835_NUM_BANKS 2 - #define BCM2835_NUM_IRQS 3 - --#define BCM2835_PIN_BITMAP_SZ \ -- DIV_ROUND_UP(BCM2835_NUM_GPIOS, sizeof(unsigned long) * 8) -- - /* GPIO register offsets */ - #define GPFSEL0 0x0 /* Function Select */ - #define GPSET0 0x1c /* Pin Output Set */ - -From patchwork Mon Jan 27 18:15:06 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Stefan Wahren <stefan.wahren@i2se.com> -X-Patchwork-Id: 11353087 -Return-Path: - <SRS0=MBPz=3Q=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D0A70159A - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:16:30 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id A832D214AF - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:16:30 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="BBcc5MYW" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A832D214AF -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=i2se.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: - List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: - In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: - Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc - :Resent-Message-ID:List-Owner; - bh=zl633DOCOOf5sEmBHgEEmRs3zIL6xCyAbRmQHF/5twU=; b=BBcc5MYWdf7TBI7GF8KvMnZTXP - vwSri+G4Xg+SfQ0x1b4jtd8AwTGL1tYuyopmjQCdIt42APOehPRUttV2YvvQ9suKeJoNobnLxLcBr - zvQYgSNAwt21baLbOyQi0HJWd2BzeIpRw419olVPp37cUGLwE4hpNIv0peCB/6uhTDXyN4YPrXKmW - P7fz/gK+8yj6qz6VZeILYNYiE5DjbkwPSIoD8X/NZhppDvPNCkO3tmD4Z1UQDhMoZNooqIWcGRKIh - umTkq58tIYGNOTccLaKvcW8Elm9ZHK7ssai4uhpgfmL0tId3saEqMuJzSccyqF6ENztpgOra2qWKS - cVX67vMA==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8vz-0008UK-VC; Mon, 27 Jan 2020 18:16:27 +0000 -Received: from mout.kundenserver.de ([212.227.126.135]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8vJ-0007pN-PH - for linux-arm-kernel@lists.infradead.org; Mon, 27 Jan 2020 18:15:48 +0000 -Received: from localhost.localdomain ([37.4.249.152]) by - mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) - id 1MdvVu-1jTpmM3Tfy-00b6tv; Mon, 27 Jan 2020 19:15:40 +0100 -From: Stefan Wahren <stefan.wahren@i2se.com> -To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Florian Fainelli <f.fainelli@gmail.com>, - Linus Walleij <linus.walleij@linaro.org>, Ray Jui <rjui@broadcom.com>, - Scott Branden <sbranden@broadcom.com> -Subject: [RFC PATCH 2/4] pinctrl: bcm2835: Refactor platform data -Date: Mon, 27 Jan 2020 19:15:06 +0100 -Message-Id: <1580148908-4863-3-git-send-email-stefan.wahren@i2se.com> -X-Mailer: git-send-email 2.7.4 -In-Reply-To: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -References: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -X-Provags-ID: V03:K1:VruPCfmk9mM3xiAf4DG/6aoXzCy4UDEsxr5SC+GDP4iRdgXZX29 - MFCNoD27qBqcSq1LjDl1+NGtNJ3+c1twK3aKoFUdWC05HKxzJPuizB6xDkWYoCIsLzUx75H - HiA0SBUlw/LN+bHlzoczcUQzu+qFL0N3XAwKX9HxzpPzSFwl1lRDgLB6suBZjq4VTFrw6QP - xptjL6VDFkgqBb05XjOfA== -X-Spam-Flag: NO -X-UI-Out-Filterresults: notjunk:1;V03:K0:f2Tec5CMQUc=:niiLUGM7C+e//7RIjf+wMq - wLFHtqjv1ynGaEgrTEwtjnWYqI/r72m4A6fdxd06jGD2Uyp8tpT//zGZgAMatxGP2tJCKPrs8 - H50QvZYrkhyeWT1e/b/43xnEBFcJ26c6kKbSdwNEaPpeQ2pSXrJ+fWFg4rgyr2kyb0a6fODwi - glMJlRcbMvRam6bDw57BliG4DhkYgMl0WB+vE3ztB/xJo+NhTzPKfEpK10WVhz1N+MdOE8gPM - Ed3HaUcq1KYSZvZRKVS8rOnqLfx2aLsXvrn+YKEvs5xzV1w8QpRWEIYZcLOwKvY23kJzQG9eq - MIIG4Or4qhijuBXiW2q6mwUPh2z1lLVKOHwzEHdCAb+4bDlzo8dAxIoc40B0H6ZxVg4/5LHFJ - La0bD0qwfKTemPRPvdCrUGRjVY38hB0RBGSXLrWBfL0PkTsuaEeRZvCVEY80YYfxmOaIKNCZI - KTZTGrVvZWUrz2smObUJlIIzYVznL4L5rWMZjNaLpWxwyNpAg0eDTqVYFmDT+qIxNN4PgQhRy - tSUqMKFEgm7xT/YoZD4jdOe5rJJ0dEmy9DgnlvjmjzCBjXAGdPFrFO9kKivLmdSPaubJ7DdcC - tcrGiqydtDkturFJvTsQYH+PmTQvbe4oBqgNIRZo8f1X5RgRS0fFLp3LA8/+FKUufNNqrLMao - +41TZ2JeFAJBnB9x8z5VMa7EVYvu5Vv7a6UPbF0i7yUPlzFy4OB0vDTMzjH7rW414iarBNvIy - QDypz6a5PwveJ4Fe9ATD7LILVISmcIjM7r29JF4LAmFeYo0lVn6a4kM0PnIwd/wQsax1Rp9/Y - J1/TI8TQICVBl0N9CsxgAPc+X49YqHbFXpoqbsqqK9BIb3Bj+cJJ6Owe9HtjZLb6ifZLnyA -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200127_101546_108760_0514F0F4 -X-CRM114-Status: GOOD ( 14.77 ) -X-Spam-Score: 0.0 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (0.0 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [212.227.126.135 listed in list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Stefan Wahren <stefan.wahren@i2se.com>, linux-gpio@vger.kernel.org, - bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, - devicetree@vger.kernel.org -MIME-Version: 1.0 -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -This prepares the platform data to be easier to extend for more GPIOs. -Except of this there is no functional change. - -Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> ---- - drivers/pinctrl/bcm/pinctrl-bcm2835.c | 57 +++++++++++++++++++++++++++-------- - 1 file changed, 44 insertions(+), 13 deletions(-) - -diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -index 3fc2638..ffd069a 100644 ---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c -+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -@@ -82,6 +82,7 @@ struct bcm2835_pinctrl { - - struct pinctrl_dev *pctl_dev; - struct gpio_chip gpio_chip; -+ struct pinctrl_desc pctl_desc; - struct pinctrl_gpio_range gpio_range; - - raw_spinlock_t irq_lock[BCM2835_NUM_BANKS]; -@@ -1051,7 +1052,7 @@ static const struct pinconf_ops bcm2711_pinconf_ops = { - .pin_config_set = bcm2711_pinconf_set, - }; - --static struct pinctrl_desc bcm2835_pinctrl_desc = { -+static const struct pinctrl_desc bcm2835_pinctrl_desc = { - .name = MODULE_NAME, - .pins = bcm2835_gpio_pins, - .npins = ARRAY_SIZE(bcm2835_gpio_pins), -@@ -1061,19 +1062,47 @@ static struct pinctrl_desc bcm2835_pinctrl_desc = { - .owner = THIS_MODULE, - }; - --static struct pinctrl_gpio_range bcm2835_pinctrl_gpio_range = { -+static const struct pinctrl_desc bcm2711_pinctrl_desc = { -+ .name = MODULE_NAME, -+ .pins = bcm2835_gpio_pins, -+ .npins = ARRAY_SIZE(bcm2835_gpio_pins), -+ .pctlops = &bcm2835_pctl_ops, -+ .pmxops = &bcm2835_pmx_ops, -+ .confops = &bcm2711_pinconf_ops, -+ .owner = THIS_MODULE, -+}; -+ -+static const struct pinctrl_gpio_range bcm2835_pinctrl_gpio_range = { - .name = MODULE_NAME, - .npins = BCM2835_NUM_GPIOS, - }; - -+struct bcm_plat_data { -+ const struct gpio_chip *gpio_chip; -+ const struct pinctrl_desc *pctl_desc; -+ const struct pinctrl_gpio_range *gpio_range; -+}; -+ -+static const struct bcm_plat_data bcm2835_plat_data = { -+ .gpio_chip = &bcm2835_gpio_chip, -+ .pctl_desc = &bcm2835_pinctrl_desc, -+ .gpio_range = &bcm2835_pinctrl_gpio_range, -+}; -+ -+static const struct bcm_plat_data bcm2711_plat_data = { -+ .gpio_chip = &bcm2835_gpio_chip, -+ .pctl_desc = &bcm2711_pinctrl_desc, -+ .gpio_range = &bcm2835_pinctrl_gpio_range, -+}; -+ - static const struct of_device_id bcm2835_pinctrl_match[] = { - { - .compatible = "brcm,bcm2835-gpio", -- .data = &bcm2835_pinconf_ops, -+ .data = &bcm2835_plat_data, - }, - { - .compatible = "brcm,bcm2711-gpio", -- .data = &bcm2711_pinconf_ops, -+ .data = &bcm2711_plat_data, - }, - {} - }; -@@ -1083,6 +1112,7 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) - struct device *dev = &pdev->dev; - struct device_node *np = dev->of_node; - struct bcm2835_pinctrl *pc; -+ struct bcm_plat_data *pdata; - struct gpio_irq_chip *girq; - struct resource iomem; - int err, i; -@@ -1108,7 +1138,13 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) - if (IS_ERR(pc->base)) - return PTR_ERR(pc->base); - -- pc->gpio_chip = bcm2835_gpio_chip; -+ match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node); -+ if (!match) -+ return -EINVAL; -+ -+ pdata = (struct bcm_plat_data *)match->data; -+ -+ memcpy(&pc->gpio_chip, pdata->gpio_chip, sizeof(pc->gpio_chip)); - pc->gpio_chip.parent = dev; - pc->gpio_chip.of_node = np; - -@@ -1159,19 +1195,14 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) - return err; - } - -- match = of_match_node(bcm2835_pinctrl_match, pdev->dev.of_node); -- if (match) { -- bcm2835_pinctrl_desc.confops = -- (const struct pinconf_ops *)match->data; -- } -- -- pc->pctl_dev = devm_pinctrl_register(dev, &bcm2835_pinctrl_desc, pc); -+ memcpy(&pc->pctl_desc, pdata->pctl_desc, sizeof(pc->pctl_desc)); -+ pc->pctl_dev = devm_pinctrl_register(dev, &pc->pctl_desc, pc); - if (IS_ERR(pc->pctl_dev)) { - gpiochip_remove(&pc->gpio_chip); - return PTR_ERR(pc->pctl_dev); - } - -- pc->gpio_range = bcm2835_pinctrl_gpio_range; -+ memcpy(&pc->gpio_range, pdata->gpio_range, sizeof(pc->gpio_range)); - pc->gpio_range.base = pc->gpio_chip.base; - pc->gpio_range.gc = &pc->gpio_chip; - pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range); - -From patchwork Mon Jan 27 18:15:07 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Stefan Wahren <stefan.wahren@i2se.com> -X-Patchwork-Id: 11353089 -Return-Path: - <SRS0=MBPz=3Q=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org> -Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org - [172.30.200.123]) - by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 01D8B159A - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:16:42 +0000 (UTC) -Received: from bombadil.infradead.org (bombadil.infradead.org - [198.137.202.133]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by mail.kernel.org (Postfix) with ESMTPS id A3164214AF - for <patchwork-linux-arm@patchwork.kernel.org>; - Mon, 27 Jan 2020 18:16:41 +0000 (UTC) -Authentication-Results: mail.kernel.org; - dkim=pass (2048-bit key) header.d=lists.infradead.org - header.i=@lists.infradead.org header.b="OgchXKpW" -DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A3164214AF -Authentication-Results: mail.kernel.org; - dmarc=none (p=none dis=none) header.from=i2se.com -Authentication-Results: mail.kernel.org; - spf=none - smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; - d=lists.infradead.org; s=bombadil.20170209; h=Sender: - Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: - List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: - In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: - Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc - :Resent-Message-ID:List-Owner; - bh=XmwwFukBgBjwO0LJL+fK3hmGj90hC5ef7Vri1vGrDvw=; b=OgchXKpWUifGHBapyBCQRZf4Oe - Leu+Cl9F+oT35HizJxpDIqWCQOPGA84tYHVdL8DHnOR2sS8sgHpZTWMKe0QSgr3SUuLaQ2diawm04 - B9CSuvfP5yx9MActAPcuhQbMJldRfdt0X+pqyeQf6kaHPaj2JnqRwXWOofaMYeLQwl9zbqEB1B5Ss - FGQnyl0V9sMSPydz6oe5UALnFguup+uWjm3ybTj1yEDhm5vypOqzhTm3vwrvY0CtmPhS3f3vx5F/7 - qNeG7wpGbnUw9b2Ta44QWFyROWbi81UIHkON1Rn1lw/J5gf470beknQM/5fyv2iHMWMVIopDs2Qpo - Jxtt2SIA==; -Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) - by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8wC-0000I4-7V; Mon, 27 Jan 2020 18:16:40 +0000 -Received: from mout.kundenserver.de ([212.227.126.135]) - by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) - id 1iw8vJ-0007pO-PH - for linux-arm-kernel@lists.infradead.org; Mon, 27 Jan 2020 18:15:48 +0000 -Received: from localhost.localdomain ([37.4.249.152]) by - mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) - id 1MIxFi-1jB3PL0sMU-00KPSh; Mon, 27 Jan 2020 19:15:41 +0100 -From: Stefan Wahren <stefan.wahren@i2se.com> -To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - Florian Fainelli <f.fainelli@gmail.com>, - Linus Walleij <linus.walleij@linaro.org>, Ray Jui <rjui@broadcom.com>, - Scott Branden <sbranden@broadcom.com> -Subject: [RFC PATCH 3/4] pinctrl: bcm2835: Add support for all GPIOs on - BCM2711 -Date: Mon, 27 Jan 2020 19:15:07 +0100 -Message-Id: <1580148908-4863-4-git-send-email-stefan.wahren@i2se.com> -X-Mailer: git-send-email 2.7.4 -In-Reply-To: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -References: <1580148908-4863-1-git-send-email-stefan.wahren@i2se.com> -X-Provags-ID: V03:K1:X6IS1XjHy4cJfxjoudVoDX/cZvMR/vfdQSMdLzkgWq1irgCvB38 - RaAG8s5bLq+gwxv7sq4OOzzzIjMwUf3oUytVqdip8Emtgr3GiNEl2vBd272/sh3B1OJanK8 - goehy07Y9M/B0RMRS8QYkknz5PIlSimkZBJKjNE686UdoJg1We/vhXibKmf8z5kreTjrWe3 - q1JcyYfqP1itQAVjziUtQ== -X-Spam-Flag: NO -X-UI-Out-Filterresults: notjunk:1;V03:K0:LyL94am3zLA=:BmnKGYucrjNaj35BCZWbP5 - JzGddQvqDkhH/CCngNEO2dMwjvlnPKHh/PEbdrGp6m9QHAmq4UkqMbHYKp4XqoYGKvPoozwfP - FP1S21DqEh5BYA0hhWgk2maxuudk085Kg/UXpitwP437bovAei4bfR+gXu53083PnNenJAm4p - xAhXuwmTwnWKv+qAem9IrQUBQtWZqTLIoviS/rBI58lKIF9owSsmboh1lagz+7EGkpnXhcae1 - 0MbckaZUNlfNjiRnq4V+VHRLEiPKWNxiGYMIefuH9JuPr6WXJPFk7fJo8OZ45VvNntUoYSSpc - j0n6iO9I7UbYvyi7+SAmts7a4bZF+1qLxOl9S9cCBKPRGH2Z3kUCuTwNYlPjcUQyn6uqO0Mlx - c+13a6OSMjdDPVRDOntBqI0l4rsK062Ig/ZwiteVVX/T7ZtOdNR2v9sRVAnh/w8iyF4VHZ0GC - ULTnZeoeqfXKRaXEz7sGaOev/A5I1h35g02J5m9TlwjHQiNzKPNc45U2Rab8osp5QUPpRpD1N - 4TUS9baKQp8dfAHyEkc1gBlk0cb1zDcQJMX7bQVUSSxSFx0otQCiojOcWf2PP2Hf1NREQw+82 - UV3Z09N/3ny3u6Qu0dI11Kin/x4ZubPCk2Z9H663jrHUxQP4afxI/ZCeRjqTIpU8chYef1IHT - v3ZX4UpNi6S2kossS/nmFNqzdzxsOnNFseX4lA9Pp5DREJwDVh4t9UFpY49YOKaWkmqBFAAh4 - O7NlyceEWWYXkJh8pRPkdftSVQVKKjtoc+mmNdZ6A/MFCjlN4hQ4NzpeCvIGk1Jp/tUXAyMDV - jBtNPE8cgg54eLvhAbGLfFWVNbu8UAkmntw7HjfU+o9g9ylEQ02IihlbByt5l+e7GdgBJm5 -X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 -X-CRM114-CacheID: sfid-20200127_101546_105798_68395F22 -X-CRM114-Status: GOOD ( 17.25 ) -X-Spam-Score: 0.0 (/) -X-Spam-Report: SpamAssassin version 3.4.3 on bombadil.infradead.org summary: - Content analysis details: (0.0 points) - pts rule name description - ---- ---------------------- - -------------------------------------------------- - -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, - no trust [212.227.126.135 listed in list.dnswl.org] - 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record - -0.0 SPF_PASS SPF: sender matches SPF record -X-BeenThere: linux-arm-kernel@lists.infradead.org -X-Mailman-Version: 2.1.29 -Precedence: list -List-Id: <linux-arm-kernel.lists.infradead.org> -List-Unsubscribe: - <http://lists.infradead.org/mailman/options/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe> -List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/> -List-Post: <mailto:linux-arm-kernel@lists.infradead.org> -List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help> -List-Subscribe: - <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>, - <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe> -Cc: Stefan Wahren <stefan.wahren@i2se.com>, linux-gpio@vger.kernel.org, - bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, - devicetree@vger.kernel.org -MIME-Version: 1.0 -Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org> -Errors-To: - linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org - -The BCM2711 supports 58 GPIOs. So extend pinctrl and GPIOs accordingly. - -Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> ---- - drivers/pinctrl/bcm/pinctrl-bcm2835.c | 54 +++++++++++++++++++++++++++-------- - 1 file changed, 42 insertions(+), 12 deletions(-) - -diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -index ffd069a..41e7bf9 100644 ---- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c -+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c -@@ -37,6 +37,7 @@ - - #define MODULE_NAME "pinctrl-bcm2835" - #define BCM2835_NUM_GPIOS 54 -+#define BCM2711_NUM_GPIOS 58 - #define BCM2835_NUM_BANKS 2 - #define BCM2835_NUM_IRQS 3 - -@@ -78,7 +79,7 @@ struct bcm2835_pinctrl { - - /* note: locking assumes each bank will have its own unsigned long */ - unsigned long enabled_irq_map[BCM2835_NUM_BANKS]; -- unsigned int irq_type[BCM2835_NUM_GPIOS]; -+ unsigned int irq_type[BCM2711_NUM_GPIOS]; - - struct pinctrl_dev *pctl_dev; - struct gpio_chip gpio_chip; -@@ -145,6 +146,10 @@ static struct pinctrl_pin_desc bcm2835_gpio_pins[] = { - BCM2835_GPIO_PIN(51), - BCM2835_GPIO_PIN(52), - BCM2835_GPIO_PIN(53), -+ BCM2835_GPIO_PIN(54), -+ BCM2835_GPIO_PIN(55), -+ BCM2835_GPIO_PIN(56), -+ BCM2835_GPIO_PIN(57), - }; - - /* one pin per group */ -@@ -203,6 +208,10 @@ static const char * const bcm2835_gpio_groups[] = { - "gpio51", - "gpio52", - "gpio53", -+ "gpio54", |