mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 05:06:43 +00:00
linux: bump Amlogic to Linux 5.15.y kernel
This commit is contained in:
parent
6a690f2e30
commit
966d2692ef
@ -16,8 +16,8 @@ PKG_PATCH_DIRS="${LINUX}"
|
|||||||
|
|
||||||
case "${LINUX}" in
|
case "${LINUX}" in
|
||||||
amlogic)
|
amlogic)
|
||||||
PKG_VERSION="6cc049b8e0d05e1519d71afcf2d40d3aa5a48366" # 5.11.10
|
PKG_VERSION="f00712e27083550be3031099b7697925533a6e01" # 5.15.5
|
||||||
PKG_SHA256="d5f4a33af53ef0b22049366b2ae2c30a9bf5741dce7d1d2ed6e499c1d9d31c20"
|
PKG_SHA256="d1d06b7d0b2b23099f17b18559680821f39275e245d6be3d48a4867e0a7076c7"
|
||||||
PKG_URL="https://github.com/torvalds/linux/archive/${PKG_VERSION}.tar.gz"
|
PKG_URL="https://github.com/torvalds/linux/archive/${PKG_VERSION}.tar.gz"
|
||||||
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
|
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
|
||||||
;;
|
;;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From 30c07b172a2ecc6f97ba2a781568806ecd8c10f7 Mon Sep 17 00:00:00 2001
|
From 6441a37be7b5f73b21f575afc9414066e7c5dbf2 Mon Sep 17 00:00:00 2001
|
||||||
From: chewitt <github@chrishewitt.net>
|
From: chewitt <github@chrishewitt.net>
|
||||||
Date: Sat, 13 Apr 2019 05:41:51 +0000
|
Date: Sat, 13 Apr 2019 05:41:51 +0000
|
||||||
Subject: [PATCH 01/88] HACK: set meson-gx cma pool to 896MB
|
Subject: [PATCH 01/60] HACK: set meson-gx cma pool to 896MB
|
||||||
|
|
||||||
This change sets the CMA pool to a larger 896MB! value for vdec use
|
This change sets the CMA pool to a larger 896MB! value for vdec use
|
||||||
|
|
||||||
@ -11,10 +11,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
index 0edd137151f8..797e193af8e3 100644
|
index 6b457b2c30a4..b87be6505a0d 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
@@ -46,7 +46,7 @@
|
@@ -52,7 +52,7 @@
|
||||||
linux,cma {
|
linux,cma {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reusable;
|
reusable;
|
@ -1,7 +1,7 @@
|
|||||||
From 931e76338cb9030643c0228166258a7448bee56d Mon Sep 17 00:00:00 2001
|
From 92cf54f0adfc83fb83e9f7564027b84f32ddd401 Mon Sep 17 00:00:00 2001
|
||||||
From: chewitt <github@chrishewitt.net>
|
From: chewitt <github@chrishewitt.net>
|
||||||
Date: Wed, 14 Aug 2019 19:58:14 +0000
|
Date: Wed, 14 Aug 2019 19:58:14 +0000
|
||||||
Subject: [PATCH 02/88] HACK: set meson-g12 cma pool to 896MB
|
Subject: [PATCH 02/60] HACK: set meson-g12 cma pool to 896MB
|
||||||
|
|
||||||
This change sets the CMA pool to a larger 896MB! value for vdec use
|
This change sets the CMA pool to a larger 896MB! value for vdec use
|
||||||
|
|
||||||
@ -11,10 +11,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||||
index b858c5e43cc8..3a4f20506a61 100644
|
index 00c6f53290d4..93022e53c0db 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||||
@@ -104,7 +104,7 @@
|
@@ -110,7 +110,7 @@
|
||||||
linux,cma {
|
linux,cma {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reusable;
|
reusable;
|
@ -1,7 +1,7 @@
|
|||||||
From 0b3ddc882dfbb2b05b2bee78525d692824efb765 Mon Sep 17 00:00:00 2001
|
From 3d98fa9b2f696f13eaa1baf1d6fa7f6f2ea31287 Mon Sep 17 00:00:00 2001
|
||||||
From: chewitt <github@chrishewitt.net>
|
From: chewitt <github@chrishewitt.net>
|
||||||
Date: Sat, 13 Apr 2019 05:45:18 +0000
|
Date: Sat, 13 Apr 2019 05:45:18 +0000
|
||||||
Subject: [PATCH 03/88] HACK: arm64: fix Kodi sysinfo CPU information
|
Subject: [PATCH 03/60] HACK: arm64: fix Kodi sysinfo CPU information
|
||||||
|
|
||||||
This allows the CPU information to show in the Kodi sysinfo screen, e.g.
|
This allows the CPU information to show in the Kodi sysinfo screen, e.g.
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
|
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
|
||||||
index 77605aec25fe..d69b4e486098 100644
|
index 87731fea5e41..322fec5320e3 100644
|
||||||
--- a/arch/arm64/kernel/cpuinfo.c
|
--- a/arch/arm64/kernel/cpuinfo.c
|
||||||
+++ b/arch/arm64/kernel/cpuinfo.c
|
+++ b/arch/arm64/kernel/cpuinfo.c
|
||||||
@@ -148,8 +148,7 @@ static int c_show(struct seq_file *m, void *v)
|
@@ -148,8 +148,7 @@ static int c_show(struct seq_file *m, void *v)
|
@ -1,7 +1,7 @@
|
|||||||
From 75325878062f46b0236ccdb6140cde7b2f490794 Mon Sep 17 00:00:00 2001
|
From 796ed17addc9f7c7ab713b0d33fa7429ead84589 Mon Sep 17 00:00:00 2001
|
||||||
From: kszaq <kszaquitto@gmail.com>
|
From: kszaq <kszaquitto@gmail.com>
|
||||||
Date: Sat, 6 Jul 2019 07:54:44 +0000
|
Date: Sat, 6 Jul 2019 07:54:44 +0000
|
||||||
Subject: [PATCH 04/88] HACK: arm64: dts: meson-gx: add ATF BL32 reserved
|
Subject: [PATCH 04/60] HACK: arm64: dts: meson-gx: add ATF BL32 reserved
|
||||||
memory region
|
memory region
|
||||||
|
|
||||||
Vendor firmware/uboot has an additional reserved region for BL32 trusted
|
Vendor firmware/uboot has an additional reserved region for BL32 trusted
|
||||||
@ -16,10 +16,10 @@ Signed-off-by: kszaq <kszaquitto@gmail.com>
|
|||||||
1 file changed, 6 insertions(+)
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
index 797e193af8e3..cf9eb7c8a6f0 100644
|
index b87be6505a0d..99b8916e0c5d 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
@@ -43,6 +43,12 @@
|
@@ -49,6 +49,12 @@
|
||||||
no-map;
|
no-map;
|
||||||
};
|
};
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 7d2c3c596ee8b4703a2d4ba2f9f513d38e032541 Mon Sep 17 00:00:00 2001
|
From 8cb8fc73cc2f53b73300037edfe81c9f9f6d5f4e Mon Sep 17 00:00:00 2001
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
Date: Thu, 3 Nov 2016 15:29:23 +0100
|
Date: Thu, 3 Nov 2016 15:29:23 +0100
|
||||||
Subject: [PATCH 46/88] WIP: arm64: meson: add Amlogic Meson GX PM Suspend
|
Subject: [PATCH 05/60] HACK: arm64: meson: add Amlogic Meson GX PM Suspend
|
||||||
|
|
||||||
The Amlogic Meson GX SoCs uses a non-standard argument to the
|
The Amlogic Meson GX SoCs uses a non-standard argument to the
|
||||||
PSCI CPU_SUSPEND call to enter system suspend.
|
PSCI CPU_SUSPEND call to enter system suspend.
|
@ -1,7 +1,7 @@
|
|||||||
From 97f099f7b4e954a67d4c2612211520c6778559da Mon Sep 17 00:00:00 2001
|
From f84b9abfe184af1bedf58c7492430b68cc6a0ac2 Mon Sep 17 00:00:00 2001
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
Date: Thu, 3 Nov 2016 15:29:25 +0100
|
Date: Thu, 3 Nov 2016 15:29:25 +0100
|
||||||
Subject: [PATCH 49/88] WIP: arm64: dts: meson: add support for GX PM and
|
Subject: [PATCH 06/60] HACK: arm64: dts: meson: add support for GX PM and
|
||||||
Virtual RTC
|
Virtual RTC
|
||||||
|
|
||||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
@ -10,7 +10,7 @@ Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|||||||
1 file changed, 9 insertions(+)
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
index e58ebe3ba65c..a717e93eea94 100644
|
index 99b8916e0c5d..d6dc407127cd 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||||
@@ -221,6 +221,10 @@
|
@@ -221,6 +221,10 @@
|
@ -1,7 +1,7 @@
|
|||||||
From 0036ea5b743d40190574fbd1d65ac19d37913050 Mon Sep 17 00:00:00 2001
|
From 16e0395a999865b4450e46f3d53df3ed3ea7c023 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Thu, 21 Jan 2021 01:35:36 +0000
|
Date: Thu, 21 Jan 2021 01:35:36 +0000
|
||||||
Subject: [PATCH 50/88] WIP: arm64: dts: meson: add rtc/vrtc aliases to Khadas
|
Subject: [PATCH 07/60] HACK: arm64: dts: meson: add rtc/vrtc aliases to Khadas
|
||||||
VIM
|
VIM
|
||||||
|
|
||||||
Add aliases to ensure the vrtc time (which normally proves first) is /dev/rtc1
|
Add aliases to ensure the vrtc time (which normally proves first) is /dev/rtc1
|
||||||
@ -13,7 +13,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 2 insertions(+)
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
||||||
index 60feac0179c0..df287b12975b 100644
|
index 6ab1cc125b96..24af15e18026 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
||||||
@@ -29,6 +29,8 @@
|
@@ -29,6 +29,8 @@
|
@ -0,0 +1,30 @@
|
|||||||
|
From c8d74b62cbf8c0f7c1cd331607540660a0e4d830 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Sat, 6 Nov 2021 13:01:08 +0000
|
||||||
|
Subject: [PATCH 08/60] HACK: arm64: dts: meson: add rtc/vrtc aliases to Khadas
|
||||||
|
VIM2
|
||||||
|
|
||||||
|
Add aliases to ensure the vrtc time (which normally proves first) is /dev/rtc1
|
||||||
|
while the onboard rtc chip claims /dev/rtc0.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
||||||
|
index 86bdc0baf032..9c26d7489d2a 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
aliases {
|
||||||
|
serial0 = &uart_AO;
|
||||||
|
serial2 = &uart_AO_B;
|
||||||
|
+ rtc0 = &rtc;
|
||||||
|
+ rtc1 = &vrtc;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 9a81dd203d2707526822ccdb79e58e5a13db5ac5 Mon Sep 17 00:00:00 2001
|
From e2a996cefcd8feaa1ebd986b3f811571c7649293 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Mon, 1 Feb 2021 19:27:40 +0000
|
Date: Mon, 1 Feb 2021 19:27:40 +0000
|
||||||
Subject: [PATCH 51/88] WIP: arm64: dts: meson: add rtc/vrtc aliases to Minix
|
Subject: [PATCH 09/60] HACK: arm64: dts: meson: add rtc/vrtc aliases to Minix
|
||||||
NEO U9-H
|
NEO U9-H
|
||||||
|
|
||||||
Add node aliases to prevent meson-vrtc from claiming /dev/rtc0
|
Add node aliases to prevent meson-vrtc from claiming /dev/rtc0
|
||||||
@ -12,7 +12,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
||||||
index a414cd39c2b1..443cea738e53 100644
|
index ea9f234d1fc7..3a0955ce3c39 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
||||||
@@ -14,6 +14,11 @@
|
@@ -14,6 +14,11 @@
|
@ -0,0 +1,36 @@
|
|||||||
|
From aaab5272187b1650776371c4381ea1373d818d1a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Agner <stefan@agner.ch>
|
||||||
|
Date: Wed, 15 Sep 2021 05:00:45 +0000
|
||||||
|
Subject: [PATCH 10/60] HACK: of: partial revert of fdt.c changes
|
||||||
|
|
||||||
|
This resolves reports similar to the below which are present in dmesg
|
||||||
|
since Linux 5.10; which are also causing crashes in some distros:
|
||||||
|
|
||||||
|
[ 0.000000] OF: fdt: Reserved memory: failed to reserve memory for node 'secmon@5000000': base 0x0000000005000000, size 3 MiB
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/of/fdt.c | 7 -------
|
||||||
|
1 file changed, 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
|
||||||
|
index 4546572af24b..cf5c100cc5d4 100644
|
||||||
|
--- a/drivers/of/fdt.c
|
||||||
|
+++ b/drivers/of/fdt.c
|
||||||
|
@@ -480,13 +480,6 @@ static int __init early_init_dt_reserve_memory_arch(phys_addr_t base,
|
||||||
|
phys_addr_t size, bool nomap)
|
||||||
|
{
|
||||||
|
if (nomap) {
|
||||||
|
- /*
|
||||||
|
- * If the memory is already reserved (by another region), we
|
||||||
|
- * should not allow it to be marked nomap.
|
||||||
|
- */
|
||||||
|
- if (memblock_is_region_reserved(base, size))
|
||||||
|
- return -EBUSY;
|
||||||
|
-
|
||||||
|
return memblock_mark_nomap(base, size);
|
||||||
|
}
|
||||||
|
return memblock_reserve(base, size);
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From 92f35a36faa4dbcf0e562566a1f4a4a2deb615ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Sat, 16 May 2020 07:04:58 +0000
|
||||||
|
Subject: [PATCH 11/60] FROMGIT: dt-bindings: arm: amlogic: add support for
|
||||||
|
Radxa Zero
|
||||||
|
|
||||||
|
Radxa Zero is a small form-factor SBC with an Amlogic S905Y2 chip.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Acked-by: Rob Herring <robh@kernel.org>
|
||||||
|
---
|
||||||
|
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
index 6423377710ee..67dccdd9a5a4 100644
|
||||||
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
@@ -141,6 +141,7 @@ properties:
|
||||||
|
- enum:
|
||||||
|
- amediatech,x96-max
|
||||||
|
- amlogic,u200
|
||||||
|
+ - radxa,zero
|
||||||
|
- seirobotics,sei510
|
||||||
|
- const: amlogic,g12a
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,453 @@
|
|||||||
|
From be960f16c8f919f083ebf6a1727d23da2b4690d2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Fri, 6 Aug 2021 12:16:10 +0000
|
||||||
|
Subject: [PATCH 12/60] FROMGIT: arm64: dts: amlogic: add support for Radxa
|
||||||
|
Zero
|
||||||
|
|
||||||
|
Radxa Zero is a small form factor SBC based on the Amlogic S905Y2
|
||||||
|
chipset that ships in a number of RAM/eMMC configurations:
|
||||||
|
|
||||||
|
Boards with 512MB/1GB LPDDR4 RAM have no eMMC storage and BCM43436
|
||||||
|
wireless (2.4GHz b/g/n) while 2GB/4GB boards have 8/16/32/64/128GB
|
||||||
|
eMMC storage and BCM4345 wireless (2.4/5GHz a/b/g/n/ac).
|
||||||
|
|
||||||
|
- Amlogic S905Y2 quad-core Cortex-A53
|
||||||
|
- Mali G31-MP2 GPU
|
||||||
|
- HDMI 2.1 output (micro)
|
||||||
|
- 1x USB 2.0 port - Type C (OTG)
|
||||||
|
- 1x USB 3.0 port - Type C (Host)
|
||||||
|
- 1x micro SD Card slot
|
||||||
|
- 40 Pin GPIO header
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||||
|
.../dts/amlogic/meson-g12a-radxa-zero.dts | 405 ++++++++++++++++++
|
||||||
|
2 files changed, 406 insertions(+)
|
||||||
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
index faa0a79a34f5..be308361e2f1 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_MESON) += meson-g12a-radxa-zero.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..e3bb6df42ff3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
@@ -0,0 +1,405 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2018 BayLibre SAS. All rights reserved.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "meson-g12a.dtsi"
|
||||||
|
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
|
||||||
|
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "radxa,zero", "amlogic,g12a";
|
||||||
|
+ model = "Radxa Zero";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ serial0 = &uart_AO;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ memory@0 {
|
||||||
|
+ device_type = "memory";
|
||||||
|
+ reg = <0x0 0x0 0x0 0x40000000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ cvbs-connector {
|
||||||
|
+ status = "disabled";
|
||||||
|
+ compatible = "composite-video-connector";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ cvbs_connector_in: endpoint {
|
||||||
|
+ remote-endpoint = <&cvbs_vdac_out>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ hdmi-connector {
|
||||||
|
+ compatible = "hdmi-connector";
|
||||||
|
+ type = "a";
|
||||||
|
+
|
||||||
|
+ port {
|
||||||
|
+ hdmi_connector_in: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_tx_tmds_out>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ emmc_pwrseq: emmc-pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-emmc";
|
||||||
|
+ reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdio_pwrseq: sdio-pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||||
|
+ clocks = <&wifi32k>;
|
||||||
|
+ clock-names = "ext_clock";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ao_5v: regulator-ao_5v {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "AO_5V";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_1v8: regulator-vcc_1v8 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "VCC_1V8";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ vin-supply = <&vcc_3v3>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_3v3: regulator-vcc_3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "VCC_3V3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ vin-supply = <&vddao_3v3>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ hdmi_pw: regulator-hdmi_pw {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "HDMI_PW";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ vin-supply = <&ao_5v>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vddao_1v8: regulator-vddao_1v8 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "VDDAO_1V8";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ vin-supply = <&vddao_3v3>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vddao_3v3: regulator-vddao_3v3 {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "VDDAO_3V3";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ vin-supply = <&ao_5v>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vddcpu: regulator-vddcpu {
|
||||||
|
+ compatible = "pwm-regulator";
|
||||||
|
+
|
||||||
|
+ regulator-name = "VDDCPU";
|
||||||
|
+ regulator-min-microvolt = <721000>;
|
||||||
|
+ regulator-max-microvolt = <1022000>;
|
||||||
|
+
|
||||||
|
+ vin-supply = <&ao_5v>;
|
||||||
|
+
|
||||||
|
+ pwms = <&pwm_AO_cd 1 1250 0>;
|
||||||
|
+ pwm-dutycycle-range = <100 0>;
|
||||||
|
+
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sound {
|
||||||
|
+ compatible = "amlogic,axg-sound-card";
|
||||||
|
+ model = "RADXA-ZERO";
|
||||||
|
+ audio-aux-devs = <&tdmout_b>;
|
||||||
|
+ audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
||||||
|
+ "TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
||||||
|
+ "TDMOUT_B IN 2", "FRDDR_C OUT 1",
|
||||||
|
+ "TDM_B Playback", "TDMOUT_B OUT";
|
||||||
|
+
|
||||||
|
+ assigned-clocks = <&clkc CLKID_MPLL2>,
|
||||||
|
+ <&clkc CLKID_MPLL0>,
|
||||||
|
+ <&clkc CLKID_MPLL1>;
|
||||||
|
+ assigned-clock-parents = <0>, <0>, <0>;
|
||||||
|
+ assigned-clock-rates = <294912000>,
|
||||||
|
+ <270950400>,
|
||||||
|
+ <393216000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ dai-link-0 {
|
||||||
|
+ sound-dai = <&frddr_a>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-1 {
|
||||||
|
+ sound-dai = <&frddr_b>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-2 {
|
||||||
|
+ sound-dai = <&frddr_c>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* 8ch hdmi interface */
|
||||||
|
+ dai-link-3 {
|
||||||
|
+ sound-dai = <&tdmif_b>;
|
||||||
|
+ dai-format = "i2s";
|
||||||
|
+ dai-tdm-slot-tx-mask-0 = <1 1>;
|
||||||
|
+ dai-tdm-slot-tx-mask-1 = <1 1>;
|
||||||
|
+ dai-tdm-slot-tx-mask-2 = <1 1>;
|
||||||
|
+ dai-tdm-slot-tx-mask-3 = <1 1>;
|
||||||
|
+ mclk-fs = <256>;
|
||||||
|
+
|
||||||
|
+ codec {
|
||||||
|
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-4 {
|
||||||
|
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
|
||||||
|
+
|
||||||
|
+ codec {
|
||||||
|
+ sound-dai = <&hdmi_tx>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wifi32k: wifi32k {
|
||||||
|
+ compatible = "pwm-clock";
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ clock-frequency = <32768>;
|
||||||
|
+ pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&arb {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cec_AO {
|
||||||
|
+ pinctrl-0 = <&cec_ao_a_h_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ hdmi-phandle = <&hdmi_tx>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cecb_AO {
|
||||||
|
+ pinctrl-0 = <&cec_ao_b_h_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ status = "okay";
|
||||||
|
+ hdmi-phandle = <&hdmi_tx>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&clkc_audio {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu-supply = <&vddcpu>;
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||||
|
+ clock-latency = <50000>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu1 {
|
||||||
|
+ cpu-supply = <&vddcpu>;
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||||
|
+ clock-latency = <50000>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu2 {
|
||||||
|
+ cpu-supply = <&vddcpu>;
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||||
|
+ clock-latency = <50000>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu3 {
|
||||||
|
+ cpu-supply = <&vddcpu>;
|
||||||
|
+ operating-points-v2 = <&cpu_opp_table>;
|
||||||
|
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||||
|
+ clock-latency = <50000>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cvbs_vdac_port {
|
||||||
|
+ cvbs_vdac_out: endpoint {
|
||||||
|
+ remote-endpoint = <&cvbs_connector_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&frddr_a {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&frddr_b {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&frddr_c {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_tx {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ hdmi-supply = <&hdmi_pw>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi_tx_tmds_port {
|
||||||
|
+ hdmi_tx_tmds_out: endpoint {
|
||||||
|
+ remote-endpoint = <&hdmi_connector_in>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ir {
|
||||||
|
+ status = "disabled";
|
||||||
|
+ pinctrl-0 = <&remote_input_ao_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm_AO_cd {
|
||||||
|
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ clocks = <&xtal>;
|
||||||
|
+ clock-names = "clkin1";
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm_ef {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&pwm_e_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ clocks = <&xtal>;
|
||||||
|
+ clock-names = "clkin0";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&saradc {
|
||||||
|
+ status = "okay";
|
||||||
|
+ vref-supply = <&vddao_1v8>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* SDIO */
|
||||||
|
+&sd_emmc_a {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&sdio_pins>;
|
||||||
|
+ pinctrl-1 = <&sdio_clk_gate_pins>;
|
||||||
|
+ pinctrl-names = "default", "clk-gate";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cap-sd-highspeed;
|
||||||
|
+ sd-uhs-sdr50;
|
||||||
|
+ max-frequency = <100000000>;
|
||||||
|
+
|
||||||
|
+ non-removable;
|
||||||
|
+ disable-wp;
|
||||||
|
+
|
||||||
|
+ /* WiFi firmware requires power to be kept while in suspend */
|
||||||
|
+ keep-power-in-suspend;
|
||||||
|
+
|
||||||
|
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||||
|
+
|
||||||
|
+ vmmc-supply = <&vddao_3v3>;
|
||||||
|
+ vqmmc-supply = <&vddao_1v8>;
|
||||||
|
+
|
||||||
|
+ brcmf: wifi@1 {
|
||||||
|
+ reg = <1>;
|
||||||
|
+ compatible = "brcm,bcm4329-fmac";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* SD card */
|
||||||
|
+&sd_emmc_b {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&sdcard_c_pins>;
|
||||||
|
+ pinctrl-1 = <&sdcard_clk_gate_c_pins>;
|
||||||
|
+ pinctrl-names = "default", "clk-gate";
|
||||||
|
+
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cap-sd-highspeed;
|
||||||
|
+ max-frequency = <100000000>;
|
||||||
|
+ disable-wp;
|
||||||
|
+
|
||||||
|
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
|
||||||
|
+ vmmc-supply = <&vddao_3v3>;
|
||||||
|
+ vqmmc-supply = <&vddao_3v3>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* eMMC */
|
||||||
|
+&sd_emmc_c {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
|
||||||
|
+ pinctrl-1 = <&emmc_clk_gate_pins>;
|
||||||
|
+ pinctrl-names = "default", "clk-gate";
|
||||||
|
+
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ cap-mmc-highspeed;
|
||||||
|
+ mmc-ddr-1_8v;
|
||||||
|
+ mmc-hs200-1_8v;
|
||||||
|
+ max-frequency = <200000000>;
|
||||||
|
+ disable-wp;
|
||||||
|
+
|
||||||
|
+ mmc-pwrseq = <&emmc_pwrseq>;
|
||||||
|
+ vmmc-supply = <&vcc_3v3>;
|
||||||
|
+ vqmmc-supply = <&vcc_1v8>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tdmif_b {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tdmout_b {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tohdmitx {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart_A {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ uart-has-rtscts;
|
||||||
|
+
|
||||||
|
+ bluetooth {
|
||||||
|
+ compatible = "brcm,bcm43438-bt";
|
||||||
|
+ shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ max-speed = <2000000>;
|
||||||
|
+ clocks = <&wifi32k>;
|
||||||
|
+ clock-names = "lpo";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart_AO {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&uart_ao_a_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb {
|
||||||
|
+ status = "okay";
|
||||||
|
+ dr_mode = "host";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,17 +1,18 @@
|
|||||||
From 2a59ec1861a0dae5694969e14cb42fe6f7991519 Mon Sep 17 00:00:00 2001
|
From 1fcbeb841274082a23ce1bccd597167a56132662 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Fri, 15 May 2020 08:13:00 +0000
|
Date: Fri, 15 May 2020 08:13:00 +0000
|
||||||
Subject: [PATCH 57/88] WIP: arm64: dts: meson: add audio playback to rbox-pro
|
Subject: [PATCH 13/60] FROMGIT: arm64: dts: meson: add audio playback to
|
||||||
|
rbox-pro
|
||||||
|
|
||||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
---
|
---
|
||||||
.../boot/dts/amlogic/meson-gxm-rbox-pro.dts | 80 +++++++++++++++++++
|
.../boot/dts/amlogic/meson-gxm-rbox-pro.dts | 61 +++++++++++++++++++
|
||||||
1 file changed, 80 insertions(+)
|
1 file changed, 61 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
||||||
index dde7cfe12cff..0208c95e92cf 100644
|
index dde7cfe12cff..50137aafab10 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
|
||||||
@@ -14,6 +14,7 @@
|
@@ -14,6 +14,7 @@
|
||||||
@ -36,33 +37,7 @@ index dde7cfe12cff..0208c95e92cf 100644
|
|||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
@@ -51,6 +59,25 @@
|
@@ -90,6 +98,59 @@
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+ vddio_ao18: regulator-vddio_ao18 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "VDDIO_AO18";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ hdmi_5v: regulator-hdmi-5v {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+
|
|
||||||
+ regulator-name = "HDMI_5V";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+
|
|
||||||
+ gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ enable-active-high;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
vddio_boot: regulator-vddio-boot {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "VDDIO_BOOT";
|
|
||||||
@@ -90,6 +117,59 @@
|
|
||||||
clocks = <&wifi32k>;
|
clocks = <&wifi32k>;
|
||||||
clock-names = "ext_clock";
|
clock-names = "ext_clock";
|
||||||
};
|
};
|
@ -0,0 +1,40 @@
|
|||||||
|
From c59abdc476c8dd424ce2731ef5602a2d5dde6ee7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dmitry Shmidt <dimitrysh@google.com>
|
||||||
|
Date: Fri, 8 Oct 2021 03:54:31 +0000
|
||||||
|
Subject: [PATCH 14/60] FROMGIT: arm64: dts: meson-sm1-odroid: add cec nodes
|
||||||
|
|
||||||
|
Enable CEC in same way it is done for other meson odroid devices
|
||||||
|
|
||||||
|
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
||||||
|
index 5779e70caccd..0bd1e98a0eef 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
||||||
|
@@ -225,6 +225,20 @@
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&cec_AO {
|
||||||
|
+ pinctrl-0 = <&cec_ao_a_h_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ status = "disabled";
|
||||||
|
+ hdmi-phandle = <&hdmi_tx>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cecb_AO {
|
||||||
|
+ pinctrl-0 = <&cec_ao_b_h_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ status = "okay";
|
||||||
|
+ hdmi-phandle = <&hdmi_tx>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&clkc_audio {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From 6065e3208d647aebec8a3fb7b1986b1b8d8fdd83 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Tue, 12 Oct 2021 04:47:14 +0000
|
||||||
|
Subject: [PATCH 15/60] FROMGIT: arm64: dts: meson-gxbb-wetek: fix HDMI in
|
||||||
|
early boot
|
||||||
|
|
||||||
|
Mark the VDDIO_AO18 regulator always-on and set hdmi-supply for the hdmi_tx
|
||||||
|
node to ensure HDMI is powered in the early stages of boot.
|
||||||
|
|
||||||
|
Fixes: fb72c03e0e32 ("ARM64: dts: meson-gxbb-wetek: add a wetek specific dtsi to cleanup hub and play2")
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
index a350fee1264d..8e2af986ceba 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
@@ -64,6 +64,7 @@
|
||||||
|
regulator-name = "VDDIO_AO18";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_3v3: regulator-vcc_3v3 {
|
||||||
|
@@ -161,6 +162,7 @@
|
||||||
|
status = "okay";
|
||||||
|
pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
+ hdmi-supply = <&vddio_ao18>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi_tx_tmds_port {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
From aaa7ab225b8b3f5a58baecf1d4522d893e9f8db5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Tue, 12 Oct 2021 05:13:06 +0000
|
||||||
|
Subject: [PATCH 16/60] FROMGIT: arm64: dts: meson-gxbb-wetek: fix missing GPIO
|
||||||
|
binding
|
||||||
|
|
||||||
|
The absence of this binding appears to be harmless in Linux but it breaks
|
||||||
|
Ethernet support in mainline u-boot. So add the binding (which is present
|
||||||
|
in all other u-boot supported GXBB device-trees).
|
||||||
|
|
||||||
|
Fixes: fb72c03e0e32 ("ARM64: dts: meson-gxbb-wetek: add a wetek specific dtsi to cleanup hub and play2")
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
index 8e2af986ceba..a4d34398da35 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
@@ -6,6 +6,7 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "meson-gxbb.dtsi"
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 8e92a8d45aecb19c6bcfe569cf238f0f476b293f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Tue, 12 Oct 2021 04:58:38 +0000
|
||||||
|
Subject: [PATCH 17/60] FROMGIT: arm64: dts: meson-gxbb-wetek: use updated LED
|
||||||
|
bindings
|
||||||
|
|
||||||
|
Update the dts to use the newer style of LED bindings.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 7 +++++--
|
||||||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
index a4d34398da35..94dafb955301 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
|
||||||
|
#include "meson-gxbb.dtsi"
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/leds/common.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
@@ -26,8 +27,10 @@
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
- led-system {
|
||||||
|
- label = "wetek-play:system-status";
|
||||||
|
+ led-power {
|
||||||
|
+ /* red in suspend or power-off */
|
||||||
|
+ color = <LED_COLOR_ID_BLUE>;
|
||||||
|
+ function = LED_FUNCTION_POWER;
|
||||||
|
gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
|
||||||
|
default-state = "on";
|
||||||
|
panic-indicator;
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From 4b278c3214195ee59c936ff082a66a6593d1004b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Fri, 20 Aug 2021 01:17:54 +0000
|
||||||
|
Subject: [PATCH 18/60] FROMGIT: soc: amlogic: meson-gx-socinfo: Add S905Y2 ID
|
||||||
|
for Radxa Zero
|
||||||
|
|
||||||
|
Add the SOC ID for the S905Y2 used in the Radxa Zero. Before/After:
|
||||||
|
|
||||||
|
[ 0.321650] soc soc0: Amlogic Meson G12A (Unknown) Revision 28:b (30:2) Detected
|
||||||
|
[ 0.318533] soc soc0: Amlogic Meson G12A (S905Y2) Revision 28:b (30:2) Detected
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/soc/amlogic/meson-gx-socinfo.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/soc/amlogic/meson-gx-socinfo.c b/drivers/soc/amlogic/meson-gx-socinfo.c
|
||||||
|
index 6f54bd832c8b..165f7548401b 100644
|
||||||
|
--- a/drivers/soc/amlogic/meson-gx-socinfo.c
|
||||||
|
+++ b/drivers/soc/amlogic/meson-gx-socinfo.c
|
||||||
|
@@ -65,6 +65,7 @@ static const struct meson_gx_package_id {
|
||||||
|
{ "A113X", 0x25, 0x37, 0xff },
|
||||||
|
{ "A113D", 0x25, 0x22, 0xff },
|
||||||
|
{ "S905D2", 0x28, 0x10, 0xf0 },
|
||||||
|
+ { "S905Y2", 0x28, 0x30, 0xf0 },
|
||||||
|
{ "S905X2", 0x28, 0x40, 0xf0 },
|
||||||
|
{ "A311D", 0x29, 0x10, 0xf0 },
|
||||||
|
{ "S922X", 0x29, 0x40, 0xf0 },
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 3ca769d11ba14c46f2bc52fe633dc878c8d6f288 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Cai Huoqing <caihuoqing@baidu.com>
|
||||||
|
Date: Tue, 14 Sep 2021 15:10:02 +0000
|
||||||
|
Subject: [PATCH 19/60] FROMGIT: soc: amlogic: canvas: Make use of the helper
|
||||||
|
function devm_platform_ioremap_resource()
|
||||||
|
|
||||||
|
Use the devm_platform_ioremap_resource() helper instead of
|
||||||
|
calling platform_get_resource() and devm_ioremap_resource()
|
||||||
|
separately
|
||||||
|
|
||||||
|
Signed-off-by: Cai Huoqing <caihuoqing@baidu.com>
|
||||||
|
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Link: https://lore.kernel.org/r/20210908071544.603-1-caihuoqing@baidu.com
|
||||||
|
---
|
||||||
|
drivers/soc/amlogic/meson-canvas.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/soc/amlogic/meson-canvas.c b/drivers/soc/amlogic/meson-canvas.c
|
||||||
|
index d0329ad170d1..383b0cfc584e 100644
|
||||||
|
--- a/drivers/soc/amlogic/meson-canvas.c
|
||||||
|
+++ b/drivers/soc/amlogic/meson-canvas.c
|
||||||
|
@@ -168,7 +168,6 @@ EXPORT_SYMBOL_GPL(meson_canvas_free);
|
||||||
|
|
||||||
|
static int meson_canvas_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
- struct resource *res;
|
||||||
|
struct meson_canvas *canvas;
|
||||||
|
struct device *dev = &pdev->dev;
|
||||||
|
|
||||||
|
@@ -176,8 +175,7 @@ static int meson_canvas_probe(struct platform_device *pdev)
|
||||||
|
if (!canvas)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
- canvas->reg_base = devm_ioremap_resource(dev, res);
|
||||||
|
+ canvas->reg_base = devm_platform_ioremap_resource(pdev, 0);
|
||||||
|
if (IS_ERR(canvas->reg_base))
|
||||||
|
return PTR_ERR(canvas->reg_base);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,43 @@
|
|||||||
|
From 14f405c0277266c8f09203813c93f2eb2d8be1b5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Cai Huoqing <caihuoqing@baidu.com>
|
||||||
|
Date: Tue, 14 Sep 2021 15:10:45 +0000
|
||||||
|
Subject: [PATCH 20/60] FROMGIT: soc: amlogic: meson-clk-measure: Make use of
|
||||||
|
the helper function devm_platform_ioremap_resource()
|
||||||
|
|
||||||
|
Use the devm_platform_ioremap_resource() helper instead of
|
||||||
|
calling platform_get_resource() and devm_ioremap_resource()
|
||||||
|
separately
|
||||||
|
|
||||||
|
Signed-off-by: Cai Huoqing <caihuoqing@baidu.com>
|
||||||
|
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Link: https://lore.kernel.org/r/20210908071544.603-2-caihuoqing@baidu.com
|
||||||
|
---
|
||||||
|
drivers/soc/amlogic/meson-clk-measure.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/soc/amlogic/meson-clk-measure.c b/drivers/soc/amlogic/meson-clk-measure.c
|
||||||
|
index 6dd190270123..3f3039600357 100644
|
||||||
|
--- a/drivers/soc/amlogic/meson-clk-measure.c
|
||||||
|
+++ b/drivers/soc/amlogic/meson-clk-measure.c
|
||||||
|
@@ -606,7 +606,6 @@ static int meson_msr_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
const struct meson_msr_id *match_data;
|
||||||
|
struct meson_msr *priv;
|
||||||
|
- struct resource *res;
|
||||||
|
struct dentry *root, *clks;
|
||||||
|
void __iomem *base;
|
||||||
|
int i;
|
||||||
|
@@ -624,8 +623,7 @@ static int meson_msr_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
|
memcpy(priv->msr_table, match_data, sizeof(priv->msr_table));
|
||||||
|
|
||||||
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
- base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
|
+ base = devm_platform_ioremap_resource(pdev, 0);
|
||||||
|
if (IS_ERR(base))
|
||||||
|
return PTR_ERR(base);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
From d74a4ec6a83b29c7706fe072b933b30b76c38b57 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Tue, 12 Oct 2021 11:19:54 +0000
|
||||||
|
Subject: [PATCH 21/60] FROMGIT: ASoC: meson: implement driver_name for
|
||||||
|
snd_soc_card in meson-card-utils
|
||||||
|
|
||||||
|
Implement driver_name to provide an alternative to card_name for userspace
|
||||||
|
configuration of Amlogic audio cards.
|
||||||
|
|
||||||
|
Suggested-by: Matthias Reichl <hias@horus.com>
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
sound/soc/meson/meson-card-utils.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/meson/meson-card-utils.c b/sound/soc/meson/meson-card-utils.c
|
||||||
|
index 415cc0046e4b..29b0174f4b5c 100644
|
||||||
|
--- a/sound/soc/meson/meson-card-utils.c
|
||||||
|
+++ b/sound/soc/meson/meson-card-utils.c
|
||||||
|
@@ -302,6 +302,7 @@ int meson_card_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
|
priv->card.owner = THIS_MODULE;
|
||||||
|
priv->card.dev = dev;
|
||||||
|
+ priv->card.driver_name = dev->driver->name;
|
||||||
|
priv->match_data = data;
|
||||||
|
|
||||||
|
ret = snd_soc_of_parse_card_name(&priv->card, "model");
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,133 @@
|
|||||||
|
From e25b25780778b016152db20e138f1944ab55fe19 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arnd Bergmann <arnd@arndb.de>
|
||||||
|
Date: Sun, 21 Nov 2021 19:53:25 +0000
|
||||||
|
Subject: [PATCH 22/60] FROMGIT: media: v4l2-core: fix VIDIOC_DQEVENT handling
|
||||||
|
on non-x86
|
||||||
|
|
||||||
|
My previous bugfix addressed an API inconsistency found by syzbot,
|
||||||
|
and it correctly fixed the issue on x86-64 machines, which now behave
|
||||||
|
correctly for both native and compat tasks.
|
||||||
|
|
||||||
|
Unfortunately, John found that the patch broke compat mode on all other
|
||||||
|
architectures, as they can no longer rely on the VIDIOC_DQEVENT_TIME32
|
||||||
|
code from the native handler as a fallback in the compat code.
|
||||||
|
|
||||||
|
The best way I can see for addressing this is to generalize the
|
||||||
|
VIDIOC_DQEVENT32_TIME32 code from x86 and use that for all architectures,
|
||||||
|
leaving only the VIDIOC_DQEVENT32 variant as x86 specific. The original
|
||||||
|
code was trying to be clever and use the same conversion helper for native
|
||||||
|
32-bit code and compat mode, but that turned out to be too obscure so
|
||||||
|
even I missed that bit I had introduced myself when I made the fix.
|
||||||
|
|
||||||
|
Fixes: c344f07aa1b4 ("media: v4l2-core: ignore native time32 ioctls on 64-bit")
|
||||||
|
Reported-by: John Stultz <john.stultz@linaro.org>
|
||||||
|
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||||
|
---
|
||||||
|
drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 41 ++++++++-----------
|
||||||
|
1 file changed, 17 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
|
||||||
|
index 47aff3b19742..80aaf07b16f2 100644
|
||||||
|
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
|
||||||
|
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
|
||||||
|
@@ -744,10 +744,6 @@ static int put_v4l2_ext_controls32(struct v4l2_ext_controls *p64,
|
||||||
|
/*
|
||||||
|
* x86 is the only compat architecture with different struct alignment
|
||||||
|
* between 32-bit and 64-bit tasks.
|
||||||
|
- *
|
||||||
|
- * On all other architectures, v4l2_event32 and v4l2_event32_time32 are
|
||||||
|
- * the same as v4l2_event and v4l2_event_time32, so we can use the native
|
||||||
|
- * handlers, converting v4l2_event to v4l2_event_time32 if necessary.
|
||||||
|
*/
|
||||||
|
struct v4l2_event32 {
|
||||||
|
__u32 type;
|
||||||
|
@@ -765,21 +761,6 @@ struct v4l2_event32 {
|
||||||
|
__u32 reserved[8];
|
||||||
|
};
|
||||||
|
|
||||||
|
-#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||||
|
-struct v4l2_event32_time32 {
|
||||||
|
- __u32 type;
|
||||||
|
- union {
|
||||||
|
- compat_s64 value64;
|
||||||
|
- __u8 data[64];
|
||||||
|
- } u;
|
||||||
|
- __u32 pending;
|
||||||
|
- __u32 sequence;
|
||||||
|
- struct old_timespec32 timestamp;
|
||||||
|
- __u32 id;
|
||||||
|
- __u32 reserved[8];
|
||||||
|
-};
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
static int put_v4l2_event32(struct v4l2_event *p64,
|
||||||
|
struct v4l2_event32 __user *p32)
|
||||||
|
{
|
||||||
|
@@ -795,7 +776,22 @@ static int put_v4l2_event32(struct v4l2_event *p64,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||||
|
+struct v4l2_event32_time32 {
|
||||||
|
+ __u32 type;
|
||||||
|
+ union {
|
||||||
|
+ compat_s64 value64;
|
||||||
|
+ __u8 data[64];
|
||||||
|
+ } u;
|
||||||
|
+ __u32 pending;
|
||||||
|
+ __u32 sequence;
|
||||||
|
+ struct old_timespec32 timestamp;
|
||||||
|
+ __u32 id;
|
||||||
|
+ __u32 reserved[8];
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static int put_v4l2_event32_time32(struct v4l2_event *p64,
|
||||||
|
struct v4l2_event32_time32 __user *p32)
|
||||||
|
{
|
||||||
|
@@ -811,7 +807,6 @@ static int put_v4l2_event32_time32(struct v4l2_event *p64,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
struct v4l2_edid32 {
|
||||||
|
__u32 pad;
|
||||||
|
@@ -873,9 +868,7 @@ static int put_v4l2_edid32(struct v4l2_edid *p64,
|
||||||
|
#define VIDIOC_QUERYBUF32_TIME32 _IOWR('V', 9, struct v4l2_buffer32_time32)
|
||||||
|
#define VIDIOC_QBUF32_TIME32 _IOWR('V', 15, struct v4l2_buffer32_time32)
|
||||||
|
#define VIDIOC_DQBUF32_TIME32 _IOWR('V', 17, struct v4l2_buffer32_time32)
|
||||||
|
-#ifdef CONFIG_X86_64
|
||||||
|
#define VIDIOC_DQEVENT32_TIME32 _IOR ('V', 89, struct v4l2_event32_time32)
|
||||||
|
-#endif
|
||||||
|
#define VIDIOC_PREPARE_BUF32_TIME32 _IOWR('V', 93, struct v4l2_buffer32_time32)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -929,10 +922,10 @@ unsigned int v4l2_compat_translate_cmd(unsigned int cmd)
|
||||||
|
#ifdef CONFIG_X86_64
|
||||||
|
case VIDIOC_DQEVENT32:
|
||||||
|
return VIDIOC_DQEVENT;
|
||||||
|
+#endif
|
||||||
|
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||||
|
case VIDIOC_DQEVENT32_TIME32:
|
||||||
|
return VIDIOC_DQEVENT;
|
||||||
|
-#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return cmd;
|
||||||
|
@@ -1025,10 +1018,10 @@ int v4l2_compat_put_user(void __user *arg, void *parg, unsigned int cmd)
|
||||||
|
#ifdef CONFIG_X86_64
|
||||||
|
case VIDIOC_DQEVENT32:
|
||||||
|
return put_v4l2_event32(parg, arg);
|
||||||
|
+#endif
|
||||||
|
#ifdef CONFIG_COMPAT_32BIT_TIME
|
||||||
|
case VIDIOC_DQEVENT32_TIME32:
|
||||||
|
return put_v4l2_event32_time32(parg, arg);
|
||||||
|
-#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
From 8625017fb7c5f6e6547f075272574125e66e2259 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Anand Moon <linux.amoon@gmail.com>
|
||||||
|
Date: Wed, 22 Sep 2021 05:55:57 +0000
|
||||||
|
Subject: [PATCH 23/60] FROMLIST(v1): arm64: dts: meson-g12b-odroid-n2: add 5v
|
||||||
|
regulator gpio
|
||||||
|
|
||||||
|
As described in the Odroid-n2 & Odroid-n2-plus schematics,
|
||||||
|
the 5V regulator is controlled by GPIOH_8 and in Open Drain
|
||||||
|
since this GPIO doesn't support Push-Pull.
|
||||||
|
|
||||||
|
Fixes: c35f6dc5c377 ("arm64: dts: meson: Add minimal support for Odroid-N2")
|
||||||
|
Fixes: ef599f5f3e10 ("arm64: dts: meson: convert ODROID-N2 to dtsi")
|
||||||
|
|
||||||
|
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
|
||||||
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Link: https://lore.kernel.org/r/20210920204739.950-1-linux.amoon@gmail.com
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
||||||
|
index 4f33820aba1f..e8a00a2f8812 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
||||||
|
@@ -99,6 +99,8 @@
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
regulator-always-on;
|
||||||
|
vin-supply = <&main_12v>;
|
||||||
|
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
|
||||||
|
+ enable-active-high;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_1v8: regulator-vcc_1v8 {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
From 557ca56ff23234e2cd8fce4d3aa1c752bedded9e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>
|
||||||
|
Date: Mon, 20 Sep 2021 09:44:05 +0200
|
||||||
|
Subject: [PATCH 24/60] FROMLIST(v1): hwrng: meson - Improve error handling for
|
||||||
|
core clock
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
-ENOENT (ie. "there is no clock") is fine to ignore for an optional
|
||||||
|
clock, other values are not supposed to be ignored and should be
|
||||||
|
escalated to the caller (e.g. -EPROBE_DEFER). Ignore -ENOENT by using
|
||||||
|
devm_clk_get_optional().
|
||||||
|
|
||||||
|
While touching this code also add an error message for the fatal errors.
|
||||||
|
|
||||||
|
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
||||||
|
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
---
|
||||||
|
drivers/char/hw_random/meson-rng.c | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/char/hw_random/meson-rng.c b/drivers/char/hw_random/meson-rng.c
|
||||||
|
index e446236e81f2..8bb30282ca46 100644
|
||||||
|
--- a/drivers/char/hw_random/meson-rng.c
|
||||||
|
+++ b/drivers/char/hw_random/meson-rng.c
|
||||||
|
@@ -54,9 +54,10 @@ static int meson_rng_probe(struct platform_device *pdev)
|
||||||
|
if (IS_ERR(data->base))
|
||||||
|
return PTR_ERR(data->base);
|
||||||
|
|
||||||
|
- data->core_clk = devm_clk_get(dev, "core");
|
||||||
|
+ data->core_clk = devm_clk_get_optional(dev, "core");
|
||||||
|
if (IS_ERR(data->core_clk))
|
||||||
|
- data->core_clk = NULL;
|
||||||
|
+ return dev_err_probe(dev, PTR_ERR(data->core_clk),
|
||||||
|
+ "Failed to get core clock\n");
|
||||||
|
|
||||||
|
if (data->core_clk) {
|
||||||
|
ret = clk_prepare_enable(data->core_clk);
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,141 @@
|
|||||||
|
From 1918f1f5e7e8ddefa517d945b7dac6cdc73ef17d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
|
Date: Sat, 16 Oct 2021 13:45:35 +0000
|
||||||
|
Subject: [PATCH 25/60] FROMLIST(v2): clk: meson: gxbb: Fix the SDM_EN bit for
|
||||||
|
MPLL0 on GXBB
|
||||||
|
|
||||||
|
There are reports that 48kHz audio does not work on his WeTek Play 2
|
||||||
|
(which uses a GXBB SoC), while 44.1kHz audio works fine on the same
|
||||||
|
board. There are also reports of 48kHz audio working fine on GXL and
|
||||||
|
GXM SoCs, which are using an (almost) identical AIU (audio controller).
|
||||||
|
|
||||||
|
Experimenting has shown that MPLL0 is causing this problem. In the .dts
|
||||||
|
we have by default:
|
||||||
|
|
||||||
|
assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||||
|
<&clkc CLKID_MPLL1>,
|
||||||
|
<&clkc CLKID_MPLL2>;
|
||||||
|
assigned-clock-rates = <294912000>,
|
||||||
|
<270950400>,
|
||||||
|
<393216000>;
|
||||||
|
|
||||||
|
The MPLL0 rate is divisible by 48kHz without remainder and the MPLL1
|
||||||
|
rate is divisible by 44.1kHz without remainder. Swapping these two clock
|
||||||
|
rates "fixes" 48kHz audio but breaks 44.1kHz audio.
|
||||||
|
|
||||||
|
Everything looks normal when looking at the info provided by the common
|
||||||
|
clock framework while playing 48kHz audio (via I2S with mclk-fs = 256):
|
||||||
|
mpll_prediv 1 1 0 2000000000
|
||||||
|
mpll0_div 1 1 0 294909641
|
||||||
|
mpll0 1 1 0 294909641
|
||||||
|
cts_amclk_sel 1 1 0 294909641
|
||||||
|
cts_amclk_div 1 1 0 12287902
|
||||||
|
cts_amclk 1 1 0 12287902
|
||||||
|
|
||||||
|
meson-clk-msr however shows that the actual MPLL0 clock is off by more
|
||||||
|
than 38MHz:
|
||||||
|
mp0_out 333322917 +/-10416Hz
|
||||||
|
|
||||||
|
The rate seen by meson-clk-msr is very close to what we would get when
|
||||||
|
SDM (the fractional part) was ignored:
|
||||||
|
|
||||||
|
(2000000000Hz * 16384) / ((16384 * 6) = 333.33MHz
|
||||||
|
If SDM was considered the we should get close to:
|
||||||
|
(2000000000Hz * 16384) / ((16384 * 6) + 12808) = 294.9MHz
|
||||||
|
|
||||||
|
Further experimenting shows that HHI_MPLL_CNTL7[15] does not have any
|
||||||
|
effect on the rate of MPLL0 as seen my meson-clk-msr (regardless of
|
||||||
|
whether that bit is zero or one the rate is always the same according to
|
||||||
|
meson-clk-msr). Using HHI_MPLL_CNTL[25] on the other hand as SDM_EN
|
||||||
|
results in SDM being considered for the rate output by the hardware. The
|
||||||
|
rate - as seen by meson-clk-msr - matches with what we expect when
|
||||||
|
SDM_EN is enabled (fractional part is being considered, resulting in a
|
||||||
|
294.9MHz output) or disable (fractional part being ignored, resulting in
|
||||||
|
a 333.33MHz output).
|
||||||
|
|
||||||
|
Reported-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
|
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
|
---
|
||||||
|
drivers/clk/meson/gxbb.c | 44 +++++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 41 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
|
||||||
|
index d6eed760327d..608e0e8ca49a 100644
|
||||||
|
--- a/drivers/clk/meson/gxbb.c
|
||||||
|
+++ b/drivers/clk/meson/gxbb.c
|
||||||
|
@@ -713,6 +713,35 @@ static struct clk_regmap gxbb_mpll_prediv = {
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk_regmap gxbb_mpll0_div = {
|
||||||
|
+ .data = &(struct meson_clk_mpll_data){
|
||||||
|
+ .sdm = {
|
||||||
|
+ .reg_off = HHI_MPLL_CNTL7,
|
||||||
|
+ .shift = 0,
|
||||||
|
+ .width = 14,
|
||||||
|
+ },
|
||||||
|
+ .sdm_en = {
|
||||||
|
+ .reg_off = HHI_MPLL_CNTL,
|
||||||
|
+ .shift = 25,
|
||||||
|
+ .width = 1,
|
||||||
|
+ },
|
||||||
|
+ .n2 = {
|
||||||
|
+ .reg_off = HHI_MPLL_CNTL7,
|
||||||
|
+ .shift = 16,
|
||||||
|
+ .width = 9,
|
||||||
|
+ },
|
||||||
|
+ .lock = &meson_clk_lock,
|
||||||
|
+ },
|
||||||
|
+ .hw.init = &(struct clk_init_data){
|
||||||
|
+ .name = "mpll0_div",
|
||||||
|
+ .ops = &meson_clk_mpll_ops,
|
||||||
|
+ .parent_hws = (const struct clk_hw *[]) {
|
||||||
|
+ &gxbb_mpll_prediv.hw
|
||||||
|
+ },
|
||||||
|
+ .num_parents = 1,
|
||||||
|
+ },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct clk_regmap gxl_mpll0_div = {
|
||||||
|
.data = &(struct meson_clk_mpll_data){
|
||||||
|
.sdm = {
|
||||||
|
.reg_off = HHI_MPLL_CNTL7,
|
||||||
|
@@ -749,7 +778,16 @@ static struct clk_regmap gxbb_mpll0 = {
|
||||||
|
.hw.init = &(struct clk_init_data){
|
||||||
|
.name = "mpll0",
|
||||||
|
.ops = &clk_regmap_gate_ops,
|
||||||
|
- .parent_hws = (const struct clk_hw *[]) { &gxbb_mpll0_div.hw },
|
||||||
|
+ .parent_data = &(const struct clk_parent_data) {
|
||||||
|
+ /*
|
||||||
|
+ * Note:
|
||||||
|
+ * GXL and GXBB have different SDM_EN registers. We
|
||||||
|
+ * fallback to the global naming string mechanism so
|
||||||
|
+ * mpll0_div picks up the appropriate one.
|
||||||
|
+ */
|
||||||
|
+ .name = "mpll0_div",
|
||||||
|
+ .index = -1,
|
||||||
|
+ },
|
||||||
|
.num_parents = 1,
|
||||||
|
.flags = CLK_SET_RATE_PARENT,
|
||||||
|
},
|
||||||
|
@@ -3044,7 +3082,7 @@ static struct clk_hw_onecell_data gxl_hw_onecell_data = {
|
||||||
|
[CLKID_VAPB_1] = &gxbb_vapb_1.hw,
|
||||||
|
[CLKID_VAPB_SEL] = &gxbb_vapb_sel.hw,
|
||||||
|
[CLKID_VAPB] = &gxbb_vapb.hw,
|
||||||
|
- [CLKID_MPLL0_DIV] = &gxbb_mpll0_div.hw,
|
||||||
|
+ [CLKID_MPLL0_DIV] = &gxl_mpll0_div.hw,
|
||||||
|
[CLKID_MPLL1_DIV] = &gxbb_mpll1_div.hw,
|
||||||
|
[CLKID_MPLL2_DIV] = &gxbb_mpll2_div.hw,
|
||||||
|
[CLKID_MPLL_PREDIV] = &gxbb_mpll_prediv.hw,
|
||||||
|
@@ -3439,7 +3477,7 @@ static struct clk_regmap *const gxl_clk_regmaps[] = {
|
||||||
|
&gxbb_mpll0,
|
||||||
|
&gxbb_mpll1,
|
||||||
|
&gxbb_mpll2,
|
||||||
|
- &gxbb_mpll0_div,
|
||||||
|
+ &gxl_mpll0_div,
|
||||||
|
&gxbb_mpll1_div,
|
||||||
|
&gxbb_mpll2_div,
|
||||||
|
&gxbb_cts_amclk_div,
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,233 @@
|
|||||||
|
From 672fdfb31b8d41b0bc70ef8a42b917d566141fb4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
|
Date: Sun, 3 Oct 2021 05:35:48 +0000
|
||||||
|
Subject: [PATCH 26/60] FROMLIST(RFCv1): ASoC: meson: aiu: Fix HDMI codec
|
||||||
|
control selection
|
||||||
|
|
||||||
|
The HDMI controllers on Amlogic Meson SoCs which use the AIU
|
||||||
|
audio-controller have two different audio format inputs:
|
||||||
|
- I2S which is also the only configuration supported on GXBB, GXL and
|
||||||
|
GXM SoCs since there's no SPDIF support in the DesignWare HDMI
|
||||||
|
controller driver (at the time of writing this)
|
||||||
|
- SPDIF can be used optionally, including pass-through formats
|
||||||
|
|
||||||
|
Switching between these requires us to set different registers:
|
||||||
|
AIU_HDMI_CLK_DATA_CTRL[1:0] "HDMI_DATA_CLK_SEL":
|
||||||
|
- 0x0 disables the HDMI output clock
|
||||||
|
- 0x1 selects the PCM clock
|
||||||
|
- 0x2 selects the AIU clock
|
||||||
|
- 0x3 is reserved
|
||||||
|
|
||||||
|
AIU_HDMI_CLK_DATA_CTRL[5:4] "HDMI_DATA_SEL":
|
||||||
|
- 0x0 outputs constant zero, disables HDMI data
|
||||||
|
- 0x1 selects PCM data
|
||||||
|
- 0x2 selects AIU I2S data
|
||||||
|
- 0x3 is reserved
|
||||||
|
|
||||||
|
AIU_CLK_CTRL_MORE[6] "HDMITX_SEL_AOCLKX2":
|
||||||
|
- 0x0 selects cts_i958 as AIU clk to hdmi_tx_audio_master_clk
|
||||||
|
- 0x1 selects cts_aoclkx2_int as AIU clk to hdmi_tx_audio_master_clk
|
||||||
|
|
||||||
|
The Meson8/8b/8m2 vendor driver uses the following settings:
|
||||||
|
SPDIF output to the HDMI controller:
|
||||||
|
- 0x2 (AIU clock) in AIU_HDMI_CLK_DATA_CTRL[1:0]
|
||||||
|
- 0x0 (no HDMI data) in AIU_HDMI_CLK_DATA_CTRL[5:4]
|
||||||
|
- 0x0 (using cts_i958 as AIU clk) in AIU_CLK_CTRL_MORE[6]
|
||||||
|
I2S output to the HDMI controller:
|
||||||
|
- 0x2 (AIU clock) in AIU_HDMI_CLK_DATA_CTRL[1:0]
|
||||||
|
- 0x2 (I2S data) in AIU_HDMI_CLK_DATA_CTRL[5:4]
|
||||||
|
- 0x0 (using cts_aoclkx2_int as AIU clk) in AIU_CLK_CTRL_MORE[6]
|
||||||
|
|
||||||
|
The GXBB/GXL/GXM vendor driver uses the following settings:
|
||||||
|
SPDIF output to the HDMI controller:
|
||||||
|
- not setting AIU_HDMI_CLK_DATA_CTRL at all
|
||||||
|
- 0x0 (using cts_i958 as AIU clk) in AIU_CLK_CTRL_MORE[6]
|
||||||
|
I2S output to the HDMI controller:
|
||||||
|
- 0x2 (AIU clock) in AIU_HDMI_CLK_DATA_CTRL[1:0]
|
||||||
|
- 0x2 (I2S data) in AIU_HDMI_CLK_DATA_CTRL[5:4]
|
||||||
|
- 0x0 (using cts_aoclkx2_int as AIU clk) in AIU_CLK_CTRL_MORE[6]
|
||||||
|
|
||||||
|
Set the three registers at the same time following what the vendor
|
||||||
|
driver does on Meson8/8b/8m2 SoCs. This makes the SPDIF output to the
|
||||||
|
HDMI controller work. The entries and order of the entries in the enum
|
||||||
|
is not changed on purpose to not break old configurations.
|
||||||
|
|
||||||
|
Fixes: b82b734c0e9a7 ("ASoC: meson: aiu: add hdmi codec control support")
|
||||||
|
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
|
---
|
||||||
|
sound/soc/meson/aiu-codec-ctrl.c | 108 ++++++++++++++++++++++--------
|
||||||
|
sound/soc/meson/aiu-encoder-i2s.c | 6 --
|
||||||
|
2 files changed, 80 insertions(+), 34 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/meson/aiu-codec-ctrl.c b/sound/soc/meson/aiu-codec-ctrl.c
|
||||||
|
index c3ea733fce91..2b8575491aeb 100644
|
||||||
|
--- a/sound/soc/meson/aiu-codec-ctrl.c
|
||||||
|
+++ b/sound/soc/meson/aiu-codec-ctrl.c
|
||||||
|
@@ -12,14 +12,60 @@
|
||||||
|
#include "aiu.h"
|
||||||
|
#include "meson-codec-glue.h"
|
||||||
|
|
||||||
|
-#define CTRL_CLK_SEL GENMASK(1, 0)
|
||||||
|
-#define CTRL_DATA_SEL_SHIFT 4
|
||||||
|
-#define CTRL_DATA_SEL (0x3 << CTRL_DATA_SEL_SHIFT)
|
||||||
|
-
|
||||||
|
-static const char * const aiu_codec_ctrl_mux_texts[] = {
|
||||||
|
- "DISABLED", "PCM", "I2S",
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_CLK_SEL GENMASK(1, 0)
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_DISABLE 0x0
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_PCM 0x1
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_AIU 0x2
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_DATA_SEL GENMASK(5, 4)
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_OUTPUT_ZERO 0x0
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_PCM_DATA 0x1
|
||||||
|
+#define AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_I2S_DATA 0x2
|
||||||
|
+
|
||||||
|
+#define AIU_CLK_CTRL_MORE_AMCLK BIT(6)
|
||||||
|
+
|
||||||
|
+#define AIU_HDMI_CTRL_MUX_DISABLED 0
|
||||||
|
+#define AIU_HDMI_CTRL_MUX_PCM 1
|
||||||
|
+#define AIU_HDMI_CTRL_MUX_I2S 2
|
||||||
|
+
|
||||||
|
+static const char * const aiu_codec_hdmi_ctrl_mux_texts[] = {
|
||||||
|
+ [AIU_HDMI_CTRL_MUX_DISABLED] = "DISABLED",
|
||||||
|
+ [AIU_HDMI_CTRL_MUX_PCM] = "PCM",
|
||||||
|
+ [AIU_HDMI_CTRL_MUX_I2S] = "I2S",
|
||||||
|
};
|
||||||
|
|
||||||
|
+static int aiu_codec_ctrl_mux_get_enum(struct snd_kcontrol *kcontrol,
|
||||||
|
+ struct snd_ctl_elem_value *ucontrol)
|
||||||
|
+{
|
||||||
|
+ struct snd_soc_component *component =
|
||||||
|
+ snd_soc_dapm_kcontrol_component(kcontrol);
|
||||||
|
+ unsigned int ctrl, more, mux = AIU_HDMI_CTRL_MUX_DISABLED;
|
||||||
|
+
|
||||||
|
+ ctrl = snd_soc_component_read(component, AIU_HDMI_CLK_DATA_CTRL);
|
||||||
|
+ if (FIELD_GET(AIU_HDMI_CLK_DATA_CTRL_CLK_SEL, ctrl) !=
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_AIU) {
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ more = snd_soc_component_read(component, AIU_CLK_CTRL_MORE);
|
||||||
|
+ if (FIELD_GET(AIU_HDMI_CLK_DATA_CTRL_DATA_SEL, ctrl) ==
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_I2S_DATA &&
|
||||||
|
+ !!(more & AIU_CLK_CTRL_MORE_AMCLK)) {
|
||||||
|
+ mux = AIU_HDMI_CTRL_MUX_I2S;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (FIELD_GET(AIU_HDMI_CLK_DATA_CTRL_DATA_SEL, ctrl) ==
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_OUTPUT_ZERO &&
|
||||||
|
+ !(more & AIU_CLK_CTRL_MORE_AMCLK)) {
|
||||||
|
+ mux = AIU_HDMI_CTRL_MUX_PCM;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+out:
|
||||||
|
+ ucontrol->value.enumerated.item[0] = mux;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int aiu_codec_ctrl_mux_put_enum(struct snd_kcontrol *kcontrol,
|
||||||
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
|
{
|
||||||
|
@@ -28,45 +74,51 @@ static int aiu_codec_ctrl_mux_put_enum(struct snd_kcontrol *kcontrol,
|
||||||
|
struct snd_soc_dapm_context *dapm =
|
||||||
|
snd_soc_dapm_kcontrol_dapm(kcontrol);
|
||||||
|
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
||||||
|
- unsigned int mux, changed;
|
||||||
|
+ unsigned int mux, ctrl, more;
|
||||||
|
|
||||||
|
mux = snd_soc_enum_item_to_val(e, ucontrol->value.enumerated.item[0]);
|
||||||
|
- changed = snd_soc_component_test_bits(component, e->reg,
|
||||||
|
- CTRL_DATA_SEL,
|
||||||
|
- FIELD_PREP(CTRL_DATA_SEL, mux));
|
||||||
|
|
||||||
|
- if (!changed)
|
||||||
|
- return 0;
|
||||||
|
+ if (mux == AIU_HDMI_CTRL_MUX_I2S) {
|
||||||
|
+ ctrl = FIELD_PREP(AIU_HDMI_CLK_DATA_CTRL_DATA_SEL,
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_I2S_DATA);
|
||||||
|
+ more = AIU_CLK_CTRL_MORE_AMCLK;
|
||||||
|
+ } else {
|
||||||
|
+ ctrl = FIELD_PREP(AIU_HDMI_CLK_DATA_CTRL_DATA_SEL,
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_DATA_SEL_OUTPUT_ZERO);
|
||||||
|
+ more = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (mux == AIU_HDMI_CTRL_MUX_DISABLED) {
|
||||||
|
+ ctrl |= FIELD_PREP(AIU_HDMI_CLK_DATA_CTRL_CLK_SEL,
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_DISABLE);
|
||||||
|
+ } else {
|
||||||
|
+ ctrl |= FIELD_PREP(AIU_HDMI_CLK_DATA_CTRL_CLK_SEL,
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_CLK_SEL_AIU);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* Force disconnect of the mux while updating */
|
||||||
|
snd_soc_dapm_mux_update_power(dapm, kcontrol, 0, NULL, NULL);
|
||||||
|
|
||||||
|
- /* Reset the source first */
|
||||||
|
- snd_soc_component_update_bits(component, e->reg,
|
||||||
|
- CTRL_CLK_SEL |
|
||||||
|
- CTRL_DATA_SEL,
|
||||||
|
- FIELD_PREP(CTRL_CLK_SEL, 0) |
|
||||||
|
- FIELD_PREP(CTRL_DATA_SEL, 0));
|
||||||
|
+ snd_soc_component_update_bits(component, AIU_HDMI_CLK_DATA_CTRL,
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_CLK_SEL |
|
||||||
|
+ AIU_HDMI_CLK_DATA_CTRL_DATA_SEL,
|
||||||
|
+ ctrl);
|
||||||
|
|
||||||
|
- /* Set the appropriate source */
|
||||||
|
- snd_soc_component_update_bits(component, e->reg,
|
||||||
|
- CTRL_CLK_SEL |
|
||||||
|
- CTRL_DATA_SEL,
|
||||||
|
- FIELD_PREP(CTRL_CLK_SEL, mux) |
|
||||||
|
- FIELD_PREP(CTRL_DATA_SEL, mux));
|
||||||
|
+ snd_soc_component_update_bits(component, AIU_CLK_CTRL_MORE,
|
||||||
|
+ AIU_CLK_CTRL_MORE_AMCLK,
|
||||||
|
+ more);
|
||||||
|
|
||||||
|
snd_soc_dapm_mux_update_power(dapm, kcontrol, mux, e, NULL);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static SOC_ENUM_SINGLE_DECL(aiu_hdmi_ctrl_mux_enum, AIU_HDMI_CLK_DATA_CTRL,
|
||||||
|
- CTRL_DATA_SEL_SHIFT,
|
||||||
|
- aiu_codec_ctrl_mux_texts);
|
||||||
|
+static SOC_ENUM_SINGLE_VIRT_DECL(aiu_hdmi_ctrl_mux_enum,
|
||||||
|
+ aiu_codec_hdmi_ctrl_mux_texts);
|
||||||
|
|
||||||
|
static const struct snd_kcontrol_new aiu_hdmi_ctrl_mux =
|
||||||
|
SOC_DAPM_ENUM_EXT("HDMI Source", aiu_hdmi_ctrl_mux_enum,
|
||||||
|
- snd_soc_dapm_get_enum_double,
|
||||||
|
+ aiu_codec_ctrl_mux_get_enum,
|
||||||
|
aiu_codec_ctrl_mux_put_enum);
|
||||||
|
|
||||||
|
static const struct snd_soc_dapm_widget aiu_hdmi_ctrl_widgets[] = {
|
||||||
|
diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
index 932224552146..f8378066d448 100644
|
||||||
|
--- a/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
+++ b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
@@ -24,7 +24,6 @@
|
||||||
|
#define AIU_CLK_CTRL_AOCLK_INVERT BIT(6)
|
||||||
|
#define AIU_CLK_CTRL_LRCLK_INVERT BIT(7)
|
||||||
|
#define AIU_CLK_CTRL_LRCLK_SKEW GENMASK(9, 8)
|
||||||
|
-#define AIU_CLK_CTRL_MORE_HDMI_AMCLK BIT(6)
|
||||||
|
#define AIU_CLK_CTRL_MORE_I2S_DIV GENMASK(5, 0)
|
||||||
|
#define AIU_CODEC_DAC_LRCLK_CTRL_DIV GENMASK(11, 0)
|
||||||
|
|
||||||
|
@@ -208,11 +207,6 @@ static int aiu_encoder_i2s_set_clocks(struct snd_soc_component *component,
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
- /* Make sure amclk is used for HDMI i2s as well */
|
||||||
|
- snd_soc_component_update_bits(component, AIU_CLK_CTRL_MORE,
|
||||||
|
- AIU_CLK_CTRL_MORE_HDMI_AMCLK,
|
||||||
|
- AIU_CLK_CTRL_MORE_HDMI_AMCLK);
|
||||||
|
-
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From 30c6fc86c9027949f04928cc5e7fb2b5bfcf721a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:03:05 +0000
|
||||||
|
Subject: [PATCH 27/60] FROMLIST(v1): ASoC: meson: axg-card: make links
|
||||||
|
nonatomic
|
||||||
|
|
||||||
|
Non atomic operations need to be performed in the trigger callback
|
||||||
|
of the TDM interfaces. Those are BEs but what matters is the nonatomic
|
||||||
|
flag of the FE in the DPCM context. Just set nonatomic for everything so,
|
||||||
|
at least, it is clear.
|
||||||
|
|
||||||
|
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
|
---
|
||||||
|
sound/soc/meson/axg-card.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/meson/axg-card.c b/sound/soc/meson/axg-card.c
|
||||||
|
index 2b77010c2c5c..cbbaa55d92a6 100644
|
||||||
|
--- a/sound/soc/meson/axg-card.c
|
||||||
|
+++ b/sound/soc/meson/axg-card.c
|
||||||
|
@@ -320,6 +320,7 @@ static int axg_card_add_link(struct snd_soc_card *card, struct device_node *np,
|
||||||
|
|
||||||
|
dai_link->cpus = cpu;
|
||||||
|
dai_link->num_cpus = 1;
|
||||||
|
+ dai_link->nonatomic = true;
|
||||||
|
|
||||||
|
ret = meson_card_parse_dai(card, np, &dai_link->cpus->of_node,
|
||||||
|
&dai_link->cpus->dai_name);
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
From 17c65fae4e17678468e7eb0c6107914adad7852f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
|
Date: Wed, 20 Oct 2021 20:03:57 +0000
|
||||||
|
Subject: [PATCH 28/60] FROMLIST(v1): ASoC: meson: axg-tdm-interface: manage
|
||||||
|
formatters in trigger
|
||||||
|
|
||||||
|
So far, the formatters have been reset/enabled using the .prepare()
|
||||||
|
callback. This was done in this callback because walking the formatters use
|
||||||
|
a mutex so it could not be done in .trigger(), which is atomic by default.
|
||||||
|
|
||||||
|
It turns out there is a problem on capture path of the AXG series.
|
||||||
|
The FIFO may get out of sync with the TDM decoder if the IP are not enabled
|
||||||
|
in a specific order. The FIFO must be enabled before the formatter starts
|
||||||
|
producing data. IOW, we must deal with FE before the BE. The .prepare()
|
||||||
|
callback is called on the BEs before the FE so it is not OK for the AXG.
|
||||||
|
|
||||||
|
The .trigger() callback order can be configured, and it deals with the FE
|
||||||
|
before the BEs by default. To solve our problem, we just need to start and
|
||||||
|
stop the formatters from the .trigger() callback. It is OK do so now that
|
||||||
|
the links have been made 'nonatomic' in the card driver.
|
||||||
|
|
||||||
|
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
|
---
|
||||||
|
sound/soc/meson/axg-tdm-interface.c | 26 +++++++++++++++++++++-----
|
||||||
|
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/meson/axg-tdm-interface.c b/sound/soc/meson/axg-tdm-interface.c
|
||||||
|
index 87cac440b369..db077773af7a 100644
|
||||||
|
--- a/sound/soc/meson/axg-tdm-interface.c
|
||||||
|
+++ b/sound/soc/meson/axg-tdm-interface.c
|
||||||
|
@@ -351,13 +351,29 @@ static int axg_tdm_iface_hw_free(struct snd_pcm_substream *substream,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int axg_tdm_iface_prepare(struct snd_pcm_substream *substream,
|
||||||
|
+static int axg_tdm_iface_trigger(struct snd_pcm_substream *substream,
|
||||||
|
+ int cmd,
|
||||||
|
struct snd_soc_dai *dai)
|
||||||
|
{
|
||||||
|
- struct axg_tdm_stream *ts = snd_soc_dai_get_dma_data(dai, substream);
|
||||||
|
+ struct axg_tdm_stream *ts =
|
||||||
|
+ snd_soc_dai_get_dma_data(dai, substream);
|
||||||
|
+
|
||||||
|
+ switch (cmd) {
|
||||||
|
+ case SNDRV_PCM_TRIGGER_START:
|
||||||
|
+ case SNDRV_PCM_TRIGGER_RESUME:
|
||||||
|
+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||||
|
+ axg_tdm_stream_start(ts);
|
||||||
|
+ break;
|
||||||
|
+ case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||||
|
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||||
|
+ case SNDRV_PCM_TRIGGER_STOP:
|
||||||
|
+ axg_tdm_stream_stop(ts);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- /* Force all attached formatters to update */
|
||||||
|
- return axg_tdm_stream_reset(ts);
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int axg_tdm_iface_remove_dai(struct snd_soc_dai *dai)
|
||||||
|
@@ -397,8 +413,8 @@ static const struct snd_soc_dai_ops axg_tdm_iface_ops = {
|
||||||
|
.set_fmt = axg_tdm_iface_set_fmt,
|
||||||
|
.startup = axg_tdm_iface_startup,
|
||||||
|
.hw_params = axg_tdm_iface_hw_params,
|
||||||
|
- .prepare = axg_tdm_iface_prepare,
|
||||||
|
.hw_free = axg_tdm_iface_hw_free,
|
||||||
|
+ .trigger = axg_tdm_iface_trigger,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* TDM Backend DAIs */
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 54b8e155e8fdb914751f1d8ed53f9edd66470008 Mon Sep 17 00:00:00 2001
|
From 87f2074b73cf0d82a3cc77e0cba3761ea893b6b6 Mon Sep 17 00:00:00 2001
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
Date: Thu, 14 Jan 2021 17:43:02 +0100
|
Date: Thu, 14 Jan 2021 17:43:02 +0100
|
||||||
Subject: [PATCH 67/88] WIP: mmc: meson-gx-mmc: set core clock phase to 270
|
Subject: [PATCH 29/60] WIP: mmc: meson-gx-mmc: set core clock phase to 270
|
||||||
degres for AXG compatible controllers
|
degres for AXG compatible controllers
|
||||||
|
|
||||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
@ -10,7 +10,7 @@ Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|||||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
|
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
|
||||||
index 13f6a2c0ed04..073d5bf41aef 100644
|
index 8f36536cb1b6..a7cd96aefa8c 100644
|
||||||
--- a/drivers/mmc/host/meson-gx-mmc.c
|
--- a/drivers/mmc/host/meson-gx-mmc.c
|
||||||
+++ b/drivers/mmc/host/meson-gx-mmc.c
|
+++ b/drivers/mmc/host/meson-gx-mmc.c
|
||||||
@@ -38,6 +38,7 @@
|
@@ -38,6 +38,7 @@
|
||||||
@ -29,7 +29,7 @@ index 13f6a2c0ed04..073d5bf41aef 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct sd_emmc_desc {
|
struct sd_emmc_desc {
|
||||||
@@ -414,7 +416,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
|
@@ -426,7 +428,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
|
||||||
/* init SD_EMMC_CLOCK to sane defaults w/min clock rate */
|
/* init SD_EMMC_CLOCK to sane defaults w/min clock rate */
|
||||||
clk_reg = CLK_ALWAYS_ON(host);
|
clk_reg = CLK_ALWAYS_ON(host);
|
||||||
clk_reg |= CLK_DIV_MASK;
|
clk_reg |= CLK_DIV_MASK;
|
||||||
@ -38,7 +38,7 @@ index 13f6a2c0ed04..073d5bf41aef 100644
|
|||||||
clk_reg |= FIELD_PREP(CLK_TX_PHASE_MASK, CLK_PHASE_0);
|
clk_reg |= FIELD_PREP(CLK_TX_PHASE_MASK, CLK_PHASE_0);
|
||||||
clk_reg |= FIELD_PREP(CLK_RX_PHASE_MASK, CLK_PHASE_0);
|
clk_reg |= FIELD_PREP(CLK_RX_PHASE_MASK, CLK_PHASE_0);
|
||||||
writel(clk_reg, host->regs + SD_EMMC_CLOCK);
|
writel(clk_reg, host->regs + SD_EMMC_CLOCK);
|
||||||
@@ -1240,6 +1242,7 @@ static const struct meson_mmc_data meson_gx_data = {
|
@@ -1336,6 +1338,7 @@ static const struct meson_mmc_data meson_gx_data = {
|
||||||
.rx_delay_mask = CLK_V2_RX_DELAY_MASK,
|
.rx_delay_mask = CLK_V2_RX_DELAY_MASK,
|
||||||
.always_on = CLK_V2_ALWAYS_ON,
|
.always_on = CLK_V2_ALWAYS_ON,
|
||||||
.adjust = SD_EMMC_ADJUST,
|
.adjust = SD_EMMC_ADJUST,
|
||||||
@ -46,7 +46,7 @@ index 13f6a2c0ed04..073d5bf41aef 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct meson_mmc_data meson_axg_data = {
|
static const struct meson_mmc_data meson_axg_data = {
|
||||||
@@ -1247,6 +1250,7 @@ static const struct meson_mmc_data meson_axg_data = {
|
@@ -1343,6 +1346,7 @@ static const struct meson_mmc_data meson_axg_data = {
|
||||||
.rx_delay_mask = CLK_V3_RX_DELAY_MASK,
|
.rx_delay_mask = CLK_V3_RX_DELAY_MASK,
|
||||||
.always_on = CLK_V3_ALWAYS_ON,
|
.always_on = CLK_V3_ALWAYS_ON,
|
||||||
.adjust = SD_EMMC_V3_ADJUST,
|
.adjust = SD_EMMC_V3_ADJUST,
|
@ -0,0 +1,29 @@
|
|||||||
|
From 8009e7c2cdf4f88da111c80c84b7d71f37527c6c Mon Sep 17 00:00:00 2001
|
||||||
|
From: benjamin545 <benjamin545@gmail.com>
|
||||||
|
Date: Thu, 15 Jul 2021 14:32:33 -0400
|
||||||
|
Subject: [PATCH 30/60] WIP: drivers: meson: vdec: remove redundant if
|
||||||
|
statement
|
||||||
|
|
||||||
|
checking if sess->fmt_out->pixfmt is V4L2_PIX_FMT_VP9 was already done
|
||||||
|
as a condition to enter the if statement where this additional check is performed
|
||||||
|
---
|
||||||
|
drivers/staging/media/meson/vdec/esparser.c | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
index db7022707ff8..e18334e57fc0 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
@@ -314,8 +314,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
|
||||||
|
num_dst_bufs = codec_ops->num_pending_bufs(sess);
|
||||||
|
|
||||||
|
num_dst_bufs += v4l2_m2m_num_dst_bufs_ready(sess->m2m_ctx);
|
||||||
|
- if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9)
|
||||||
|
- num_dst_bufs -= 3;
|
||||||
|
+ num_dst_bufs -= 3;
|
||||||
|
|
||||||
|
if (esparser_vififo_get_free_space(sess) < payload_size ||
|
||||||
|
atomic_read(&sess->esparser_queued_bufs) >= num_dst_bufs)
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,586 @@
|
|||||||
|
From 1de7b27fc9e3a46e2e2566c0b5435e1acd050d32 Mon Sep 17 00:00:00 2001
|
||||||
|
From: benjamin545 <benjamin545@gmail.com>
|
||||||
|
Date: Thu, 15 Jul 2021 16:32:39 -0400
|
||||||
|
Subject: [PATCH 31/60] WIP: drivers: meson: vdec: improve mmu and fbc handling
|
||||||
|
and add 10 bit handling
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/staging/media/meson/vdec/codec_h264.c | 3 +-
|
||||||
|
.../media/meson/vdec/codec_hevc_common.c | 164 +++++++++++-------
|
||||||
|
.../media/meson/vdec/codec_hevc_common.h | 3 +-
|
||||||
|
drivers/staging/media/meson/vdec/codec_vp9.c | 36 ++--
|
||||||
|
drivers/staging/media/meson/vdec/esparser.c | 1 +
|
||||||
|
drivers/staging/media/meson/vdec/vdec.h | 1 +
|
||||||
|
.../staging/media/meson/vdec/vdec_helpers.c | 46 +++--
|
||||||
|
.../staging/media/meson/vdec/vdec_helpers.h | 10 +-
|
||||||
|
8 files changed, 163 insertions(+), 101 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/codec_h264.c b/drivers/staging/media/meson/vdec/codec_h264.c
|
||||||
|
index c61128fc4bb9..d53c9a464bde 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/codec_h264.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/codec_h264.c
|
||||||
|
@@ -353,7 +353,8 @@ static void codec_h264_src_change(struct amvdec_session *sess)
|
||||||
|
frame_width, frame_height, crop_right, crop_bottom);
|
||||||
|
|
||||||
|
codec_h264_set_par(sess);
|
||||||
|
- amvdec_src_change(sess, frame_width, frame_height, h264->max_refs + 5);
|
||||||
|
+ amvdec_src_change(sess, frame_width, frame_height,
|
||||||
|
+ h264->max_refs + 5, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/codec_hevc_common.c b/drivers/staging/media/meson/vdec/codec_hevc_common.c
|
||||||
|
index 0315cc0911cd..d6ed82dc93ca 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/codec_hevc_common.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/codec_hevc_common.c
|
||||||
|
@@ -30,8 +30,11 @@ const u16 vdec_hevc_parser_cmd[] = {
|
||||||
|
void codec_hevc_setup_decode_head(struct amvdec_session *sess, int is_10bit)
|
||||||
|
{
|
||||||
|
struct amvdec_core *core = sess->core;
|
||||||
|
- u32 body_size = amvdec_am21c_body_size(sess->width, sess->height);
|
||||||
|
- u32 head_size = amvdec_am21c_head_size(sess->width, sess->height);
|
||||||
|
+ u32 use_mmu = codec_hevc_use_mmu(core->platform->revision,
|
||||||
|
+ sess->pixfmt_cap, is_10bit);
|
||||||
|
+ u32 body_size = amvdec_amfbc_body_size(sess->width, sess->height,
|
||||||
|
+ is_10bit, use_mmu);
|
||||||
|
+ u32 head_size = amvdec_amfbc_head_size(sess->width, sess->height);
|
||||||
|
|
||||||
|
if (!codec_hevc_use_fbc(sess->pixfmt_cap, is_10bit)) {
|
||||||
|
/* Enable 2-plane reference read mode */
|
||||||
|
@@ -39,9 +42,17 @@ void codec_hevc_setup_decode_head(struct amvdec_session *sess, int is_10bit)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* enable mem saving mode for 8-bit */
|
||||||
|
+ if (!is_10bit)
|
||||||
|
+ amvdec_write_dos_bits(core, HEVC_SAO_CTRL5, BIT(9));
|
||||||
|
+ else
|
||||||
|
+ amvdec_clear_dos_bits(core, HEVC_SAO_CTRL5, BIT(9));
|
||||||
|
+
|
||||||
|
if (codec_hevc_use_mmu(core->platform->revision,
|
||||||
|
sess->pixfmt_cap, is_10bit))
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_DECOMP_CTL1, BIT(4));
|
||||||
|
+ else if (!is_10bit)
|
||||||
|
+ amvdec_write_dos(core, HEVCD_MPP_DECOMP_CTL1, BIT(3));
|
||||||
|
else
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_DECOMP_CTL1, 0);
|
||||||
|
|
||||||
|
@@ -73,7 +84,7 @@ static void codec_hevc_setup_buffers_gxbb(struct amvdec_session *sess,
|
||||||
|
|
||||||
|
idx = vb->index;
|
||||||
|
|
||||||
|
- if (codec_hevc_use_downsample(sess->pixfmt_cap, is_10bit))
|
||||||
|
+ if (codec_hevc_use_fbc(sess->pixfmt_cap, is_10bit))
|
||||||
|
buf_y_paddr = comm->fbc_buffer_paddr[idx];
|
||||||
|
else
|
||||||
|
buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
|
||||||
|
@@ -114,8 +125,8 @@ static void codec_hevc_setup_buffers_gxl(struct amvdec_session *sess,
|
||||||
|
{
|
||||||
|
struct amvdec_core *core = sess->core;
|
||||||
|
struct v4l2_m2m_buffer *buf;
|
||||||
|
- u32 revision = core->platform->revision;
|
||||||
|
u32 pixfmt_cap = sess->pixfmt_cap;
|
||||||
|
+ const u32 revision = core->platform->revision;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_ANC2AXI_TBL_CONF_ADDR,
|
||||||
|
@@ -127,12 +138,14 @@ static void codec_hevc_setup_buffers_gxl(struct amvdec_session *sess,
|
||||||
|
dma_addr_t buf_uv_paddr = 0;
|
||||||
|
u32 idx = vb->index;
|
||||||
|
|
||||||
|
- if (codec_hevc_use_mmu(revision, pixfmt_cap, is_10bit))
|
||||||
|
- buf_y_paddr = comm->mmu_header_paddr[idx];
|
||||||
|
- else if (codec_hevc_use_downsample(pixfmt_cap, is_10bit))
|
||||||
|
- buf_y_paddr = comm->fbc_buffer_paddr[idx];
|
||||||
|
- else
|
||||||
|
- buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
|
||||||
|
+ if (codec_hevc_use_downsample(pixfmt_cap, is_10bit)) {
|
||||||
|
+ if (codec_hevc_use_mmu(revision, pixfmt_cap, is_10bit))
|
||||||
|
+ buf_y_paddr = comm->mmu_header_paddr[idx];
|
||||||
|
+ else
|
||||||
|
+ buf_y_paddr = comm->fbc_buffer_paddr[idx];
|
||||||
|
+ } else {
|
||||||
|
+ buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_ANC2AXI_TBL_DATA,
|
||||||
|
buf_y_paddr >> 5);
|
||||||
|
@@ -150,60 +163,67 @@ static void codec_hevc_setup_buffers_gxl(struct amvdec_session *sess,
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_DATA_ADDR, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
-void codec_hevc_free_fbc_buffers(struct amvdec_session *sess,
|
||||||
|
+void codec_hevc_free_mmu_headers(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm)
|
||||||
|
{
|
||||||
|
struct device *dev = sess->core->dev;
|
||||||
|
- u32 am21_size = amvdec_am21c_size(sess->width, sess->height);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_REF_PIC_NUM; ++i) {
|
||||||
|
- if (comm->fbc_buffer_vaddr[i]) {
|
||||||
|
- dma_free_coherent(dev, am21_size,
|
||||||
|
- comm->fbc_buffer_vaddr[i],
|
||||||
|
- comm->fbc_buffer_paddr[i]);
|
||||||
|
- comm->fbc_buffer_vaddr[i] = NULL;
|
||||||
|
+ if (comm->mmu_header_vaddr[i]) {
|
||||||
|
+ dma_free_coherent(dev, MMU_COMPRESS_HEADER_SIZE,
|
||||||
|
+ comm->mmu_header_vaddr[i],
|
||||||
|
+ comm->mmu_header_paddr[i]);
|
||||||
|
+ comm->mmu_header_vaddr[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-EXPORT_SYMBOL_GPL(codec_hevc_free_fbc_buffers);
|
||||||
|
+EXPORT_SYMBOL_GPL(codec_hevc_free_mmu_headers);
|
||||||
|
|
||||||
|
-static int codec_hevc_alloc_fbc_buffers(struct amvdec_session *sess,
|
||||||
|
+static int codec_hevc_alloc_mmu_headers(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm)
|
||||||
|
{
|
||||||
|
struct device *dev = sess->core->dev;
|
||||||
|
struct v4l2_m2m_buffer *buf;
|
||||||
|
- u32 am21_size = amvdec_am21c_size(sess->width, sess->height);
|
||||||
|
|
||||||
|
v4l2_m2m_for_each_dst_buf(sess->m2m_ctx, buf) {
|
||||||
|
u32 idx = buf->vb.vb2_buf.index;
|
||||||
|
dma_addr_t paddr;
|
||||||
|
- void *vaddr = dma_alloc_coherent(dev, am21_size, &paddr,
|
||||||
|
- GFP_KERNEL);
|
||||||
|
+ void *vaddr = dma_alloc_coherent(dev, MMU_COMPRESS_HEADER_SIZE,
|
||||||
|
+ &paddr, GFP_KERNEL);
|
||||||
|
if (!vaddr) {
|
||||||
|
- codec_hevc_free_fbc_buffers(sess, comm);
|
||||||
|
+ codec_hevc_free_mmu_headers(sess, comm);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
- comm->fbc_buffer_vaddr[idx] = vaddr;
|
||||||
|
- comm->fbc_buffer_paddr[idx] = paddr;
|
||||||
|
+ comm->mmu_header_vaddr[idx] = vaddr;
|
||||||
|
+ comm->mmu_header_paddr[idx] = paddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void codec_hevc_free_mmu_headers(struct amvdec_session *sess,
|
||||||
|
+void codec_hevc_free_fbc_buffers(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm)
|
||||||
|
{
|
||||||
|
struct device *dev = sess->core->dev;
|
||||||
|
+ u32 use_mmu;
|
||||||
|
+ u32 am21_size;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
+ use_mmu = codec_hevc_use_mmu(sess->core->platform->revision,
|
||||||
|
+ sess->pixfmt_cap,
|
||||||
|
+ sess->bitdepth == 10 ? 1 : 0);
|
||||||
|
+
|
||||||
|
+ am21_size = amvdec_amfbc_size(sess->width, sess->height,
|
||||||
|
+ sess->bitdepth == 10 ? 1 : 0, use_mmu);
|
||||||
|
+
|
||||||
|
for (i = 0; i < MAX_REF_PIC_NUM; ++i) {
|
||||||
|
- if (comm->mmu_header_vaddr[i]) {
|
||||||
|
- dma_free_coherent(dev, MMU_COMPRESS_HEADER_SIZE,
|
||||||
|
- comm->mmu_header_vaddr[i],
|
||||||
|
- comm->mmu_header_paddr[i]);
|
||||||
|
- comm->mmu_header_vaddr[i] = NULL;
|
||||||
|
+ if (comm->fbc_buffer_vaddr[i]) {
|
||||||
|
+ dma_free_coherent(dev, am21_size,
|
||||||
|
+ comm->fbc_buffer_vaddr[i],
|
||||||
|
+ comm->fbc_buffer_paddr[i]);
|
||||||
|
+ comm->fbc_buffer_vaddr[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -213,33 +233,49 @@ void codec_hevc_free_mmu_headers(struct amvdec_session *sess,
|
||||||
|
comm->mmu_map_paddr);
|
||||||
|
comm->mmu_map_vaddr = NULL;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ codec_hevc_free_mmu_headers(sess, comm);
|
||||||
|
}
|
||||||
|
-EXPORT_SYMBOL_GPL(codec_hevc_free_mmu_headers);
|
||||||
|
+EXPORT_SYMBOL_GPL(codec_hevc_free_fbc_buffers);
|
||||||
|
|
||||||
|
-static int codec_hevc_alloc_mmu_headers(struct amvdec_session *sess,
|
||||||
|
+static int codec_hevc_alloc_fbc_buffers(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm)
|
||||||
|
{
|
||||||
|
struct device *dev = sess->core->dev;
|
||||||
|
struct v4l2_m2m_buffer *buf;
|
||||||
|
+ u32 use_mmu;
|
||||||
|
+ u32 am21_size;
|
||||||
|
+ const u32 revision = sess->core->platform->revision;
|
||||||
|
+ const u32 is_10bit = sess->bitdepth == 10 ? 1 : 0;
|
||||||
|
+ int ret;
|
||||||
|
|
||||||
|
- comm->mmu_map_vaddr = dma_alloc_coherent(dev, MMU_MAP_SIZE,
|
||||||
|
- &comm->mmu_map_paddr,
|
||||||
|
- GFP_KERNEL);
|
||||||
|
- if (!comm->mmu_map_vaddr)
|
||||||
|
- return -ENOMEM;
|
||||||
|
+ use_mmu = codec_hevc_use_mmu(revision, sess->pixfmt_cap,
|
||||||
|
+ is_10bit);
|
||||||
|
+
|
||||||
|
+ am21_size = amvdec_amfbc_size(sess->width, sess->height,
|
||||||
|
+ is_10bit, use_mmu);
|
||||||
|
|
||||||
|
v4l2_m2m_for_each_dst_buf(sess->m2m_ctx, buf) {
|
||||||
|
u32 idx = buf->vb.vb2_buf.index;
|
||||||
|
dma_addr_t paddr;
|
||||||
|
- void *vaddr = dma_alloc_coherent(dev, MMU_COMPRESS_HEADER_SIZE,
|
||||||
|
- &paddr, GFP_KERNEL);
|
||||||
|
+ void *vaddr = dma_alloc_coherent(dev, am21_size, &paddr,
|
||||||
|
+ GFP_KERNEL);
|
||||||
|
if (!vaddr) {
|
||||||
|
- codec_hevc_free_mmu_headers(sess, comm);
|
||||||
|
+ codec_hevc_free_fbc_buffers(sess, comm);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
- comm->mmu_header_vaddr[idx] = vaddr;
|
||||||
|
- comm->mmu_header_paddr[idx] = paddr;
|
||||||
|
+ comm->fbc_buffer_vaddr[idx] = vaddr;
|
||||||
|
+ comm->fbc_buffer_paddr[idx] = paddr;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (codec_hevc_use_mmu(revision, sess->pixfmt_cap, is_10bit) &&
|
||||||
|
+ codec_hevc_use_downsample(sess->pixfmt_cap, is_10bit)) {
|
||||||
|
+ ret = codec_hevc_alloc_mmu_headers(sess, comm);
|
||||||
|
+ if (ret) {
|
||||||
|
+ codec_hevc_free_fbc_buffers(sess, comm);
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -250,21 +286,24 @@ int codec_hevc_setup_buffers(struct amvdec_session *sess,
|
||||||
|
int is_10bit)
|
||||||
|
{
|
||||||
|
struct amvdec_core *core = sess->core;
|
||||||
|
+ struct device *dev = core->dev;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- if (codec_hevc_use_downsample(sess->pixfmt_cap, is_10bit)) {
|
||||||
|
- ret = codec_hevc_alloc_fbc_buffers(sess, comm);
|
||||||
|
- if (ret)
|
||||||
|
- return ret;
|
||||||
|
+ if (codec_hevc_use_mmu(core->platform->revision,
|
||||||
|
+ sess->pixfmt_cap, is_10bit)) {
|
||||||
|
+ comm->mmu_map_vaddr = dma_alloc_coherent(dev, MMU_MAP_SIZE,
|
||||||
|
+ &comm->mmu_map_paddr,
|
||||||
|
+ GFP_KERNEL);
|
||||||
|
+ if (!comm->mmu_map_vaddr)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codec_hevc_use_mmu(core->platform->revision,
|
||||||
|
- sess->pixfmt_cap, is_10bit)) {
|
||||||
|
- ret = codec_hevc_alloc_mmu_headers(sess, comm);
|
||||||
|
- if (ret) {
|
||||||
|
- codec_hevc_free_fbc_buffers(sess, comm);
|
||||||
|
- return ret;
|
||||||
|
- }
|
||||||
|
+ sess->pixfmt_cap, is_10bit) ||
|
||||||
|
+ codec_hevc_use_downsample(sess->pixfmt_cap, is_10bit)) {
|
||||||
|
+ ret = codec_hevc_alloc_fbc_buffers(sess, comm);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (core->platform->revision == VDEC_REVISION_GXBB)
|
||||||
|
@@ -278,19 +317,24 @@ EXPORT_SYMBOL_GPL(codec_hevc_setup_buffers);
|
||||||
|
|
||||||
|
void codec_hevc_fill_mmu_map(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm,
|
||||||
|
- struct vb2_buffer *vb)
|
||||||
|
+ struct vb2_buffer *vb,
|
||||||
|
+ u32 is_10bit)
|
||||||
|
{
|
||||||
|
- u32 size = amvdec_am21c_size(sess->width, sess->height);
|
||||||
|
- u32 nb_pages = size / PAGE_SIZE;
|
||||||
|
+ u32 use_mmu;
|
||||||
|
+ u32 size;
|
||||||
|
+ u32 nb_pages;
|
||||||
|
u32 *mmu_map = comm->mmu_map_vaddr;
|
||||||
|
u32 first_page;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
|
- if (sess->pixfmt_cap == V4L2_PIX_FMT_NV12M)
|
||||||
|
- first_page = comm->fbc_buffer_paddr[vb->index] >> PAGE_SHIFT;
|
||||||
|
- else
|
||||||
|
- first_page = vb2_dma_contig_plane_dma_addr(vb, 0) >> PAGE_SHIFT;
|
||||||
|
+ use_mmu = codec_hevc_use_mmu(sess->core->platform->revision,
|
||||||
|
+ sess->pixfmt_cap, is_10bit);
|
||||||
|
+
|
||||||
|
+ size = amvdec_amfbc_size(sess->width, sess->height, is_10bit,
|
||||||
|
+ use_mmu);
|
||||||
|
|
||||||
|
+ nb_pages = size / PAGE_SIZE;
|
||||||
|
+ first_page = comm->fbc_buffer_paddr[vb->index] >> PAGE_SHIFT;
|
||||||
|
for (i = 0; i < nb_pages; ++i)
|
||||||
|
mmu_map[i] = first_page + i;
|
||||||
|
}
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/codec_hevc_common.h b/drivers/staging/media/meson/vdec/codec_hevc_common.h
|
||||||
|
index cf072b8a9da2..13f9f1d90a94 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/codec_hevc_common.h
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/codec_hevc_common.h
|
||||||
|
@@ -64,6 +64,7 @@ int codec_hevc_setup_buffers(struct amvdec_session *sess,
|
||||||
|
|
||||||
|
void codec_hevc_fill_mmu_map(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc_common *comm,
|
||||||
|
- struct vb2_buffer *vb);
|
||||||
|
+ struct vb2_buffer *vb,
|
||||||
|
+ u32 is_10bit);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/codec_vp9.c b/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||||
|
index 897f5d7a6aad..bfc312ec2a56 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||||
|
@@ -458,12 +458,6 @@ struct codec_vp9 {
|
||||||
|
struct list_head ref_frames_list;
|
||||||
|
u32 frames_num;
|
||||||
|
|
||||||
|
- /* In case of downsampling (decoding with FBC but outputting in NV12M),
|
||||||
|
- * we need to allocate additional buffers for FBC.
|
||||||
|
- */
|
||||||
|
- void *fbc_buffer_vaddr[MAX_REF_PIC_NUM];
|
||||||
|
- dma_addr_t fbc_buffer_paddr[MAX_REF_PIC_NUM];
|
||||||
|
-
|
||||||
|
int ref_frame_map[REF_FRAMES];
|
||||||
|
int next_ref_frame_map[REF_FRAMES];
|
||||||
|
struct vp9_frame *frame_refs[REFS_PER_FRAME];
|
||||||
|
@@ -901,11 +895,8 @@ static void codec_vp9_set_sao(struct amvdec_session *sess,
|
||||||
|
buf_y_paddr =
|
||||||
|
vb2_dma_contig_plane_dma_addr(vb, 0);
|
||||||
|
|
||||||
|
- if (codec_hevc_use_fbc(sess->pixfmt_cap, vp9->is_10bit)) {
|
||||||
|
- val = amvdec_read_dos(core, HEVC_SAO_CTRL5) & ~0xff0200;
|
||||||
|
- amvdec_write_dos(core, HEVC_SAO_CTRL5, val);
|
||||||
|
- amvdec_write_dos(core, HEVC_CM_BODY_START_ADDR, buf_y_paddr);
|
||||||
|
- }
|
||||||
|
+ if (codec_hevc_use_fbc(sess->pixfmt_cap, vp9->is_10bit))
|
||||||
|
+ amvdec_write_dos(core, HEVC_CM_BODY_START_ADDR, buf_y_paddr);
|
||||||
|
|
||||||
|
if (sess->pixfmt_cap == V4L2_PIX_FMT_NV12M) {
|
||||||
|
buf_y_paddr =
|
||||||
|
@@ -920,8 +911,12 @@ static void codec_vp9_set_sao(struct amvdec_session *sess,
|
||||||
|
|
||||||
|
if (codec_hevc_use_mmu(core->platform->revision, sess->pixfmt_cap,
|
||||||
|
vp9->is_10bit)) {
|
||||||
|
- amvdec_write_dos(core, HEVC_CM_HEADER_START_ADDR,
|
||||||
|
- vp9->common.mmu_header_paddr[vb->index]);
|
||||||
|
+ dma_addr_t header_adr;
|
||||||
|
+ if (codec_hevc_use_downsample(sess->pixfmt_cap, vp9->is_10bit))
|
||||||
|
+ header_adr = vp9->common.mmu_header_paddr[vb->index];
|
||||||
|
+ else
|
||||||
|
+ header_adr = vb2_dma_contig_plane_dma_addr(vb, 0);
|
||||||
|
+ amvdec_write_dos(core, HEVC_CM_HEADER_START_ADDR, header_adr);
|
||||||
|
/* use HEVC_CM_HEADER_START_ADDR */
|
||||||
|
amvdec_write_dos_bits(core, HEVC_SAO_CTRL5, BIT(10));
|
||||||
|
}
|
||||||
|
@@ -1148,9 +1143,13 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
|
||||||
|
{
|
||||||
|
struct amvdec_core *core = sess->core;
|
||||||
|
u32 scale = 0;
|
||||||
|
+ u32 use_mmu;
|
||||||
|
u32 sz;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
+ use_mmu = codec_hevc_use_mmu(core->platform->revision,
|
||||||
|
+ sess->pixfmt_cap, vp9->is_10bit);
|
||||||
|
+
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_ACCCONFIG_ADDR, 1);
|
||||||
|
codec_vp9_set_refs(sess, vp9);
|
||||||
|
amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_ACCCONFIG_ADDR,
|
||||||
|
@@ -1166,8 +1165,9 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
|
||||||
|
vp9->frame_refs[i]->height != vp9->height)
|
||||||
|
scale = 1;
|
||||||
|
|
||||||
|
- sz = amvdec_am21c_body_size(vp9->frame_refs[i]->width,
|
||||||
|
- vp9->frame_refs[i]->height);
|
||||||
|
+ sz = amvdec_amfbc_body_size(vp9->frame_refs[i]->width,
|
||||||
|
+ vp9->frame_refs[i]->height,
|
||||||
|
+ vp9->is_10bit, use_mmu);
|
||||||
|
|
||||||
|
amvdec_write_dos(core, VP9D_MPP_REFINFO_DATA,
|
||||||
|
vp9->frame_refs[i]->width);
|
||||||
|
@@ -1283,7 +1283,8 @@ static void codec_vp9_process_frame(struct amvdec_session *sess)
|
||||||
|
if (codec_hevc_use_mmu(core->platform->revision, sess->pixfmt_cap,
|
||||||
|
vp9->is_10bit))
|
||||||
|
codec_hevc_fill_mmu_map(sess, &vp9->common,
|
||||||
|
- &vp9->cur_frame->vbuf->vb2_buf);
|
||||||
|
+ &vp9->cur_frame->vbuf->vb2_buf,
|
||||||
|
+ vp9->is_10bit);
|
||||||
|
|
||||||
|
intra_only = param->p.show_frame ? 0 : param->p.intra_only;
|
||||||
|
|
||||||
|
@@ -2132,7 +2133,8 @@ static irqreturn_t codec_vp9_threaded_isr(struct amvdec_session *sess)
|
||||||
|
|
||||||
|
codec_vp9_fetch_rpm(sess);
|
||||||
|
if (codec_vp9_process_rpm(vp9)) {
|
||||||
|
- amvdec_src_change(sess, vp9->width, vp9->height, 16);
|
||||||
|
+ amvdec_src_change(sess, vp9->width, vp9->height, 16,
|
||||||
|
+ vp9->is_10bit ? 10 : 8);
|
||||||
|
|
||||||
|
/* No frame is actually processed */
|
||||||
|
vp9->cur_frame = NULL;
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
index e18334e57fc0..610a92b9f6f2 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
@@ -319,6 +319,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
|
||||||
|
if (esparser_vififo_get_free_space(sess) < payload_size ||
|
||||||
|
atomic_read(&sess->esparser_queued_bufs) >= num_dst_bufs)
|
||||||
|
return -EAGAIN;
|
||||||
|
+
|
||||||
|
} else if (esparser_vififo_get_free_space(sess) < payload_size) {
|
||||||
|
return -EAGAIN;
|
||||||
|
}
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/vdec.h b/drivers/staging/media/meson/vdec/vdec.h
|
||||||
|
index f95445ac0658..e3e4af73447a 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/vdec.h
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/vdec.h
|
||||||
|
@@ -234,6 +234,7 @@ struct amvdec_session {
|
||||||
|
u32 width;
|
||||||
|
u32 height;
|
||||||
|
u32 colorspace;
|
||||||
|
+ u32 bitdepth;
|
||||||
|
u8 ycbcr_enc;
|
||||||
|
u8 quantization;
|
||||||
|
u8 xfer_func;
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/vdec_helpers.c b/drivers/staging/media/meson/vdec/vdec_helpers.c
|
||||||
|
index b9125c295d1d..bae69b55baf3 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/vdec_helpers.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/vdec_helpers.c
|
||||||
|
@@ -50,32 +50,40 @@ void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val)
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(amvdec_write_parser);
|
||||||
|
|
||||||
|
-/* 4 KiB per 64x32 block */
|
||||||
|
-u32 amvdec_am21c_body_size(u32 width, u32 height)
|
||||||
|
+/* AMFBC body is made out of 64x32 blocks with varying block size */
|
||||||
|
+u32 amvdec_amfbc_body_size(u32 width, u32 height, u32 is_10bit, u32 use_mmu)
|
||||||
|
{
|
||||||
|
u32 width_64 = ALIGN(width, 64) / 64;
|
||||||
|
u32 height_32 = ALIGN(height, 32) / 32;
|
||||||
|
+ u32 blk_size = 4096;
|
||||||
|
|
||||||
|
- return SZ_4K * width_64 * height_32;
|
||||||
|
+ if (!is_10bit) {
|
||||||
|
+ if (use_mmu)
|
||||||
|
+ blk_size = 3200;
|
||||||
|
+ else
|
||||||
|
+ blk_size = 3072;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return blk_size * width_64 * height_32;
|
||||||
|
}
|
||||||
|
-EXPORT_SYMBOL_GPL(amvdec_am21c_body_size);
|
||||||
|
+EXPORT_SYMBOL_GPL(amvdec_amfbc_body_size);
|
||||||
|
|
||||||
|
/* 32 bytes per 128x64 block */
|
||||||
|
-u32 amvdec_am21c_head_size(u32 width, u32 height)
|
||||||
|
+u32 amvdec_amfbc_head_size(u32 width, u32 height)
|
||||||
|
{
|
||||||
|
u32 width_128 = ALIGN(width, 128) / 128;
|
||||||
|
u32 height_64 = ALIGN(height, 64) / 64;
|
||||||
|
|
||||||
|
return 32 * width_128 * height_64;
|
||||||
|
}
|
||||||
|
-EXPORT_SYMBOL_GPL(amvdec_am21c_head_size);
|
||||||
|
+EXPORT_SYMBOL_GPL(amvdec_amfbc_head_size);
|
||||||
|
|
||||||
|
-u32 amvdec_am21c_size(u32 width, u32 height)
|
||||||
|
+u32 amvdec_amfbc_size(u32 width, u32 height, u32 is_10bit, u32 use_mmu)
|
||||||
|
{
|
||||||
|
- return ALIGN(amvdec_am21c_body_size(width, height) +
|
||||||
|
- amvdec_am21c_head_size(width, height), SZ_64K);
|
||||||
|
+ return ALIGN(amvdec_amfbc_body_size(width, height, is_10bit, use_mmu) +
|
||||||
|
+ amvdec_amfbc_head_size(width, height), SZ_64K);
|
||||||
|
}
|
||||||
|
-EXPORT_SYMBOL_GPL(amvdec_am21c_size);
|
||||||
|
+EXPORT_SYMBOL_GPL(amvdec_amfbc_size);
|
||||||
|
|
||||||
|
static int canvas_alloc(struct amvdec_session *sess, u8 *canvas_id)
|
||||||
|
{
|
||||||
|
@@ -436,7 +444,7 @@ void amvdec_set_par_from_dar(struct amvdec_session *sess,
|
||||||
|
EXPORT_SYMBOL_GPL(amvdec_set_par_from_dar);
|
||||||
|
|
||||||
|
void amvdec_src_change(struct amvdec_session *sess, u32 width,
|
||||||
|
- u32 height, u32 dpb_size)
|
||||||
|
+ u32 height, u32 dpb_size, u32 bitdepth)
|
||||||
|
{
|
||||||
|
static const struct v4l2_event ev = {
|
||||||
|
.type = V4L2_EVENT_SOURCE_CHANGE,
|
||||||
|
@@ -444,25 +452,27 @@ void amvdec_src_change(struct amvdec_session *sess, u32 width,
|
||||||
|
|
||||||
|
v4l2_ctrl_s_ctrl(sess->ctrl_min_buf_capture, dpb_size);
|
||||||
|
|
||||||
|
+ sess->bitdepth = bitdepth;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Check if the capture queue is already configured well for our
|
||||||
|
- * usecase. If so, keep decoding with it and do not send the event
|
||||||
|
+ * usecase. If so, keep decoding with it.
|
||||||
|
*/
|
||||||
|
if (sess->streamon_cap &&
|
||||||
|
sess->width == width &&
|
||||||
|
sess->height == height &&
|
||||||
|
dpb_size <= sess->num_dst_bufs) {
|
||||||
|
sess->fmt_out->codec_ops->resume(sess);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
+ } else {
|
||||||
|
+ sess->status = STATUS_NEEDS_RESUME;
|
||||||
|
+ sess->changed_format = 0;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- sess->changed_format = 0;
|
||||||
|
sess->width = width;
|
||||||
|
sess->height = height;
|
||||||
|
- sess->status = STATUS_NEEDS_RESUME;
|
||||||
|
|
||||||
|
- dev_dbg(sess->core->dev, "Res. changed (%ux%u), DPB size %u\n",
|
||||||
|
- width, height, dpb_size);
|
||||||
|
+ dev_dbg(sess->core->dev, "Res. changed (%ux%u), DPB %u, bitdepth %u\n",
|
||||||
|
+ width, height, dpb_size, bitdepth);
|
||||||
|
v4l2_event_queue_fh(&sess->fh, &ev);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(amvdec_src_change);
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/vdec_helpers.h b/drivers/staging/media/meson/vdec/vdec_helpers.h
|
||||||
|
index cfaed52ab526..e574c4349759 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/vdec_helpers.h
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/vdec_helpers.h
|
||||||
|
@@ -27,9 +27,10 @@ void amvdec_clear_dos_bits(struct amvdec_core *core, u32 reg, u32 val);
|
||||||
|
u32 amvdec_read_parser(struct amvdec_core *core, u32 reg);
|
||||||
|
void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val);
|
||||||
|
|
||||||
|
-u32 amvdec_am21c_body_size(u32 width, u32 height);
|
||||||
|
-u32 amvdec_am21c_head_size(u32 width, u32 height);
|
||||||
|
-u32 amvdec_am21c_size(u32 width, u32 height);
|
||||||
|
+/* Helpers for the Amlogic compressed framebuffer format */
|
||||||
|
+u32 amvdec_amfbc_body_size(u32 width, u32 height, u32 is_10bit, u32 use_mmu);
|
||||||
|
+u32 amvdec_amfbc_head_size(u32 width, u32 height);
|
||||||
|
+u32 amvdec_amfbc_size(u32 width, u32 height, u32 is_10bit, u32 use_mmu);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* amvdec_dst_buf_done_idx() - Signal that a buffer is done decoding
|
||||||
|
@@ -76,9 +77,10 @@ void amvdec_set_par_from_dar(struct amvdec_session *sess,
|
||||||
|
* @width: picture width detected by the hardware
|
||||||
|
* @height: picture height detected by the hardware
|
||||||
|
* @dpb_size: Decoded Picture Buffer size (= amount of buffers for decoding)
|
||||||
|
+ * @bitdepth: Bit depth (usually 10 or 8) of the coded content
|
||||||
|
*/
|
||||||
|
void amvdec_src_change(struct amvdec_session *sess, u32 width,
|
||||||
|
- u32 height, u32 dpb_size);
|
||||||
|
+ u32 height, u32 dpb_size, u32 bitdepth);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* amvdec_abort() - Abort the current decoding session
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,157 @@
|
|||||||
|
From afb9610594bffe6728a10c63c6d4999a1ab1529b Mon Sep 17 00:00:00 2001
|
||||||
|
From: benjamin545 <benjamin545@gmail.com>
|
||||||
|
Date: Mon, 2 Aug 2021 15:18:40 -0400
|
||||||
|
Subject: [PATCH 33/60] WIP: drivers: meson: vdec: add handling to HEVC decoder
|
||||||
|
to show frames when ready
|
||||||
|
|
||||||
|
..rather than when no longer referenced
|
||||||
|
|
||||||
|
the HEVC decode driver would not show the next frame until it was no longer referenced,
|
||||||
|
this would cause a backup of frames that were ready to render but held up by one or more
|
||||||
|
frames that were still referenced. The decoded picture buffer would fill up and stall
|
||||||
|
playback as no new frames could be placed in the decoded picture buffer.
|
||||||
|
---
|
||||||
|
drivers/staging/media/meson/vdec/codec_hevc.c | 52 ++++++++++++-------
|
||||||
|
1 file changed, 34 insertions(+), 18 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/codec_hevc.c b/drivers/staging/media/meson/vdec/codec_hevc.c
|
||||||
|
index 3a6fd04a2d33..01218efde99b 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/codec_hevc.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/codec_hevc.c
|
||||||
|
@@ -223,6 +223,7 @@ struct hevc_frame {
|
||||||
|
u32 poc;
|
||||||
|
|
||||||
|
int referenced;
|
||||||
|
+ int show;
|
||||||
|
u32 num_reorder_pic;
|
||||||
|
|
||||||
|
u32 cur_slice_idx;
|
||||||
|
@@ -448,9 +449,11 @@ static void codec_hevc_update_referenced(struct codec_hevc *hevc)
|
||||||
|
((1 << (RPS_USED_BIT - 1)) - 1);
|
||||||
|
if (param->p.CUR_RPS[i] & (1 << (RPS_USED_BIT - 1))) {
|
||||||
|
poc_tmp = curr_poc -
|
||||||
|
- ((1 << (RPS_USED_BIT - 1)) - delt);
|
||||||
|
- } else
|
||||||
|
+ ((1 << (RPS_USED_BIT - 1)) - delt);
|
||||||
|
+ } else {
|
||||||
|
poc_tmp = curr_poc + delt;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (poc_tmp == frame->poc) {
|
||||||
|
is_referenced = 1;
|
||||||
|
break;
|
||||||
|
@@ -462,13 +465,13 @@ static void codec_hevc_update_referenced(struct codec_hevc *hevc)
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct hevc_frame *
|
||||||
|
-codec_hevc_get_lowest_poc_frame(struct codec_hevc *hevc)
|
||||||
|
+codec_hevc_get_next_ready_frame(struct codec_hevc *hevc)
|
||||||
|
{
|
||||||
|
struct hevc_frame *tmp, *ret = NULL;
|
||||||
|
u32 poc = INT_MAX;
|
||||||
|
|
||||||
|
list_for_each_entry(tmp, &hevc->ref_frames_list, list) {
|
||||||
|
- if (tmp->poc < poc) {
|
||||||
|
+ if ((tmp->poc < poc) && tmp->show) {
|
||||||
|
ret = tmp;
|
||||||
|
poc = tmp->poc;
|
||||||
|
}
|
||||||
|
@@ -478,28 +481,35 @@ codec_hevc_get_lowest_poc_frame(struct codec_hevc *hevc)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try to output as many frames as possible */
|
||||||
|
-static void codec_hevc_output_frames(struct amvdec_session *sess)
|
||||||
|
+static void codec_hevc_show_frames(struct amvdec_session *sess)
|
||||||
|
{
|
||||||
|
- struct hevc_frame *tmp;
|
||||||
|
+ struct hevc_frame *tmp, *n;
|
||||||
|
struct codec_hevc *hevc = sess->priv;
|
||||||
|
|
||||||
|
- while ((tmp = codec_hevc_get_lowest_poc_frame(hevc))) {
|
||||||
|
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
|
||||||
|
if (hevc->curr_poc &&
|
||||||
|
- (tmp->referenced ||
|
||||||
|
- tmp->num_reorder_pic >= hevc->frames_num))
|
||||||
|
+ (hevc->frames_num <= tmp->num_reorder_pic))
|
||||||
|
break;
|
||||||
|
|
||||||
|
dev_dbg(sess->core->dev, "DONE frame poc %u; vbuf %u\n",
|
||||||
|
tmp->poc, tmp->vbuf->vb2_buf.index);
|
||||||
|
amvdec_dst_buf_done_offset(sess, tmp->vbuf, tmp->offset,
|
||||||
|
V4L2_FIELD_NONE, false);
|
||||||
|
+
|
||||||
|
+ tmp->show = 0;
|
||||||
|
+ hevc->frames_num--;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* clean output frame buffer */
|
||||||
|
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
|
||||||
|
+ if (tmp->referenced || tmp->show)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
list_del(&tmp->list);
|
||||||
|
kfree(tmp);
|
||||||
|
- hevc->frames_num--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-
|
||||||
|
static int
|
||||||
|
codec_hevc_setup_workspace(struct amvdec_session *sess,
|
||||||
|
struct codec_hevc *hevc)
|
||||||
|
@@ -650,14 +660,17 @@ static int codec_hevc_start(struct amvdec_session *sess)
|
||||||
|
static void codec_hevc_flush_output(struct amvdec_session *sess)
|
||||||
|
{
|
||||||
|
struct codec_hevc *hevc = sess->priv;
|
||||||
|
- struct hevc_frame *tmp;
|
||||||
|
+ struct hevc_frame *tmp, *n;
|
||||||
|
|
||||||
|
- while (!list_empty(&hevc->ref_frames_list)) {
|
||||||
|
- tmp = codec_hevc_get_lowest_poc_frame(hevc);
|
||||||
|
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
|
||||||
|
amvdec_dst_buf_done(sess, tmp->vbuf, V4L2_FIELD_NONE);
|
||||||
|
+ tmp->show = 0;
|
||||||
|
+ hevc->frames_num--;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
|
||||||
|
list_del(&tmp->list);
|
||||||
|
kfree(tmp);
|
||||||
|
- hevc->frames_num--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -719,6 +732,7 @@ codec_hevc_prepare_new_frame(struct amvdec_session *sess)
|
||||||
|
|
||||||
|
new_frame->vbuf = vbuf;
|
||||||
|
new_frame->referenced = 1;
|
||||||
|
+ new_frame->show = 1;
|
||||||
|
new_frame->poc = hevc->curr_poc;
|
||||||
|
new_frame->cur_slice_type = params->p.slice_type;
|
||||||
|
new_frame->num_reorder_pic = params->p.sps_num_reorder_pics_0;
|
||||||
|
@@ -1267,7 +1281,7 @@ static int codec_hevc_process_segment(struct amvdec_session *sess)
|
||||||
|
/* First slice: new frame */
|
||||||
|
if (slice_segment_address == 0) {
|
||||||
|
codec_hevc_update_referenced(hevc);
|
||||||
|
- codec_hevc_output_frames(sess);
|
||||||
|
+ codec_hevc_show_frames(sess);
|
||||||
|
|
||||||
|
hevc->cur_frame = codec_hevc_prepare_new_frame(sess);
|
||||||
|
if (!hevc->cur_frame)
|
||||||
|
@@ -1370,9 +1384,11 @@ static void codec_hevc_fetch_rpm(struct amvdec_session *sess)
|
||||||
|
u16 *rpm_vaddr = hevc->workspace_vaddr + RPM_OFFSET;
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
- for (i = 0; i < RPM_SIZE; i += 4)
|
||||||
|
+ for (i = 0; i < RPM_SIZE; i += 4) {
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
|
- hevc->rpm_param.l.data[i + j] = rpm_vaddr[i + 3 - j];
|
||||||
|
+ hevc->rpm_param.l.data[i + j] =
|
||||||
|
+ rpm_vaddr[i + 3 - j];
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void codec_hevc_resume(struct amvdec_session *sess)
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From e4ac25d2996360ae77fcd685f0f5bbbb17635c18 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Sun, 21 Nov 2021 19:12:07 +0000
|
||||||
|
Subject: [PATCH 34/60] WIP: drivers: meson: vdec: add HEVC support to GXBB
|
||||||
|
|
||||||
|
It's not clear whether the GXL firmware is the same one used with GXBB
|
||||||
|
but let's try it and see!
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/staging/media/meson/vdec/vdec_platform.c | 12 ++++++++++++
|
||||||
|
1 file changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/vdec_platform.c b/drivers/staging/media/meson/vdec/vdec_platform.c
|
||||||
|
index 3f463e0538fd..b03527705cc8 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/vdec_platform.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/vdec_platform.c
|
||||||
|
@@ -16,6 +16,18 @@
|
||||||
|
|
||||||
|
static const struct amvdec_format vdec_formats_gxbb[] = {
|
||||||
|
{
|
||||||
|
+ .pixfmt = V4L2_PIX_FMT_HEVC,
|
||||||
|
+ .min_buffers = 4,
|
||||||
|
+ .max_buffers = 24,
|
||||||
|
+ .max_width = 3840,
|
||||||
|
+ .max_height = 2160,
|
||||||
|
+ .vdec_ops = &vdec_hevc_ops,
|
||||||
|
+ .codec_ops = &codec_hevc_ops,
|
||||||
|
+ .firmware_path = "meson/vdec/gxl_hevc.bin",
|
||||||
|
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
|
||||||
|
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
|
||||||
|
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
|
||||||
|
+ }, {
|
||||||
|
.pixfmt = V4L2_PIX_FMT_H264,
|
||||||
|
.min_buffers = 2,
|
||||||
|
.max_buffers = 24,
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From 04190a885f16165acba6c1de28f50ac8d8d4d616 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Date: Mon, 22 Nov 2021 09:15:21 +0000
|
||||||
|
Subject: [PATCH 35/60] WIP: drivers: meson: vdec: check if parser has really
|
||||||
|
parser before marking input buffer as error
|
||||||
|
|
||||||
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
---
|
||||||
|
drivers/staging/media/meson/vdec/esparser.c | 14 ++++++++++----
|
||||||
|
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
index 9b6034936d32..bb9480f0a70c 100644
|
||||||
|
--- a/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
+++ b/drivers/staging/media/meson/vdec/esparser.c
|
||||||
|
@@ -300,6 +300,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
|
||||||
|
u32 num_dst_bufs = 0;
|
||||||
|
u32 offset;
|
||||||
|
u32 pad_size;
|
||||||
|
+ u32 wp, wp2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When max ref frame is held by VP9, this should be -= 3 to prevent a
|
||||||
|
@@ -349,15 +350,20 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
|
||||||
|
}
|
||||||
|
|
||||||
|
pad_size = esparser_pad_start_code(core, vb, payload_size);
|
||||||
|
+ wp = amvdec_read_parser(core, PARSER_VIDEO_WP);
|
||||||
|
ret = esparser_write_data(core, phy, payload_size + pad_size);
|
||||||
|
+ wp2 = amvdec_read_parser(core, PARSER_VIDEO_WP);
|
||||||
|
|
||||||
|
if (ret <= 0) {
|
||||||
|
- dev_warn(core->dev, "esparser: input parsing error\n");
|
||||||
|
- amvdec_remove_ts(sess, vb->timestamp);
|
||||||
|
- v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
|
||||||
|
amvdec_write_parser(core, PARSER_FETCH_CMD, 0);
|
||||||
|
|
||||||
|
- return 0;
|
||||||
|
+ if (ret < 0 || wp2 == wp) {
|
||||||
|
+ dev_err(core->dev, "esparser: input parsing error ret %d (%x <=> %x)\n", ret, wp, wp2);
|
||||||
|
+ amvdec_remove_ts(sess, vb->timestamp);
|
||||||
|
+ v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
atomic_inc(&sess->esparser_queued_bufs);
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,97 @@
|
|||||||
|
From 6dcf2f9273f30e6f9e6222d3e01087908b84caad Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Tue, 17 Aug 2021 16:16:43 +0000
|
||||||
|
Subject: [PATCH 36/60] WIP: arm64: dts: amlogic: radxa-zero: add support for
|
||||||
|
the usb type-c controller
|
||||||
|
|
||||||
|
Radxa Zero uses an FUSB302 type-c controller, so lets enable it.
|
||||||
|
|
||||||
|
NB: Polarity swapping via GPIO is not implemented in the current driver
|
||||||
|
(see drivers/usb/typec/tcpm/fusb302.c) so it is not possible to handle
|
||||||
|
GPIOAO_6 for USB3 polarity control.
|
||||||
|
|
||||||
|
Suggested-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
.../dts/amlogic/meson-g12a-radxa-zero.dts | 47 +++++++++++++++++++
|
||||||
|
1 file changed, 47 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
index e3bb6df42ff3..30d799b44559 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
|
||||||
|
@@ -60,6 +60,17 @@
|
||||||
|
clock-names = "ext_clock";
|
||||||
|
};
|
||||||
|
|
||||||
|
+ typec2_vbus: regulator-typec2_vbus {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "TYPEC2_VBUS";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ vin-supply = <&ao_5v>;
|
||||||
|
+
|
||||||
|
+ gpio = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ enable-active-high;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
ao_5v: regulator-ao_5v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "AO_5V";
|
||||||
|
@@ -191,6 +202,18 @@
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&ao_pinctrl {
|
||||||
|
+ /* Ensure the TYPE C controller irq pin is not driven by the SoC */
|
||||||
|
+ fusb302_irq_pins: fusb302_irq {
|
||||||
|
+ mux {
|
||||||
|
+ groups = "GPIOAO_5";
|
||||||
|
+ function = "gpio_aobus";
|
||||||
|
+ bias-pull-up;
|
||||||
|
+ output-disable;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&arb {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@@ -278,6 +301,22 @@
|
||||||
|
pinctrl-names = "default";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c_AO {
|
||||||
|
+ fusb302@22 {
|
||||||
|
+ compatible = "fcs,fusb302";
|
||||||
|
+ reg = <0x22>;
|
||||||
|
+
|
||||||
|
+ pinctrl-0 = <&fusb302_irq_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ interrupt-parent = <&gpio_intc>;
|
||||||
|
+ interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+
|
||||||
|
+ vbus-supply = <&typec2_vbus>;
|
||||||
|
+
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&pwm_AO_cd {
|
||||||
|
pinctrl-0 = <&pwm_ao_d_e_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
@@ -403,3 +442,11 @@
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "host";
|
||||||
|
};
|
||||||
|
+
|
||||||
|
+&usb2_phy0 {
|
||||||
|
+ phy-supply = <&typec2_vbus>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb3_pcie_phy {
|
||||||
|
+ phy-supply = <&typec2_vbus>;
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From ff0ee624fc64933c03a9132da00f450ae3558e22 Mon Sep 17 00:00:00 2001
|
From dc121392d96a65e226ba87e7105c462c90f3232d Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Fri, 15 May 2020 07:52:47 +0000
|
Date: Fri, 15 May 2020 07:52:47 +0000
|
||||||
Subject: [PATCH 54/88] WIP: arm64: dts: meson: add audio playback to p201
|
Subject: [PATCH 37/60] WIP: arm64: dts: meson: add audio playback to p201
|
||||||
|
|
||||||
Add initial audio support limited to HDMI i2s.
|
Add initial audio support limited to HDMI i2s.
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From a4d6030f56b249cdd7a6234e157e6f731c89f2f7 Mon Sep 17 00:00:00 2001
|
From 09c0826a05c34391894102abf3dbe925daa9e97a Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Fri, 15 May 2020 07:56:15 +0000
|
Date: Fri, 15 May 2020 07:56:15 +0000
|
||||||
Subject: [PATCH 55/88] WIP: arm64: dts: meson: add audio playback to p200
|
Subject: [PATCH 38/60] WIP: arm64: dts: meson: add audio playback to p200
|
||||||
|
|
||||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 84482c9385e9eeb3420d308908eb78be7a3794c4 Mon Sep 17 00:00:00 2001
|
From a6edde22c0cd4c04635b13b253a72194078653c9 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Fri, 15 May 2020 08:02:54 +0000
|
Date: Fri, 15 May 2020 08:02:54 +0000
|
||||||
Subject: [PATCH 56/88] WIP: arm64: dts: meson: add audio playback to
|
Subject: [PATCH 39/60] WIP: arm64: dts: meson: add audio playback to
|
||||||
p212-s905x dtsi
|
p212-s905x dtsi
|
||||||
|
|
||||||
Add initial audio support limited to HDMI i2s.
|
Add initial audio support limited to HDMI i2s.
|
@ -1,17 +1,17 @@
|
|||||||
From 67e838ec7820b19e5a359280fea47b016cb64d30 Mon Sep 17 00:00:00 2001
|
From 17cf7d25e74c64ad18a85aa8f55d0b7f5f8b795f Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Sun, 17 May 2020 05:00:55 +0000
|
Date: Sun, 17 May 2020 05:00:55 +0000
|
||||||
Subject: [PATCH 58/88] WIP: arm64: dts: meson: add audio playback to u200
|
Subject: [PATCH 40/60] WIP: arm64: dts: meson: add audio playback to u200
|
||||||
|
|
||||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
---
|
---
|
||||||
.../boot/dts/amlogic/meson-g12a-u200.dts | 131 ++++++++++++++++++
|
.../boot/dts/amlogic/meson-g12a-u200.dts | 130 ++++++++++++++++++
|
||||||
1 file changed, 131 insertions(+)
|
1 file changed, 130 insertions(+)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
||||||
index a26bfe72550f..280f8159ebb1 100644
|
index 4b5d11e56364..61a85c27a463 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
|
||||||
@@ -8,6 +8,7 @@
|
@@ -8,6 +8,7 @@
|
||||||
@ -36,12 +36,11 @@ index a26bfe72550f..280f8159ebb1 100644
|
|||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
@@ -147,6 +155,91 @@
|
@@ -147,6 +155,90 @@
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
+
|
+
|
||||||
+
|
|
||||||
+ sound {
|
+ sound {
|
||||||
+ compatible = "amlogic,axg-sound-card";
|
+ compatible = "amlogic,axg-sound-card";
|
||||||
+ model = "U200";
|
+ model = "U200";
|
||||||
@ -128,7 +127,7 @@ index a26bfe72550f..280f8159ebb1 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
&cec_AO {
|
&cec_AO {
|
||||||
@@ -163,6 +256,10 @@
|
@@ -163,6 +255,10 @@
|
||||||
hdmi-phandle = <&hdmi_tx>;
|
hdmi-phandle = <&hdmi_tx>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -139,7 +138,7 @@ index a26bfe72550f..280f8159ebb1 100644
|
|||||||
&cpu0 {
|
&cpu0 {
|
||||||
cpu-supply = <&vddcpu>;
|
cpu-supply = <&vddcpu>;
|
||||||
operating-points-v2 = <&cpu_opp_table>;
|
operating-points-v2 = <&cpu_opp_table>;
|
||||||
@@ -203,6 +300,18 @@
|
@@ -203,6 +299,18 @@
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -158,7 +157,7 @@ index a26bfe72550f..280f8159ebb1 100644
|
|||||||
&hdmi_tx {
|
&hdmi_tx {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
|
pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
|
||||||
@@ -288,6 +397,28 @@
|
@@ -288,6 +396,28 @@
|
||||||
vqmmc-supply = <&flash_1v8>;
|
vqmmc-supply = <&flash_1v8>;
|
||||||
};
|
};
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 04c165c9794f2ad3b3d18fe3999fb305292cb1e6 Mon Sep 17 00:00:00 2001
|
From 6624d186fdaedc4c3795b741b202987d63e81691 Mon Sep 17 00:00:00 2001
|
||||||
From: Jonas Karlman <jonas@kwiboo.se>
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
Date: Sun, 23 Dec 2018 02:24:38 +0100
|
Date: Sun, 23 Dec 2018 02:24:38 +0100
|
||||||
Subject: [PATCH 62/88] WIP: ASoC: hdmi-codec: reorder channel allocation list
|
Subject: [PATCH 41/60] WIP: ASoC: hdmi-codec: reorder channel allocation list
|
||||||
|
|
||||||
Wrong channel allocation is selected by hdmi_codec_get_ch_alloc_table_idx().
|
Wrong channel allocation is selected by hdmi_codec_get_ch_alloc_table_idx().
|
||||||
|
|
||||||
@ -24,10 +24,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|||||||
1 file changed, 77 insertions(+), 63 deletions(-)
|
1 file changed, 77 insertions(+), 63 deletions(-)
|
||||||
|
|
||||||
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
|
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
|
||||||
index 0f3ac22f2cf8..9f7573cbfaf4 100644
|
index b61f980cabdc..74e58cd2a021 100644
|
||||||
--- a/sound/soc/codecs/hdmi-codec.c
|
--- a/sound/soc/codecs/hdmi-codec.c
|
||||||
+++ b/sound/soc/codecs/hdmi-codec.c
|
+++ b/sound/soc/codecs/hdmi-codec.c
|
||||||
@@ -189,84 +189,97 @@ static const struct snd_pcm_chmap_elem hdmi_codec_8ch_chmaps[] = {
|
@@ -188,84 +188,97 @@ static const struct snd_pcm_chmap_elem hdmi_codec_8ch_chmaps[] = {
|
||||||
/*
|
/*
|
||||||
* hdmi_codec_channel_alloc: speaker configuration available for CEA
|
* hdmi_codec_channel_alloc: speaker configuration available for CEA
|
||||||
*
|
*
|
@ -1,7 +1,7 @@
|
|||||||
From ecfecfa8d87e6ffc0958076467e82b4a26dcab98 Mon Sep 17 00:00:00 2001
|
From a4af329ff09bb610bb7206f629589a2b98d04f29 Mon Sep 17 00:00:00 2001
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
Date: Wed, 23 Dec 2020 02:45:27 +0100
|
Date: Wed, 23 Dec 2020 02:45:27 +0100
|
||||||
Subject: [PATCH 63/88] WIP: ASoC: meson: aiu: encoder-spdif: implement the
|
Subject: [PATCH 42/60] WIP: ASoC: meson: aiu: encoder-spdif: implement the
|
||||||
.mute_stream callback
|
.mute_stream callback
|
||||||
|
|
||||||
Implement the .mute_stream callback based on code from the vendor
|
Implement the .mute_stream callback based on code from the vendor
|
@ -1,7 +1,7 @@
|
|||||||
From 27a0b699cf76c8fc3e2ad354af85bfe3cb04bfc0 Mon Sep 17 00:00:00 2001
|
From b3ddc4fc78ab0ff9e01958408c8c1b2a40633ebf Mon Sep 17 00:00:00 2001
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
Date: Wed, 23 Dec 2020 02:46:54 +0100
|
Date: Wed, 23 Dec 2020 02:46:54 +0100
|
||||||
Subject: [PATCH 64/88] WIP: ASoC: meson: aiu: encoder-i2s: implement the
|
Subject: [PATCH 43/60] WIP: ASoC: meson: aiu: encoder-i2s: implement the
|
||||||
.mute_stream callback
|
.mute_stream callback
|
||||||
|
|
||||||
Implement the .mute_stream callback based on the code from the vendor
|
Implement the .mute_stream callback based on the code from the vendor
|
||||||
@ -14,10 +14,10 @@ Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|||||||
2 files changed, 16 insertions(+)
|
2 files changed, 16 insertions(+)
|
||||||
|
|
||||||
diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c
|
diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
index 932224552146..d6aea7797641 100644
|
index f8378066d448..ba3dac987112 100644
|
||||||
--- a/sound/soc/meson/aiu-encoder-i2s.c
|
--- a/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
+++ b/sound/soc/meson/aiu-encoder-i2s.c
|
+++ b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
@@ -28,6 +28,8 @@
|
@@ -27,6 +27,8 @@
|
||||||
#define AIU_CLK_CTRL_MORE_I2S_DIV GENMASK(5, 0)
|
#define AIU_CLK_CTRL_MORE_I2S_DIV GENMASK(5, 0)
|
||||||
#define AIU_CODEC_DAC_LRCLK_CTRL_DIV GENMASK(11, 0)
|
#define AIU_CODEC_DAC_LRCLK_CTRL_DIV GENMASK(11, 0)
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ index 932224552146..d6aea7797641 100644
|
|||||||
static void aiu_encoder_i2s_divider_enable(struct snd_soc_component *component,
|
static void aiu_encoder_i2s_divider_enable(struct snd_soc_component *component,
|
||||||
bool enable)
|
bool enable)
|
||||||
{
|
{
|
||||||
@@ -352,6 +354,18 @@ static void aiu_encoder_i2s_shutdown(struct snd_pcm_substream *substream,
|
@@ -346,6 +348,18 @@ static void aiu_encoder_i2s_shutdown(struct snd_pcm_substream *substream,
|
||||||
clk_bulk_disable_unprepare(aiu->i2s.clk_num, aiu->i2s.clks);
|
clk_bulk_disable_unprepare(aiu->i2s.clk_num, aiu->i2s.clks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ index 932224552146..d6aea7797641 100644
|
|||||||
const struct snd_soc_dai_ops aiu_encoder_i2s_dai_ops = {
|
const struct snd_soc_dai_ops aiu_encoder_i2s_dai_ops = {
|
||||||
.trigger = aiu_encoder_i2s_trigger,
|
.trigger = aiu_encoder_i2s_trigger,
|
||||||
.hw_params = aiu_encoder_i2s_hw_params,
|
.hw_params = aiu_encoder_i2s_hw_params,
|
||||||
@@ -360,5 +374,6 @@ const struct snd_soc_dai_ops aiu_encoder_i2s_dai_ops = {
|
@@ -354,5 +368,6 @@ const struct snd_soc_dai_ops aiu_encoder_i2s_dai_ops = {
|
||||||
.set_sysclk = aiu_encoder_i2s_set_sysclk,
|
.set_sysclk = aiu_encoder_i2s_set_sysclk,
|
||||||
.startup = aiu_encoder_i2s_startup,
|
.startup = aiu_encoder_i2s_startup,
|
||||||
.shutdown = aiu_encoder_i2s_shutdown,
|
.shutdown = aiu_encoder_i2s_shutdown,
|
@ -1,7 +1,7 @@
|
|||||||
From 56f9f701c98ffbb339f51cbfbaf653ee6fa52111 Mon Sep 17 00:00:00 2001
|
From 2ddece0262c3fae2df9b3579b572936bc5491534 Mon Sep 17 00:00:00 2001
|
||||||
From: Matthias Reichl <hias@horus.com>
|
From: Matthias Reichl <hias@horus.com>
|
||||||
Date: Sat, 20 Mar 2021 08:32:12 +0000
|
Date: Fri, 19 Mar 2021 12:14:17 +0100
|
||||||
Subject: [PATCH 65/88] WIP: ALSA: pcm: fix ELD constraints for some compressed
|
Subject: [PATCH 44/60] WIP: ALSA: pcm: fix ELD constraints for some compressed
|
||||||
audio formats
|
audio formats
|
||||||
|
|
||||||
The SADs of compressed formats like AC3 and DTS contain the channel
|
The SADs of compressed formats like AC3 and DTS contain the channel
|
@ -1,7 +1,7 @@
|
|||||||
From 546929867bf75032dbfa1c94160c4eb417a5efe7 Mon Sep 17 00:00:00 2001
|
From f49ba4a1cbe32f949e68a91f0da55189acccf09e Mon Sep 17 00:00:00 2001
|
||||||
From: Matthias Reichl <hias@horus.com>
|
From: Matthias Reichl <hias@horus.com>
|
||||||
Date: Sat, 20 Mar 2021 10:48:54 +0100
|
Date: Sat, 20 Mar 2021 10:48:54 +0100
|
||||||
Subject: [PATCH 66/88] WIP: ALSA: pcm: ignore formats not supported by kodi in
|
Subject: [PATCH 45/60] WIP: ALSA: pcm: ignore formats not supported by kodi in
|
||||||
ELD constraints
|
ELD constraints
|
||||||
|
|
||||||
Only parse channel info and rates from the PCM SAD. All other SAD
|
Only parse channel info and rates from the PCM SAD. All other SAD
|
@ -1,7 +1,7 @@
|
|||||||
From a2e5abe104b6d593a1a0879b256a2c696acfac0e Mon Sep 17 00:00:00 2001
|
From 00c422fab52c36c4a76ba4f480d887960191db6a Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Wed, 24 Jun 2020 12:41:46 +0000
|
Date: Wed, 24 Jun 2020 12:41:46 +0000
|
||||||
Subject: [PATCH 73/88] arm64: dts: meson: add common SM1 ac2xx dtsi
|
Subject: [PATCH 46/60] arm64: dts: meson: add common SM1 ac2xx dtsi
|
||||||
|
|
||||||
Add a common dtsi for Android STB devices based on the Amlogic S905X3
|
Add a common dtsi for Android STB devices based on the Amlogic S905X3
|
||||||
(AC213/AC214) and S905D3 (AC201/AC202) reference designs. The dtsi is
|
(AC213/AC214) and S905D3 (AC201/AC202) reference designs. The dtsi is
|
||||||
@ -9,16 +9,30 @@ loosely based on the existing SEI610 device-tree.
|
|||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
---
|
---
|
||||||
.../boot/dts/amlogic/meson-sm1-ac2xx.dtsi | 298 ++++++++++++++++++
|
.../devicetree/bindings/arm/amlogic.yaml | 2 +
|
||||||
1 file changed, 298 insertions(+)
|
.../boot/dts/amlogic/meson-sm1-ac2xx.dtsi | 300 ++++++++++++++++++
|
||||||
|
2 files changed, 302 insertions(+)
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
||||||
|
|
||||||
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
index 67dccdd9a5a4..61aebbb3090e 100644
|
||||||
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
@@ -168,6 +168,8 @@ properties:
|
||||||
|
- description: Boards with the Amlogic Meson SM1 S905X3/D3/Y3 SoC
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
+ - amediatech,x96-air-100
|
||||||
|
+ - amediatech,x96-air-1000
|
||||||
|
- bananapi,bpi-m5
|
||||||
|
- hardkernel,odroid-c4
|
||||||
|
- hardkernel,odroid-hc4
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..b3872983b5ce
|
index 000000000000..46a34731f7e2
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi
|
||||||
@@ -0,0 +1,298 @@
|
@@ -0,0 +1,300 @@
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright (c) 2019 BayLibre SAS. All rights reserved.
|
+ * Copyright (c) 2019 BayLibre SAS. All rights reserved.
|
||||||
@ -256,7 +270,8 @@ index 000000000000..b3872983b5ce
|
|||||||
+
|
+
|
||||||
+ bus-width = <4>;
|
+ bus-width = <4>;
|
||||||
+ cap-sd-highspeed;
|
+ cap-sd-highspeed;
|
||||||
+ max-frequency = <100000000>;
|
+ sd-uhs-sdr104;
|
||||||
|
+ max-frequency = <200000000>;
|
||||||
+
|
+
|
||||||
+ non-removable;
|
+ non-removable;
|
||||||
+ disable-wp;
|
+ disable-wp;
|
||||||
@ -270,7 +285,7 @@ index 000000000000..b3872983b5ce
|
|||||||
+ vqmmc-supply = <&vddio_ao1v8>;
|
+ vqmmc-supply = <&vddio_ao1v8>;
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+/* SD card */
|
+/* SD Card */
|
||||||
+&sd_emmc_b {
|
+&sd_emmc_b {
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+ pinctrl-0 = <&sdcard_c_pins>;
|
+ pinctrl-0 = <&sdcard_c_pins>;
|
||||||
@ -279,7 +294,8 @@ index 000000000000..b3872983b5ce
|
|||||||
+
|
+
|
||||||
+ bus-width = <4>;
|
+ bus-width = <4>;
|
||||||
+ cap-sd-highspeed;
|
+ cap-sd-highspeed;
|
||||||
+ max-frequency = <50000000>;
|
+ /* CRC errors are observed at 50MHz */
|
||||||
|
+ max-frequency = <35000000>;
|
||||||
+ disable-wp;
|
+ disable-wp;
|
||||||
+
|
+
|
||||||
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
|
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
|
@ -1,7 +1,7 @@
|
|||||||
From 90fb7b38afcfc6d1e5b134525e988781cd56adc3 Mon Sep 17 00:00:00 2001
|
From 2efcc5d41cecfba052a80c8645e17bebd6bb849e Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Wed, 24 Jun 2020 15:04:10 +0000
|
Date: Wed, 24 Jun 2020 15:04:10 +0000
|
||||||
Subject: [PATCH 75/88] arm64: dts: meson: add initial device-trees for X96-AIR
|
Subject: [PATCH 47/60] arm64: dts: meson: add initial device-trees for X96-AIR
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
@ -29,18 +29,32 @@ and with -1000 suffix supports models with Gigabit Ethernet.
|
|||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
---
|
---
|
||||||
|
.../devicetree/bindings/arm/amlogic.yaml | 2 +
|
||||||
arch/arm64/boot/dts/amlogic/Makefile | 2 +
|
arch/arm64/boot/dts/amlogic/Makefile | 2 +
|
||||||
.../dts/amlogic/meson-sm1-x96-air-100.dts | 112 +++++++++++++++
|
.../dts/amlogic/meson-sm1-x96-air-100.dts | 112 +++++++++++++++
|
||||||
.../dts/amlogic/meson-sm1-x96-air-1000.dts | 133 ++++++++++++++++++
|
.../dts/amlogic/meson-sm1-x96-air-1000.dts | 133 ++++++++++++++++++
|
||||||
3 files changed, 247 insertions(+)
|
4 files changed, 249 insertions(+)
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-x96-air-100.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-x96-air-100.dts
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-x96-air-1000.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-x96-air-1000.dts
|
||||||
|
|
||||||
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
index 61aebbb3090e..172ed028e686 100644
|
||||||
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
@@ -171,6 +171,8 @@ properties:
|
||||||
|
- amediatech,x96-air-100
|
||||||
|
- amediatech,x96-air-1000
|
||||||
|
- bananapi,bpi-m5
|
||||||
|
+ - cyx,a95xf3-air-100
|
||||||
|
+ - cyx,a95xf3-air-1000
|
||||||
|
- hardkernel,odroid-c4
|
||||||
|
- hardkernel,odroid-hc4
|
||||||
|
- khadas,vim3l
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
index da11ef28a47b..5de47ce6d8a4 100644
|
index be308361e2f1..69f7d5fd29ea 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
@@ -51,4 +51,6 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
|
@@ -54,4 +54,6 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
|
@ -1,7 +1,7 @@
|
|||||||
From fcb882d32ac78cf1c121a7cce2242cef327bd67f Mon Sep 17 00:00:00 2001
|
From 3c5414373037e6ecdafe87fecb97e2b083517f63 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Wed, 3 Jun 2020 18:03:22 +0000
|
Date: Wed, 3 Jun 2020 18:03:22 +0000
|
||||||
Subject: [PATCH 77/88] arm64: dts: meson: add initial device-trees for
|
Subject: [PATCH 48/60] arm64: dts: meson: add initial device-trees for
|
||||||
A95XF3-AIR
|
A95XF3-AIR
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
@ -38,10 +38,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-a95xf3-air-1000.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-a95xf3-air-1000.dts
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
index 5de47ce6d8a4..47a9d1f85596 100644
|
index 69f7d5fd29ea..111425d59da0 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
@@ -46,6 +46,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
|
@@ -49,6 +49,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
@ -1,7 +1,7 @@
|
|||||||
From 506523142679a04de69412e08765538b398fa7e2 Mon Sep 17 00:00:00 2001
|
From 97716a8c52bb002a8ec1e1e1814f6ad752a32940 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Tue, 12 Jan 2021 17:24:07 +0000
|
Date: Tue, 12 Jan 2021 17:24:07 +0000
|
||||||
Subject: [PATCH 78/88] dt-bindings: vendor-prefixes: add haochuangyi prefix
|
Subject: [PATCH 49/60] dt-bindings: vendor-prefixes: add haochuangyi prefix
|
||||||
|
|
||||||
Shenzhen Haochuangyi Technology Co.,Ltd are a manufcaturer of Android
|
Shenzhen Haochuangyi Technology Co.,Ltd are a manufcaturer of Android
|
||||||
Set-Top Box devices.
|
Set-Top Box devices.
|
||||||
@ -12,10 +12,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 2 insertions(+)
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||||
index 041ae90b0d8f..bfceecbaf717 100644
|
index a867f7102c35..fc3e9205946f 100644
|
||||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||||
@@ -449,6 +449,8 @@ patternProperties:
|
@@ -471,6 +471,8 @@ patternProperties:
|
||||||
deprecated: true
|
deprecated: true
|
||||||
"^hannstar,.*":
|
"^hannstar,.*":
|
||||||
description: HannStar Display Corporation
|
description: HannStar Display Corporation
|
@ -1,7 +1,7 @@
|
|||||||
From 50d360d344ebf97f7453b3ec1fae4053879ab33f Mon Sep 17 00:00:00 2001
|
From 242a6ff12de0a23a10cd96f20882b1717ee76b57 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Tue, 12 Jan 2021 17:25:33 +0000
|
Date: Tue, 12 Jan 2021 17:25:33 +0000
|
||||||
Subject: [PATCH 79/88] dt-bindings: arm: amlogic: add H96-Max bindings
|
Subject: [PATCH 50/60] dt-bindings: arm: amlogic: add H96-Max bindings
|
||||||
|
|
||||||
Add the board binding for the Haochuangyi H96-Max STB device.
|
Add the board binding for the Haochuangyi H96-Max STB device.
|
||||||
|
|
||||||
@ -11,17 +11,17 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
index 6a6eec15747b..455cdd951c6e 100644
|
index 172ed028e686..903ab1796c07 100644
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
@@ -171,6 +171,7 @@ properties:
|
@@ -175,6 +175,7 @@ properties:
|
||||||
- cyx,a95xf3-air-1000
|
- cyx,a95xf3-air-1000
|
||||||
- hardkernel,odroid-c4
|
- hardkernel,odroid-c4
|
||||||
- hardkernel,odroid-hc4
|
- hardkernel,odroid-hc4
|
||||||
+ - haochuangyi,h96-max
|
+ - haochuangyi,h96-max
|
||||||
- khadas,vim3l
|
- khadas,vim3l
|
||||||
- seirobotics,sei610
|
- seirobotics,sei610
|
||||||
- sinovoip,bananapi-m5
|
- const: amlogic,sm1
|
||||||
--
|
--
|
||||||
2.17.1
|
2.17.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From a3fcc16aac001adb400a8576e280d3c1dc9b10a6 Mon Sep 17 00:00:00 2001
|
From ba87086b3333005e2a1b1a6b1b9552b0f598d7eb Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Tue, 12 Jan 2021 17:26:42 +0000
|
Date: Tue, 12 Jan 2021 17:26:42 +0000
|
||||||
Subject: [PATCH 80/88] arm64: dts: meson: add initial device-tree for H96-Max
|
Subject: [PATCH 51/60] arm64: dts: meson: add initial device-tree for H96-Max
|
||||||
|
|
||||||
The Haochuangyi H96-Max is based on the Amlogic S905X3 reference
|
The Haochuangyi H96-Max is based on the Amlogic S905X3 reference
|
||||||
design with the following specs:
|
design with the following specs:
|
||||||
@ -29,10 +29,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-h96-max.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-h96-max.dts
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
index 47a9d1f85596..7dd039173ef0 100644
|
index 111425d59da0..60a12b6d560a 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
@@ -49,6 +49,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
@@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-100.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-100.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-1000.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-1000.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m5.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m5.dtb
|
@ -1,7 +1,7 @@
|
|||||||
From 8af4f9a08f739fd9b832c13939b765211a166097 Mon Sep 17 00:00:00 2001
|
From addcdc01e7d6682d82ca1019f62b6dfcf6f1ac9d Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Sat, 29 Feb 2020 15:13:02 +0000
|
Date: Sat, 29 Feb 2020 15:13:02 +0000
|
||||||
Subject: [PATCH 81/88] dt-bindings: arm: amlogic: add support for the Tanix
|
Subject: [PATCH 52/60] dt-bindings: arm: amlogic: add support for the Tanix
|
||||||
TX5 Max
|
TX5 Max
|
||||||
|
|
||||||
The Oranth (Tanix) TX5 Max is based on the Amlogic U200 reference
|
The Oranth (Tanix) TX5 Max is based on the Amlogic U200 reference
|
||||||
@ -13,17 +13,17 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
index 455cdd951c6e..e8aec4b53553 100644
|
index 903ab1796c07..5554d23362f8 100644
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
@@ -140,6 +140,7 @@ properties:
|
@@ -141,6 +141,7 @@ properties:
|
||||||
|
- enum:
|
||||||
- amediatech,x96-max
|
- amediatech,x96-max
|
||||||
- amlogic,u200
|
- amlogic,u200
|
||||||
- seirobotics,sei510
|
|
||||||
+ - oranth,tx5-max
|
+ - oranth,tx5-max
|
||||||
|
- radxa,zero
|
||||||
|
- seirobotics,sei510
|
||||||
- const: amlogic,g12a
|
- const: amlogic,g12a
|
||||||
|
|
||||||
- description: Boards with the Amlogic Meson G12B A311D SoC
|
|
||||||
--
|
--
|
||||||
2.17.1
|
2.17.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From fc88070f5e6cb37b9b0e30c13065a56333a16f1d Mon Sep 17 00:00:00 2001
|
From e7614444f2c3b7b529d7fbf0528aafa3f0d3dc30 Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Sun, 20 Oct 2019 04:06:59 +0000
|
Date: Sun, 20 Oct 2019 04:06:59 +0000
|
||||||
Subject: [PATCH 82/88] arm64: dts: meson: add support for the Tanix TX5 Max
|
Subject: [PATCH 53/60] arm64: dts: meson: add support for the Tanix TX5 Max
|
||||||
|
|
||||||
The Tanix TX5 Max is based on the Amlogic U200 reference design
|
The Tanix TX5 Max is based on the Amlogic U200 reference design
|
||||||
using the S905X2 chipset. Hardware specification:
|
using the S905X2 chipset. Hardware specification:
|
||||||
@ -25,12 +25,12 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12a-tanix-tx5max.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12a-tanix-tx5max.dts
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
index 7dd039173ef0..7d8586c718a1 100644
|
index 60a12b6d560a..9566cfdbb54b 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
@@ -1,6 +1,7 @@
|
@@ -2,6 +2,7 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-radxa-zero.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
|
||||||
+dtb-$(CONFIG_ARCH_MESON) += meson-g12a-tanix-tx5max.dtb
|
+dtb-$(CONFIG_ARCH_MESON) += meson-g12a-tanix-tx5max.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
|
@ -1,7 +1,7 @@
|
|||||||
From 67b08c3ffacee708e8f2f08f8c42c7021c9cd6f3 Mon Sep 17 00:00:00 2001
|
From 59d403256f734cb20f89cb0c47f909df3d144e7b Mon Sep 17 00:00:00 2001
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Mon, 21 Oct 2019 03:58:06 +0000
|
Date: Mon, 21 Oct 2019 03:58:06 +0000
|
||||||
Subject: [PATCH 88/88] arm64: dts: meson: add multiple MeCool device trees
|
Subject: [PATCH 54/60] arm64: dts: meson: add multiple MeCool device trees
|
||||||
|
|
||||||
This adds initial device trees for a range of MeCool devices based on various
|
This adds initial device trees for a range of MeCool devices based on various
|
||||||
Amlogic GXBB, GXL and GXM reference designs. The current purpose is to allow
|
Amlogic GXBB, GXL and GXM reference designs. The current purpose is to allow
|
||||||
@ -24,10 +24,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-mecool-m8s-plus.dts
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-mecool-m8s-plus.dts
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
index 82265e80cbe2..3e72b2ad3a2d 100644
|
index 9566cfdbb54b..a8213077ed67 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
@@ -13,6 +13,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
|
@@ -14,6 +14,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
|
||||||
@ -36,7 +36,7 @@ index 82265e80cbe2..3e72b2ad3a2d 100644
|
|||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
|
||||||
@@ -30,7 +32,10 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc.dtb
|
@@ -31,7 +33,10 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc-v2.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc-v2.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-nexbox-a95x.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-nexbox-a95x.dtb
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb
|
@ -0,0 +1,28 @@
|
|||||||
|
From 969f5a6bcf04e02bdfbf39d062d22ceee09957ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Sun, 11 Apr 2021 05:50:13 +0000
|
||||||
|
Subject: [PATCH 55/60] dt-bindings: arm: amlogic: add support for Minix NEO-U1
|
||||||
|
|
||||||
|
The Minix NEO-U1 is an Android STB based on the Amlogic P200 (GXBB)
|
||||||
|
reference design with an S905 chip.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
index 5554d23362f8..79b3f93a172d 100644
|
||||||
|
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||||
|
@@ -58,6 +58,7 @@ properties:
|
||||||
|
- amlogic,p201
|
||||||
|
- friendlyarm,nanopi-k2
|
||||||
|
- hardkernel,odroid-c2
|
||||||
|
+ - minix,neo-u1
|
||||||
|
- nexbox,a95x
|
||||||
|
- videostrong,kii-pro
|
||||||
|
- wetek,hub
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,241 @@
|
|||||||
|
From 5525e2ab1a8ac6bf6513bdd7cdf9113df5d18c31 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Sun, 11 Apr 2021 05:52:14 +0000
|
||||||
|
Subject: [PATCH 56/60] arm64: dts: meson: add initial device-tree for Minix
|
||||||
|
NEO-U1
|
||||||
|
|
||||||
|
The Minix NEO-U1 is an Android STB based on the Amlogic P200 (GXBB)
|
||||||
|
reference design with an S905-H chip and the following specs:
|
||||||
|
|
||||||
|
- 2GB DDR3 RAM
|
||||||
|
- 16GB eMMC
|
||||||
|
- 10/100/1000 Base-T Ethernet
|
||||||
|
- AP6356 Wireless (802.11 b/g/n/ac, BT 5.0)
|
||||||
|
- HDMI 2.1 video
|
||||||
|
- S/PDIF optical output
|
||||||
|
- ES8323 DAC
|
||||||
|
- 3x USB 2.0 port
|
||||||
|
- 1x USB micro OTG port
|
||||||
|
- RTC chip (hym8563)
|
||||||
|
- IR receiver
|
||||||
|
- 1x Power LED (white)
|
||||||
|
- 1x Update/Reset button (underside)
|
||||||
|
- 1x micro SD card slot
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||||
|
.../dts/amlogic/meson-gxbb-minix-neo-u1.dts | 189 ++++++++++++++++++
|
||||||
|
2 files changed, 190 insertions(+)
|
||||||
|
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxbb-minix-neo-u1.dts
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
index a8213077ed67..5f59dc6a8a94 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||||
|
@@ -16,6 +16,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-mecool-ki-plus.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-mecool-kii-pro.dtb
|
||||||
|
+dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-minix-neo-u1.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
|
||||||
|
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-minix-neo-u1.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-minix-neo-u1.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..5343e90f9f34
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-minix-neo-u1.dts
|
||||||
|
@@ -0,0 +1,189 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2021 Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "meson-gxbb-p20x.dtsi"
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/input/input.h>
|
||||||
|
+#include <dt-bindings/leds/common.h>
|
||||||
|
+#include <dt-bindings/sound/meson-aiu.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ compatible = "minix,neo-u1", "amlogic,meson-gxbb";
|
||||||
|
+ model = "Minix NEO U1";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ rtc0 = &rtc;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ spdif_dit: audio-codec-0 {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ compatible = "linux,spdif-dit";
|
||||||
|
+ status = "okay";
|
||||||
|
+ sound-name-prefix = "DIT";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ led-status {
|
||||||
|
+ color = <LED_COLOR_ID_WHITE>;
|
||||||
|
+ function = LED_FUNCTION_STATUS;
|
||||||
|
+ gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ default-state = "on";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-keys-polled {
|
||||||
|
+ compatible = "gpio-keys-polled";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ poll-interval = <20>;
|
||||||
|
+
|
||||||
|
+ button-reset {
|
||||||
|
+ label = "reset";
|
||||||
|
+ linux,code = <KEY_POWER>;
|
||||||
|
+ gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ avdd18_usb_adc: regulator-avdd18_usb_adc {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "AVDD18_USB_ADC";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sound {
|
||||||
|
+ compatible = "amlogic,gx-sound-card";
|
||||||
|
+ model = "MINIX-NEO";
|
||||||
|
+ assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||||
|
+ <&clkc CLKID_MPLL1>,
|
||||||
|
+ <&clkc CLKID_MPLL2>;
|
||||||
|
+ assigned-clock-parents = <0>, <0>, <0>;
|
||||||
|
+ assigned-clock-rates = <294912000>,
|
||||||
|
+ <270950400>,
|
||||||
|
+ <393216000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ dai-link-0 {
|
||||||
|
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-1 {
|
||||||
|
+ sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-2 {
|
||||||
|
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
|
||||||
|
+ dai-format = "i2s";
|
||||||
|
+ mclk-fs = <256>;
|
||||||
|
+
|
||||||
|
+ codec-0 {
|
||||||
|
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-3 {
|
||||||
|
+ sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
|
||||||
|
+
|
||||||
|
+ codec-0 {
|
||||||
|
+ sound-dai = <&spdif_dit>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dai-link-4 {
|
||||||
|
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
|
||||||
|
+
|
||||||
|
+ codec-0 {
|
||||||
|
+ sound-dai = <&hdmi_tx>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&aiu {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&spdif_out_y_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+ðmac {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <ð_rgmii_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+
|
||||||
|
+ phy-handle = <ð_phy0>;
|
||||||
|
+ phy-mode = "rgmii";
|
||||||
|
+
|
||||||
|
+ amlogic,tx-delay-ns = <2>;
|
||||||
|
+
|
||||||
|
+ mdio {
|
||||||
|
+ compatible = "snps,dwmac-mdio";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ eth_phy0: ethernet-phy@0 {
|
||||||
|
+ /* Realtek RTL8211F (0x001cc916) */
|
||||||
|
+ reg = <0>;
|
||||||
|
+
|
||||||
|
+ reset-assert-us = <10000>;
|
||||||
|
+ reset-deassert-us = <80000>;
|
||||||
|
+ reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
|
||||||
|
+
|
||||||
|
+ interrupt-parent = <&gpio_intc>;
|
||||||
|
+ /* MAC_INTR on GPIOZ_15 */
|
||||||
|
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ir {
|
||||||
|
+ linux,rc-map-name = "rc-minix-neo";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c_A {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&i2c_a_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c_B {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&i2c_b_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+
|
||||||
|
+ rtc: rtc@51 {
|
||||||
|
+ status = "okay";
|
||||||
|
+ compatible = "haoyu,hym8563";
|
||||||
|
+ reg = <0x51>;
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ clock-frequency = <32768>;
|
||||||
|
+ clock-output-names = "xin32k";
|
||||||
|
+ wakeup-source;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&saradc {
|
||||||
|
+ status = "okay";
|
||||||
|
+ vref-supply = <&avdd18_usb_adc>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* This is connected to the Bluetooth module: */
|
||||||
|
+&uart_A {
|
||||||
|
+ status = "okay";
|
||||||
|
+ pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ uart-has-rtscts;
|
||||||
|
+
|
||||||
|
+ bluetooth {
|
||||||
|
+ compatible = "bcm43438-bt";
|
||||||
|
+ shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ max-speed = <2000000>;
|
||||||
|
+ clocks = <&wifi32k>;
|
||||||
|
+ clock-names = "lpo";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From de35bb96122893c0d7eaea9de949cff3cb87ad24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Thu, 4 Nov 2021 02:08:38 +0000
|
||||||
|
Subject: [PATCH 57/60] TEST: new registers
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
sound/soc/meson/aiu-encoder-i2s.c | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
index ba3dac987112..eeff716c1b8d 100644
|
||||||
|
--- a/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
+++ b/sound/soc/meson/aiu-encoder-i2s.c
|
||||||
|
@@ -19,6 +19,7 @@
|
||||||
|
|
||||||
|
#define AIU_I2S_DAC_CFG_MSB_FIRST BIT(2)
|
||||||
|
#define AIU_I2S_MISC_HOLD_EN BIT(2)
|
||||||
|
+#define AIU_I2S_MISC_FORCE_LEFT_RIGHT BIT(4)
|
||||||
|
#define AIU_CLK_CTRL_I2S_DIV_EN BIT(0)
|
||||||
|
#define AIU_CLK_CTRL_I2S_DIV GENMASK(3, 2)
|
||||||
|
#define AIU_CLK_CTRL_AOCLK_INVERT BIT(6)
|
||||||
|
@@ -40,9 +41,16 @@ static void aiu_encoder_i2s_divider_enable(struct snd_soc_component *component,
|
||||||
|
static void aiu_encoder_i2s_hold(struct snd_soc_component *component,
|
||||||
|
bool enable)
|
||||||
|
{
|
||||||
|
+ unsigned int value;
|
||||||
|
+
|
||||||
|
+ if (enable)
|
||||||
|
+ value = AIU_I2S_MISC_HOLD_EN;
|
||||||
|
+ else
|
||||||
|
+ value = AIU_I2S_MISC_FORCE_LEFT_RIGHT;
|
||||||
|
+
|
||||||
|
snd_soc_component_update_bits(component, AIU_I2S_MISC,
|
||||||
|
- AIU_I2S_MISC_HOLD_EN,
|
||||||
|
- enable ? AIU_I2S_MISC_HOLD_EN : 0);
|
||||||
|
+ AIU_I2S_MISC_HOLD_EN |
|
||||||
|
+ AIU_I2S_MISC_FORCE_LEFT_RIGHT, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int aiu_encoder_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,80 @@
|
|||||||
|
From 783c76adcf53f7e47cd2a974fafbc2835d070579 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabio Estevam <festevam@denx.de>
|
||||||
|
Date: Wed, 24 Nov 2021 13:20:05 +0000
|
||||||
|
Subject: [PATCH 58/60] FROMLIST(v2): ath10k: Fix the MTU size on QCA9377 SDIO
|
||||||
|
|
||||||
|
On an imx6dl-pico-pi board with a QCA9377 SDIO chip, simply trying to
|
||||||
|
connect via ssh to another machine causes:
|
||||||
|
|
||||||
|
[ 55.824159] ath10k_sdio mmc1:0001:1: failed to transmit packet, dropping: -12
|
||||||
|
[ 55.832169] ath10k_sdio mmc1:0001:1: failed to submit frame: -12
|
||||||
|
[ 55.838529] ath10k_sdio mmc1:0001:1: failed to push frame: -12
|
||||||
|
[ 55.905863] ath10k_sdio mmc1:0001:1: failed to transmit packet, dropping: -12
|
||||||
|
[ 55.913650] ath10k_sdio mmc1:0001:1: failed to submit frame: -12
|
||||||
|
[ 55.919887] ath10k_sdio mmc1:0001:1: failed to push frame: -12
|
||||||
|
|
||||||
|
, leading to an ssh connection failure.
|
||||||
|
|
||||||
|
One user inspected the size of frames on Wireshark and reported
|
||||||
|
the followig:
|
||||||
|
|
||||||
|
"I was able to narrow the issue down to the mtu. If I set the mtu for
|
||||||
|
the wlan0 device to 1486 instead of 1500, the issue does not happen.
|
||||||
|
|
||||||
|
The size of frames that I see on Wireshark is exactly 1500 after
|
||||||
|
setting it to 1486."
|
||||||
|
|
||||||
|
Clearing the HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE avoids the problem and
|
||||||
|
the ssh command works successfully after that.
|
||||||
|
|
||||||
|
Introduce a 'credit_size_workaround' field to ath10k_hw_params for
|
||||||
|
the QCA9377 SDIO, so that the HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE
|
||||||
|
is not set in this case.
|
||||||
|
|
||||||
|
Tested with QCA9377 SDIO with firmware WLAN.TF.1.1.1-00061-QCATFSWPZ-1.
|
||||||
|
|
||||||
|
Fixes: 2f918ea98606 ("ath10k: enable alt data of TX path for sdio")
|
||||||
|
Signed-off-by: Fabio Estevam <festevam@denx.de>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/core.c | 3 ++-
|
||||||
|
drivers/net/wireless/ath/ath10k/hw.h | 3 +++
|
||||||
|
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
index 64c7145b51a2..afae168159ea 100644
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
@@ -714,6 +714,7 @@ static void ath10k_send_suspend_complete(struct ath10k *ar)
|
||||||
|
|
||||||
|
static int ath10k_init_sdio(struct ath10k *ar, enum ath10k_firmware_mode mode)
|
||||||
|
{
|
||||||
|
+ bool mtu_workaround = ar->hw_params.credit_size_workaround;
|
||||||
|
int ret;
|
||||||
|
u32 param = 0;
|
||||||
|
|
||||||
|
@@ -731,7 +732,7 @@ static int ath10k_init_sdio(struct ath10k *ar, enum ath10k_firmware_mode mode)
|
||||||
|
|
||||||
|
param |= HI_ACS_FLAGS_SDIO_REDUCE_TX_COMPL_SET;
|
||||||
|
|
||||||
|
- if (mode == ATH10K_FIRMWARE_MODE_NORMAL)
|
||||||
|
+ if (mode == ATH10K_FIRMWARE_MODE_NORMAL && !mtu_workaround)
|
||||||
|
param |= HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE;
|
||||||
|
else
|
||||||
|
param &= ~HI_ACS_FLAGS_ALT_DATA_CREDIT_SIZE;
|
||||||
|
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
|
||||||
|
index 6b03c7787e36..591ef7416b61 100644
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/hw.h
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/hw.h
|
||||||
|
@@ -618,6 +618,9 @@ struct ath10k_hw_params {
|
||||||
|
*/
|
||||||
|
bool uart_pin_workaround;
|
||||||
|
|
||||||
|
+ /* Workaround for the credit size calculation */
|
||||||
|
+ bool credit_size_workaround;
|
||||||
|
+
|
||||||
|
/* tx stats support over pktlog */
|
||||||
|
bool tx_stats_over_pktlog;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -0,0 +1,67 @@
|
|||||||
|
From 872551950d5a45f3163626e1c28b145a1100e1e0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
Date: Thu, 25 Nov 2021 02:34:41 +0000
|
||||||
|
Subject: [PATCH 59/60] WIP: arm64: dts: amlogic: set 4GB ram size for Beelink
|
||||||
|
S922X devices
|
||||||
|
|
||||||
|
Set 4GB RAM size to see if this resolves the kernel panic issue
|
||||||
|
seen when boxes are booted from vendor u-boot.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts | 5 +++++
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts | 5 +++++
|
||||||
|
arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts | 5 +++++
|
||||||
|
3 files changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
||||||
|
index 6c7bfacbad78..93c7acccf5be 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
||||||
|
@@ -20,6 +20,11 @@
|
||||||
|
rtc1 = &vrtc;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ memory@0 {
|
||||||
|
+ device_type = "memory";
|
||||||
|
+ reg = <0x0 0x0 0x0 0xf0800000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
gpio-keys-polled {
|
||||||
|
compatible = "gpio-keys-polled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||||
|
index 707daf92787b..6e1e1a680df0 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||||
|
@@ -19,6 +19,11 @@
|
||||||
|
rtc1 = &vrtc;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ memory@0 {
|
||||||
|
+ device_type = "memory";
|
||||||
|
+ reg = <0x0 0x0 0x0 0xf0800000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
gpio-keys-polled {
|
||||||
|
compatible = "gpio-keys-polled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||||
|
index 5d96c1449050..64039df7e0a4 100644
|
||||||
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||||
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||||
|
@@ -19,6 +19,11 @@
|
||||||
|
rtc1 = &vrtc;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ memory@0 {
|
||||||
|
+ device_type = "memory";
|
||||||
|
+ reg = <0x0 0x0 0x0 0xf0800000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
spdif_dit: audio-codec-1 {
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
compatible = "linux,spdif-dit";
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
@ -1,33 +1,37 @@
|
|||||||
From c6a298534815027cbcafe0a2015c5e4ca6a1ea53 Mon Sep 17 00:00:00 2001
|
From 0dd3d24b886da5098bb8048a53d182dd086c6f30 Mon Sep 17 00:00:00 2001
|
||||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
Date: Fri, 4 Dec 2020 14:33:39 +0100
|
Date: Thu, 25 Nov 2021 11:31:43 +0000
|
||||||
Subject: [PATCH 48/88] WIP: arm64: dts: meson: g12/sm1: remove opps below 1GHz
|
Subject: [PATCH 60/60] HACK: arm64: dts: amlogic: remove opps below 1GHz for
|
||||||
|
g12/sm1
|
||||||
|
|
||||||
Various CPU stall and crash, often related to the CPU sys pll, have been
|
This seems to workaround or hide occurrences of CPU stalls and other
|
||||||
reported on the odroid-n2, n2+ and vim3/3l. It still not entirely clear
|
board wedges that are not seen when 'performance' is forced.
|
||||||
what the problem is. The problem only happens on some samples, not all,
|
|
||||||
often after more than 24h running fine.
|
|
||||||
|
|
||||||
Boards running fixed CPU frequency, like the one using the performance
|
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||||
governor, appear unaffected. Doing more tests seems to show that problem
|
|
||||||
appears only with the lower opps. Removing opps with a rate lower than 1GHz
|
|
||||||
seems to solve/hide the problem
|
|
||||||
|
|
||||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
---
|
---
|
||||||
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 20 -------------------
|
.../boot/dts/amlogic/meson-g12b-a311d.dtsi | 40 -------------------
|
||||||
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 20 -------------------
|
.../boot/dts/amlogic/meson-g12b-s922x.dtsi | 40 -------------------
|
||||||
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 -------------------
|
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 20 ----------
|
||||||
3 files changed, 60 deletions(-)
|
3 files changed, 100 deletions(-)
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
||||||
index 7d29756451a5..4a8acff92ba5 100644
|
index d61f43052a34..8e9ad1e51d66 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi
|
||||||
@@ -11,16 +11,6 @@
|
@@ -11,26 +11,6 @@
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
|
- opp-100000000 {
|
||||||
|
- opp-hz = /bits/ 64 <100000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- opp-250000000 {
|
||||||
|
- opp-hz = /bits/ 64 <250000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
- opp-500000000 {
|
- opp-500000000 {
|
||||||
- opp-hz = /bits/ 64 <500000000>;
|
- opp-hz = /bits/ 64 <500000000>;
|
||||||
- opp-microvolt = <731000>;
|
- opp-microvolt = <731000>;
|
||||||
@ -41,10 +45,20 @@ index 7d29756451a5..4a8acff92ba5 100644
|
|||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <761000>;
|
opp-microvolt = <761000>;
|
||||||
@@ -61,16 +51,6 @@
|
@@ -71,26 +51,6 @@
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
|
- opp-100000000 {
|
||||||
|
- opp-hz = /bits/ 64 <100000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- opp-250000000 {
|
||||||
|
- opp-hz = /bits/ 64 <250000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
- opp-500000000 {
|
- opp-500000000 {
|
||||||
- opp-hz = /bits/ 64 <500000000>;
|
- opp-hz = /bits/ 64 <500000000>;
|
||||||
- opp-microvolt = <731000>;
|
- opp-microvolt = <731000>;
|
||||||
@ -59,13 +73,23 @@ index 7d29756451a5..4a8acff92ba5 100644
|
|||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <731000>;
|
opp-microvolt = <731000>;
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||||
index ad4096be8db2..df7a2cd7265d 100644
|
index 1e5d0ee5d541..44c23c984034 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||||
@@ -11,16 +11,6 @@
|
@@ -11,26 +11,6 @@
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
|
- opp-100000000 {
|
||||||
|
- opp-hz = /bits/ 64 <100000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- opp-250000000 {
|
||||||
|
- opp-hz = /bits/ 64 <250000000>;
|
||||||
|
- opp-microvolt = <731000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
- opp-500000000 {
|
- opp-500000000 {
|
||||||
- opp-hz = /bits/ 64 <500000000>;
|
- opp-hz = /bits/ 64 <500000000>;
|
||||||
- opp-microvolt = <731000>;
|
- opp-microvolt = <731000>;
|
||||||
@ -79,10 +103,20 @@ index ad4096be8db2..df7a2cd7265d 100644
|
|||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <731000>;
|
opp-microvolt = <731000>;
|
||||||
@@ -61,16 +51,6 @@
|
@@ -76,26 +56,6 @@
|
||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
|
- opp-100000000 {
|
||||||
|
- opp-hz = /bits/ 64 <100000000>;
|
||||||
|
- opp-microvolt = <751000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- opp-250000000 {
|
||||||
|
- opp-hz = /bits/ 64 <250000000>;
|
||||||
|
- opp-microvolt = <751000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
- opp-500000000 {
|
- opp-500000000 {
|
||||||
- opp-hz = /bits/ 64 <500000000>;
|
- opp-hz = /bits/ 64 <500000000>;
|
||||||
- opp-microvolt = <751000>;
|
- opp-microvolt = <751000>;
|
||||||
@ -97,7 +131,7 @@ index ad4096be8db2..df7a2cd7265d 100644
|
|||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <771000>;
|
opp-microvolt = <771000>;
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||||
index c309517abae3..defe0b8d4d27 100644
|
index 3d8b1f4f2001..78bdbd2ccc9d 100644
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
--- a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||||
@@ -95,26 +95,6 @@
|
@@ -95,26 +95,6 @@
|
File diff suppressed because it is too large
Load Diff
@ -1,49 +0,0 @@
|
|||||||
From 227da4272ca9ccecfbff90cd3e8678f0aee6e3ea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dongjin Kim <tobetter@gmail.com>
|
|
||||||
Date: Wed, 29 Jul 2020 04:05:03 +0900
|
|
||||||
Subject: [PATCH 05/88] HACK: drm/meson: add YUV422 output support
|
|
||||||
|
|
||||||
Support YUV422 output from the Amlogic Meson SoC VPU to the HDMI
|
|
||||||
controller. This incorrectly fixes the green-line on GX devices.
|
|
||||||
|
|
||||||
Signed-off-by: Dongjin Kim <tobetter@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/meson/meson_dw_hdmi.c | 8 +++++++-
|
|
||||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c
|
|
||||||
index aad75a22dc33..97d670081824 100644
|
|
||||||
--- a/drivers/gpu/drm/meson/meson_dw_hdmi.c
|
|
||||||
+++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c
|
|
||||||
@@ -703,6 +703,7 @@ dw_hdmi_mode_valid(struct dw_hdmi *hdmi, void *data,
|
|
||||||
|
|
||||||
static const u32 meson_dw_hdmi_out_bus_fmts[] = {
|
|
||||||
MEDIA_BUS_FMT_YUV8_1X24,
|
|
||||||
+ MEDIA_BUS_FMT_UYVY8_1X16,
|
|
||||||
MEDIA_BUS_FMT_UYYVYY8_0_5X24,
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -802,7 +803,8 @@ static void meson_venc_hdmi_encoder_mode_set(struct drm_bridge *bridge,
|
|
||||||
if (dw_hdmi->output_bus_fmt == MEDIA_BUS_FMT_UYYVYY8_0_5X24) {
|
|
||||||
ycrcb_map = VPU_HDMI_OUTPUT_CRYCB;
|
|
||||||
yuv420_mode = true;
|
|
||||||
- }
|
|
||||||
+ } else if (dw_hdmi->output_bus_fmt == MEDIA_BUS_FMT_UYVY8_1X16)
|
|
||||||
+ ycrcb_map = VPU_HDMI_OUTPUT_CRYCB;
|
|
||||||
|
|
||||||
/* VENC + VENC-DVI Mode setup */
|
|
||||||
meson_venc_hdmi_mode_set(priv, vic, ycrcb_map, yuv420_mode, mode);
|
|
||||||
@@ -814,6 +816,10 @@ static void meson_venc_hdmi_encoder_mode_set(struct drm_bridge *bridge,
|
|
||||||
/* Setup YUV420 to HDMI-TX, no 10bit diphering */
|
|
||||||
writel_relaxed(2 | (2 << 2),
|
|
||||||
priv->io_base + _REG(VPU_HDMI_FMT_CTRL));
|
|
||||||
+ else if (dw_hdmi->output_bus_fmt == MEDIA_BUS_FMT_UYVY8_1X16)
|
|
||||||
+ /* Setup YUV422 to HDMI-TX, no 10bit diphering */
|
|
||||||
+ writel_relaxed(1 | (2 << 2),
|
|
||||||
+ priv->io_base + _REG(VPU_HDMI_FMT_CTRL));
|
|
||||||
else
|
|
||||||
/* Setup YUV444 to HDMI-TX, no 10bit diphering */
|
|
||||||
writel_relaxed(0, priv->io_base + _REG(VPU_HDMI_FMT_CTRL));
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
From 592630a4362674aaaa3791bf107e57dbe3d4f0cf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
Date: Thu, 16 Apr 2020 08:31:55 +0000
|
|
||||||
Subject: [PATCH 06/88] HACK: mmc: core: always re-init sdcards to set default
|
|
||||||
3.3v regulator ios
|
|
||||||
|
|
||||||
sd-uhs-** in device-tree changes the voltage to 1.8v, so we need to ensure
|
|
||||||
the card is reset to 3.3v before rebooting else on reboot there is no card
|
|
||||||
to boot from.
|
|
||||||
|
|
||||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
drivers/mmc/core/sd.c | 22 +++++++++++++++++++++-
|
|
||||||
1 file changed, 21 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
|
|
||||||
index 6f054c449d46..5eeccc8b1e00 100644
|
|
||||||
--- a/drivers/mmc/core/sd.c
|
|
||||||
+++ b/drivers/mmc/core/sd.c
|
|
||||||
@@ -1245,6 +1245,26 @@ static int mmc_sd_suspend(struct mmc_host *host)
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Callback for shutdown
|
|
||||||
+ */
|
|
||||||
+static int mmc_sd_shutdown(struct mmc_host *host)
|
|
||||||
+{
|
|
||||||
+ mmc_claim_host(host);
|
|
||||||
+
|
|
||||||
+ if (mmc_card_suspended(host->card))
|
|
||||||
+ goto out;
|
|
||||||
+
|
|
||||||
+ mmc_power_off(host);
|
|
||||||
+ mmc_card_set_suspended(host->card);
|
|
||||||
+
|
|
||||||
+ pm_runtime_disable(&host->card->dev);
|
|
||||||
+ pm_runtime_set_suspended(&host->card->dev);
|
|
||||||
+
|
|
||||||
+out:
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* This function tries to determine if the same card is still present
|
|
||||||
* and, if so, restore all state to it.
|
|
||||||
@@ -1323,7 +1343,7 @@ static const struct mmc_bus_ops mmc_sd_ops = {
|
|
||||||
.suspend = mmc_sd_suspend,
|
|
||||||
.resume = mmc_sd_resume,
|
|
||||||
.alive = mmc_sd_alive,
|
|
||||||
- .shutdown = mmc_sd_suspend,
|
|
||||||
+ .shutdown = mmc_sd_shutdown,
|
|
||||||
.hw_reset = mmc_sd_hw_reset,
|
|
||||||
};
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From 9f7e0e762eb7e98293dc7c8bd00b4881e82ea68a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Phil Elwell <phil@raspberrypi.com>
|
|
||||||
Date: Wed, 10 Mar 2021 10:57:20 +0000
|
|
||||||
Subject: [PATCH 07/88] HACK: Revert "Bluetooth: Always request for user
|
|
||||||
confirmation for Just Works"
|
|
||||||
|
|
||||||
This reverts commit 92516cd97fd4d8ad5b1421a0d51771044f453a5f.
|
|
||||||
|
|
||||||
The commit "Bluetooth: Always request for user confirmation for Just
|
|
||||||
Works" prevents BLE devices pairing in (at least) the Raspberry Pi OS
|
|
||||||
GUI. After reverting it, pairing works again.
|
|
||||||
|
|
||||||
If another solution to the problem is found then this reversion will
|
|
||||||
be removed.
|
|
||||||
|
|
||||||
See: https://github.com/raspberrypi/linux/issues/4139
|
|
||||||
|
|
||||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
|
||||||
Signed-off-by: Fang Yafen <yafen@iscas.ac.cn>
|
|
||||||
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
||||||
---
|
|
||||||
net/bluetooth/smp.c | 11 ++---------
|
|
||||||
1 file changed, 2 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
|
|
||||||
index c659c464f7ca..05696317f302 100644
|
|
||||||
--- a/net/bluetooth/smp.c
|
|
||||||
+++ b/net/bluetooth/smp.c
|
|
||||||
@@ -883,16 +883,9 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth,
|
|
||||||
hcon->io_capability == HCI_IO_NO_INPUT_OUTPUT)
|
|
||||||
smp->method = JUST_WORKS;
|
|
||||||
|
|
||||||
- /* If Just Works, Continue with Zero TK and ask user-space for
|
|
||||||
- * confirmation */
|
|
||||||
+ /* If Just Works, Continue with Zero TK */
|
|
||||||
if (smp->method == JUST_WORKS) {
|
|
||||||
- ret = mgmt_user_confirm_request(hcon->hdev, &hcon->dst,
|
|
||||||
- hcon->type,
|
|
||||||
- hcon->dst_type,
|
|
||||||
- passkey, 1);
|
|
||||||
- if (ret)
|
|
||||||
- return ret;
|
|
||||||
- set_bit(SMP_FLAG_WAIT_USER, &smp->flags);
|
|
||||||
+ set_bit(SMP_FLAG_TK_VALID, &smp->flags);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,85 +0,0 @@
|
|||||||
From 4a6c74f4230afce1b9ae525ce09ee8da3a222003 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Dahl <post@lespocky.de>
|
|
||||||
Date: Mon, 11 Jan 2021 14:47:38 +0000
|
|
||||||
Subject: [PATCH 08/88] FROMGIT: arm64: dts: meson: Fix schema warnings for
|
|
||||||
pwm-leds
|
|
||||||
|
|
||||||
The node names for devices using the pwm-leds driver follow a certain
|
|
||||||
naming scheme (now). Parent node name is not enforced, but recommended
|
|
||||||
by DT project.
|
|
||||||
|
|
||||||
Signed-off-by: Alexander Dahl <post@lespocky.de>
|
|
||||||
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
|
||||||
---
|
|
||||||
.../arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts | 4 ++--
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 4 ++--
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 8 ++++----
|
|
||||||
3 files changed, 8 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
index 6fe589cd2ba2..45adae480a3d 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
@@ -42,10 +42,10 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- pwmleds {
|
|
||||||
+ led-controller {
|
|
||||||
compatible = "pwm-leds";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led-1 {
|
|
||||||
label = "vim:red:power";
|
|
||||||
pwms = <&pwm_AO_ab 1 7812500 0>;
|
|
||||||
max-brightness = <255>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
index bf9877d33427..25857e0c0831 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
@@ -81,10 +81,10 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- pwmleds {
|
|
||||||
+ led-controller {
|
|
||||||
compatible = "pwm-leds";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led-1 {
|
|
||||||
label = "vim:red:power";
|
|
||||||
pwms = <&pwm_AO_ab 1 7812500 0>;
|
|
||||||
max-brightness = <255>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
index 5ab139a34c01..039a8d0d1e9b 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
@@ -101,20 +101,20 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- leds {
|
|
||||||
+ led-controller-1 {
|
|
||||||
compatible = "gpio-leds";
|
|
||||||
|
|
||||||
- led-bluetooth {
|
|
||||||
+ led-1 {
|
|
||||||
label = "sei610:blue:bt";
|
|
||||||
gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
|
|
||||||
default-state = "off";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- pwmleds {
|
|
||||||
+ led-controller-2 {
|
|
||||||
compatible = "pwm-leds";
|
|
||||||
|
|
||||||
- power {
|
|
||||||
+ led-2 {
|
|
||||||
label = "sei610:red:power";
|
|
||||||
pwms = <&pwm_AO_ab 0 30518 0>;
|
|
||||||
max-brightness = <255>;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
From 7e76e4b0d180e5fb56825c1763a219c88bd79f28 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
Date: Fri, 4 Dec 2020 14:48:41 +0100
|
|
||||||
Subject: [PATCH 09/88] FROMGIT: arm64: dts: meson: vim3: whitespace fixups
|
|
||||||
|
|
||||||
Spaces have been used to indent 2 nodes.
|
|
||||||
Replace those with tabs and remove one extra newline
|
|
||||||
|
|
||||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
---
|
|
||||||
.../boot/dts/amlogic/meson-khadas-vim3.dtsi | 19 +++++++++----------
|
|
||||||
1 file changed, 9 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
index 8f8656262ae7..d3b25163b421 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
@@ -283,12 +283,12 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
ðmac {
|
|
||||||
- pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
- status = "okay";
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
- phy-handle = <&external_phy>;
|
|
||||||
- amlogic,tx-delay-ns = <2>;
|
|
||||||
+ pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ status = "okay";
|
|
||||||
+ phy-mode = "rgmii";
|
|
||||||
+ phy-handle = <&external_phy>;
|
|
||||||
+ amlogic,tx-delay-ns = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&frddr_a {
|
|
||||||
@@ -354,9 +354,9 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
&pwm_ef {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&pwm_e_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&pwm_e_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
};
|
|
||||||
|
|
||||||
&saradc {
|
|
||||||
@@ -450,7 +450,6 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
-
|
|
||||||
&tdmif_a {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
|||||||
From 8a50ed513979ecde63a49d0aaa71c302ac537980 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
Date: Fri, 4 Dec 2020 16:23:55 +0100
|
|
||||||
Subject: [PATCH 10/88] FROMGIT: arm64: dts: meson: vim3: enable hdmi audio
|
|
||||||
loopback
|
|
||||||
|
|
||||||
Enable audio capture frontends and a tdm decoder.
|
|
||||||
This makes it possible to loopback the audio played on the hdmi codec,
|
|
||||||
which is the only output interface at the moment.
|
|
||||||
|
|
||||||
Of course, one TODDR device would be enough to do that but since
|
|
||||||
the 3 FRDDRs are enabled on the playback side, let's do the same on the
|
|
||||||
capture side.
|
|
||||||
|
|
||||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
---
|
|
||||||
.../boot/dts/amlogic/meson-khadas-vim3.dtsi | 41 +++++++++++++++++--
|
|
||||||
1 file changed, 37 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
index d3b25163b421..4e4c2f924486 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
@@ -171,11 +171,16 @@
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
model = "G12B-KHADAS-VIM3";
|
|
||||||
- audio-aux-devs = <&tdmout_a>;
|
|
||||||
+ audio-aux-devs = <&tdmin_a>, <&tdmout_a>;
|
|
||||||
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
|
|
||||||
"TDMOUT_A IN 1", "FRDDR_B OUT 0",
|
|
||||||
"TDMOUT_A IN 2", "FRDDR_C OUT 0",
|
|
||||||
- "TDM_A Playback", "TDMOUT_A OUT";
|
|
||||||
+ "TDM_A Playback", "TDMOUT_A OUT",
|
|
||||||
+ "TDMIN_A IN 1", "TDM_A Capture",
|
|
||||||
+ "TDMIN_A IN 3", "TDM_A Loopback",
|
|
||||||
+ "TODDR_A IN 0", "TDMIN_A OUT",
|
|
||||||
+ "TODDR_B IN 0", "TDMIN_A OUT",
|
|
||||||
+ "TODDR_C IN 0", "TDMIN_A OUT";
|
|
||||||
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL2>,
|
|
||||||
<&clkc CLKID_MPLL0>,
|
|
||||||
@@ -198,8 +203,20 @@
|
|
||||||
sound-dai = <&frddr_c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- /* 8ch hdmi interface */
|
|
||||||
dai-link-3 {
|
|
||||||
+ sound-dai = <&toddr_a>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-4 {
|
|
||||||
+ sound-dai = <&toddr_b>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-5 {
|
|
||||||
+ sound-dai = <&toddr_c>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ /* 8ch hdmi interface */
|
|
||||||
+ dai-link-6 {
|
|
||||||
sound-dai = <&tdmif_a>;
|
|
||||||
dai-format = "i2s";
|
|
||||||
dai-tdm-slot-tx-mask-0 = <1 1>;
|
|
||||||
@@ -214,7 +231,7 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
/* hdmi glue */
|
|
||||||
- dai-link-4 {
|
|
||||||
+ dai-link-7 {
|
|
||||||
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
|
|
||||||
|
|
||||||
codec {
|
|
||||||
@@ -454,10 +471,26 @@
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
+&tdmin_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&tdmout_a {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
+&toddr_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&toddr_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&toddr_c {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&tohdmitx {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
|||||||
From 0ac730a8509d4ad8ad800c6fb904c743a4721063 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Mon, 21 Dec 2020 12:06:25 +0000
|
|
||||||
Subject: [PATCH 11/88] FROMGIT: arm64: dts: meson: add i2c3/rtc nodes and rtc
|
|
||||||
aliases to ODROID-N2 dtsi
|
|
||||||
|
|
||||||
Enable the onboard pcf8563 rtc hardware on ODROID N2/N2+ boards via the
|
|
||||||
common dtsi. Also add aliases to ensure vrtc does not claim /dev/rtc0.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
.../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 14 ++++++++++++++
|
|
||||||
1 file changed, 14 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
index 39a09661c5f6..b78be3e6974d 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
@@ -13,6 +13,8 @@
|
|
||||||
aliases {
|
|
||||||
serial0 = &uart_AO;
|
|
||||||
ethernet0 = ðmac;
|
|
||||||
+ rtc0 = &rtc;
|
|
||||||
+ rtc1 = &vrtc;
|
|
||||||
};
|
|
||||||
|
|
||||||
dioo2133: audio-amplifier-0 {
|
|
||||||
@@ -478,6 +480,18 @@
|
|
||||||
linux,rc-map-name = "rc-odroid";
|
|
||||||
};
|
|
||||||
|
|
||||||
+&i2c3 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+
|
|
||||||
+ rtc: rtc@51 {
|
|
||||||
+ compatible = "nxp,pcf8563";
|
|
||||||
+ reg = <0x51>;
|
|
||||||
+ wakeup-source;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&pwm_ab {
|
|
||||||
pinctrl-0 = <&pwm_a_e_pins>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,188 +0,0 @@
|
|||||||
From 63dd112ad3698275df592895cc46b4afc950186a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Fri, 12 Jun 2020 08:05:20 +0000
|
|
||||||
Subject: [PATCH 12/88] FROMGIT: arm64: dts: meson: add initial Beelink
|
|
||||||
GS-King-X device-tree
|
|
||||||
|
|
||||||
The Shenzen AZW (Beelink) GS-King-X is based on the Amlogic W400 reference
|
|
||||||
board with an S922X-H chip.
|
|
||||||
|
|
||||||
- 4GB LPDDR4 RAM
|
|
||||||
- 64GB eMMC storage
|
|
||||||
- 10/100/1000 Base-T Ethernet
|
|
||||||
- AP6356S Wireless (802.11 a/b/g/n/ac, BT 4.1)
|
|
||||||
- HDMI 2.1 video
|
|
||||||
- S/PDIF optical output
|
|
||||||
- 2x ESS9018 audio DACs
|
|
||||||
- 4x Ricor RT6862 audio amps
|
|
||||||
- Analogue headphone output
|
|
||||||
- 1x USB 2.0 OTG port
|
|
||||||
- 3x USB 3.0 ports
|
|
||||||
- IR receiver
|
|
||||||
- 1x micro SD card slot (internal)
|
|
||||||
- USB SATA controller with 2x 3.5" drive bays
|
|
||||||
- 1x Power on/off button
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Tested-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
|
||||||
.../boot/dts/amlogic/meson-g12b-gsking-x.dts | 133 ++++++++++++++++++
|
|
||||||
2 files changed, 134 insertions(+)
|
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
index ced03946314f..dce41cd3f347 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
@@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..211191f66344
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
|
|
||||||
@@ -0,0 +1,133 @@
|
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) 2019 BayLibre, SAS
|
|
||||||
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
+ * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/dts-v1/;
|
|
||||||
+
|
|
||||||
+#include "meson-g12b-w400.dtsi"
|
|
||||||
+#include <dt-bindings/leds/common.h>
|
|
||||||
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ compatible = "azw,gsking-x", "amlogic,g12b";
|
|
||||||
+ model = "Beelink GS-King X";
|
|
||||||
+
|
|
||||||
+ aliases {
|
|
||||||
+ rtc0 = &rtc;
|
|
||||||
+ rtc1 = &vrtc;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ gpio-keys-polled {
|
|
||||||
+ compatible = "gpio-keys-polled";
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+ poll-interval = <100>;
|
|
||||||
+
|
|
||||||
+ power-button {
|
|
||||||
+ label = "power";
|
|
||||||
+ linux,code = <KEY_POWER>;
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sound {
|
|
||||||
+ compatible = "amlogic,axg-sound-card";
|
|
||||||
+ model = "GSKING-X";
|
|
||||||
+ audio-aux-devs = <&tdmout_a>;
|
|
||||||
+ audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 1",
|
|
||||||
+ "TDMOUT_A IN 1", "FRDDR_B OUT 1",
|
|
||||||
+ "TDMOUT_A IN 2", "FRDDR_C OUT 1",
|
|
||||||
+ "TDM_A Playback", "TDMOUT_A OUT";
|
|
||||||
+
|
|
||||||
+ assigned-clocks = <&clkc CLKID_MPLL2>,
|
|
||||||
+ <&clkc CLKID_MPLL0>,
|
|
||||||
+ <&clkc CLKID_MPLL1>;
|
|
||||||
+ assigned-clock-parents = <0>, <0>, <0>;
|
|
||||||
+ assigned-clock-rates = <294912000>,
|
|
||||||
+ <270950400>,
|
|
||||||
+ <393216000>;
|
|
||||||
+ status = "okay";
|
|
||||||
+
|
|
||||||
+ dai-link-0 {
|
|
||||||
+ sound-dai = <&frddr_a>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-1 {
|
|
||||||
+ sound-dai = <&frddr_b>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-2 {
|
|
||||||
+ sound-dai = <&frddr_c>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ /* 8ch hdmi interface */
|
|
||||||
+ dai-link-3 {
|
|
||||||
+ sound-dai = <&tdmif_a>;
|
|
||||||
+ dai-format = "i2s";
|
|
||||||
+ dai-tdm-slot-tx-mask-0 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-1 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-2 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-3 = <1 1>;
|
|
||||||
+ mclk-fs = <256>;
|
|
||||||
+
|
|
||||||
+ codec {
|
|
||||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-4 {
|
|
||||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
|
|
||||||
+
|
|
||||||
+ codec {
|
|
||||||
+ sound-dai = <&hdmi_tx>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&arb {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&clkc_audio {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_c {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c3 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+
|
|
||||||
+ rtc: rtc@51 {
|
|
||||||
+ compatible = "nxp,pcf8563";
|
|
||||||
+ reg = <0x51>;
|
|
||||||
+ wakeup-source;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tdmif_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tdmout_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tohdmitx {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,313 +0,0 @@
|
|||||||
From a8a95cf3c9eb46bd3645e170500d18ecf4774eff Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Thu, 31 Dec 2020 15:54:34 +0000
|
|
||||||
Subject: [PATCH 13/88] FROMGIT: arm64: dts: meson: shorten audio card names
|
|
||||||
for alsa compatibility
|
|
||||||
|
|
||||||
This patch shortens all audio card model names by dropping the SoC prefix
|
|
||||||
(for conformity) and rewording those that are still longer than alsa's 15
|
|
||||||
character name limit [0] to avoid userspace config issues.
|
|
||||||
|
|
||||||
[0] https://github.com/torvalds/linux/blob/master/Documentation/sound/alsa-configuration.rst#common-parameters-for-top-sound-card-modules
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts | 2 +-
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 2 +-
|
|
||||||
21 files changed, 21 insertions(+), 21 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
|
|
||||||
index b00d0468c753..81269ccc2496 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
|
|
||||||
@@ -181,7 +181,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12A-SEI510";
|
|
||||||
+ model = "SEI510";
|
|
||||||
audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
|
|
||||||
<&tdmin_a>, <&tdmin_b>;
|
|
||||||
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
|
|
||||||
index 463a72d6bb7c..579f3d02d613 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
|
|
||||||
@@ -150,7 +150,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12A-X96-MAX";
|
|
||||||
+ model = "X96-MAX";
|
|
||||||
audio-aux-devs = <&tdmout_b>;
|
|
||||||
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
|
||||||
index 0e5c500fb78f..0e331aa5a2d7 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
|
||||||
@@ -44,7 +44,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12B-GTKING-PRO";
|
|
||||||
+ model = "GTKING-PRO";
|
|
||||||
audio-aux-devs = <&tdmout_b>;
|
|
||||||
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
|
||||||
index 10b87eb97b14..a7db84a500bb 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
|
||||||
@@ -28,7 +28,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12B-GTKING";
|
|
||||||
+ model = "GTKING";
|
|
||||||
audio-aux-devs = <&tdmout_b>;
|
|
||||||
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
index b78be3e6974d..58ce569b2ace 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
|
|
||||||
@@ -213,7 +213,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12B-ODROID-N2";
|
|
||||||
+ model = "ODROID-N2";
|
|
||||||
audio-widgets = "Line", "Lineout";
|
|
||||||
audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
|
|
||||||
<&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
|
|
||||||
index b57bb0befc69..0c7892600d56 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
|
|
||||||
@@ -23,7 +23,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12B-UGOOS-AM6";
|
|
||||||
+ model = "UGOOS-AM6";
|
|
||||||
audio-aux-devs = <&tdmout_b>;
|
|
||||||
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
|
||||||
index c2480bab8d33..2d7032f41e4b 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
|
||||||
@@ -186,7 +186,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXL-LIBRETECH-S9XX-PC";
|
|
||||||
+ model = "LIBRETECH-PC";
|
|
||||||
audio-aux-devs = <&dio2133>;
|
|
||||||
audio-widgets = "Speaker", "7J4-14 LEFT",
|
|
||||||
"Speaker", "7J4-11 RIGHT";
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
|
||||||
index 6b57e15aade3..dafc841f7c16 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
|
||||||
@@ -121,7 +121,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GX-P230-Q200";
|
|
||||||
+ model = "P230-Q200";
|
|
||||||
audio-aux-devs = <&dio2133>;
|
|
||||||
audio-widgets = "Line", "Lineout";
|
|
||||||
audio-routing = "AU2 INL", "ACODEC LOLP",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
|
|
||||||
index 089e0636ba8a..7273eed5292c 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
|
|
||||||
@@ -134,7 +134,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXBB-NANOPI-K2";
|
|
||||||
+ model = "NANOPI-K2";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
|
|
||||||
index b5b11cb9f393..f887bfb445fd 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
|
|
||||||
@@ -143,7 +143,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXBB-NEXBOX-A95X";
|
|
||||||
+ model = "NEXBOX-A95X";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
|
|
||||||
index c04ef57f7b3b..bfaf7f41a2d6 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
|
|
||||||
@@ -176,7 +176,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXBB-ODROID-C2";
|
|
||||||
+ model = "ODROID-C2";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts
|
|
||||||
index 0c1570153842..58733017eda8 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXBB-WETEK-HUB";
|
|
||||||
+ model = "WETEK-HUB";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts
|
|
||||||
index f2562c7de67c..6eae692792ec 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts
|
|
||||||
@@ -50,7 +50,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXBB-WETEK-PLAY2";
|
|
||||||
+ model = "WETEK-PLAY2";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts
|
|
||||||
index 9e43f4dca90d..2d769203f671 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts
|
|
||||||
@@ -118,7 +118,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXL-LIBRETECH-S805X-AC";
|
|
||||||
+ model = "LIBRETECH-AC";
|
|
||||||
audio-widgets = "Speaker", "9J5-3 LEFT",
|
|
||||||
"Speaker", "9J5-2 RIGHT";
|
|
||||||
audio-routing = "9J5-3 LEFT", "ACODEC LOLN",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
index 45adae480a3d..60feac0179c0 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
|
|
||||||
@@ -66,7 +66,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXL-KHADAS-VIM1";
|
|
||||||
+ model = "KHADAS-VIM";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts
|
|
||||||
index 9a3c08e6e6cc..93d8f8aff70d 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts
|
|
||||||
@@ -159,7 +159,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXL-LIBRETECH-S905X-CC-V2";
|
|
||||||
+ model = "LIBRETECH-CC-V2";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
|
|
||||||
index 5ae7bb6209cb..82bfabfbd39c 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
|
|
||||||
@@ -135,7 +135,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXL-LIBRETECH-S905X-CC";
|
|
||||||
+ model = "LIBRETECH-CC";
|
|
||||||
audio-aux-devs = <&dio2133>;
|
|
||||||
audio-widgets = "Line", "Lineout";
|
|
||||||
audio-routing = "AU2 INL", "ACODEC LOLN",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
index 25857e0c0831..18a4b7a6c5df 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
|
|
||||||
@@ -148,7 +148,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,gx-sound-card";
|
|
||||||
- model = "GXM-KHADAS-VIM2";
|
|
||||||
+ model = "KHADAS-VIM2";
|
|
||||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
|
||||||
<&clkc CLKID_MPLL1>,
|
|
||||||
<&clkc CLKID_MPLL2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
index 4e4c2f924486..f1706873d7a8 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
|
|
||||||
@@ -170,7 +170,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "G12B-KHADAS-VIM3";
|
|
||||||
+ model = "KHADAS-VIM3";
|
|
||||||
audio-aux-devs = <&tdmin_a>, <&tdmout_a>;
|
|
||||||
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
|
|
||||||
"TDMOUT_A IN 1", "FRDDR_B OUT 0",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
index a712273c905a..eadd75e6e067 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
@@ -190,7 +190,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "SM1-ODROID-C4";
|
|
||||||
+ model = "ODROID-C4";
|
|
||||||
audio-aux-devs = <&tdmout_b>;
|
|
||||||
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
index 039a8d0d1e9b..2194a778973f 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
|
|
||||||
@@ -220,7 +220,7 @@
|
|
||||||
|
|
||||||
sound {
|
|
||||||
compatible = "amlogic,axg-sound-card";
|
|
||||||
- model = "SM1-SEI610";
|
|
||||||
+ model = "SEI610";
|
|
||||||
audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
|
|
||||||
<&tdmin_a>, <&tdmin_b>;
|
|
||||||
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From a3fd9e94d211ec9cda74584e5828e76d6496c279 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Tue, 19 Jan 2021 15:34:53 +0000
|
|
||||||
Subject: [PATCH 14/88] FROMGIT: arm64: dts: meson: sort Amlogic dtb Makefile
|
|
||||||
|
|
||||||
Sort the Makefile before adding new SM1 devices.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/Makefile | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
index dce41cd3f347..f3c8a85fe987 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
@@ -45,7 +45,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
|
||||||
-dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,941 +0,0 @@
|
|||||||
From 8ae8a8444e462cca3927367af8ca36ab00dd5592 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Fri, 29 Jan 2021 02:10:14 +0000
|
|
||||||
Subject: [PATCH 15/88] FROMGIT: arm64: dts: meson: convert meson-sm1-odroid-c4
|
|
||||||
to dtsi
|
|
||||||
|
|
||||||
Convert the ODRIOD-C4 dts to meson-sm1-odroid.dtsi and C4 board dts in
|
|
||||||
preparation for adding additional C4 family boards.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
.../boot/dts/amlogic/meson-sm1-odroid-c4.dts | 427 +----------------
|
|
||||||
.../boot/dts/amlogic/meson-sm1-odroid.dtsi | 441 ++++++++++++++++++
|
|
||||||
2 files changed, 442 insertions(+), 426 deletions(-)
|
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
index eadd75e6e067..b2a4e823c1d8 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
|
||||||
@@ -5,34 +5,12 @@
|
|
||||||
|
|
||||||
/dts-v1/;
|
|
||||||
|
|
||||||
-#include "meson-sm1.dtsi"
|
|
||||||
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
|
|
||||||
-#include <dt-bindings/leds/common.h>
|
|
||||||
-#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
|
||||||
+#include "meson-sm1-odroid.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "hardkernel,odroid-c4", "amlogic,sm1";
|
|
||||||
model = "Hardkernel ODROID-C4";
|
|
||||||
|
|
||||||
- aliases {
|
|
||||||
- serial0 = &uart_AO;
|
|
||||||
- ethernet0 = ðmac;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- chosen {
|
|
||||||
- stdout-path = "serial0:115200n8";
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- memory@0 {
|
|
||||||
- device_type = "memory";
|
|
||||||
- reg = <0x0 0x0 0x0 0x40000000>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- emmc_pwrseq: emmc-pwrseq {
|
|
||||||
- compatible = "mmc-pwrseq-emmc";
|
|
||||||
- reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
leds {
|
|
||||||
compatible = "gpio-leds";
|
|
||||||
|
|
||||||
@@ -45,96 +23,6 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- tflash_vdd: regulator-tflash_vdd {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
-
|
|
||||||
- regulator-name = "TFLASH_VDD";
|
|
||||||
- regulator-min-microvolt = <3300000>;
|
|
||||||
- regulator-max-microvolt = <3300000>;
|
|
||||||
-
|
|
||||||
- gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>;
|
|
||||||
- enable-active-high;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- tf_io: gpio-regulator-tf_io {
|
|
||||||
- compatible = "regulator-gpio";
|
|
||||||
-
|
|
||||||
- regulator-name = "TF_IO";
|
|
||||||
- regulator-min-microvolt = <1800000>;
|
|
||||||
- regulator-max-microvolt = <3300000>;
|
|
||||||
-
|
|
||||||
- gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
|
|
||||||
- gpios-states = <0>;
|
|
||||||
-
|
|
||||||
- states = <3300000 0>,
|
|
||||||
- <1800000 1>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- flash_1v8: regulator-flash_1v8 {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "FLASH_1V8";
|
|
||||||
- regulator-min-microvolt = <1800000>;
|
|
||||||
- regulator-max-microvolt = <1800000>;
|
|
||||||
- vin-supply = <&vcc_3v3>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- main_12v: regulator-main_12v {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "12V";
|
|
||||||
- regulator-min-microvolt = <12000000>;
|
|
||||||
- regulator-max-microvolt = <12000000>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vcc_5v: regulator-vcc_5v {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "5V";
|
|
||||||
- regulator-min-microvolt = <5000000>;
|
|
||||||
- regulator-max-microvolt = <5000000>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- vin-supply = <&main_12v>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vcc_1v8: regulator-vcc_1v8 {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "VCC_1V8";
|
|
||||||
- regulator-min-microvolt = <1800000>;
|
|
||||||
- regulator-max-microvolt = <1800000>;
|
|
||||||
- vin-supply = <&vcc_3v3>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vcc_3v3: regulator-vcc_3v3 {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "VCC_3V3";
|
|
||||||
- regulator-min-microvolt = <3300000>;
|
|
||||||
- regulator-max-microvolt = <3300000>;
|
|
||||||
- vin-supply = <&vddao_3v3>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- /* FIXME: actually controlled by VDDCPU_B_EN */
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vddcpu: regulator-vddcpu {
|
|
||||||
- /*
|
|
||||||
- * MP8756GD Regulator.
|
|
||||||
- */
|
|
||||||
- compatible = "pwm-regulator";
|
|
||||||
-
|
|
||||||
- regulator-name = "VDDCPU";
|
|
||||||
- regulator-min-microvolt = <721000>;
|
|
||||||
- regulator-max-microvolt = <1022000>;
|
|
||||||
-
|
|
||||||
- vin-supply = <&main_12v>;
|
|
||||||
-
|
|
||||||
- pwms = <&pwm_AO_cd 1 1250 0>;
|
|
||||||
- pwm-dutycycle-range = <100 0>;
|
|
||||||
-
|
|
||||||
- regulator-boot-on;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
hub_5v: regulator-hub_5v {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "HUB_5V";
|
|
||||||
@@ -147,215 +35,12 @@
|
|
||||||
enable-active-high;
|
|
||||||
};
|
|
||||||
|
|
||||||
- usb_pwr_en: regulator-usb_pwr_en {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "USB_PWR_EN";
|
|
||||||
- regulator-min-microvolt = <5000000>;
|
|
||||||
- regulator-max-microvolt = <5000000>;
|
|
||||||
- vin-supply = <&vcc_5v>;
|
|
||||||
-
|
|
||||||
- /* Connected to the microUSB port power enable */
|
|
||||||
- gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
|
|
||||||
- enable-active-high;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vddao_1v8: regulator-vddao_1v8 {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "VDDAO_1V8";
|
|
||||||
- regulator-min-microvolt = <1800000>;
|
|
||||||
- regulator-max-microvolt = <1800000>;
|
|
||||||
- vin-supply = <&vddao_3v3>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- vddao_3v3: regulator-vddao_3v3 {
|
|
||||||
- compatible = "regulator-fixed";
|
|
||||||
- regulator-name = "VDDAO_3V3";
|
|
||||||
- regulator-min-microvolt = <3300000>;
|
|
||||||
- regulator-max-microvolt = <3300000>;
|
|
||||||
- vin-supply = <&main_12v>;
|
|
||||||
- regulator-always-on;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- hdmi-connector {
|
|
||||||
- compatible = "hdmi-connector";
|
|
||||||
- type = "a";
|
|
||||||
-
|
|
||||||
- port {
|
|
||||||
- hdmi_connector_in: endpoint {
|
|
||||||
- remote-endpoint = <&hdmi_tx_tmds_out>;
|
|
||||||
- };
|
|
||||||
- };
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
sound {
|
|
||||||
- compatible = "amlogic,axg-sound-card";
|
|
||||||
model = "ODROID-C4";
|
|
||||||
- audio-aux-devs = <&tdmout_b>;
|
|
||||||
- audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
- "TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
- "TDMOUT_B IN 2", "FRDDR_C OUT 1",
|
|
||||||
- "TDM_B Playback", "TDMOUT_B OUT";
|
|
||||||
-
|
|
||||||
- assigned-clocks = <&clkc CLKID_MPLL2>,
|
|
||||||
- <&clkc CLKID_MPLL0>,
|
|
||||||
- <&clkc CLKID_MPLL1>;
|
|
||||||
- assigned-clock-parents = <0>, <0>, <0>;
|
|
||||||
- assigned-clock-rates = <294912000>,
|
|
||||||
- <270950400>,
|
|
||||||
- <393216000>;
|
|
||||||
- status = "okay";
|
|
||||||
-
|
|
||||||
- dai-link-0 {
|
|
||||||
- sound-dai = <&frddr_a>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- dai-link-1 {
|
|
||||||
- sound-dai = <&frddr_b>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- dai-link-2 {
|
|
||||||
- sound-dai = <&frddr_c>;
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- /* 8ch hdmi interface */
|
|
||||||
- dai-link-3 {
|
|
||||||
- sound-dai = <&tdmif_b>;
|
|
||||||
- dai-format = "i2s";
|
|
||||||
- dai-tdm-slot-tx-mask-0 = <1 1>;
|
|
||||||
- dai-tdm-slot-tx-mask-1 = <1 1>;
|
|
||||||
- dai-tdm-slot-tx-mask-2 = <1 1>;
|
|
||||||
- dai-tdm-slot-tx-mask-3 = <1 1>;
|
|
||||||
- mclk-fs = <256>;
|
|
||||||
-
|
|
||||||
- codec {
|
|
||||||
- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
|
|
||||||
- };
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
- /* hdmi glue */
|
|
||||||
- dai-link-4 {
|
|
||||||
- sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
|
|
||||||
-
|
|
||||||
- codec {
|
|
||||||
- sound-dai = <&hdmi_tx>;
|
|
||||||
- };
|
|
||||||
- };
|
|
||||||
- };
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&arb {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&clkc_audio {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&cpu0 {
|
|
||||||
- cpu-supply = <&vddcpu>;
|
|
||||||
- operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
- clocks = <&clkc CLKID_CPU_CLK>;
|
|
||||||
- clock-latency = <50000>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&cpu1 {
|
|
||||||
- cpu-supply = <&vddcpu>;
|
|
||||||
- operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
- clocks = <&clkc CLKID_CPU1_CLK>;
|
|
||||||
- clock-latency = <50000>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&cpu2 {
|
|
||||||
- cpu-supply = <&vddcpu>;
|
|
||||||
- operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
- clocks = <&clkc CLKID_CPU2_CLK>;
|
|
||||||
- clock-latency = <50000>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&cpu3 {
|
|
||||||
- cpu-supply = <&vddcpu>;
|
|
||||||
- operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
- clocks = <&clkc CLKID_CPU3_CLK>;
|
|
||||||
- clock-latency = <50000>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&ext_mdio {
|
|
||||||
- external_phy: ethernet-phy@0 {
|
|
||||||
- /* Realtek RTL8211F (0x001cc916) */
|
|
||||||
- reg = <0>;
|
|
||||||
- max-speed = <1000>;
|
|
||||||
-
|
|
||||||
- interrupt-parent = <&gpio_intc>;
|
|
||||||
- /* MAC_INTR on GPIOZ_14 */
|
|
||||||
- interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
-ðmac {
|
|
||||||
- pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
- status = "okay";
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
- phy-handle = <&external_phy>;
|
|
||||||
- amlogic,tx-delay-ns = <2>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&frddr_a {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&frddr_b {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&frddr_c {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&gpio {
|
|
||||||
- gpio-line-names =
|
|
||||||
- /* GPIOZ */
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- /* GPIOH */
|
|
||||||
- "", "", "", "", "",
|
|
||||||
- "PIN_36", /* GPIOH_5 */
|
|
||||||
- "PIN_26", /* GPIOH_6 */
|
|
||||||
- "PIN_32", /* GPIOH_7 */
|
|
||||||
- "",
|
|
||||||
- /* BOOT */
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- /* GPIOC */
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- /* GPIOA */
|
|
||||||
- "", "", "", "", "", "", "", "",
|
|
||||||
- "", "", "", "", "", "",
|
|
||||||
- "PIN_27", /* GPIOA_14 */
|
|
||||||
- "PIN_28", /* GPIOA_15 */
|
|
||||||
- /* GPIOX */
|
|
||||||
- "PIN_16", /* GPIOX_0 */
|
|
||||||
- "PIN_18", /* GPIOX_1 */
|
|
||||||
- "PIN_22", /* GPIOX_2 */
|
|
||||||
- "PIN_11", /* GPIOX_3 */
|
|
||||||
- "PIN_13", /* GPIOX_4 */
|
|
||||||
- "PIN_7", /* GPIOX_5 */
|
|
||||||
- "PIN_33", /* GPIOX_6 */
|
|
||||||
- "PIN_15", /* GPIOX_7 */
|
|
||||||
- "PIN_19", /* GPIOX_8 */
|
|
||||||
- "PIN_21", /* GPIOX_9 */
|
|
||||||
- "PIN_24", /* GPIOX_10 */
|
|
||||||
- "PIN_23", /* GPIOX_11 */
|
|
||||||
- "PIN_8", /* GPIOX_12 */
|
|
||||||
- "PIN_10", /* GPIOX_13 */
|
|
||||||
- "PIN_29", /* GPIOX_14 */
|
|
||||||
- "PIN_31", /* GPIOX_15 */
|
|
||||||
- "PIN_12", /* GPIOX_16 */
|
|
||||||
- "PIN_3", /* GPIOX_17 */
|
|
||||||
- "PIN_5", /* GPIOX_18 */
|
|
||||||
- "PIN_35"; /* GPIOX_19 */
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* WARNING: The USB Hub on the Odroid-C4 needs a reset signal
|
|
||||||
* to be turned high in order to be detected by the USB Controller
|
|
||||||
@@ -370,120 +55,10 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
-&gpio_ao {
|
|
||||||
- gpio-line-names =
|
|
||||||
- /* GPIOAO */
|
|
||||||
- "", "", "", "",
|
|
||||||
- "PIN_47", /* GPIOAO_4 */
|
|
||||||
- "", "",
|
|
||||||
- "PIN_45", /* GPIOAO_7 */
|
|
||||||
- "PIN_46", /* GPIOAO_8 */
|
|
||||||
- "PIN_44", /* GPIOAO_9 */
|
|
||||||
- "PIN_42", /* GPIOAO_10 */
|
|
||||||
- "",
|
|
||||||
- /* GPIOE */
|
|
||||||
- "", "", "";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&hdmi_tx {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
- hdmi-supply = <&vcc_5v>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&hdmi_tx_tmds_port {
|
|
||||||
- hdmi_tx_tmds_out: endpoint {
|
|
||||||
- remote-endpoint = <&hdmi_connector_in>;
|
|
||||||
- };
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&ir {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&remote_input_ao_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
linux,rc-map-name = "rc-odroid";
|
|
||||||
};
|
|
||||||
|
|
||||||
-&pwm_AO_cd {
|
|
||||||
- pinctrl-0 = <&pwm_ao_d_e_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
- clocks = <&xtal>;
|
|
||||||
- clock-names = "clkin1";
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&saradc {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-/* SD card */
|
|
||||||
-&sd_emmc_b {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&sdcard_c_pins>;
|
|
||||||
- pinctrl-1 = <&sdcard_clk_gate_c_pins>;
|
|
||||||
- pinctrl-names = "default", "clk-gate";
|
|
||||||
-
|
|
||||||
- bus-width = <4>;
|
|
||||||
- cap-sd-highspeed;
|
|
||||||
- max-frequency = <200000000>;
|
|
||||||
- sd-uhs-sdr12;
|
|
||||||
- sd-uhs-sdr25;
|
|
||||||
- sd-uhs-sdr50;
|
|
||||||
- sd-uhs-sdr104;
|
|
||||||
- disable-wp;
|
|
||||||
-
|
|
||||||
- cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
|
|
||||||
- vmmc-supply = <&tflash_vdd>;
|
|
||||||
- vqmmc-supply = <&tf_io>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-/* eMMC */
|
|
||||||
-&sd_emmc_c {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
|
|
||||||
- pinctrl-1 = <&emmc_clk_gate_pins>;
|
|
||||||
- pinctrl-names = "default", "clk-gate";
|
|
||||||
-
|
|
||||||
- bus-width = <8>;
|
|
||||||
- cap-mmc-highspeed;
|
|
||||||
- mmc-ddr-1_8v;
|
|
||||||
- mmc-hs200-1_8v;
|
|
||||||
- max-frequency = <200000000>;
|
|
||||||
- disable-wp;
|
|
||||||
-
|
|
||||||
- mmc-pwrseq = <&emmc_pwrseq>;
|
|
||||||
- vmmc-supply = <&vcc_3v3>;
|
|
||||||
- vqmmc-supply = <&flash_1v8>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&tdmif_b {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&tdmout_b {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&tohdmitx {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&uart_AO {
|
|
||||||
- status = "okay";
|
|
||||||
- pinctrl-0 = <&uart_ao_a_pins>;
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&usb {
|
|
||||||
- status = "okay";
|
|
||||||
- vbus-supply = <&usb_pwr_en>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
-&usb2_phy0 {
|
|
||||||
- phy-supply = <&vcc_5v>;
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&usb2_phy1 {
|
|
||||||
/* Enable the hub which is connected to this port */
|
|
||||||
phy-supply = <&hub_5v>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..a66d55d93183
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
|
|
||||||
@@ -0,0 +1,441 @@
|
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include "meson-sm1.dtsi"
|
|
||||||
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
|
|
||||||
+#include <dt-bindings/leds/common.h>
|
|
||||||
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ aliases {
|
|
||||||
+ serial0 = &uart_AO;
|
|
||||||
+ ethernet0 = ðmac;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ memory@0 {
|
|
||||||
+ device_type = "memory";
|
|
||||||
+ reg = <0x0 0x0 0x0 0x40000000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ emmc_pwrseq: emmc-pwrseq {
|
|
||||||
+ compatible = "mmc-pwrseq-emmc";
|
|
||||||
+ reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ tflash_vdd: regulator-tflash_vdd {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+
|
|
||||||
+ regulator-name = "TFLASH_VDD";
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+
|
|
||||||
+ gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>;
|
|
||||||
+ enable-active-high;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ tf_io: gpio-regulator-tf_io {
|
|
||||||
+ compatible = "regulator-gpio";
|
|
||||||
+
|
|
||||||
+ regulator-name = "TF_IO";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ gpios-states = <0>;
|
|
||||||
+
|
|
||||||
+ states = <3300000 0>,
|
|
||||||
+ <1800000 1>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ flash_1v8: regulator-flash_1v8 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "FLASH_1V8";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ vin-supply = <&vcc_3v3>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ main_12v: regulator-main_12v {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "12V";
|
|
||||||
+ regulator-min-microvolt = <12000000>;
|
|
||||||
+ regulator-max-microvolt = <12000000>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc_5v: regulator-vcc_5v {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "5V";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ vin-supply = <&main_12v>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc_1v8: regulator-vcc_1v8 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "VCC_1V8";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ vin-supply = <&vcc_3v3>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc_3v3: regulator-vcc_3v3 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "VCC_3V3";
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+ vin-supply = <&vddao_3v3>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ /* FIXME: actually controlled by VDDCPU_B_EN */
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vddcpu: regulator-vddcpu {
|
|
||||||
+ /*
|
|
||||||
+ * MP8756GD Regulator.
|
|
||||||
+ */
|
|
||||||
+ compatible = "pwm-regulator";
|
|
||||||
+
|
|
||||||
+ regulator-name = "VDDCPU";
|
|
||||||
+ regulator-min-microvolt = <721000>;
|
|
||||||
+ regulator-max-microvolt = <1022000>;
|
|
||||||
+
|
|
||||||
+ vin-supply = <&main_12v>;
|
|
||||||
+
|
|
||||||
+ pwms = <&pwm_AO_cd 1 1250 0>;
|
|
||||||
+ pwm-dutycycle-range = <100 0>;
|
|
||||||
+
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ usb_pwr_en: regulator-usb_pwr_en {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "USB_PWR_EN";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ vin-supply = <&vcc_5v>;
|
|
||||||
+
|
|
||||||
+ /* Connected to the microUSB port power enable */
|
|
||||||
+ gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ enable-active-high;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vddao_1v8: regulator-vddao_1v8 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "VDDAO_1V8";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ vin-supply = <&vddao_3v3>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vddao_3v3: regulator-vddao_3v3 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "VDDAO_3V3";
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+ vin-supply = <&main_12v>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ hdmi-connector {
|
|
||||||
+ compatible = "hdmi-connector";
|
|
||||||
+ type = "a";
|
|
||||||
+
|
|
||||||
+ port {
|
|
||||||
+ hdmi_connector_in: endpoint {
|
|
||||||
+ remote-endpoint = <&hdmi_tx_tmds_out>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sound {
|
|
||||||
+ compatible = "amlogic,axg-sound-card";
|
|
||||||
+ audio-aux-devs = <&tdmout_b>;
|
|
||||||
+ audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
|
|
||||||
+ "TDMOUT_B IN 1", "FRDDR_B OUT 1",
|
|
||||||
+ "TDMOUT_B IN 2", "FRDDR_C OUT 1",
|
|
||||||
+ "TDM_B Playback", "TDMOUT_B OUT";
|
|
||||||
+
|
|
||||||
+ assigned-clocks = <&clkc CLKID_MPLL2>,
|
|
||||||
+ <&clkc CLKID_MPLL0>,
|
|
||||||
+ <&clkc CLKID_MPLL1>;
|
|
||||||
+
|
|
||||||
+ assigned-clock-parents = <0>, <0>, <0>;
|
|
||||||
+ assigned-clock-rates = <294912000>,
|
|
||||||
+ <270950400>,
|
|
||||||
+ <393216000>;
|
|
||||||
+ status = "okay";
|
|
||||||
+
|
|
||||||
+ dai-link-0 {
|
|
||||||
+ sound-dai = <&frddr_a>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-1 {
|
|
||||||
+ sound-dai = <&frddr_b>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ dai-link-2 {
|
|
||||||
+ sound-dai = <&frddr_c>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ /* 8ch hdmi interface */
|
|
||||||
+ dai-link-3 {
|
|
||||||
+ sound-dai = <&tdmif_b>;
|
|
||||||
+ dai-format = "i2s";
|
|
||||||
+ dai-tdm-slot-tx-mask-0 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-1 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-2 = <1 1>;
|
|
||||||
+ dai-tdm-slot-tx-mask-3 = <1 1>;
|
|
||||||
+ mclk-fs = <256>;
|
|
||||||
+
|
|
||||||
+ codec {
|
|
||||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ /* hdmi glue */
|
|
||||||
+ dai-link-4 {
|
|
||||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
|
|
||||||
+ codec {
|
|
||||||
+ sound-dai = <&hdmi_tx>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&arb {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&clkc_audio {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu0 {
|
|
||||||
+ cpu-supply = <&vddcpu>;
|
|
||||||
+ operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
+ clocks = <&clkc CLKID_CPU_CLK>;
|
|
||||||
+ clock-latency = <50000>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu1 {
|
|
||||||
+ cpu-supply = <&vddcpu>;
|
|
||||||
+ operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
+ clocks = <&clkc CLKID_CPU1_CLK>;
|
|
||||||
+ clock-latency = <50000>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu2 {
|
|
||||||
+ cpu-supply = <&vddcpu>;
|
|
||||||
+ operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
+ clocks = <&clkc CLKID_CPU2_CLK>;
|
|
||||||
+ clock-latency = <50000>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu3 {
|
|
||||||
+ cpu-supply = <&vddcpu>;
|
|
||||||
+ operating-points-v2 = <&cpu_opp_table>;
|
|
||||||
+ clocks = <&clkc CLKID_CPU3_CLK>;
|
|
||||||
+ clock-latency = <50000>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ext_mdio {
|
|
||||||
+ external_phy: ethernet-phy@0 {
|
|
||||||
+ /* Realtek RTL8211F (0x001cc916) */
|
|
||||||
+ reg = <0>;
|
|
||||||
+ max-speed = <1000>;
|
|
||||||
+
|
|
||||||
+ interrupt-parent = <&gpio_intc>;
|
|
||||||
+ /* MAC_INTR on GPIOZ_14 */
|
|
||||||
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+ðmac {
|
|
||||||
+ pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ status = "okay";
|
|
||||||
+ phy-mode = "rgmii";
|
|
||||||
+ phy-handle = <&external_phy>;
|
|
||||||
+ amlogic,tx-delay-ns = <2>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_a {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&frddr_c {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&gpio {
|
|
||||||
+ gpio-line-names =
|
|
||||||
+ /* GPIOZ */
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ /* GPIOH */
|
|
||||||
+ "", "", "", "", "",
|
|
||||||
+ "PIN_36", /* GPIOH_5 */
|
|
||||||
+ "PIN_26", /* GPIOH_6 */
|
|
||||||
+ "PIN_32", /* GPIOH_7 */
|
|
||||||
+ "",
|
|
||||||
+ /* BOOT */
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ /* GPIOC */
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ /* GPIOA */
|
|
||||||
+ "", "", "", "", "", "", "", "",
|
|
||||||
+ "", "", "", "", "", "",
|
|
||||||
+ "PIN_27", /* GPIOA_14 */
|
|
||||||
+ "PIN_28", /* GPIOA_15 */
|
|
||||||
+ /* GPIOX */
|
|
||||||
+ "PIN_16", /* GPIOX_0 */
|
|
||||||
+ "PIN_18", /* GPIOX_1 */
|
|
||||||
+ "PIN_22", /* GPIOX_2 */
|
|
||||||
+ "PIN_11", /* GPIOX_3 */
|
|
||||||
+ "PIN_13", /* GPIOX_4 */
|
|
||||||
+ "PIN_7", /* GPIOX_5 */
|
|
||||||
+ "PIN_33", /* GPIOX_6 */
|
|
||||||
+ "PIN_15", /* GPIOX_7 */
|
|
||||||
+ "PIN_19", /* GPIOX_8 */
|
|
||||||
+ "PIN_21", /* GPIOX_9 */
|
|
||||||
+ "PIN_24", /* GPIOX_10 */
|
|
||||||
+ "PIN_23", /* GPIOX_11 */
|
|
||||||
+ "PIN_8", /* GPIOX_12 */
|
|
||||||
+ "PIN_10", /* GPIOX_13 */
|
|
||||||
+ "PIN_29", /* GPIOX_14 */
|
|
||||||
+ "PIN_31", /* GPIOX_15 */
|
|
||||||
+ "PIN_12", /* GPIOX_16 */
|
|
||||||
+ "PIN_3", /* GPIOX_17 */
|
|
||||||
+ "PIN_5", /* GPIOX_18 */
|
|
||||||
+ "PIN_35"; /* GPIOX_19 */
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&gpio_ao {
|
|
||||||
+ gpio-line-names =
|
|
||||||
+ /* GPIOAO */
|
|
||||||
+ "", "", "", "",
|
|
||||||
+ "PIN_47", /* GPIOAO_4 */
|
|
||||||
+ "", "",
|
|
||||||
+ "PIN_45", /* GPIOAO_7 */
|
|
||||||
+ "PIN_46", /* GPIOAO_8 */
|
|
||||||
+ "PIN_44", /* GPIOAO_9 */
|
|
||||||
+ "PIN_42", /* GPIOAO_10 */
|
|
||||||
+ "",
|
|
||||||
+ /* GPIOE */
|
|
||||||
+ "", "", "";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&hdmi_tx {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ hdmi-supply = <&vcc_5v>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&hdmi_tx_tmds_port {
|
|
||||||
+ hdmi_tx_tmds_out: endpoint {
|
|
||||||
+ remote-endpoint = <&hdmi_connector_in>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ir {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&remote_input_ao_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pwm_AO_cd {
|
|
||||||
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ clocks = <&xtal>;
|
|
||||||
+ clock-names = "clkin1";
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&saradc {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/* SD card */
|
|
||||||
+&sd_emmc_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&sdcard_c_pins>;
|
|
||||||
+ pinctrl-1 = <&sdcard_clk_gate_c_pins>;
|
|
||||||
+ pinctrl-names = "default", "clk-gate";
|
|
||||||
+
|
|
||||||
+ bus-width = <4>;
|
|
||||||
+ cap-sd-highspeed;
|
|
||||||
+ max-frequency = <200000000>;
|
|
||||||
+ sd-uhs-sdr12;
|
|
||||||
+ sd-uhs-sdr25;
|
|
||||||
+ sd-uhs-sdr50;
|
|
||||||
+ sd-uhs-sdr104;
|
|
||||||
+ disable-wp;
|
|
||||||
+
|
|
||||||
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
|
|
||||||
+ vmmc-supply = <&tflash_vdd>;
|
|
||||||
+ vqmmc-supply = <&tf_io>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/* eMMC */
|
|
||||||
+&sd_emmc_c {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
|
|
||||||
+ pinctrl-1 = <&emmc_clk_gate_pins>;
|
|
||||||
+ pinctrl-names = "default", "clk-gate";
|
|
||||||
+
|
|
||||||
+ bus-width = <8>;
|
|
||||||
+ cap-mmc-highspeed;
|
|
||||||
+ mmc-ddr-1_8v;
|
|
||||||
+ mmc-hs200-1_8v;
|
|
||||||
+ max-frequency = <200000000>;
|
|
||||||
+ disable-wp;
|
|
||||||
+
|
|
||||||
+ mmc-pwrseq = <&emmc_pwrseq>;
|
|
||||||
+ vmmc-supply = <&vcc_3v3>;
|
|
||||||
+ vqmmc-supply = <&flash_1v8>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tdmif_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tdmout_b {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&tohdmitx {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&uart_AO {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&uart_ao_a_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usb {
|
|
||||||
+ status = "okay";
|
|
||||||
+ vbus-supply = <&usb_pwr_en>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usb2_phy0 {
|
|
||||||
+ phy-supply = <&vcc_5v>;
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,137 +0,0 @@
|
|||||||
From dfd0471eb3cb255d376c901574768213183e8765 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Fri, 29 Jan 2021 02:12:43 +0000
|
|
||||||
Subject: [PATCH 16/88] FROMGIT: arm64: dts: meson: add initial device-tree for
|
|
||||||
ODROID-HC4
|
|
||||||
|
|
||||||
ODROID-HC4 is a derivative of the C4 with minor differences:
|
|
||||||
|
|
||||||
- 16MB SPI-NOR flash
|
|
||||||
- 2x SATA ports via ASM1061 PCIe to SATA controller
|
|
||||||
- 7-pin header with SPI and I2C for 1-inch OLED display and RTC
|
|
||||||
- 1x USB 2.0 host port
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
|
||||||
.../boot/dts/amlogic/meson-sm1-odroid-hc4.dts | 96 +++++++++++++++++++
|
|
||||||
2 files changed, 97 insertions(+)
|
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
index f3c8a85fe987..78a569d7fa20 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
@@ -47,5 +47,6 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..bf15700c4b15
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
|
|
||||||
@@ -0,0 +1,96 @@
|
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/dts-v1/;
|
|
||||||
+
|
|
||||||
+#include "meson-sm1-odroid.dtsi"
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ compatible = "hardkernel,odroid-hc4", "amlogic,sm1";
|
|
||||||
+ model = "Hardkernel ODROID-HC4";
|
|
||||||
+
|
|
||||||
+ aliases {
|
|
||||||
+ rtc0 = &rtc;
|
|
||||||
+ rtc1 = &vrtc;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ fan0: pwm-fan {
|
|
||||||
+ compatible = "pwm-fan";
|
|
||||||
+ #cooling-cells = <2>;
|
|
||||||
+ cooling-min-state = <0>;
|
|
||||||
+ cooling-max-state = <3>;
|
|
||||||
+ cooling-levels = <0 120 170 220>;
|
|
||||||
+ pwms = <&pwm_cd 1 40000 0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ leds {
|
|
||||||
+ compatible = "gpio-leds";
|
|
||||||
+
|
|
||||||
+ led-blue {
|
|
||||||
+ color = <LED_COLOR_ID_BLUE>;
|
|
||||||
+ function = LED_FUNCTION_STATUS;
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ linux,default-trigger = "heartbeat";
|
|
||||||
+ panic-indicator;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ led-red {
|
|
||||||
+ color = <LED_COLOR_ID_RED>;
|
|
||||||
+ function = LED_FUNCTION_POWER;
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ default-state = "on";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sound {
|
|
||||||
+ model = "ODROID-HC4";
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_thermal {
|
|
||||||
+ cooling-maps {
|
|
||||||
+ map {
|
|
||||||
+ trip = <&cpu_passive>;
|
|
||||||
+ cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ir {
|
|
||||||
+ linux,rc-map-name = "rc-odroid";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c2 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+
|
|
||||||
+ rtc: rtc@51 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ compatible = "nxp,pcf8563";
|
|
||||||
+ reg = <0x51>;
|
|
||||||
+ wakeup-source;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie {
|
|
||||||
+ status = "okay";
|
|
||||||
+ reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pwm_cd {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pwm_d_x6_pins>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sd_emmc_c {
|
|
||||||
+ status = "disabled";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usb {
|
|
||||||
+ phys = <&usb2_phy0>, <&usb2_phy1>;
|
|
||||||
+ phy-names = "usb2-phy0", "usb2-phy1";
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,174 +0,0 @@
|
|||||||
From 08dba4427036ff0544670a4a2fd0127236a8abff Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Tue, 19 Jan 2021 12:57:11 +0000
|
|
||||||
Subject: [PATCH 17/88] FROMGIT: arm64: dts: meson: add initial device-tree for
|
|
||||||
Minix NEO U9-H
|
|
||||||
|
|
||||||
Minix NEO U9-H is based on the Amlogic Q200 reference board with an
|
|
||||||
S912-H chip and the following specs:
|
|
||||||
|
|
||||||
- 2GB DDR3 RAM
|
|
||||||
- 16GB eMMC
|
|
||||||
- 10/100/1000 Base-T Ethernet
|
|
||||||
- AP6356S Wireless (802.11 a/b/g/n/ac, BT 4.1)
|
|
||||||
- RTC chip
|
|
||||||
- HDMI 2.1 video
|
|
||||||
- S/PDIF optical output
|
|
||||||
- ES8323 audio codec
|
|
||||||
- Analogue headphone output
|
|
||||||
- 3x USB 2.0 ports (1x OTG)
|
|
||||||
- IR receiver
|
|
||||||
- 1x Power LED (white)
|
|
||||||
- 1x Power button (rear)
|
|
||||||
- 1x Update/Reset button (underside)
|
|
||||||
- 1x micro SD card slot
|
|
||||||
|
|
||||||
Tested-by: Wes Bradley <komplex@live.ie>
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
|
||||||
.../dts/amlogic/meson-gxm-minix-neo-u9h.dts | 120 ++++++++++++++++++
|
|
||||||
2 files changed, 121 insertions(+)
|
|
||||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
index 78a569d7fa20..aebd49c88719 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
|
||||||
@@ -38,6 +38,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-p281.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-tx3-mini.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-libretech-pc.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_MESON) += meson-gxm-minix-neo-u9h.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-nexbox-a1.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q201.dtb
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..a414cd39c2b1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-minix-neo-u9h.dts
|
|
||||||
@@ -0,0 +1,120 @@
|
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/dts-v1/;
|
|
||||||
+
|
|
||||||
+#include "meson-gxm.dtsi"
|
|
||||||
+#include "meson-gx-p23x-q20x.dtsi"
|
|
||||||
+#include <dt-bindings/input/input.h>
|
|
||||||
+#include <dt-bindings/leds/common.h>
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ compatible = "minix,neo-u9h", "amlogic,s912", "amlogic,meson-gxm";
|
|
||||||
+ model = "Minix Neo U9-H";
|
|
||||||
+
|
|
||||||
+ leds {
|
|
||||||
+ compatible = "gpio-leds";
|
|
||||||
+
|
|
||||||
+ white {
|
|
||||||
+ color = <LED_COLOR_ID_WHITE>;
|
|
||||||
+ function = LED_FUNCTION_POWER;
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ default-state = "on";
|
|
||||||
+ panic-indicator;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ adc-keys {
|
|
||||||
+ compatible = "adc-keys";
|
|
||||||
+ io-channels = <&saradc 0>;
|
|
||||||
+ io-channel-names = "buttons";
|
|
||||||
+ keyup-threshold-microvolt = <1710000>;
|
|
||||||
+
|
|
||||||
+ button-function {
|
|
||||||
+ label = "update";
|
|
||||||
+ linux,code = <KEY_VENDOR>;
|
|
||||||
+ press-threshold-microvolt = <10000>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ gpio-keys-polled {
|
|
||||||
+ compatible = "gpio-keys-polled";
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
+ poll-interval = <100>;
|
|
||||||
+
|
|
||||||
+ button@0 {
|
|
||||||
+ label = "power";
|
|
||||||
+ linux,code = <KEY_POWER>;
|
|
||||||
+ gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+ðmac {
|
|
||||||
+ pinctrl-0 = <ð_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ phy-handle = <&external_phy>;
|
|
||||||
+ amlogic,tx-delay-ns = <2>;
|
|
||||||
+ phy-mode = "rgmii";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&external_mdio {
|
|
||||||
+ external_phy: ethernet-phy@0 {
|
|
||||||
+ /* Realtek RTL8211F (0x001cc916) */
|
|
||||||
+ reg = <0>;
|
|
||||||
+ max-speed = <1000>;
|
|
||||||
+
|
|
||||||
+ reset-assert-us = <10000>;
|
|
||||||
+ reset-deassert-us = <80000>;
|
|
||||||
+ reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
|
|
||||||
+
|
|
||||||
+ interrupt-parent = <&gpio_intc>;
|
|
||||||
+ /* MAC_INTR on GPIOZ_15 */
|
|
||||||
+ interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ir {
|
|
||||||
+ linux,rc-map-name = "rc-minix-neo";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c_B {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&i2c_b_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+
|
|
||||||
+ rtc: rtc@51 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ compatible = "haoyu,hym8563";
|
|
||||||
+ reg = <0x51>;
|
|
||||||
+ #clock-cells = <0>;
|
|
||||||
+ clock-frequency = <32768>;
|
|
||||||
+ clock-output-names = "xin32k";
|
|
||||||
+ wakeup-source;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sd_emmc_a {
|
|
||||||
+ brcmf: wifi@1 {
|
|
||||||
+ reg = <1>;
|
|
||||||
+ compatible = "brcm,bcm4329-fmac";
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&uart_A {
|
|
||||||
+ status = "okay";
|
|
||||||
+ pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ uart-has-rtscts;
|
|
||||||
+
|
|
||||||
+ bluetooth {
|
|
||||||
+ compatible = "brcm,bcm43438-bt";
|
|
||||||
+ shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ max-speed = <2000000>;
|
|
||||||
+ clocks = <&wifi32k>;
|
|
||||||
+ clock-names = "lpo";
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 5735377a099b9eb5f9f0a36ebd43f0c429b8addf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Fri, 29 Jan 2021 04:46:21 +0000
|
|
||||||
Subject: [PATCH 18/88] FROMGIT: dt-bindings: arm: amlogic: add support for the
|
|
||||||
Minix NEO U9-H
|
|
||||||
|
|
||||||
The Minix NEO U9-H is a small form-factor Android STB based on the
|
|
||||||
Amlogic Q200 reference board with an S912-H chip.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
index 3341788d1096..860a456f7858 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
@@ -120,6 +120,7 @@ properties:
|
|
||||||
- khadas,vim2
|
|
||||||
- kingnovel,r-box-pro
|
|
||||||
- libretech,aml-s912-pc
|
|
||||||
+ - minix,neo-u9h
|
|
||||||
- nexbox,a1
|
|
||||||
- tronsmart,vega-s96
|
|
||||||
- wetek,core2
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
|||||||
From 3be6c1ed0ae21099b733ce16c709fad3061994ea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Date: Sat, 14 Nov 2020 17:37:09 +0100
|
|
||||||
Subject: [PATCH 19/88] FROMGIT: dt-bindings: net: dwmac-meson: use picoseconds
|
|
||||||
for the RGMII RX delay
|
|
||||||
|
|
||||||
Amlogic Meson G12A, G12B and SM1 SoCs have a more advanced RGMII RX
|
|
||||||
delay register which allows picoseconds precision. Deprecate the old
|
|
||||||
"amlogic,rx-delay-ns" in favour of the generic "rx-internal-delay-ps"
|
|
||||||
property.
|
|
||||||
|
|
||||||
For older SoCs the only known supported values were 0ns and 2ns. The new
|
|
||||||
SoCs have support for RGMII RX delays between 0ps and 3000ps in 200ps
|
|
||||||
steps.
|
|
||||||
|
|
||||||
Don't carry over the description for the "rx-internal-delay-ps" property
|
|
||||||
and inherit that from ethernet-controller.yaml instead.
|
|
||||||
|
|
||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
.../bindings/net/amlogic,meson-dwmac.yaml | 55 +++++++++++++++++--
|
|
||||||
1 file changed, 49 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
|
||||||
index 1f133f4a2924..0467441d7037 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
|
||||||
@@ -74,17 +74,60 @@ allOf:
|
|
||||||
Any configuration is ignored when the phy-mode is set to "rmii".
|
|
||||||
|
|
||||||
amlogic,rx-delay-ns:
|
|
||||||
+ deprecated: true
|
|
||||||
enum:
|
|
||||||
- 0
|
|
||||||
- 2
|
|
||||||
default: 0
|
|
||||||
description:
|
|
||||||
- The internal RGMII RX clock delay (provided by this IP block) in
|
|
||||||
- nanoseconds. When phy-mode is set to "rgmii" then the RX delay
|
|
||||||
- should be explicitly configured. When the phy-mode is set to
|
|
||||||
- either "rgmii-id" or "rgmii-rxid" the RX clock delay is already
|
|
||||||
- provided by the PHY. Any configuration is ignored when the
|
|
||||||
- phy-mode is set to "rmii".
|
|
||||||
+ The internal RGMII RX clock delay in nanoseconds. Deprecated, use
|
|
||||||
+ rx-internal-delay-ps instead.
|
|
||||||
+
|
|
||||||
+ rx-internal-delay-ps:
|
|
||||||
+ default: 0
|
|
||||||
+
|
|
||||||
+ - if:
|
|
||||||
+ properties:
|
|
||||||
+ compatible:
|
|
||||||
+ contains:
|
|
||||||
+ enum:
|
|
||||||
+ - amlogic,meson8b-dwmac
|
|
||||||
+ - amlogic,meson8m2-dwmac
|
|
||||||
+ - amlogic,meson-gxbb-dwmac
|
|
||||||
+ - amlogic,meson-axg-dwmac
|
|
||||||
+ then:
|
|
||||||
+ properties:
|
|
||||||
+ rx-internal-delay-ps:
|
|
||||||
+ enum:
|
|
||||||
+ - 0
|
|
||||||
+ - 2000
|
|
||||||
+
|
|
||||||
+ - if:
|
|
||||||
+ properties:
|
|
||||||
+ compatible:
|
|
||||||
+ contains:
|
|
||||||
+ enum:
|
|
||||||
+ - amlogic,meson-g12a-dwmac
|
|
||||||
+ then:
|
|
||||||
+ properties:
|
|
||||||
+ rx-internal-delay-ps:
|
|
||||||
+ enum:
|
|
||||||
+ - 0
|
|
||||||
+ - 200
|
|
||||||
+ - 400
|
|
||||||
+ - 600
|
|
||||||
+ - 800
|
|
||||||
+ - 1000
|
|
||||||
+ - 1200
|
|
||||||
+ - 1400
|
|
||||||
+ - 1600
|
|
||||||
+ - 1800
|
|
||||||
+ - 2000
|
|
||||||
+ - 2200
|
|
||||||
+ - 2400
|
|
||||||
+ - 2600
|
|
||||||
+ - 2800
|
|
||||||
+ - 3000
|
|
||||||
|
|
||||||
properties:
|
|
||||||
compatible:
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From cf2108617180aa24416089735fa49bfba7dca5c7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Fri, 12 Jun 2020 08:04:00 +0000
|
|
||||||
Subject: [PATCH 20/88] FROMGIT: dt-bindings: arm: amlogic: add support for the
|
|
||||||
Beelink GS-King-X
|
|
||||||
|
|
||||||
The Shenzen AZW (Beelink) GS-King-X is based on the Amlogic W400 reference
|
|
||||||
board with an S922X-H chip.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Acked-by: Rob Herring <robh@kernel.org>
|
|
||||||
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
index 860a456f7858..dccfc048fb1c 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
@@ -152,6 +152,7 @@ properties:
|
|
||||||
- description: Boards with the Amlogic Meson G12B S922X SoC
|
|
||||||
items:
|
|
||||||
- enum:
|
|
||||||
+ - azw,gsking-x
|
|
||||||
- azw,gtking
|
|
||||||
- azw,gtking-pro
|
|
||||||
- hardkernel,odroid-n2
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From 96bb0e73cb58befe53b8b3783d258f9db38cd70e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Tue, 19 Jan 2021 15:32:38 +0000
|
|
||||||
Subject: [PATCH 21/88] FROMGIT: dt-bindings: arm: amlogic: sort SM1 bindings
|
|
||||||
|
|
||||||
Sort the bindings before adding new SM1 devices.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/arm/amlogic.yaml | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
index dccfc048fb1c..35995a1f97db 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
@@ -165,9 +165,9 @@ properties:
|
|
||||||
- description: Boards with the Amlogic Meson SM1 S905X3/D3/Y3 SoC
|
|
||||||
items:
|
|
||||||
- enum:
|
|
||||||
- - seirobotics,sei610
|
|
||||||
- - khadas,vim3l
|
|
||||||
- hardkernel,odroid-c4
|
|
||||||
+ - khadas,vim3l
|
|
||||||
+ - seirobotics,sei610
|
|
||||||
- const: amlogic,sm1
|
|
||||||
|
|
||||||
- description: Boards with the Amlogic Meson A1 A113L SoC
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From 281f759bb1ad6bad61f045c3b2a6f6ed1db16ed1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Sat, 12 Dec 2020 05:44:14 +0000
|
|
||||||
Subject: [PATCH 22/88] FROMGIT: dt-bindings: arm: amlogic: add ODROID-HC4
|
|
||||||
bindings
|
|
||||||
|
|
||||||
Add the board bindings for the ODROID-HC4 device.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
index 35995a1f97db..d24334e1e166 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
|
||||||
@@ -166,6 +166,7 @@ properties:
|
|
||||||
items:
|
|
||||||
- enum:
|
|
||||||
- hardkernel,odroid-c4
|
|
||||||
+ - hardkernel,odroid-hc4
|
|
||||||
- khadas,vim3l
|
|
||||||
- seirobotics,sei610
|
|
||||||
- const: amlogic,sm1
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
From e093d955d72107cc92008e0813e5e2cc7015fd9f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
Date: Sun, 24 Jan 2021 03:57:47 +0000
|
|
||||||
Subject: [PATCH 23/88] FROMGIT: drm/panfrost: add governor data with
|
|
||||||
pre-defined thresholds
|
|
||||||
|
|
||||||
The simple_ondemand devfreq governor uses two thresholds to decide about
|
|
||||||
the frequency change: upthreshold, downdifferential. These two tunable
|
|
||||||
change the behavior of the governor decision, e.g. how fast to increase
|
|
||||||
the frequency or how rapidly limit the frequency. This patch adds needed
|
|
||||||
governor data with thresholds values gathered experimentally in different
|
|
||||||
workloads.
|
|
||||||
|
|
||||||
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 10 +++++++++-
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_devfreq.h | 2 ++
|
|
||||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
index f44d28fad085..ffbf16506bb5 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
@@ -129,8 +129,16 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev)
|
|
||||||
panfrost_devfreq_profile.initial_freq = cur_freq;
|
|
||||||
dev_pm_opp_put(opp);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Setup default thresholds for the simple_ondemand governor.
|
|
||||||
+ * The values are chosen based on experiments.
|
|
||||||
+ */
|
|
||||||
+ pfdevfreq->gov_data.upthreshold = 45;
|
|
||||||
+ pfdevfreq->gov_data.downdifferential = 5;
|
|
||||||
+
|
|
||||||
devfreq = devm_devfreq_add_device(dev, &panfrost_devfreq_profile,
|
|
||||||
- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);
|
|
||||||
+ DEVFREQ_GOV_SIMPLE_ONDEMAND,
|
|
||||||
+ &pfdevfreq->gov_data);
|
|
||||||
if (IS_ERR(devfreq)) {
|
|
||||||
DRM_DEV_ERROR(dev, "Couldn't initialize GPU devfreq\n");
|
|
||||||
ret = PTR_ERR(devfreq);
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.h b/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
||||||
index db6ea48e21f9..1e2a4de941aa 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
||||||
@@ -4,6 +4,7 @@
|
|
||||||
#ifndef __PANFROST_DEVFREQ_H__
|
|
||||||
#define __PANFROST_DEVFREQ_H__
|
|
||||||
|
|
||||||
+#include <linux/devfreq.h>
|
|
||||||
#include <linux/spinlock.h>
|
|
||||||
#include <linux/ktime.h>
|
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ struct panfrost_devfreq {
|
|
||||||
struct devfreq *devfreq;
|
|
||||||
struct opp_table *regulators_opp_table;
|
|
||||||
struct thermal_cooling_device *cooling;
|
|
||||||
+ struct devfreq_simple_ondemand_data gov_data;
|
|
||||||
bool opp_of_table_added;
|
|
||||||
|
|
||||||
ktime_t busy_time;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
From 07105df02a7e21818de0ad1bbb193827e36cfa90 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Tue, 19 Jan 2021 11:55:20 +0000
|
|
||||||
Subject: [PATCH 24/88] FROMGIT: media: rc: add keymap for minix-neo remote
|
|
||||||
|
|
||||||
Add a keymap and bindings for the simple IR (NEC) remote used with
|
|
||||||
Minix 'NEO' branded Android STB devices.
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
.../devicetree/bindings/media/rc.yaml | 1 +
|
|
||||||
drivers/media/rc/keymaps/Makefile | 1 +
|
|
||||||
drivers/media/rc/keymaps/rc-minix-neo.c | 55 +++++++++++++++++++
|
|
||||||
include/media/rc-map.h | 1 +
|
|
||||||
4 files changed, 58 insertions(+)
|
|
||||||
create mode 100644 drivers/media/rc/keymaps/rc-minix-neo.c
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
|
|
||||||
index 946441b4e1a5..cbffdd6a470d 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/media/rc.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/media/rc.yaml
|
|
||||||
@@ -93,6 +93,7 @@ properties:
|
|
||||||
- rc-medion-x10
|
|
||||||
- rc-medion-x10-digitainer
|
|
||||||
- rc-medion-x10-or2x
|
|
||||||
+ - rc-minix-neo
|
|
||||||
- rc-msi-digivox-ii
|
|
||||||
- rc-msi-digivox-iii
|
|
||||||
- rc-msi-tvanywhere
|
|
||||||
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
|
|
||||||
index cc6662e1903f..79c529340853 100644
|
|
||||||
--- a/drivers/media/rc/keymaps/Makefile
|
|
||||||
+++ b/drivers/media/rc/keymaps/Makefile
|
|
||||||
@@ -69,6 +69,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
|
||||||
rc-medion-x10.o \
|
|
||||||
rc-medion-x10-digitainer.o \
|
|
||||||
rc-medion-x10-or2x.o \
|
|
||||||
+ rc-minix-neo.o \
|
|
||||||
rc-msi-digivox-ii.o \
|
|
||||||
rc-msi-digivox-iii.o \
|
|
||||||
rc-msi-tvanywhere.o \
|
|
||||||
diff --git a/drivers/media/rc/keymaps/rc-minix-neo.c b/drivers/media/rc/keymaps/rc-minix-neo.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..9165af548ff1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/media/rc/keymaps/rc-minix-neo.c
|
|
||||||
@@ -0,0 +1,55 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0+
|
|
||||||
+//
|
|
||||||
+// Copyright (C) 2021 Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
+
|
|
||||||
+#include <media/rc-map.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+
|
|
||||||
+//
|
|
||||||
+// Keytable for the Minix NEO remote control
|
|
||||||
+//
|
|
||||||
+
|
|
||||||
+static struct rc_map_table minix_neo[] = {
|
|
||||||
+
|
|
||||||
+ { 0x118, KEY_POWER },
|
|
||||||
+
|
|
||||||
+ { 0x146, KEY_UP },
|
|
||||||
+ { 0x116, KEY_DOWN },
|
|
||||||
+ { 0x147, KEY_LEFT },
|
|
||||||
+ { 0x115, KEY_RIGHT },
|
|
||||||
+ { 0x155, KEY_ENTER },
|
|
||||||
+
|
|
||||||
+ { 0x110, KEY_VOLUMEDOWN },
|
|
||||||
+ { 0x140, KEY_BACK },
|
|
||||||
+ { 0x114, KEY_VOLUMEUP },
|
|
||||||
+
|
|
||||||
+ { 0x10d, KEY_HOME },
|
|
||||||
+ { 0x104, KEY_MENU },
|
|
||||||
+ { 0x112, KEY_CONFIG },
|
|
||||||
+
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static struct rc_map_list minix_neo_map = {
|
|
||||||
+ .map = {
|
|
||||||
+ .scan = minix_neo,
|
|
||||||
+ .size = ARRAY_SIZE(minix_neo),
|
|
||||||
+ .rc_proto = RC_PROTO_NEC,
|
|
||||||
+ .name = RC_MAP_MINIX_NEO,
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int __init init_rc_map_minix_neo(void)
|
|
||||||
+{
|
|
||||||
+ return rc_map_register(&minix_neo_map);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void __exit exit_rc_map_minix_neo(void)
|
|
||||||
+{
|
|
||||||
+ rc_map_unregister(&minix_neo_map);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+module_init(init_rc_map_minix_neo)
|
|
||||||
+module_exit(exit_rc_map_minix_neo)
|
|
||||||
+
|
|
||||||
+MODULE_LICENSE("GPL");
|
|
||||||
+MODULE_AUTHOR("Christian Hewitt <christianshewitt@gmail.com");
|
|
||||||
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
|
||||||
index 30f138ebab6f..6f8e2bbbc851 100644
|
|
||||||
--- a/include/media/rc-map.h
|
|
||||||
+++ b/include/media/rc-map.h
|
|
||||||
@@ -280,6 +280,7 @@ struct rc_map *rc_map_get(const char *name);
|
|
||||||
#define RC_MAP_MEDION_X10 "rc-medion-x10"
|
|
||||||
#define RC_MAP_MEDION_X10_DIGITAINER "rc-medion-x10-digitainer"
|
|
||||||
#define RC_MAP_MEDION_X10_OR2X "rc-medion-x10-or2x"
|
|
||||||
+#define RC_MAP_MINIX_NEO "rc-minix-neo"
|
|
||||||
#define RC_MAP_MSI_DIGIVOX_II "rc-msi-digivox-ii"
|
|
||||||
#define RC_MAP_MSI_DIGIVOX_III "rc-msi-digivox-iii"
|
|
||||||
#define RC_MAP_MSI_TVANYWHERE "rc-msi-tvanywhere"
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
|||||||
From 8b1c1379a187759191e4b25bb777172eada963eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Date: Sat, 14 Nov 2020 17:41:04 +0100
|
|
||||||
Subject: [PATCH 25/88] FROMGIT: net: stmmac: dwmac-meson8b: use picoseconds
|
|
||||||
for the RGMII RX delay
|
|
||||||
|
|
||||||
Amlogic Meson G12A, G12B and SM1 SoCs have a more advanced RGMII RX
|
|
||||||
delay register which allows picoseconds precision. Parse the new
|
|
||||||
"rx-internal-delay-ps" property or fall back to the value from the old
|
|
||||||
"amlogic,rx-delay-ns" property.
|
|
||||||
|
|
||||||
No upstream DTB uses the old "amlogic,rx-delay-ns" property (yet).
|
|
||||||
Only include minimalistic logic to fall back to the old property,
|
|
||||||
without any special validation (for example if the old and new
|
|
||||||
property are given at the same time).
|
|
||||||
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
.../ethernet/stmicro/stmmac/dwmac-meson8b.c | 21 ++++++++++++-------
|
|
||||||
1 file changed, 13 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
index 5f500141567d..d2be3a7bd8fd 100644
|
|
||||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
@@ -82,7 +82,7 @@ struct meson8b_dwmac {
|
|
||||||
phy_interface_t phy_mode;
|
|
||||||
struct clk *rgmii_tx_clk;
|
|
||||||
u32 tx_delay_ns;
|
|
||||||
- u32 rx_delay_ns;
|
|
||||||
+ u32 rx_delay_ps;
|
|
||||||
struct clk *timing_adj_clk;
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
|
||||||
tx_dly_config = FIELD_PREP(PRG_ETH0_TXDLY_MASK,
|
|
||||||
dwmac->tx_delay_ns >> 1);
|
|
||||||
|
|
||||||
- if (dwmac->rx_delay_ns == 2)
|
|
||||||
+ if (dwmac->rx_delay_ps == 2000)
|
|
||||||
rx_dly_config = PRG_ETH0_ADJ_ENABLE | PRG_ETH0_ADJ_SETUP;
|
|
||||||
else
|
|
||||||
rx_dly_config = 0;
|
|
||||||
@@ -406,14 +406,19 @@ static int meson8b_dwmac_probe(struct platform_device *pdev)
|
|
||||||
&dwmac->tx_delay_ns))
|
|
||||||
dwmac->tx_delay_ns = 2;
|
|
||||||
|
|
||||||
- /* use 0ns as fallback since this is what most boards actually use */
|
|
||||||
- if (of_property_read_u32(pdev->dev.of_node, "amlogic,rx-delay-ns",
|
|
||||||
- &dwmac->rx_delay_ns))
|
|
||||||
- dwmac->rx_delay_ns = 0;
|
|
||||||
+ /* RX delay defaults to 0ps since this is what many boards use */
|
|
||||||
+ if (of_property_read_u32(pdev->dev.of_node, "rx-internal-delay-ps",
|
|
||||||
+ &dwmac->rx_delay_ps)) {
|
|
||||||
+ if (!of_property_read_u32(pdev->dev.of_node,
|
|
||||||
+ "amlogic,rx-delay-ns",
|
|
||||||
+ &dwmac->rx_delay_ps))
|
|
||||||
+ /* convert ns to ps */
|
|
||||||
+ dwmac->rx_delay_ps *= 1000;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (dwmac->rx_delay_ns != 0 && dwmac->rx_delay_ns != 2) {
|
|
||||||
+ if (dwmac->rx_delay_ps != 0 && dwmac->rx_delay_ps != 2000) {
|
|
||||||
dev_err(&pdev->dev,
|
|
||||||
- "The only allowed RX delays values are: 0ns, 2ns");
|
|
||||||
+ "The only allowed RX delays values are: 0ps, 2000ps");
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto err_remove_config_dt;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
From 165518937eeef628d4848881bbd4e4f94fa3f863 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Date: Sat, 14 Nov 2020 18:02:03 +0100
|
|
||||||
Subject: [PATCH 26/88] FROMGIT: net: stmmac: dwmac-meson8b: move RGMII delays
|
|
||||||
into a separate function
|
|
||||||
|
|
||||||
Newer SoCs starting with the Amlogic Meson G12A have more a precise
|
|
||||||
RGMII RX delay configuration register. This means more complexity in the
|
|
||||||
code. Extract the existing RGMII delay configuration code into a
|
|
||||||
separate function to make it easier to read/understand even when adding
|
|
||||||
more logic in the future.
|
|
||||||
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 13 ++++++++++++-
|
|
||||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
index d2be3a7bd8fd..4937432ac70d 100644
|
|
||||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
@@ -268,7 +268,7 @@ static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
|
||||||
+static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)
|
|
||||||
{
|
|
||||||
u32 tx_dly_config, rx_dly_config, delay_config;
|
|
||||||
int ret;
|
|
||||||
@@ -323,6 +323,13 @@ static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
|
||||||
PRG_ETH0_ADJ_DELAY | PRG_ETH0_ADJ_SKEW,
|
|
||||||
delay_config);
|
|
||||||
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
|
||||||
+{
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
if (phy_interface_mode_is_rgmii(dwmac->phy_mode)) {
|
|
||||||
/* only relevant for RMII mode -> disable in RGMII mode */
|
|
||||||
meson8b_dwmac_mask_bits(dwmac, PRG_ETH0,
|
|
||||||
@@ -430,6 +437,10 @@ static int meson8b_dwmac_probe(struct platform_device *pdev)
|
|
||||||
goto err_remove_config_dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ ret = meson8b_init_rgmii_delays(dwmac);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto err_remove_config_dt;
|
|
||||||
+
|
|
||||||
ret = meson8b_init_rgmii_tx_clk(dwmac);
|
|
||||||
if (ret)
|
|
||||||
goto err_remove_config_dt;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,156 +0,0 @@
|
|||||||
From af5a137b69d3f9f88b89601abf8a2be3aec2c180 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Date: Sat, 14 Nov 2020 19:41:11 +0100
|
|
||||||
Subject: [PATCH 27/88] FROMGIT: net: stmmac: dwmac-meson8b: add support for
|
|
||||||
the RGMII RX delay on G12A
|
|
||||||
|
|
||||||
Amlogic Meson G12A (and newer: G12B, SM1) SoCs have a more advanced RX
|
|
||||||
delay logic. Instead of fine-tuning the delay in the nanoseconds range
|
|
||||||
it now allows tuning in 200 picosecond steps. This support comes with
|
|
||||||
new bits in the PRG_ETH1[19:16] register.
|
|
||||||
|
|
||||||
Add support for validating the RGMII RX delay as well as configuring the
|
|
||||||
register accordingly on these platforms.
|
|
||||||
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
.../ethernet/stmicro/stmmac/dwmac-meson8b.c | 61 +++++++++++++++----
|
|
||||||
1 file changed, 48 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
index 4937432ac70d..55152d7ba99a 100644
|
|
||||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
@@ -68,10 +68,21 @@
|
|
||||||
*/
|
|
||||||
#define PRG_ETH0_ADJ_SKEW GENMASK(24, 20)
|
|
||||||
|
|
||||||
+#define PRG_ETH1 0x4
|
|
||||||
+
|
|
||||||
+/* Defined for adding a delay to the input RX_CLK for better timing.
|
|
||||||
+ * Each step is 200ps. These bits are used with external RGMII PHYs
|
|
||||||
+ * because RGMII RX only has the small window. cfg_rxclk_dly can
|
|
||||||
+ * adjust the window between RX_CLK and RX_DATA and improve the stability
|
|
||||||
+ * of "rx data valid".
|
|
||||||
+ */
|
|
||||||
+#define PRG_ETH1_CFG_RXCLK_DLY GENMASK(19, 16)
|
|
||||||
+
|
|
||||||
struct meson8b_dwmac;
|
|
||||||
|
|
||||||
struct meson8b_dwmac_data {
|
|
||||||
int (*set_phy_mode)(struct meson8b_dwmac *dwmac);
|
|
||||||
+ bool has_prg_eth1_rgmii_rx_delay;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct meson8b_dwmac {
|
|
||||||
@@ -270,30 +281,35 @@ static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac,
|
|
||||||
|
|
||||||
static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)
|
|
||||||
{
|
|
||||||
- u32 tx_dly_config, rx_dly_config, delay_config;
|
|
||||||
+ u32 tx_dly_config, rx_adj_config, cfg_rxclk_dly, delay_config;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ rx_adj_config = 0;
|
|
||||||
+ cfg_rxclk_dly = 0;
|
|
||||||
tx_dly_config = FIELD_PREP(PRG_ETH0_TXDLY_MASK,
|
|
||||||
dwmac->tx_delay_ns >> 1);
|
|
||||||
|
|
||||||
- if (dwmac->rx_delay_ps == 2000)
|
|
||||||
- rx_dly_config = PRG_ETH0_ADJ_ENABLE | PRG_ETH0_ADJ_SETUP;
|
|
||||||
- else
|
|
||||||
- rx_dly_config = 0;
|
|
||||||
+ if (dwmac->data->has_prg_eth1_rgmii_rx_delay)
|
|
||||||
+ cfg_rxclk_dly = FIELD_PREP(PRG_ETH1_CFG_RXCLK_DLY,
|
|
||||||
+ dwmac->rx_delay_ps / 200);
|
|
||||||
+ else if (dwmac->rx_delay_ps == 2000)
|
|
||||||
+ rx_adj_config = PRG_ETH0_ADJ_ENABLE | PRG_ETH0_ADJ_SETUP;
|
|
||||||
|
|
||||||
switch (dwmac->phy_mode) {
|
|
||||||
case PHY_INTERFACE_MODE_RGMII:
|
|
||||||
- delay_config = tx_dly_config | rx_dly_config;
|
|
||||||
+ delay_config = tx_dly_config | rx_adj_config;
|
|
||||||
break;
|
|
||||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
|
||||||
delay_config = tx_dly_config;
|
|
||||||
+ cfg_rxclk_dly = 0;
|
|
||||||
break;
|
|
||||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
|
||||||
- delay_config = rx_dly_config;
|
|
||||||
+ delay_config = rx_adj_config;
|
|
||||||
break;
|
|
||||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
|
||||||
case PHY_INTERFACE_MODE_RMII:
|
|
||||||
delay_config = 0;
|
|
||||||
+ cfg_rxclk_dly = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dev_err(dwmac->dev, "unsupported phy-mode %s\n",
|
|
||||||
@@ -323,6 +339,9 @@ static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)
|
|
||||||
PRG_ETH0_ADJ_DELAY | PRG_ETH0_ADJ_SKEW,
|
|
||||||
delay_config);
|
|
||||||
|
|
||||||
+ meson8b_dwmac_mask_bits(dwmac, PRG_ETH1, PRG_ETH1_CFG_RXCLK_DLY,
|
|
||||||
+ cfg_rxclk_dly);
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -423,11 +442,20 @@ static int meson8b_dwmac_probe(struct platform_device *pdev)
|
|
||||||
dwmac->rx_delay_ps *= 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (dwmac->rx_delay_ps != 0 && dwmac->rx_delay_ps != 2000) {
|
|
||||||
- dev_err(&pdev->dev,
|
|
||||||
- "The only allowed RX delays values are: 0ps, 2000ps");
|
|
||||||
- ret = -EINVAL;
|
|
||||||
- goto err_remove_config_dt;
|
|
||||||
+ if (dwmac->data->has_prg_eth1_rgmii_rx_delay) {
|
|
||||||
+ if (dwmac->rx_delay_ps != 0 && dwmac->rx_delay_ps != 2000) {
|
|
||||||
+ dev_err(dwmac->dev,
|
|
||||||
+ "The only allowed RGMII RX delays values are: 0ps, 2000ps");
|
|
||||||
+ ret = -EINVAL;
|
|
||||||
+ goto err_remove_config_dt;
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ if (dwmac->rx_delay_ps > 3000 || dwmac->rx_delay_ps % 200) {
|
|
||||||
+ dev_err(dwmac->dev,
|
|
||||||
+ "The RGMII RX delay range is 0..3000ps in 200ps steps");
|
|
||||||
+ ret = -EINVAL;
|
|
||||||
+ goto err_remove_config_dt;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
dwmac->timing_adj_clk = devm_clk_get_optional(dwmac->dev,
|
|
||||||
@@ -469,10 +497,17 @@ static int meson8b_dwmac_probe(struct platform_device *pdev)
|
|
||||||
|
|
||||||
static const struct meson8b_dwmac_data meson8b_dwmac_data = {
|
|
||||||
.set_phy_mode = meson8b_set_phy_mode,
|
|
||||||
+ .has_prg_eth1_rgmii_rx_delay = false,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct meson8b_dwmac_data meson_axg_dwmac_data = {
|
|
||||||
.set_phy_mode = meson_axg_set_phy_mode,
|
|
||||||
+ .has_prg_eth1_rgmii_rx_delay = false,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct meson8b_dwmac_data meson_g12a_dwmac_data = {
|
|
||||||
+ .set_phy_mode = meson_axg_set_phy_mode,
|
|
||||||
+ .has_prg_eth1_rgmii_rx_delay = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct of_device_id meson8b_dwmac_match[] = {
|
|
||||||
@@ -494,7 +529,7 @@ static const struct of_device_id meson8b_dwmac_match[] = {
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.compatible = "amlogic,meson-g12a-dwmac",
|
|
||||||
- .data = &meson_axg_dwmac_data,
|
|
||||||
+ .data = &meson_g12a_dwmac_data,
|
|
||||||
},
|
|
||||||
{ }
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
From 9720f6152c85aabc9dbf9fcbce0ac4c19a6648aa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
Date: Wed, 20 Jan 2021 02:57:45 +0000
|
|
||||||
Subject: [PATCH 28/88] FROMGIT: net: stmmac: dwmac-meson8b: fix the RX delay
|
|
||||||
validation
|
|
||||||
|
|
||||||
When has_prg_eth1_rgmii_rx_delay is true then we support RX delays
|
|
||||||
between 0ps and 3000ps in 200ps steps. Swap the validation of the RX
|
|
||||||
delay based on the has_prg_eth1_rgmii_rx_delay flag so the 200ps check
|
|
||||||
is now applied correctly on G12A SoCs (instead of only allow 0ps or
|
|
||||||
2000ps on G12A, but 0..3000ps in 200ps steps on older SoCs which don't
|
|
||||||
support that).
|
|
||||||
|
|
||||||
Fixes: de94fc104d58ea ("net: stmmac: dwmac-meson8b: add support for the RGMII RX delay on G12A")
|
|
||||||
Reported-by: Martijn van Deventer <martijn@martijnvandeventer.nl>
|
|
||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
index 55152d7ba99a..848e5c37746b 100644
|
|
||||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
|
||||||
@@ -443,16 +443,16 @@ static int meson8b_dwmac_probe(struct platform_device *pdev)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dwmac->data->has_prg_eth1_rgmii_rx_delay) {
|
|
||||||
- if (dwmac->rx_delay_ps != 0 && dwmac->rx_delay_ps != 2000) {
|
|
||||||
+ if (dwmac->rx_delay_ps > 3000 || dwmac->rx_delay_ps % 200) {
|
|
||||||
dev_err(dwmac->dev,
|
|
||||||
- "The only allowed RGMII RX delays values are: 0ps, 2000ps");
|
|
||||||
+ "The RGMII RX delay range is 0..3000ps in 200ps steps");
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto err_remove_config_dt;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
- if (dwmac->rx_delay_ps > 3000 || dwmac->rx_delay_ps % 200) {
|
|
||||||
+ if (dwmac->rx_delay_ps != 0 && dwmac->rx_delay_ps != 2000) {
|
|
||||||
dev_err(dwmac->dev,
|
|
||||||
- "The RGMII RX delay range is 0..3000ps in 200ps steps");
|
|
||||||
+ "The only allowed RGMII RX delays values are: 0ps, 2000ps");
|
|
||||||
ret = -EINVAL;
|
|
||||||
goto err_remove_config_dt;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 569efb24817177301f4789a8b45df8d389df97a7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Qinglang Miao <miaoqinglang@huawei.com>
|
|
||||||
Date: Sat, 28 Nov 2020 16:10:04 +0000
|
|
||||||
Subject: [PATCH 29/88] FROMLIST(v1): drm/panfrost: fix reference leak in
|
|
||||||
panfrost_job_hw_submit
|
|
||||||
|
|
||||||
pm_runtime_get_sync will increment pm usage counter even it
|
|
||||||
failed. Forgetting to putting operation will result in a
|
|
||||||
reference leak here.
|
|
||||||
|
|
||||||
A new function pm_runtime_resume_and_get is introduced in
|
|
||||||
[0] to keep usage counter balanced. So We fix the reference
|
|
||||||
leak by replacing it with new funtion.
|
|
||||||
|
|
||||||
[0] dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
|
|
||||||
|
|
||||||
Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver")
|
|
||||||
Reported-by: Hulk Robot <hulkci@huawei.com>
|
|
||||||
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_job.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
|
|
||||||
index 04e6f6f9b742..d6d5c15184f9 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
|
|
||||||
@@ -157,7 +157,7 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
|
||||||
|
|
||||||
panfrost_devfreq_record_busy(&pfdev->pfdevfreq);
|
|
||||||
|
|
||||||
- ret = pm_runtime_get_sync(pfdev->dev);
|
|
||||||
+ ret = pm_runtime_resume_and_get(pfdev->dev);
|
|
||||||
if (ret < 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
From 5360a4ad62c054ecc8c1eb0896f85ae2e4566275 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
Date: Tue, 12 Jan 2021 02:49:18 +0000
|
|
||||||
Subject: [PATCH 30/88] FROMLIST(v1): drm/panfrost: Use delayed timer as
|
|
||||||
default in devfreq profile
|
|
||||||
|
|
||||||
Devfreq framework supports 2 modes for monitoring devices.
|
|
||||||
Use delayed timer as default instead of deferrable timer
|
|
||||||
in order to monitor the GPU status regardless of CPU idle.
|
|
||||||
|
|
||||||
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
index ffbf16506bb5..7c5ffc81dce1 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
||||||
@@ -76,6 +76,7 @@ static int panfrost_devfreq_get_dev_status(struct device *dev,
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct devfreq_dev_profile panfrost_devfreq_profile = {
|
|
||||||
+ .timer = DEVFREQ_TIMER_DELAYED,
|
|
||||||
.polling_ms = 50, /* ~3 frames */
|
|
||||||
.target = panfrost_devfreq_target,
|
|
||||||
.get_dev_status = panfrost_devfreq_get_dev_status,
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
From bf7b6026eb3bf452b4fad8c77efacd323f3ddd96 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Date: Thu, 4 Feb 2021 07:34:34 +0000
|
|
||||||
Subject: [PATCH 31/88] FROMLIST(v2): drm/panfrost: Clear MMU irqs before
|
|
||||||
handling the fault
|
|
||||||
|
|
||||||
When a fault is handled it will unblock the GPU which will continue
|
|
||||||
executing its shader and might fault almost immediately on a different
|
|
||||||
page. If we clear interrupts after handling the fault we might miss new
|
|
||||||
faults, so clear them before.
|
|
||||||
|
|
||||||
Cc: <stable@vger.kernel.org>
|
|
||||||
Fixes: 187d2929206e ("drm/panfrost: Add support for GPU heap allocations")
|
|
||||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Reviewed-by: Steven Price <steven.price@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
index 7c1b3481b785..904d63450862 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
@@ -593,6 +593,8 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
access_type = (fault_status >> 8) & 0x3;
|
|
||||||
source_id = (fault_status >> 16);
|
|
||||||
|
|
||||||
+ mmu_write(pfdev, MMU_INT_CLEAR, mask);
|
|
||||||
+
|
|
||||||
/* Page fault only */
|
|
||||||
ret = -1;
|
|
||||||
if ((status & mask) == BIT(i) && (exception_type & 0xF8) == 0xC0)
|
|
||||||
@@ -616,8 +618,6 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
access_type, access_type_name(pfdev, fault_status),
|
|
||||||
source_id);
|
|
||||||
|
|
||||||
- mmu_write(pfdev, MMU_INT_CLEAR, mask);
|
|
||||||
-
|
|
||||||
status &= ~mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From cd56ab64a7743dc966a8c2406afedf0027784ee9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Date: Thu, 4 Feb 2021 07:35:52 +0000
|
|
||||||
Subject: [PATCH 32/88] FROMLIST(v2): drm/panfrost: Don't try to map pages that
|
|
||||||
are already mapped
|
|
||||||
|
|
||||||
We allocate 2MB chunks at a time, so it might appear that a page fault
|
|
||||||
has already been handled by a previous page fault when we reach
|
|
||||||
panfrost_mmu_map_fault_addr(). Bail out in that case to avoid mapping the
|
|
||||||
same area twice.
|
|
||||||
|
|
||||||
Cc: <stable@vger.kernel.org>
|
|
||||||
Fixes: 187d2929206e ("drm/panfrost: Add support for GPU heap allocations")
|
|
||||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Reviewed-by: Steven Price <steven.price@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 9 ++++++++-
|
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
index 904d63450862..21e552d1ac71 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
@@ -488,8 +488,14 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
|
|
||||||
}
|
|
||||||
bo->base.pages = pages;
|
|
||||||
bo->base.pages_use_count = 1;
|
|
||||||
- } else
|
|
||||||
+ } else {
|
|
||||||
pages = bo->base.pages;
|
|
||||||
+ if (pages[page_offset]) {
|
|
||||||
+ /* Pages are already mapped, bail out. */
|
|
||||||
+ mutex_unlock(&bo->base.pages_lock);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
mapping = bo->base.base.filp->f_mapping;
|
|
||||||
mapping_set_unevictable(mapping);
|
|
||||||
@@ -522,6 +528,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
|
|
||||||
|
|
||||||
dev_dbg(pfdev->dev, "mapped page fault @ AS%d %llx", as, addr);
|
|
||||||
|
|
||||||
+out:
|
|
||||||
panfrost_gem_mapping_put(bomapping);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
|||||||
From 0cddc2b363c390a6c567b8c353bc7f9d4944dfe3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Date: Thu, 4 Feb 2021 07:37:53 +0000
|
|
||||||
Subject: [PATCH 33/88] FROMLIST(v2): drm/panfrost: Stay in the threaded MMU
|
|
||||||
IRQ handler until we've handled all IRQs
|
|
||||||
|
|
||||||
Doing a hw-irq -> threaded-irq round-trip is counter-productive, stay
|
|
||||||
in the threaded irq handler as long as we can.
|
|
||||||
|
|
||||||
v2:
|
|
||||||
* Rework the loop to avoid a goto
|
|
||||||
|
|
||||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
|
||||||
Reviewed-by: Steven Price <steven.price@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 26 +++++++++++++------------
|
|
||||||
1 file changed, 14 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
index 21e552d1ac71..0581186ebfb3 100644
|
|
||||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
|
||||||
@@ -578,22 +578,20 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
{
|
|
||||||
struct panfrost_device *pfdev = data;
|
|
||||||
u32 status = mmu_read(pfdev, MMU_INT_RAWSTAT);
|
|
||||||
- int i, ret;
|
|
||||||
+ int ret;
|
|
||||||
|
|
||||||
- for (i = 0; status; i++) {
|
|
||||||
- u32 mask = BIT(i) | BIT(i + 16);
|
|
||||||
+ while (status) {
|
|
||||||
+ u32 as = ffs(status | (status >> 16)) - 1;
|
|
||||||
+ u32 mask = BIT(as) | BIT(as + 16);
|
|
||||||
u64 addr;
|
|
||||||
u32 fault_status;
|
|
||||||
u32 exception_type;
|
|
||||||
u32 access_type;
|
|
||||||
u32 source_id;
|
|
||||||
|
|
||||||
- if (!(status & mask))
|
|
||||||
- continue;
|
|
||||||
-
|
|
||||||
- fault_status = mmu_read(pfdev, AS_FAULTSTATUS(i));
|
|
||||||
- addr = mmu_read(pfdev, AS_FAULTADDRESS_LO(i));
|
|
||||||
- addr |= (u64)mmu_read(pfdev, AS_FAULTADDRESS_HI(i)) << 32;
|
|
||||||
+ fault_status = mmu_read(pfdev, AS_FAULTSTATUS(as));
|
|
||||||
+ addr = mmu_read(pfdev, AS_FAULTADDRESS_LO(as));
|
|
||||||
+ addr |= (u64)mmu_read(pfdev, AS_FAULTADDRESS_HI(as)) << 32;
|
|
||||||
|
|
||||||
/* decode the fault status */
|
|
||||||
exception_type = fault_status & 0xFF;
|
|
||||||
@@ -604,8 +602,8 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
|
|
||||||
/* Page fault only */
|
|
||||||
ret = -1;
|
|
||||||
- if ((status & mask) == BIT(i) && (exception_type & 0xF8) == 0xC0)
|
|
||||||
- ret = panfrost_mmu_map_fault_addr(pfdev, i, addr);
|
|
||||||
+ if ((status & mask) == BIT(as) && (exception_type & 0xF8) == 0xC0)
|
|
||||||
+ ret = panfrost_mmu_map_fault_addr(pfdev, as, addr);
|
|
||||||
|
|
||||||
if (ret)
|
|
||||||
/* terminal fault, print info about the fault */
|
|
||||||
@@ -617,7 +615,7 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
"exception type 0x%X: %s\n"
|
|
||||||
"access type 0x%X: %s\n"
|
|
||||||
"source id 0x%X\n",
|
|
||||||
- i, addr,
|
|
||||||
+ as, addr,
|
|
||||||
"TODO",
|
|
||||||
fault_status,
|
|
||||||
(fault_status & (1 << 10) ? "DECODER FAULT" : "SLAVE FAULT"),
|
|
||||||
@@ -626,6 +624,10 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
|
||||||
source_id);
|
|
||||||
|
|
||||||
status &= ~mask;
|
|
||||||
+
|
|
||||||
+ /* If we received new MMU interrupts, process them before returning. */
|
|
||||||
+ if (!status)
|
|
||||||
+ status = mmu_read(pfdev, MMU_INT_RAWSTAT);
|
|
||||||
}
|
|
||||||
|
|
||||||
mmu_write(pfdev, MMU_INT_MASK, ~0);
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
From 5413886e2d16195eceda3720c998422b04d8c336 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
Date: Sun, 24 Jan 2021 11:27:35 +0000
|
|
||||||
Subject: [PATCH 34/88] FROMLIST(v2): drm/lima: add governor data with
|
|
||||||
pre-defined thresholds
|
|
||||||
|
|
||||||
This patch adapts the panfrost pre-defined thresholds change [0] to the
|
|
||||||
lima driver to improve real-world performance. The upthreshold value has
|
|
||||||
been set to ramp GPU frequency to max freq faster (compared to panfrost)
|
|
||||||
to compensate for the lower overall performance of utgard devices.
|
|
||||||
|
|
||||||
[0] https://patchwork.kernel.org/project/dri-devel/patch/20210121170445.19761-1-lukasz.luba@arm.com/
|
|
||||||
|
|
||||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/lima/lima_devfreq.c | 10 +++++++++-
|
|
||||||
drivers/gpu/drm/lima/lima_devfreq.h | 2 ++
|
|
||||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/lima/lima_devfreq.c b/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
index 5686ad4aaf7c..c9854315a0b5 100644
|
|
||||||
--- a/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
+++ b/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
@@ -163,8 +163,16 @@ int lima_devfreq_init(struct lima_device *ldev)
|
|
||||||
lima_devfreq_profile.initial_freq = cur_freq;
|
|
||||||
dev_pm_opp_put(opp);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Setup default thresholds for the simple_ondemand governor.
|
|
||||||
+ * The values are chosen based on experiments.
|
|
||||||
+ */
|
|
||||||
+ ldevfreq->gov_data.upthreshold = 30;
|
|
||||||
+ ldevfreq->gov_data.downdifferential = 5;
|
|
||||||
+
|
|
||||||
devfreq = devm_devfreq_add_device(dev, &lima_devfreq_profile,
|
|
||||||
- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);
|
|
||||||
+ DEVFREQ_GOV_SIMPLE_ONDEMAND,
|
|
||||||
+ &ldevfreq->gov_data);
|
|
||||||
if (IS_ERR(devfreq)) {
|
|
||||||
dev_err(dev, "Couldn't initialize GPU devfreq\n");
|
|
||||||
ret = PTR_ERR(devfreq);
|
|
||||||
diff --git a/drivers/gpu/drm/lima/lima_devfreq.h b/drivers/gpu/drm/lima/lima_devfreq.h
|
|
||||||
index 2d9b3008ce77..b0c7c736e81a 100644
|
|
||||||
--- a/drivers/gpu/drm/lima/lima_devfreq.h
|
|
||||||
+++ b/drivers/gpu/drm/lima/lima_devfreq.h
|
|
||||||
@@ -4,6 +4,7 @@
|
|
||||||
#ifndef __LIMA_DEVFREQ_H__
|
|
||||||
#define __LIMA_DEVFREQ_H__
|
|
||||||
|
|
||||||
+#include <linux/devfreq.h>
|
|
||||||
#include <linux/spinlock.h>
|
|
||||||
#include <linux/ktime.h>
|
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@ struct lima_devfreq {
|
|
||||||
struct opp_table *clkname_opp_table;
|
|
||||||
struct opp_table *regulators_opp_table;
|
|
||||||
struct thermal_cooling_device *cooling;
|
|
||||||
+ struct devfreq_simple_ondemand_data gov_data;
|
|
||||||
|
|
||||||
ktime_t busy_time;
|
|
||||||
ktime_t idle_time;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
From e9d96f0ba2d250037f877b02792326c44ca6cfea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
Date: Wed, 27 Jan 2021 11:36:36 +0000
|
|
||||||
Subject: [PATCH 35/88] FROMLIST(v1): drm/lima: Use delayed timer as default in
|
|
||||||
devfreq profile
|
|
||||||
|
|
||||||
Devfreq framework supports 2 modes for monitoring devices.
|
|
||||||
Use delayed timer as default instead of deferrable timer
|
|
||||||
in order to monitor the GPU status regardless of CPU idle.
|
|
||||||
|
|
||||||
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/lima/lima_devfreq.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/lima/lima_devfreq.c b/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
index c9854315a0b5..4f64940b9055 100644
|
|
||||||
--- a/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
+++ b/drivers/gpu/drm/lima/lima_devfreq.c
|
|
||||||
@@ -81,6 +81,7 @@ static int lima_devfreq_get_dev_status(struct device *dev,
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct devfreq_dev_profile lima_devfreq_profile = {
|
|
||||||
+ .timer = DEVFREQ_TIMER_DELAYED,
|
|
||||||
.polling_ms = 50, /* ~3 frames */
|
|
||||||
.target = lima_devfreq_target,
|
|
||||||
.get_dev_status = lima_devfreq_get_dev_status,
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
From 09312f60d216525cc3f139575497e2c2775d7042 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Amjad Ouled-Ameur <aouledameur@baylibre.com>
|
|
||||||
Date: Fri, 13 Nov 2020 07:45:15 +0000
|
|
||||||
Subject: [PATCH 36/88] FROMLIST(v1): phy: amlogic: phy-meson-gxl-usb2: fix
|
|
||||||
shared reset controller use
|
|
||||||
|
|
||||||
Use reset_control_rearm() call if an error occurs in case
|
|
||||||
phy_meson_gxl_usb2_init() fails after reset() has been called ; or in case
|
|
||||||
phy_meson_gxl_usb2_exit() is called i.e the resource is no longer used
|
|
||||||
and the reset line may be triggered again by other devices.
|
|
||||||
|
|
||||||
reset_control_rearm() keeps use of triggered_count sane in the reset
|
|
||||||
framework. Therefore, use of reset_control_reset() on shared reset line
|
|
||||||
should be balanced with reset_control_rearm().
|
|
||||||
|
|
||||||
Signed-off-by: Amjad Ouled-Ameur <aouledameur@baylibre.com>
|
|
||||||
Reported-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
---
|
|
||||||
drivers/phy/amlogic/phy-meson-gxl-usb2.c | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/phy/amlogic/phy-meson-gxl-usb2.c b/drivers/phy/amlogic/phy-meson-gxl-usb2.c
|
|
||||||
index 2b3c0d730f20..17826cd03142 100644
|
|
||||||
--- a/drivers/phy/amlogic/phy-meson-gxl-usb2.c
|
|
||||||
+++ b/drivers/phy/amlogic/phy-meson-gxl-usb2.c
|
|
||||||
@@ -114,8 +114,10 @@ static int phy_meson_gxl_usb2_init(struct phy *phy)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = clk_prepare_enable(priv->clk);
|
|
||||||
- if (ret)
|
|
||||||
+ if (ret) {
|
|
||||||
+ reset_control_rearm(priv->reset);
|
|
||||||
return ret;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -124,6 +126,7 @@ static int phy_meson_gxl_usb2_exit(struct phy *phy)
|
|
||||||
{
|
|
||||||
struct phy_meson_gxl_usb2_priv *priv = phy_get_drvdata(phy);
|
|
||||||
|
|
||||||
+ reset_control_rearm(priv->reset);
|
|
||||||
clk_disable_unprepare(priv->clk);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,105 +0,0 @@
|
|||||||
From f2c61b02ed90ebab65ffde60d7349c53e1839dac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Amjad Ouled-Ameur <aouledameur@baylibre.com>
|
|
||||||
Date: Fri, 13 Nov 2020 07:46:15 +0000
|
|
||||||
Subject: [PATCH 37/88] FROMLIST(v1): usb: dwc3: meson-g12a: fix shared reset
|
|
||||||
control use
|
|
||||||
|
|
||||||
reset_control_(de)assert() calls are called on a shared reset line when
|
|
||||||
reset_control_reset has been used. This is not allowed by the reset
|
|
||||||
framework.
|
|
||||||
|
|
||||||
Use reset_control_rearm() call in suspend() and remove() as a way to state
|
|
||||||
that the resource is no longer used, hence the shared reset line
|
|
||||||
may be triggered again by other devices. Use reset_control_rearm() also in
|
|
||||||
case probe fails after reset() has been called.
|
|
||||||
|
|
||||||
reset_control_rearm() keeps use of triggered_count sane in the reset
|
|
||||||
framework, use of reset_control_reset() on shared reset line should be
|
|
||||||
balanced with reset_control_rearm().
|
|
||||||
|
|
||||||
Signed-off-by: Amjad Ouled-Ameur <aouledameur@baylibre.com>
|
|
||||||
Reported-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
||||||
---
|
|
||||||
drivers/usb/dwc3/dwc3-meson-g12a.c | 19 +++++++++++++------
|
|
||||||
1 file changed, 13 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c
|
|
||||||
index bdf1f98dfad8..6570146cabc5 100644
|
|
||||||
--- a/drivers/usb/dwc3/dwc3-meson-g12a.c
|
|
||||||
+++ b/drivers/usb/dwc3/dwc3-meson-g12a.c
|
|
||||||
@@ -750,7 +750,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)
|
|
||||||
|
|
||||||
ret = dwc3_meson_g12a_get_phys(priv);
|
|
||||||
if (ret)
|
|
||||||
- goto err_disable_clks;
|
|
||||||
+ goto err_rearm;
|
|
||||||
|
|
||||||
ret = priv->drvdata->setup_regmaps(priv, base);
|
|
||||||
if (ret)
|
|
||||||
@@ -759,7 +759,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)
|
|
||||||
if (priv->vbus) {
|
|
||||||
ret = regulator_enable(priv->vbus);
|
|
||||||
if (ret)
|
|
||||||
- goto err_disable_clks;
|
|
||||||
+ goto err_rearm;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get dr_mode */
|
|
||||||
@@ -772,13 +772,13 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)
|
|
||||||
|
|
||||||
ret = priv->drvdata->usb_init(priv);
|
|
||||||
if (ret)
|
|
||||||
- goto err_disable_clks;
|
|
||||||
+ goto err_rearm;
|
|
||||||
|
|
||||||
/* Init PHYs */
|
|
||||||
for (i = 0 ; i < PHY_COUNT ; ++i) {
|
|
||||||
ret = phy_init(priv->phys[i]);
|
|
||||||
if (ret)
|
|
||||||
- goto err_disable_clks;
|
|
||||||
+ goto err_rearm;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set PHY Power */
|
|
||||||
@@ -816,6 +816,9 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)
|
|
||||||
for (i = 0 ; i < PHY_COUNT ; ++i)
|
|
||||||
phy_exit(priv->phys[i]);
|
|
||||||
|
|
||||||
+err_rearm:
|
|
||||||
+ reset_control_rearm(priv->reset);
|
|
||||||
+
|
|
||||||
err_disable_clks:
|
|
||||||
clk_bulk_disable_unprepare(priv->drvdata->num_clks,
|
|
||||||
priv->drvdata->clks);
|
|
||||||
@@ -843,6 +846,8 @@ static int dwc3_meson_g12a_remove(struct platform_device *pdev)
|
|
||||||
pm_runtime_put_noidle(dev);
|
|
||||||
pm_runtime_set_suspended(dev);
|
|
||||||
|
|
||||||
+ reset_control_rearm(priv->reset);
|
|
||||||
+
|
|
||||||
clk_bulk_disable_unprepare(priv->drvdata->num_clks,
|
|
||||||
priv->drvdata->clks);
|
|
||||||
|
|
||||||
@@ -883,7 +888,7 @@ static int __maybe_unused dwc3_meson_g12a_suspend(struct device *dev)
|
|
||||||
phy_exit(priv->phys[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
- reset_control_assert(priv->reset);
|
|
||||||
+ reset_control_rearm(priv->reset);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -893,7 +898,9 @@ static int __maybe_unused dwc3_meson_g12a_resume(struct device *dev)
|
|
||||||
struct dwc3_meson_g12a *priv = dev_get_drvdata(dev);
|
|
||||||
int i, ret;
|
|
||||||
|
|
||||||
- reset_control_deassert(priv->reset);
|
|
||||||
+ ret = reset_control_reset(priv->reset);
|
|
||||||
+ if (ret)
|
|
||||||
+ return ret;
|
|
||||||
|
|
||||||
ret = priv->drvdata->usb_init(priv);
|
|
||||||
if (ret)
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
|||||||
From ecd739d6b9c792b39f430c6972cf50cc03b4ee0e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lars-Peter Clausen <lars@metafoo.de>
|
|
||||||
Date: Mon, 21 Dec 2020 14:19:57 +0000
|
|
||||||
Subject: [PATCH 38/88] FROMLIST(v1): ASoC: meson: Use managed DMA buffer
|
|
||||||
allocation
|
|
||||||
|
|
||||||
Using a managed buffer will pre-allocate the buffer using
|
|
||||||
snd_pcm_lib_preallocate_pages() and automatically free it when the PCM is
|
|
||||||
destroyed.
|
|
||||||
|
|
||||||
In addition it will call snd_pcm_lib_malloc_pages() before the driver's
|
|
||||||
hw_params() callback and snd_pcm_lib_free_pages() after the driver's
|
|
||||||
hw_free() callback.
|
|
||||||
|
|
||||||
This slightly reduces the boilerplate code of the driver.
|
|
||||||
|
|
||||||
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
|
|
||||||
---
|
|
||||||
sound/soc/meson/aiu-fifo-i2s.c | 1 -
|
|
||||||
sound/soc/meson/aiu-fifo-spdif.c | 1 -
|
|
||||||
sound/soc/meson/aiu-fifo.c | 18 ++----------------
|
|
||||||
3 files changed, 2 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/sound/soc/meson/aiu-fifo-i2s.c b/sound/soc/meson/aiu-fifo-i2s.c
|
|
||||||
index d91b0d874342..2388a2d0b3a6 100644
|
|
||||||
--- a/sound/soc/meson/aiu-fifo-i2s.c
|
|
||||||
+++ b/sound/soc/meson/aiu-fifo-i2s.c
|
|
||||||
@@ -124,7 +124,6 @@ const struct snd_soc_dai_ops aiu_fifo_i2s_dai_ops = {
|
|
||||||
.trigger = aiu_fifo_i2s_trigger,
|
|
||||||
.prepare = aiu_fifo_i2s_prepare,
|
|
||||||
.hw_params = aiu_fifo_i2s_hw_params,
|
|
||||||
- .hw_free = aiu_fifo_hw_free,
|
|
||||||
.startup = aiu_fifo_startup,
|
|
||||||
.shutdown = aiu_fifo_shutdown,
|
|
||||||
};
|
|
||||||
diff --git a/sound/soc/meson/aiu-fifo-spdif.c b/sound/soc/meson/aiu-fifo-spdif.c
|
|
||||||
index 44eb6faacf44..2fb30f89bf7a 100644
|
|
||||||
--- a/sound/soc/meson/aiu-fifo-spdif.c
|
|
||||||
+++ b/sound/soc/meson/aiu-fifo-spdif.c
|
|
||||||
@@ -158,7 +158,6 @@ const struct snd_soc_dai_ops aiu_fifo_spdif_dai_ops = {
|
|
||||||
.trigger = fifo_spdif_trigger,
|
|
||||||
.prepare = fifo_spdif_prepare,
|
|
||||||
.hw_params = fifo_spdif_hw_params,
|
|
||||||
- .hw_free = aiu_fifo_hw_free,
|
|
||||||
.startup = aiu_fifo_startup,
|
|
||||||
.shutdown = aiu_fifo_shutdown,
|
|
||||||
};
|
|
||||||
diff --git a/sound/soc/meson/aiu-fifo.c b/sound/soc/meson/aiu-fifo.c
|
|
||||||
index aa88aae8e517..4ad23267cace 100644
|
|
||||||
--- a/sound/soc/meson/aiu-fifo.c
|
|
||||||
+++ b/sound/soc/meson/aiu-fifo.c
|
|
||||||
@@ -99,11 +99,6 @@ int aiu_fifo_hw_params(struct snd_pcm_substream *substream,
|
|
||||||
struct snd_soc_component *component = dai->component;
|
|
||||||
struct aiu_fifo *fifo = dai->playback_dma_data;
|
|
||||||
dma_addr_t end;
|
|
||||||
- int ret;
|
|
||||||
-
|
|
||||||
- ret = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));
|
|
||||||
- if (ret < 0)
|
|
||||||
- return ret;
|
|
||||||
|
|
||||||
/* Setup the fifo boundaries */
|
|
||||||
end = runtime->dma_addr + runtime->dma_bytes - fifo->fifo_block;
|
|
||||||
@@ -124,12 +119,6 @@ int aiu_fifo_hw_params(struct snd_pcm_substream *substream,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int aiu_fifo_hw_free(struct snd_pcm_substream *substream,
|
|
||||||
- struct snd_soc_dai *dai)
|
|
||||||
-{
|
|
||||||
- return snd_pcm_lib_free_pages(substream);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static irqreturn_t aiu_fifo_isr(int irq, void *dev_id)
|
|
||||||
{
|
|
||||||
struct snd_pcm_substream *playback = dev_id;
|
|
||||||
@@ -187,15 +176,12 @@ void aiu_fifo_shutdown(struct snd_pcm_substream *substream,
|
|
||||||
int aiu_fifo_pcm_new(struct snd_soc_pcm_runtime *rtd,
|
|
||||||
struct snd_soc_dai *dai)
|
|
||||||
{
|
|
||||||
- struct snd_pcm_substream *substream =
|
|
||||||
- rtd->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream;
|
|
||||||
struct snd_card *card = rtd->card->snd_card;
|
|
||||||
struct aiu_fifo *fifo = dai->playback_dma_data;
|
|
||||||
size_t size = fifo->pcm->buffer_bytes_max;
|
|
||||||
|
|
||||||
- snd_pcm_lib_preallocate_pages(substream,
|
|
||||||
- SNDRV_DMA_TYPE_DEV,
|
|
||||||
- card->dev, size, size);
|
|
||||||
+ snd_pcm_set_managed_buffer_all(rtd->pcm, SNDRV_DMA_TYPE_DEV,
|
|
||||||
+ card->dev, size, size);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,176 +0,0 @@
|
|||||||
From 68243c7496fe3dbb51702617b2fb5be39ebda48c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Krzysztof Kozlowski <krzk@kernel.org>
|
|
||||||
Date: Sun, 21 Feb 2021 16:27:16 +0000
|
|
||||||
Subject: [PATCH 39/88] FROMLIST(v1): ASoC: constify of_phandle_args in
|
|
||||||
snd_soc_get_dai_name()
|
|
||||||
|
|
||||||
The pointer to of_phandle_args passed to snd_soc_get_dai_name() and
|
|
||||||
of_xlate_dai_name() implementations is not modified. Since it is being
|
|
||||||
used only to translate passed OF node to a DAI name, it should not be
|
|
||||||
modified, so mark it as const for correctness and safer code.
|
|
||||||
|
|
||||||
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
|
|
||||||
---
|
|
||||||
include/sound/soc-component.h | 4 ++--
|
|
||||||
include/sound/soc.h | 2 +-
|
|
||||||
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
|
|
||||||
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
|
|
||||||
sound/soc/meson/aiu.c | 4 ++--
|
|
||||||
sound/soc/meson/aiu.h | 2 +-
|
|
||||||
sound/soc/qcom/lpass-cpu.c | 2 +-
|
|
||||||
sound/soc/qcom/qdsp6/q6afe-dai.c | 2 +-
|
|
||||||
sound/soc/soc-component.c | 2 +-
|
|
||||||
sound/soc/soc-core.c | 2 +-
|
|
||||||
10 files changed, 12 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/sound/soc-component.h b/include/sound/soc-component.h
|
|
||||||
index 0bce41fefd30..00494f955134 100644
|
|
||||||
--- a/include/sound/soc-component.h
|
|
||||||
+++ b/include/sound/soc-component.h
|
|
||||||
@@ -101,7 +101,7 @@ struct snd_soc_component_driver {
|
|
||||||
|
|
||||||
/* DT */
|
|
||||||
int (*of_xlate_dai_name)(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name);
|
|
||||||
int (*of_xlate_dai_id)(struct snd_soc_component *comment,
|
|
||||||
struct device_node *endpoint);
|
|
||||||
@@ -444,7 +444,7 @@ void snd_soc_component_remove(struct snd_soc_component *component);
|
|
||||||
int snd_soc_component_of_xlate_dai_id(struct snd_soc_component *component,
|
|
||||||
struct device_node *ep);
|
|
||||||
int snd_soc_component_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name);
|
|
||||||
int snd_soc_component_compr_open(struct snd_compr_stream *cstream);
|
|
||||||
void snd_soc_component_compr_free(struct snd_compr_stream *cstream,
|
|
||||||
diff --git a/include/sound/soc.h b/include/sound/soc.h
|
|
||||||
index 3fa6c40a63b7..1aaf3cedefb3 100644
|
|
||||||
--- a/include/sound/soc.h
|
|
||||||
+++ b/include/sound/soc.h
|
|
||||||
@@ -1219,7 +1219,7 @@ unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
|
|
||||||
struct device_node **bitclkmaster,
|
|
||||||
struct device_node **framemaster);
|
|
||||||
int snd_soc_get_dai_id(struct device_node *ep);
|
|
||||||
-int snd_soc_get_dai_name(struct of_phandle_args *args,
|
|
||||||
+int snd_soc_get_dai_name(const struct of_phandle_args *args,
|
|
||||||
const char **dai_name);
|
|
||||||
int snd_soc_of_get_dai_name(struct device_node *of_node,
|
|
||||||
const char **dai_name);
|
|
||||||
diff --git a/sound/soc/meson/aiu-acodec-ctrl.c b/sound/soc/meson/aiu-acodec-ctrl.c
|
|
||||||
index 7078197e0cc5..27a6d3259c50 100644
|
|
||||||
--- a/sound/soc/meson/aiu-acodec-ctrl.c
|
|
||||||
+++ b/sound/soc/meson/aiu-acodec-ctrl.c
|
|
||||||
@@ -159,7 +159,7 @@ static const struct snd_kcontrol_new aiu_acodec_ctrl_controls[] = {
|
|
||||||
};
|
|
||||||
|
|
||||||
static int aiu_acodec_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
return aiu_of_xlate_dai_name(component, args, dai_name, AIU_ACODEC);
|
|
||||||
diff --git a/sound/soc/meson/aiu-codec-ctrl.c b/sound/soc/meson/aiu-codec-ctrl.c
|
|
||||||
index 4b773d3e8b07..c3ea733fce91 100644
|
|
||||||
--- a/sound/soc/meson/aiu-codec-ctrl.c
|
|
||||||
+++ b/sound/soc/meson/aiu-codec-ctrl.c
|
|
||||||
@@ -125,7 +125,7 @@ static const struct snd_soc_dapm_route aiu_hdmi_ctrl_routes[] = {
|
|
||||||
};
|
|
||||||
|
|
||||||
static int aiu_hdmi_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
return aiu_of_xlate_dai_name(component, args, dai_name, AIU_HDMI);
|
|
||||||
diff --git a/sound/soc/meson/aiu.c b/sound/soc/meson/aiu.c
|
|
||||||
index dc35ca79021c..ba15d5762b0b 100644
|
|
||||||
--- a/sound/soc/meson/aiu.c
|
|
||||||
+++ b/sound/soc/meson/aiu.c
|
|
||||||
@@ -42,7 +42,7 @@ static const struct snd_soc_dapm_route aiu_cpu_dapm_routes[] = {
|
|
||||||
};
|
|
||||||
|
|
||||||
int aiu_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name,
|
|
||||||
unsigned int component_id)
|
|
||||||
{
|
|
||||||
@@ -72,7 +72,7 @@ int aiu_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
}
|
|
||||||
|
|
||||||
static int aiu_cpu_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
return aiu_of_xlate_dai_name(component, args, dai_name, AIU_CPU);
|
|
||||||
diff --git a/sound/soc/meson/aiu.h b/sound/soc/meson/aiu.h
|
|
||||||
index 87aa19ac4af3..393b6c2307e4 100644
|
|
||||||
--- a/sound/soc/meson/aiu.h
|
|
||||||
+++ b/sound/soc/meson/aiu.h
|
|
||||||
@@ -45,7 +45,7 @@ struct aiu {
|
|
||||||
SNDRV_PCM_FMTBIT_S24_LE)
|
|
||||||
|
|
||||||
int aiu_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name,
|
|
||||||
unsigned int component_id);
|
|
||||||
|
|
||||||
diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c
|
|
||||||
index cd4fb77e9d51..5efcbb6681e2 100644
|
|
||||||
--- a/sound/soc/qcom/lpass-cpu.c
|
|
||||||
+++ b/sound/soc/qcom/lpass-cpu.c
|
|
||||||
@@ -340,7 +340,7 @@ int asoc_qcom_lpass_cpu_dai_probe(struct snd_soc_dai *dai)
|
|
||||||
EXPORT_SYMBOL_GPL(asoc_qcom_lpass_cpu_dai_probe);
|
|
||||||
|
|
||||||
static int asoc_qcom_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
struct lpass_data *drvdata = snd_soc_component_get_drvdata(component);
|
|
||||||
diff --git a/sound/soc/qcom/qdsp6/q6afe-dai.c b/sound/soc/qcom/qdsp6/q6afe-dai.c
|
|
||||||
index 4e1f101281e7..e8915519f427 100644
|
|
||||||
--- a/sound/soc/qcom/qdsp6/q6afe-dai.c
|
|
||||||
+++ b/sound/soc/qcom/qdsp6/q6afe-dai.c
|
|
||||||
@@ -1315,7 +1315,7 @@ static struct snd_soc_dai_driver q6afe_dais[] = {
|
|
||||||
};
|
|
||||||
|
|
||||||
static int q6afe_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
int id = args->args[0];
|
|
||||||
diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c
|
|
||||||
index 760523382f3c..8b958db3a353 100644
|
|
||||||
--- a/sound/soc/soc-component.c
|
|
||||||
+++ b/sound/soc/soc-component.c
|
|
||||||
@@ -357,7 +357,7 @@ int snd_soc_component_of_xlate_dai_id(struct snd_soc_component *component,
|
|
||||||
}
|
|
||||||
|
|
||||||
int snd_soc_component_of_xlate_dai_name(struct snd_soc_component *component,
|
|
||||||
- struct of_phandle_args *args,
|
|
||||||
+ const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
if (component->driver->of_xlate_dai_name)
|
|
||||||
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
|
|
||||||
index f6d4e99b590c..50190654edda 100644
|
|
||||||
--- a/sound/soc/soc-core.c
|
|
||||||
+++ b/sound/soc/soc-core.c
|
|
||||||
@@ -2994,7 +2994,7 @@ int snd_soc_get_dai_id(struct device_node *ep)
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(snd_soc_get_dai_id);
|
|
||||||
|
|
||||||
-int snd_soc_get_dai_name(struct of_phandle_args *args,
|
|
||||||
+int snd_soc_get_dai_name(const struct of_phandle_args *args,
|
|
||||||
const char **dai_name)
|
|
||||||
{
|
|
||||||
struct snd_soc_component *pos;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
|||||||
From 3233168b0c100fd31f2b0b94cdadf7e5d4c1bdc8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andreas Rammhold <andreas@rammhold.de>
|
|
||||||
Date: Thu, 28 Jan 2021 09:43:36 +0000
|
|
||||||
Subject: [PATCH 40/88] FROMLIST(v1): spi-nor: add support for XT25F128B
|
|
||||||
|
|
||||||
This adds support for the XT25F128B as found on the RockPi4b SBC.
|
|
||||||
|
|
||||||
Signed-off-by: Andreas Rammhold <andreas@rammhold.de>
|
|
||||||
---
|
|
||||||
|
|
||||||
This continues the efforts done in [1] & [2] that went stale. I've
|
|
||||||
tested this patch on my RockPi4b which only has the xt25f128b (and not
|
|
||||||
the xt25f32b as also propsed in [2]). I have tried to obtain a copy of
|
|
||||||
the datasheets but was unable to find them. Not sure whre you would get
|
|
||||||
them.
|
|
||||||
|
|
||||||
While [1] was already for the new spi-nor layout it was missing the bits
|
|
||||||
in the core.{c,h} files.
|
|
||||||
|
|
||||||
[1]: https://patchwork.ozlabs.org/project/linux-mtd/patch/CAMgqO2y9MYDj6antOaWLBRKU8vGEwqCB-Y1TkXTSWsmsed+W6A@mail.gmail.com/
|
|
||||||
[2]: https://patchwork.ozlabs.org/project/linux-mtd/patch/20200206171941.GA2398@makrotopia.org/
|
|
||||||
---
|
|
||||||
drivers/mtd/spi-nor/Makefile | 1 +
|
|
||||||
drivers/mtd/spi-nor/core.c | 1 +
|
|
||||||
drivers/mtd/spi-nor/core.h | 1 +
|
|
||||||
drivers/mtd/spi-nor/xtx.c | 16 ++++++++++++++++
|
|
||||||
4 files changed, 19 insertions(+)
|
|
||||||
create mode 100644 drivers/mtd/spi-nor/xtx.c
|
|
||||||
|
|
||||||
diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
|
|
||||||
index 653923896205..3f7a52d7fa0b 100644
|
|
||||||
--- a/drivers/mtd/spi-nor/Makefile
|
|
||||||
+++ b/drivers/mtd/spi-nor/Makefile
|
|
||||||
@@ -17,6 +17,7 @@ spi-nor-objs += sst.o
|
|
||||||
spi-nor-objs += winbond.o
|
|
||||||
spi-nor-objs += xilinx.o
|
|
||||||
spi-nor-objs += xmc.o
|
|
||||||
+spi-nor-objs += xtx.o
|
|
||||||
obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_MTD_SPI_NOR) += controllers/
|
|
||||||
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
|
|
||||||
index b17faccc95c4..427af2298e37 100644
|
|
||||||
--- a/drivers/mtd/spi-nor/core.c
|
|
||||||
+++ b/drivers/mtd/spi-nor/core.c
|
|
||||||
@@ -2178,6 +2178,7 @@ static const struct spi_nor_manufacturer *manufacturers[] = {
|
|
||||||
&spi_nor_winbond,
|
|
||||||
&spi_nor_xilinx,
|
|
||||||
&spi_nor_xmc,
|
|
||||||
+ &spi_nor_xtx,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct flash_info *
|
|
||||||
diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
|
|
||||||
index d631ee299de3..345ec7dc3bbb 100644
|
|
||||||
--- a/drivers/mtd/spi-nor/core.h
|
|
||||||
+++ b/drivers/mtd/spi-nor/core.h
|
|
||||||
@@ -425,6 +425,7 @@ extern const struct spi_nor_manufacturer spi_nor_sst;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_winbond;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_xilinx;
|
|
||||||
extern const struct spi_nor_manufacturer spi_nor_xmc;
|
|
||||||
+extern const struct spi_nor_manufacturer spi_nor_xtx;
|
|
||||||
|
|
||||||
void spi_nor_spimem_setup_op(const struct spi_nor *nor,
|
|
||||||
struct spi_mem_op *op,
|
|
||||||
diff --git a/drivers/mtd/spi-nor/xtx.c b/drivers/mtd/spi-nor/xtx.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..a10102d8b3e2
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/mtd/spi-nor/xtx.c
|
|
||||||
@@ -0,0 +1,16 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0
|
|
||||||
+
|
|
||||||
+#include <linux/mtd/spi-nor.h>
|
|
||||||
+
|
|
||||||
+#include "core.h"
|
|
||||||
+
|
|
||||||
+static const struct flash_info xtx_parts[] = {
|
|
||||||
+ /* XTX (Shenzhen Xin Tian Xia Tech) */
|
|
||||||
+ { "xt25f128b", INFO(0x0b4018, 0, 64 * 1024, 256, SECT_4K) },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+const struct spi_nor_manufacturer spi_nor_xtx = {
|
|
||||||
+ .name = "xtx",
|
|
||||||
+ .parts = xtx_parts,
|
|
||||||
+ .nparts = ARRAY_SIZE(xtx_parts),
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From ade673edcd545e29c4d262c9c2ddcc0efe17e835 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Stein <alexander.stein@mailbox.org>
|
|
||||||
Date: Wed, 3 Feb 2021 17:03:42 +0000
|
|
||||||
Subject: [PATCH 41/88] FROMLIST(v2): arm64: dts: amlogic: assign a fixed index
|
|
||||||
to mmc devices
|
|
||||||
|
|
||||||
Recently introduced async probe on mmc devices can shuffle block IDs.
|
|
||||||
Pin them to fixed values to ease booting in environments where UUIDs
|
|
||||||
are not practical. Use newly introduced aliases for mmcblk devices
|
|
||||||
from [1].
|
|
||||||
|
|
||||||
The unconventional order (B, C, A) is due to the fact that sd_emmc_a is
|
|
||||||
(according to the comments) only used for SDIO.
|
|
||||||
|
|
||||||
AFAICS all boards either have both sd_emmc_b and sd_emmc_c or only one
|
|
||||||
of them enabled. So the alias order should match the previous non-async
|
|
||||||
order for all of them.
|
|
||||||
|
|
||||||
[1] https://patchwork.kernel.org/patch/11747669/
|
|
||||||
|
|
||||||
Signed-off-by: Alexander Stein <alexander.stein@mailbox.org>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 ++++++
|
|
||||||
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 ++++++
|
|
||||||
2 files changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
||||||
index 3a4f20506a61..bd6e48e3c51a 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
|
||||||
@@ -17,6 +17,12 @@
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ mmc0 = &sd_emmc_b;
|
|
||||||
+ mmc1 = &sd_emmc_c;
|
|
||||||
+ mmc2 = &sd_emmc_a;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
chosen {
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
|
||||||
index cf9eb7c8a6f0..14ff467c6be8 100644
|
|
||||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
|
||||||
@@ -20,6 +20,12 @@
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
|
|
||||||
+ aliases {
|
|
||||||
+ mmc0 = &sd_emmc_b;
|
|
||||||
+ mmc1 = &sd_emmc_c;
|
|
||||||
+ mmc2 = &sd_emmc_a;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
reserved-memory {
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 81d454a24a2bdd4430e1d5638e503dccf0b98e80 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
Date: Mon, 15 Mar 2021 10:54:48 +0000
|
|
||||||
Subject: [PATCH 42/88] FROMLIST(v1): dt-bindings: serial: amlogic, meson-uart:
|
|
||||||
add amlogic, uart-fifosize property
|
|
||||||
|
|
||||||
On most of the Amlogic SoCs, the first UART controller in the "Everything-Else"
|
|
||||||
power domain has 128bytes of RX & TX FIFO, so add an optional property to describe
|
|
||||||
a different FIFO size from the other ports (64bytes).
|
|
||||||
|
|
||||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
||||||
---
|
|
||||||
.../devicetree/bindings/serial/amlogic,meson-uart.yaml | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
|
|
||||||
index 75ebc9952a99..e0a742112783 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
|
|
||||||
@@ -55,6 +55,12 @@ properties:
|
|
||||||
- const: pclk
|
|
||||||
- const: baud
|
|
||||||
|
|
||||||
+
|
|
||||||
+ amlogic,uart-fifosize:
|
|
||||||
+ description: The fifo size supported by the UART channel.
|
|
||||||
+ $ref: /schemas/types.yaml#/definitions/uint32
|
|
||||||
+ enum: [64, 128]
|
|
||||||
+
|
|
||||||
required:
|
|
||||||
- compatible
|
|
||||||
- reg
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user