mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge pull request #4949 from chewitt/amlogic-upstream
bump Amlogic to something half-usable
This commit is contained in:
commit
c87a8f5922
@ -128,26 +128,16 @@ else
|
||||
mixer $card Headphone 0db on
|
||||
mixer $card 'AIF1 Slot 0 Digital DAC' on
|
||||
|
||||
# Amlogic G12 HDMI
|
||||
# Amlogic G12A/G12B/SM1 HDMI
|
||||
case $(dtname) in
|
||||
azw,gsking-x)
|
||||
mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 0'
|
||||
mixer $card 'FRDDR_A SRC 1 EN' on
|
||||
mixer $card 'TDMOUT_A SRC SEL' 'IN 0'
|
||||
mixer $card 'FRDDR_B SINK 1 SEL' 'OUT 0'
|
||||
mixer $card 'FRDDR_B SRC 1 EN' on
|
||||
mixer $card 'TDMOUT_B SRC SEL' 'IN 0'
|
||||
mixer $card 'TOHDMITX' on
|
||||
mixer $card 'TOHDMITX I2S SRC' 'I2S A'
|
||||
;;
|
||||
khadas,vim3)
|
||||
azw,gsking-x|khadas,vim3*) #TDM_A
|
||||
mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 0'
|
||||
mixer $card 'FRDDR_A SRC 1 EN' on
|
||||
mixer $card 'TDMOUT_A SRC SEL' 'IN 0'
|
||||
mixer $card 'TOHDMITX' on
|
||||
mixer $card 'TOHDMITX I2S SRC' 'I2S A'
|
||||
;;
|
||||
*)
|
||||
*) #TDM_B
|
||||
mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 1'
|
||||
mixer $card 'FRDDR_A SRC 1 EN' on
|
||||
mixer $card 'TDMOUT_B SRC SEL' 'IN 0'
|
||||
@ -156,7 +146,7 @@ else
|
||||
;;
|
||||
esac
|
||||
|
||||
# Amlogic G12 S/PDIF
|
||||
# Amlogic G12A/G12B/SM1 S/PDIF
|
||||
mixer $card 'FRDDR_B SINK 1 SEL' 'OUT 3'
|
||||
mixer $card 'FRDDR_B SRC 1 EN' on
|
||||
mixer $card 'SPDIFOUT SRC SEL' 'IN 1'
|
||||
|
@ -15,6 +15,12 @@ PKG_STAMP="$KERNEL_TARGET $KERNEL_MAKE_EXTRACMD"
|
||||
PKG_PATCH_DIRS="$LINUX"
|
||||
|
||||
case "$LINUX" in
|
||||
amlogic)
|
||||
PKG_VERSION="7c53f6b671f4aba70ff15e1b05148b10d58c2837" # 5.11-rc3
|
||||
PKG_SHA256="30206f178c9c151a0c387c7967800bc0bf89a893958241a3add0098d443f323a"
|
||||
PKG_URL="https://github.com/torvalds/linux/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
raspberrypi)
|
||||
PKG_VERSION="e9505f4612646533f53813aabef5ca040b0ea49d" # 5.10.7
|
||||
PKG_SHA256="2d6e3637dbe328161161cbdede2902e0aaaa979bd0179a40e14d2960a61de593"
|
||||
|
@ -14,10 +14,3 @@ case $(dtsoc) in
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
# add device-specific led handling here
|
||||
case $(dtname) in
|
||||
khadas,vim3*)
|
||||
echo "255" > /sys/devices/platform/leds/leds/vim3\:red/brightness
|
||||
;;
|
||||
esac
|
||||
|
@ -26,20 +26,23 @@ from_cmdline() {
|
||||
}
|
||||
|
||||
aml_from_efuse_gxbb() {
|
||||
if [ -e /sys/devices/platform/efuse/efuse0/nvmem ] ; then
|
||||
if [ -e /sys/devices/platform/efuse/efuse0/nvmem ]; then
|
||||
MAC=$(od -x -A n -j 0x34 -N 6 /sys/bus/nvmem/devices/efuse0/nvmem | tr -d ' ')
|
||||
MAC=${MAC:2:2}${MAC:0:2}${MAC:6:2}${MAC:4:2}${MAC:10:2}${MAC:8:2}
|
||||
fi
|
||||
}
|
||||
|
||||
aml_from_efuse_gxl() {
|
||||
if [ -e /sys/devices/platform/efuse/efuse0/nvmem ] ; then
|
||||
if [ -e /sys/devices/platform/efuse/efuse0/nvmem ]; then
|
||||
MAC=$(cat /sys/devices/platform/efuse/efuse0/nvmem)
|
||||
fi
|
||||
}
|
||||
|
||||
aml_from_cpu_sn() {
|
||||
if [ -e /sys/bus/platform/devices/firmware\:secure-monitor/serial ] ; then
|
||||
if [ -e /sys/bus/platform/devices/secure-monitor/serial ]; then
|
||||
MAC=$(cat /sys/bus/platform/devices/secure-monitor/serial 2>/dev/null | cut -b-12)
|
||||
fixup_self_mac
|
||||
elif [ -e /sys/bus/platform/devices/firmware\:secure-monitor/serial ]; then
|
||||
MAC=$(cat /sys/bus/platform/devices/firmware\:secure-monitor/serial 2>/dev/null | cut -b-12)
|
||||
fixup_self_mac
|
||||
fi
|
||||
|
@ -3,8 +3,8 @@
|
||||
|
||||
PKG_NAME="amlogic-boot-fip"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_VERSION="c89bc11d2904e819baed20c7ddba5b5b42a09141"
|
||||
PKG_SHA256="63f691f99aee93fe3a917d4b28fc67335a70f14ea3cec544d79983aff62062c9"
|
||||
PKG_VERSION="a7b126764c0138579ba5eb74641f960fb67ab706"
|
||||
PKG_SHA256="15e5c519b9c9c417b9c5ca3aaf7d83d0b6c142f11c9162cdaef05fab3fbcb2ce"
|
||||
PKG_SITE="https://github.com/LibreELEC/amlogic-boot-fip"
|
||||
PKG_URL="https://github.com/LibreELEC/amlogic-boot-fip/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_LONGDESC="Firmware Image Package (FIP) sources used to sign Amlogic u-boot binaries in LibreELEC images"
|
||||
|
@ -4,11 +4,13 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
# detect legacy kernel installs and abort to prevent upgrades
|
||||
if [ "$(uname -r)" = "3.14.29" ]; then
|
||||
echo "Update from 3.14 is not supported!"
|
||||
sleep 10
|
||||
exit 1
|
||||
fi
|
||||
case $(uname -r) in
|
||||
3.14*|4.9*)
|
||||
echo "Updates from Amlogic vendor kernels are not supported!"
|
||||
sleep 10
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# allow upgrades between aarch64 and arm images
|
||||
PROJECT=$("$1" | cut -d. -f1)
|
||||
|
@ -48,6 +48,9 @@ mkimage_dtb(){
|
||||
if [ "$DTB" != "@@DTB_NAME@@" ]; then
|
||||
echo "image: copying device tree"
|
||||
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/dtb/$DTB" ::
|
||||
if [ "$DTB" = "meson-g12b-odroid-n2.dtb" ]; then
|
||||
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/dtb/meson-g12b-odroid-n2-plus.dtb" ::
|
||||
fi
|
||||
else
|
||||
echo "image: copying device trees"
|
||||
mcopy -s -o "${RELEASE_DIR}/3rdparty/bootloader/dtb" ::
|
||||
|
@ -14,16 +14,6 @@ mkdir -p "$DSTDIR"
|
||||
mkdir -p "$DSTDIR/dtb"
|
||||
case ${DEVICE:-$PROJECT} in
|
||||
AMLGX)
|
||||
cp -a "$SRCDIR"/*gxbb*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*gxl*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*gxm*.dtb "$DSTDIR/dtb"
|
||||
;;
|
||||
AMLG12)
|
||||
cp -a "$SRCDIR"/*g12a*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*g12b*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*sm1*.dtb "$DSTDIR/dtb"
|
||||
;;
|
||||
*)
|
||||
cp -a "$SRCDIR"/*gxbb*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*gxl*.dtb "$DSTDIR/dtb"
|
||||
cp -a "$SRCDIR"/*gxm*.dtb "$DSTDIR/dtb"
|
||||
|
@ -1,6 +1,8 @@
|
||||
ath9k_htc
|
||||
ath10k/QCA9377
|
||||
mediatek/mt7668pr2h.bin
|
||||
qca/nvm_00230302.bin
|
||||
qca/rampatch_00230302.bin
|
||||
rtlwifi/rtl8192cufw_TMSC.bin
|
||||
rtlwifi/rtl8192cufw.bin
|
||||
rtlwifi/rtl8192eu_nic.bin
|
||||
|
@ -1,37 +0,0 @@
|
||||
################################################################################
|
||||
# setup device defaults
|
||||
################################################################################
|
||||
|
||||
# The TARGET_CPU variable controls which processor should be targeted for
|
||||
# generated code.
|
||||
case $TARGET_ARCH in
|
||||
aarch64)
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc+fp+simd"
|
||||
TARGET_FEATURES="64bit"
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT=hard
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
TARGET_FPU="neon-fp-armv8"
|
||||
TARGET_FEATURES="32bit"
|
||||
;;
|
||||
esac
|
||||
|
||||
# OpenGL-ES implementation to use
|
||||
OPENGLES="libmali"
|
||||
|
||||
# Graphic drivers to use
|
||||
GRAPHIC_DRIVERS="mali"
|
||||
|
||||
# KODI Player implementation to use
|
||||
KODIPLAYER_DRIVER="$OPENGLES"
|
||||
|
||||
# Mali GPU family
|
||||
MALI_FAMILY="g31 g52"
|
||||
|
||||
# Set the addon project
|
||||
ADDON_PROJECT="ARMv8"
|
@ -31,7 +31,7 @@
|
||||
KODIPLAYER_DRIVER="$OPENGLES"
|
||||
|
||||
# Mali GPU family
|
||||
MALI_FAMILY="450 t820"
|
||||
MALI_FAMILY="450 t820 g31 g52"
|
||||
|
||||
# Set the addon project
|
||||
ADDON_PROJECT="ARMv8"
|
||||
|
@ -23,7 +23,7 @@ do_detect(){
|
||||
echo -n d0074000.mmc > /sys/bus/platform/drivers/meson-gx-mmc/unbind
|
||||
echo -n d0074000.mmc > /sys/bus/platform/drivers/meson-gx-mmc/bind
|
||||
sleep 1
|
||||
parted -s "${EMMC}" unit s print
|
||||
parted -s "${EMMC}" print
|
||||
}
|
||||
|
||||
do_info(){
|
||||
@ -100,7 +100,7 @@ do_resize(){
|
||||
if [ -f "/var/media/${DISKLABEL}/.please_resize_me" ]; then
|
||||
rm "/var/media/${DISKLABEL}/.please_resize_me"
|
||||
fi
|
||||
parted -s "${EMMC}" unit s print
|
||||
parted -s "${EMMC}" print
|
||||
}
|
||||
|
||||
do_storage(){
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
From 35808d659a3d8d50fcefbd640c327efe43e47a3a Mon Sep 17 00:00:00 2001
|
||||
From b74116343cce0ffed44770904e11f865acf0aa7c Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Sat, 13 Apr 2019 05:41:51 +0000
|
||||
Subject: [PATCH 001/156] HACK: set meson-gx cma pool to 768MB
|
||||
Subject: [PATCH 01/79] HACK: set meson-gx cma pool to 768MB
|
||||
|
||||
This change sets the CMA pool to a larger 768MB! value for vdec use
|
||||
|
||||
@ -11,10 +11,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
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
|
||||
index e2bb68ec8502..b9b16f48cb1e 100644
|
||||
index 726b91d3a905..2ac6eaa451cf 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
@@ -45,7 +45,7 @@
|
||||
@@ -47,7 +47,7 @@
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
|
@ -0,0 +1,25 @@
|
||||
From 00eb6cb04920d82eea717b49a28c0d061a145c97 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <christianshewitt@gmail.com>
|
||||
Date: Wed, 28 Oct 2020 14:14:30 +0000
|
||||
Subject: [PATCH 02/79] HACK: set meson-gx cma pool to 896MB
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 2 +-
|
||||
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
|
||||
index 2ac6eaa451cf..d90a7e376a62 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
@@ -47,7 +47,7 @@
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
- size = <0x0 0x30000000>;
|
||||
+ size = <0x0 0x38000000>;
|
||||
alignment = <0x0 0x400000>;
|
||||
linux,cma-default;
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 93dd716407924c12783a795708314952387b3f83 Mon Sep 17 00:00:00 2001
|
||||
From 3e935a9c199bb929c29689d7feb28f7b430dac90 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Wed, 14 Aug 2019 19:58:14 +0000
|
||||
Subject: [PATCH 002/156] HACK: set meson-g12 cma pool to 768MB
|
||||
Subject: [PATCH 03/79] HACK: set meson-g12 cma pool to 768MB
|
||||
|
||||
This change sets the CMA pool to a larger 768MB! value for vdec use
|
||||
|
||||
@ -11,10 +11,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
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
|
||||
index c0aef7d69117..0a625ad14712 100644
|
||||
index 9c90d562ada1..e117a914c4d6 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
@@ -71,7 +71,7 @@
|
||||
@@ -104,7 +104,7 @@
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
@ -0,0 +1,25 @@
|
||||
From abbe7433cb0ade15c56fa310df0b160046c1cdc5 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <christianshewitt@gmail.com>
|
||||
Date: Wed, 28 Oct 2020 14:15:27 +0000
|
||||
Subject: [PATCH 04/79] HACK: set meson-g12 cma pool to 896MB
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 2 +-
|
||||
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
|
||||
index e117a914c4d6..9f79f594c6a7 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
@@ -104,7 +104,7 @@
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
- size = <0x0 0x30000000>;
|
||||
+ size = <0x0 0x38000000>;
|
||||
alignment = <0x0 0x400000>;
|
||||
linux,cma-default;
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4a35e44d38d156e292f0b9c9c4166fe98ebc847d Mon Sep 17 00:00:00 2001
|
||||
From 852df5d6c6d7bf165c5485a7d878feddc02df7ed Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Sat, 13 Apr 2019 05:45:18 +0000
|
||||
Subject: [PATCH 003/156] HACK: arm64: fix Kodi sysinfo CPU information
|
||||
Subject: [PATCH 05/79] HACK: arm64: fix Kodi sysinfo CPU information
|
||||
|
||||
This allows the CPU information to show in the Kodi sysinfo screen, e.g.
|
||||
|
||||
@ -13,10 +13,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
|
||||
index 86136075ae41..f321dc2d8129 100644
|
||||
index 77605aec25fe..d69b4e486098 100644
|
||||
--- a/arch/arm64/kernel/cpuinfo.c
|
||||
+++ b/arch/arm64/kernel/cpuinfo.c
|
||||
@@ -147,8 +147,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)
|
||||
* "processor". Give glibc what it expects.
|
||||
*/
|
||||
seq_printf(m, "processor\t: %d\n", i);
|
@ -1,40 +0,0 @@
|
||||
From d7ba0960e3bc51f8368ef9d3b98ce33be91e3570 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Tue, 7 Jan 2020 07:12:47 +0000
|
||||
Subject: [PATCH 005/156] HACK: media: cec: silence CEC timeout message
|
||||
|
||||
If testing with an AVR that does not pass-through CEC state the system
|
||||
log fills with timeout messages. Silence this to stop the log rotation
|
||||
and ensure other issues are visible.
|
||||
|
||||
[ 42.718009] cec-meson_ao_cec: message ff 84 50 00 01 timed out
|
||||
[ 45.021994] cec-meson_ao_cec: message ff 87 00 15 82 timed out
|
||||
[ 47.325965] cec-meson_ao_cec: message 10 timed out
|
||||
[ 49.630023] cec-meson_ao_cec: message 10 timed out
|
||||
[ 51.933960] cec-meson_ao_cec: message 10 timed out
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
drivers/media/cec/cec-adap.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c
|
||||
index 6a04d19a96b2..fcb29dba8de1 100644
|
||||
--- a/drivers/media/cec/cec-adap.c
|
||||
+++ b/drivers/media/cec/cec-adap.c
|
||||
@@ -510,9 +510,9 @@ int cec_thread_func(void *_adap)
|
||||
* unable to transmit for CEC_XFER_TIMEOUT_MS (2.1s).
|
||||
*/
|
||||
if (adap->transmitting) {
|
||||
- pr_warn("cec-%s: message %*ph timed out\n", adap->name,
|
||||
- adap->transmitting->msg.len,
|
||||
- adap->transmitting->msg.msg);
|
||||
+ //pr_warn("cec-%s: message %*ph timed out\n", adap->name,
|
||||
+ // adap->transmitting->msg.len,
|
||||
+ // adap->transmitting->msg.msg);
|
||||
/* Just give up on this. */
|
||||
cec_data_cancel(adap->transmitting,
|
||||
CEC_TX_STATUS_TIMEOUT);
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5b92e88cc625b65870b246103dd6ed2d2967ee07 Mon Sep 17 00:00:00 2001
|
||||
From e61e3429cc2d3bcac28191cb57e6dbcf7b91feb4 Mon Sep 17 00:00:00 2001
|
||||
From: kszaq <kszaquitto@gmail.com>
|
||||
Date: Sat, 6 Jul 2019 07:54:44 +0000
|
||||
Subject: [PATCH 004/156] HACK: arm64: dts: meson-gx: add ATF BL32 reserved
|
||||
Subject: [PATCH 06/79] HACK: arm64: dts: meson-gx: add ATF BL32 reserved
|
||||
memory region
|
||||
|
||||
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(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
index b9b16f48cb1e..ea4dac8506bc 100644
|
||||
index d90a7e376a62..ac6e99a9c95f 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
@@ -42,6 +42,12 @@
|
||||
@@ -44,6 +44,12 @@
|
||||
no-map;
|
||||
};
|
||||
|
@ -1,112 +0,0 @@
|
||||
From 776e38d46393b542029e4fcd908c344fa83342dd Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <christianshewitt@gmail.com>
|
||||
Date: Thu, 12 Dec 2019 13:48:45 +0000
|
||||
Subject: [PATCH 006/156] HACK: revert mm: emit tracepoint when RSS changes
|
||||
|
||||
---
|
||||
include/linux/mm.h | 14 +++-----------
|
||||
include/trace/events/kmem.h | 28 ----------------------------
|
||||
mm/memory.c | 6 ------
|
||||
3 files changed, 3 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/include/linux/mm.h b/include/linux/mm.h
|
||||
index 465e8ad671f8..474bbd14b065 100644
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -1848,27 +1848,19 @@ static inline unsigned long get_mm_counter(struct mm_struct *mm, int member)
|
||||
return (unsigned long)val;
|
||||
}
|
||||
|
||||
-void mm_trace_rss_stat(struct mm_struct *mm, int member, long count);
|
||||
-
|
||||
static inline void add_mm_counter(struct mm_struct *mm, int member, long value)
|
||||
{
|
||||
- long count = atomic_long_add_return(value, &mm->rss_stat.count[member]);
|
||||
-
|
||||
- mm_trace_rss_stat(mm, member, count);
|
||||
+ atomic_long_add(value, &mm->rss_stat.count[member]);
|
||||
}
|
||||
|
||||
static inline void inc_mm_counter(struct mm_struct *mm, int member)
|
||||
{
|
||||
- long count = atomic_long_inc_return(&mm->rss_stat.count[member]);
|
||||
-
|
||||
- mm_trace_rss_stat(mm, member, count);
|
||||
+ atomic_long_inc(&mm->rss_stat.count[member]);
|
||||
}
|
||||
|
||||
static inline void dec_mm_counter(struct mm_struct *mm, int member)
|
||||
{
|
||||
- long count = atomic_long_dec_return(&mm->rss_stat.count[member]);
|
||||
-
|
||||
- mm_trace_rss_stat(mm, member, count);
|
||||
+ atomic_long_dec(&mm->rss_stat.count[member]);
|
||||
}
|
||||
|
||||
/* Optimized variant when page is already known not to be PageAnon */
|
||||
diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h
|
||||
index f65b1f6db22d..788e049f899c 100644
|
||||
--- a/include/trace/events/kmem.h
|
||||
+++ b/include/trace/events/kmem.h
|
||||
@@ -335,34 +335,6 @@ static unsigned int __maybe_unused mm_ptr_to_hash(const void *ptr)
|
||||
#define __PTR_TO_HASHVAL
|
||||
#endif
|
||||
|
||||
-TRACE_EVENT(rss_stat,
|
||||
-
|
||||
- TP_PROTO(struct mm_struct *mm,
|
||||
- int member,
|
||||
- long count),
|
||||
-
|
||||
- TP_ARGS(mm, member, count),
|
||||
-
|
||||
- TP_STRUCT__entry(
|
||||
- __field(unsigned int, mm_id)
|
||||
- __field(unsigned int, curr)
|
||||
- __field(int, member)
|
||||
- __field(long, size)
|
||||
- ),
|
||||
-
|
||||
- TP_fast_assign(
|
||||
- __entry->mm_id = mm_ptr_to_hash(mm);
|
||||
- __entry->curr = !!(current->mm == mm);
|
||||
- __entry->member = member;
|
||||
- __entry->size = (count << PAGE_SHIFT);
|
||||
- ),
|
||||
-
|
||||
- TP_printk("mm_id=%u curr=%d member=%d size=%ldB",
|
||||
- __entry->mm_id,
|
||||
- __entry->curr,
|
||||
- __entry->member,
|
||||
- __entry->size)
|
||||
- );
|
||||
#endif /* _TRACE_KMEM_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index f703fe8c8346..796c5a62e173 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -72,8 +72,6 @@
|
||||
#include <linux/oom.h>
|
||||
#include <linux/numa.h>
|
||||
|
||||
-#include <trace/events/kmem.h>
|
||||
-
|
||||
#include <asm/io.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/pgalloc.h>
|
||||
@@ -154,10 +152,6 @@ static int __init init_zero_pfn(void)
|
||||
}
|
||||
core_initcall(init_zero_pfn);
|
||||
|
||||
-void mm_trace_rss_stat(struct mm_struct *mm, int member, long count)
|
||||
-{
|
||||
- trace_rss_stat(mm, member, count);
|
||||
-}
|
||||
|
||||
#if defined(SPLIT_RSS_COUNTING)
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,49 @@
|
||||
From a168bc7413bf9d8a67bf5cad5009434e75f380e7 Mon Sep 17 00:00:00 2001
|
||||
From: Dongjin Kim <tobetter@gmail.com>
|
||||
Date: Wed, 29 Jul 2020 04:05:03 +0900
|
||||
Subject: [PATCH 07/79] 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 14f9943b4aef5e3ef444c0cc131ebaaef2b1c3d3 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Thu, 16 Apr 2020 08:31:55 +0000
|
||||
Subject: [PATCH 007/156] 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 76c7add367d5..5b974fbda160 100644
|
||||
--- a/drivers/mmc/core/sd.c
|
||||
+++ b/drivers/mmc/core/sd.c
|
||||
@@ -1191,6 +1191,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.
|
||||
@@ -1269,7 +1289,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,39 +0,0 @@
|
||||
From ae11001b43297957b54d1ffbf05be1b1f616f065 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Tue, 21 Apr 2020 06:21:10 +0000
|
||||
Subject: [PATCH 008/156] FROMGIT: dt-bindings: net: bluetooth: Add device tree
|
||||
bindings for QCA9377
|
||||
|
||||
QCA9377 is a QCA ROME device frequently found in Android TV boxes.
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
|
||||
index d2202791c1d4..2fec6912e160 100644
|
||||
--- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
|
||||
+++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
|
||||
@@ -10,6 +10,7 @@ device the slave device is attached to.
|
||||
Required properties:
|
||||
- compatible: should contain one of the following:
|
||||
* "qcom,qca6174-bt"
|
||||
+ * "qcom,qca9377-bt"
|
||||
* "qcom,wcn3990-bt"
|
||||
* "qcom,wcn3991-bt"
|
||||
* "qcom,wcn3998-bt"
|
||||
@@ -20,6 +21,10 @@ Optional properties for compatible string qcom,qca6174-bt:
|
||||
- clocks: clock provided to the controller (SUSCLK_32KHZ)
|
||||
- firmware-name: specify the name of nvm firmware to load
|
||||
|
||||
+Optional properties for compatible string qcom,qca9377-bt:
|
||||
+
|
||||
+ - max-speed: see Documentation/devicetree/bindings/serial/serial.yaml
|
||||
+
|
||||
Required properties for compatible string qcom,wcn399x-bt:
|
||||
|
||||
- vddio-supply: VDD_IO supply regulator handle.
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,29 @@
|
||||
From 293bbf42eebeabd97333684096b375f8423ac4dd Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Sat, 19 Dec 2020 19:14:32 +0000
|
||||
Subject: [PATCH 08/79] HACK: drm/panfrost: force governor to performance
|
||||
|
||||
Kodi GUI is sluggish with ondemand, and it never seems to use higher
|
||||
clock speeds. Override this and use the performance governor.
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
||||
index f44d28fad085..102a3dc146be 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
||||
@@ -130,7 +130,7 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev)
|
||||
dev_pm_opp_put(opp);
|
||||
|
||||
devfreq = devm_devfreq_add_device(dev, &panfrost_devfreq_profile,
|
||||
- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);
|
||||
+ DEVFREQ_GOV_PERFORMANCE, NULL);
|
||||
if (IS_ERR(devfreq)) {
|
||||
DRM_DEV_ERROR(dev, "Couldn't initialize GPU devfreq\n");
|
||||
ret = PTR_ERR(devfreq);
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,59 @@
|
||||
From e0f9450bbd596602eb184cd51ed3b6eed09acaa8 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Thu, 17 Dec 2020 19:03:07 +0000
|
||||
Subject: [PATCH 09/79] FROMGIT: ASoC: meson: axg-tdm-interface: fix loopback
|
||||
|
||||
When the axg-tdm-interface was introduced, the backend DAI was marked as an
|
||||
endpoint when DPCM was walking the DAPM graph to find a its BE.
|
||||
|
||||
It is no longer the case since this
|
||||
commit 8dd26dff00c0 ("ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks")
|
||||
Because of this, when DPCM finds a BE it does everything it needs on the
|
||||
DAIs but it won't power up the widgets between the FE and the BE if there
|
||||
is no actual endpoint after the BE.
|
||||
|
||||
On meson-axg HWs, the loopback is a special DAI of the tdm-interface BE.
|
||||
It is only linked to the dummy codec since there no actual HW after it.
|
||||
>From the DAPM perspective, the DAI has no endpoint. Because of this, the TDM
|
||||
decoder, which is a widget between the FE and BE is not powered up.
|
||||
|
||||
>From the user perspective, everything seems fine but no data is produced.
|
||||
|
||||
Connecting the Loopback DAI to a dummy DAPM endpoint solves the problem.
|
||||
|
||||
Fixes: 8dd26dff00c0 ("ASoC: dapm: Fix handling of custom_stop_condition on DAPM graph walks")
|
||||
Cc: Charles Keepax <ckeepax@opensource.cirrus.com>
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
sound/soc/meson/axg-tdm-interface.c | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/meson/axg-tdm-interface.c b/sound/soc/meson/axg-tdm-interface.c
|
||||
index c8664ab80d45..87cac440b369 100644
|
||||
--- a/sound/soc/meson/axg-tdm-interface.c
|
||||
+++ b/sound/soc/meson/axg-tdm-interface.c
|
||||
@@ -467,8 +467,20 @@ static int axg_tdm_iface_set_bias_level(struct snd_soc_component *component,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static const struct snd_soc_dapm_widget axg_tdm_iface_dapm_widgets[] = {
|
||||
+ SND_SOC_DAPM_SIGGEN("Playback Signal"),
|
||||
+};
|
||||
+
|
||||
+static const struct snd_soc_dapm_route axg_tdm_iface_dapm_routes[] = {
|
||||
+ { "Loopback", NULL, "Playback Signal" },
|
||||
+};
|
||||
+
|
||||
static const struct snd_soc_component_driver axg_tdm_iface_component_drv = {
|
||||
- .set_bias_level = axg_tdm_iface_set_bias_level,
|
||||
+ .dapm_widgets = axg_tdm_iface_dapm_widgets,
|
||||
+ .num_dapm_widgets = ARRAY_SIZE(axg_tdm_iface_dapm_widgets),
|
||||
+ .dapm_routes = axg_tdm_iface_dapm_routes,
|
||||
+ .num_dapm_routes = ARRAY_SIZE(axg_tdm_iface_dapm_routes),
|
||||
+ .set_bias_level = axg_tdm_iface_set_bias_level,
|
||||
};
|
||||
|
||||
static const struct of_device_id axg_tdm_iface_of_match[] = {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 763a8b759e9a394acdae62ecb99d10d202c4062d Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Thu, 5 Mar 2020 04:19:18 +0000
|
||||
Subject: [PATCH 009/156] FROMGIT: Bluetooth: hci_qca: add compatible for
|
||||
QCA9377
|
||||
|
||||
Add a compatible so QCA9377 devices can be defined in device-tree.
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
drivers/bluetooth/hci_qca.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
|
||||
index 0b1036e5e963..27c24af739a0 100644
|
||||
--- a/drivers/bluetooth/hci_qca.c
|
||||
+++ b/drivers/bluetooth/hci_qca.c
|
||||
@@ -2048,6 +2048,7 @@ static SIMPLE_DEV_PM_OPS(qca_pm_ops, qca_suspend, qca_resume);
|
||||
|
||||
static const struct of_device_id qca_bluetooth_of_match[] = {
|
||||
{ .compatible = "qcom,qca6174-bt" },
|
||||
+ { .compatible = "qcom,qca9377-bt" },
|
||||
{ .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990},
|
||||
{ .compatible = "qcom,wcn3991-bt", .data = &qca_soc_data_wcn3991},
|
||||
{ .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998},
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,53 @@
|
||||
From f035ed084e24c370281c29b43f1d7cdc8925fbfc Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Thu, 17 Dec 2020 19:05:00 +0000
|
||||
Subject: [PATCH 10/79] FROMGIT: ASoC: meson: axg-tdmin: fix axg skew offset
|
||||
|
||||
The signal captured on from tdm decoder of the AXG SoC is incorrect. It
|
||||
appears amplified. The skew offset of the decoder is wrong.
|
||||
|
||||
Setting the skew offset to 3, like the g12 and sm1 SoCs, solves and gives
|
||||
correct data.
|
||||
|
||||
Fixes: 13a22e6a98f8 ("ASoC: meson: add tdm input driver")
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
sound/soc/meson/axg-tdmin.c | 13 ++-----------
|
||||
1 file changed, 2 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/meson/axg-tdmin.c b/sound/soc/meson/axg-tdmin.c
|
||||
index 88ed95ae886b..b4faf9d5c1aa 100644
|
||||
--- a/sound/soc/meson/axg-tdmin.c
|
||||
+++ b/sound/soc/meson/axg-tdmin.c
|
||||
@@ -224,15 +224,6 @@ static const struct axg_tdm_formatter_ops axg_tdmin_ops = {
|
||||
};
|
||||
|
||||
static const struct axg_tdm_formatter_driver axg_tdmin_drv = {
|
||||
- .component_drv = &axg_tdmin_component_drv,
|
||||
- .regmap_cfg = &axg_tdmin_regmap_cfg,
|
||||
- .ops = &axg_tdmin_ops,
|
||||
- .quirks = &(const struct axg_tdm_formatter_hw) {
|
||||
- .skew_offset = 2,
|
||||
- },
|
||||
-};
|
||||
-
|
||||
-static const struct axg_tdm_formatter_driver g12a_tdmin_drv = {
|
||||
.component_drv = &axg_tdmin_component_drv,
|
||||
.regmap_cfg = &axg_tdmin_regmap_cfg,
|
||||
.ops = &axg_tdmin_ops,
|
||||
@@ -247,10 +238,10 @@ static const struct of_device_id axg_tdmin_of_match[] = {
|
||||
.data = &axg_tdmin_drv,
|
||||
}, {
|
||||
.compatible = "amlogic,g12a-tdmin",
|
||||
- .data = &g12a_tdmin_drv,
|
||||
+ .data = &axg_tdmin_drv,
|
||||
}, {
|
||||
.compatible = "amlogic,sm1-tdmin",
|
||||
- .data = &g12a_tdmin_drv,
|
||||
+ .data = &axg_tdmin_drv,
|
||||
}, {}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, axg_tdmin_of_match);
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,61 +0,0 @@
|
||||
From e2d049bb10b4a35ba06259ee89ff366f23fbc69e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Tue, 21 Apr 2020 01:00:14 +0000
|
||||
Subject: [PATCH 010/156] FROMGIT: Bluetooth: hci_qca: allow max-speed to be
|
||||
set for QCA9377 devices
|
||||
|
||||
Move the read of max-speed from device-tree out of the qca_is_wcn399x
|
||||
if block so oper_speed can be set for QCA9377 devices as well.
|
||||
|
||||
Suggested-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
drivers/bluetooth/hci_qca.c | 16 +++++++++-------
|
||||
1 file changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
|
||||
index 27c24af739a0..3b47635bdf66 100644
|
||||
--- a/drivers/bluetooth/hci_qca.c
|
||||
+++ b/drivers/bluetooth/hci_qca.c
|
||||
@@ -596,10 +596,12 @@ static int qca_open(struct hci_uart *hu)
|
||||
|
||||
if (hu->serdev) {
|
||||
qcadev = serdev_device_get_drvdata(hu->serdev);
|
||||
- if (qca_is_wcn399x(qcadev->btsoc_type)) {
|
||||
+
|
||||
+ if (qca_is_wcn399x(qcadev->btsoc_type))
|
||||
hu->init_speed = qcadev->init_speed;
|
||||
+
|
||||
+ if (qcadev->oper_speed)
|
||||
hu->oper_speed = qcadev->oper_speed;
|
||||
- }
|
||||
}
|
||||
|
||||
timer_setup(&qca->wake_retrans_timer, hci_ibs_wake_retrans_timeout, 0);
|
||||
@@ -1865,6 +1867,11 @@ static int qca_serdev_probe(struct serdev_device *serdev)
|
||||
serdev_device_set_drvdata(serdev, qcadev);
|
||||
device_property_read_string(&serdev->dev, "firmware-name",
|
||||
&qcadev->firmware_name);
|
||||
+ device_property_read_u32(&serdev->dev, "max-speed",
|
||||
+ &qcadev->oper_speed);
|
||||
+ if (!qcadev->oper_speed)
|
||||
+ BT_DBG("UART will pick default operating speed");
|
||||
+
|
||||
if (data && qca_is_wcn399x(data->soc_type)) {
|
||||
qcadev->btsoc_type = data->soc_type;
|
||||
qcadev->bt_power = devm_kzalloc(&serdev->dev,
|
||||
@@ -1889,11 +1896,6 @@ static int qca_serdev_probe(struct serdev_device *serdev)
|
||||
return PTR_ERR(qcadev->susclk);
|
||||
}
|
||||
|
||||
- device_property_read_u32(&serdev->dev, "max-speed",
|
||||
- &qcadev->oper_speed);
|
||||
- if (!qcadev->oper_speed)
|
||||
- BT_DBG("UART will pick default operating speed");
|
||||
-
|
||||
err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto);
|
||||
if (err) {
|
||||
BT_ERR("wcn3990 serdev registration failed");
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 2d4d5eed504288fb2dfbc748bf0f14247107338f Mon Sep 17 00:00:00 2001
|
||||
From: Serge Semin <Sergey.Semin@baikalelectronics.ru>
|
||||
Date: Mon, 11 Jan 2021 14:45:19 +0000
|
||||
Subject: [PATCH 11/79] FROMGIT: arm64: dts: amlogic: meson-g12: Set FL-adj
|
||||
property value
|
||||
|
||||
In accordance with the DWC USB3 bindings the property is supposed to have
|
||||
uint32 type. It's erroneous from the DT schema and driver points of view
|
||||
to declare it as boolean. As Neil suggested set it to 0x20 so not break
|
||||
the platform and to make the dtbs checker happy.
|
||||
|
||||
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
|
||||
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
Fixes: 9baf7d6be730 ("arm64: dts: meson: g12a: Add G12A USB nodes")
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 2 +-
|
||||
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
|
||||
index 9f79f594c6a7..85def57463db 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
@@ -2390,7 +2390,7 @@
|
||||
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dr_mode = "host";
|
||||
snps,dis_u2_susphy_quirk;
|
||||
- snps,quirk-frame-length-adjustment;
|
||||
+ snps,quirk-frame-length-adjustment = <0x20>;
|
||||
snps,parkmode-disable-ss-quirk;
|
||||
};
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,57 +0,0 @@
|
||||
From 8444d8f5d9133e1061b62fc15962522b8190b11a Mon Sep 17 00:00:00 2001
|
||||
From: Tim Lewis <elatllat@gmail.com>
|
||||
Date: Sun, 26 Apr 2020 12:21:19 -0400
|
||||
Subject: [PATCH 011/156] FROMGIT: arm64: dts: meson: S922X: extend cpu
|
||||
opp-points
|
||||
|
||||
Add extra cpu pop points to allow mild overclock on S922X. The opp
|
||||
points are found in Hardkernel N2 sources [1] and testing shows no
|
||||
obvious issues on other S922X devices. Thermal throttling should
|
||||
keep things in-check if needed.
|
||||
|
||||
[1] https://github.com/hardkernel/linux/commit/f86cd9487c7483b2a05f448b9ebacf6bd5a2ad2f
|
||||
|
||||
Signed-off-by: Tim Lewis <elatllat@gmail.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Link: https://lore.kernel.org/r/20200426162119.GA23268@imac
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||
index 046cc332d07f..1e5d0ee5d541 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi
|
||||
@@ -65,6 +65,11 @@
|
||||
opp-hz = /bits/ 64 <1896000000>;
|
||||
opp-microvolt = <981000>;
|
||||
};
|
||||
+
|
||||
+ opp-1992000000 {
|
||||
+ opp-hz = /bits/ 64 <1992000000>;
|
||||
+ opp-microvolt = <1001000>;
|
||||
+ };
|
||||
};
|
||||
|
||||
cpub_opp_table_1: opp-table-1 {
|
||||
@@ -120,5 +125,15 @@
|
||||
opp-hz = /bits/ 64 <1704000000>;
|
||||
opp-microvolt = <891000>;
|
||||
};
|
||||
+
|
||||
+ opp-1800000000 {
|
||||
+ opp-hz = /bits/ 64 <1800000000>;
|
||||
+ opp-microvolt = <981000>;
|
||||
+ };
|
||||
+
|
||||
+ opp-1908000000 {
|
||||
+ opp-hz = /bits/ 64 <1908000000>;
|
||||
+ opp-microvolt = <1022000>;
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,85 @@
|
||||
From 5b1d18153478ce0bb436e9caded357b7d5ab44f9 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Dahl <post@lespocky.de>
|
||||
Date: Mon, 11 Jan 2021 14:47:38 +0000
|
||||
Subject: [PATCH 12/79] 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,76 +0,0 @@
|
||||
From 68b4683a553a622e585715061327b82939b0792b Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 16:18:14 +0200
|
||||
Subject: [PATCH 012/156] FROMGIT: arm64: dts: meson: kvim3: move hdmi to tdm a
|
||||
|
||||
The tdmout b is physically routed to the 40 pin header and the tdmout c
|
||||
is routed to the m2 connector. It makes these interfaces poor
|
||||
candidates to handle the HDMI 8ch i2s link (2ch i2s * 4 lanes) as it would
|
||||
force the same link format on the related connectors.
|
||||
|
||||
Instead use the TDM A interface. This one is not routed to the outside
|
||||
world on the vim3, so it can only be used for HDMI.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Link: https://lore.kernel.org/r/20200421141814.639480-1-jbrunet@baylibre.com
|
||||
---
|
||||
.../dts/amlogic/meson-g12b-khadas-vim3.dtsi | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi
|
||||
index c6c8caed8327..224c890d32d3 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi
|
||||
@@ -51,11 +51,11 @@
|
||||
sound {
|
||||
compatible = "amlogic,axg-sound-card";
|
||||
model = "G12B-KHADAS-VIM3";
|
||||
- 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";
|
||||
+ audio-aux-devs = <&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";
|
||||
|
||||
assigned-clocks = <&clkc CLKID_MPLL2>,
|
||||
<&clkc CLKID_MPLL0>,
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/* 8ch hdmi interface */
|
||||
dai-link-3 {
|
||||
- sound-dai = <&tdmif_b>;
|
||||
+ sound-dai = <&tdmif_a>;
|
||||
dai-format = "i2s";
|
||||
dai-tdm-slot-tx-mask-0 = <1 1>;
|
||||
dai-tdm-slot-tx-mask-1 = <1 1>;
|
||||
@@ -89,7 +89,7 @@
|
||||
mclk-fs = <256>;
|
||||
|
||||
codec {
|
||||
- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
|
||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -182,11 +182,11 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&tdmif_b {
|
||||
+&tdmif_a {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&tdmout_b {
|
||||
+&tdmout_a {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,60 @@
|
||||
From ae6f50b1d2b5881739d65713238d79237ab016a9 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Fri, 4 Dec 2020 14:48:41 +0100
|
||||
Subject: [PATCH 13/79] 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,29 +0,0 @@
|
||||
From b03284d1862da4875003a0662081eea91ec47f3c Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Thu, 26 Mar 2020 17:46:45 +0100
|
||||
Subject: [PATCH 013/156] FROMGIT: dt-bindings: sram: Add Amlogic SCP SRAM
|
||||
compatibles
|
||||
|
||||
Add compatibles for the Amlogic SCP SRAM memory zones.
|
||||
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/sram/sram.yaml | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/sram/sram.yaml b/Documentation/devicetree/bindings/sram/sram.yaml
|
||||
index 7b83cc6c9bfa..0aea3d239a48 100644
|
||||
--- a/Documentation/devicetree/bindings/sram/sram.yaml
|
||||
+++ b/Documentation/devicetree/bindings/sram/sram.yaml
|
||||
@@ -73,6 +73,8 @@ patternProperties:
|
||||
- allwinner,sun50i-a64-sram-c
|
||||
- amlogic,meson8-smp-sram
|
||||
- amlogic,meson8b-smp-sram
|
||||
+ - amlogic,meson-gxbb-scp-shmem
|
||||
+ - amlogic,meson-axg-scp-shmem
|
||||
- renesas,smp-sram
|
||||
- rockchip,rk3066-smp-sram
|
||||
- samsung,exynos4210-sysram
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,44 +0,0 @@
|
||||
From aadd713ceaf3b515f04a4e8e03251b3fa11b5848 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:30 +0200
|
||||
Subject: [PATCH 014/156] FROMGIT: arm64: defconfig: enable meson gx audio as
|
||||
module
|
||||
|
||||
Enable the module config for the Amlogic GX audio card.
|
||||
This module will imply the internal components usually associated
|
||||
with it to make a functional sound card on these platforms.
|
||||
|
||||
Also enable the simple amplifier module which often used on the
|
||||
output stage of those cards.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-2-jbrunet@baylibre.com
|
||||
---
|
||||
arch/arm64/configs/defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
|
||||
index 03d0189f7d68..ceb60ee9c340 100644
|
||||
--- a/arch/arm64/configs/defconfig
|
||||
+++ b/arch/arm64/configs/defconfig
|
||||
@@ -644,6 +644,7 @@ CONFIG_SND_HDA_CODEC_HDMI=m
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_MESON_AXG_SOUND_CARD=m
|
||||
+CONFIG_SND_MESON_GX_SOUND_CARD=m
|
||||
CONFIG_SND_SOC_SDM845=m
|
||||
CONFIG_SND_SOC_ROCKCHIP=m
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
|
||||
@@ -656,6 +657,7 @@ CONFIG_SND_SOC_AK4613=m
|
||||
CONFIG_SND_SOC_ES7134=m
|
||||
CONFIG_SND_SOC_ES7241=m
|
||||
CONFIG_SND_SOC_PCM3168A_I2C=m
|
||||
+CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
|
||||
CONFIG_SND_SOC_TAS571X=m
|
||||
CONFIG_SND_SOC_WCD934X=m
|
||||
CONFIG_SND_SOC_WSA881X=m
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,32 @@
|
||||
From 1ccea9de12033004d440f7aad8eb3c62fe8d45a8 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 26 Dec 2020 23:34:18 +0000
|
||||
Subject: [PATCH 14/79] FROMGIT: clk: meson: clk-pll: fix initializing the old
|
||||
rate (fallback) for a PLL
|
||||
|
||||
The "rate" parameter in meson_clk_pll_set_rate() contains the new rate.
|
||||
Retrieve the old rate with clk_hw_get_rate() so we don't inifinitely try
|
||||
to switch from the new rate to the same ratte again.
|
||||
|
||||
Fixes: 7a29a869434e8b ("clk: meson: Add support for Meson clock controller")
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
drivers/clk/meson/clk-pll.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/clk/meson/clk-pll.c b/drivers/clk/meson/clk-pll.c
|
||||
index b17a13e9337c..9404609b5ebf 100644
|
||||
--- a/drivers/clk/meson/clk-pll.c
|
||||
+++ b/drivers/clk/meson/clk-pll.c
|
||||
@@ -371,7 +371,7 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
if (parent_rate == 0 || rate == 0)
|
||||
return -EINVAL;
|
||||
|
||||
- old_rate = rate;
|
||||
+ old_rate = clk_hw_get_rate(hw);
|
||||
|
||||
ret = meson_clk_get_pll_settings(rate, parent_rate, &m, &n, pll);
|
||||
if (ret)
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,121 +0,0 @@
|
||||
From 4ce33650c52b51f1893841641e6cd8c254bb33d9 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:31 +0200
|
||||
Subject: [PATCH 015/156] FROMGIT: arm64: dts: meson-gx: add aiu support
|
||||
|
||||
Add the AIU audio device to the Amlogic GX SoC family DT.
|
||||
ATM, this device provides the i2s and spdif output stages and also
|
||||
the hdmi and internal codec glues.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-3-jbrunet@baylibre.com
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 13 ++++++++++++
|
||||
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 23 +++++++++++++++++++++
|
||||
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 23 +++++++++++++++++++++
|
||||
3 files changed, 59 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
index ea4dac8506bc..4045f51ac572 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
@@ -284,6 +284,17 @@
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
+ aiu: audio-controller@5400 {
|
||||
+ compatible = "amlogic,aiu";
|
||||
+ #sound-dai-cells = <2>;
|
||||
+ sound-name-prefix = "AIU";
|
||||
+ reg = <0x0 0x5400 0x0 0x2ac>;
|
||||
+ interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>,
|
||||
+ <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
|
||||
+ interrupt-names = "i2s", "spdif";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
uart_A: serial@84c0 {
|
||||
compatible = "amlogic,meson-gx-uart";
|
||||
reg = <0x0 0x84c0 0x0 0x18>;
|
||||
@@ -632,6 +643,8 @@
|
||||
interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ sound-name-prefix = "HDMITX";
|
||||
status = "disabled";
|
||||
|
||||
/* VPU VENC Input */
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
|
||||
index 0cb40326b0d3..234490d3ee68 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi
|
||||
@@ -60,6 +60,29 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&aiu {
|
||||
+ compatible = "amlogic,aiu-gxbb", "amlogic,aiu";
|
||||
+ clocks = <&clkc CLKID_AIU_GLUE>,
|
||||
+ <&clkc CLKID_I2S_OUT>,
|
||||
+ <&clkc CLKID_AOCLK_GATE>,
|
||||
+ <&clkc CLKID_CTS_AMCLK>,
|
||||
+ <&clkc CLKID_MIXER_IFACE>,
|
||||
+ <&clkc CLKID_IEC958>,
|
||||
+ <&clkc CLKID_IEC958_GATE>,
|
||||
+ <&clkc CLKID_CTS_MCLK_I958>,
|
||||
+ <&clkc CLKID_CTS_I958>;
|
||||
+ clock-names = "pclk",
|
||||
+ "i2s_pclk",
|
||||
+ "i2s_aoclk",
|
||||
+ "i2s_mclk",
|
||||
+ "i2s_mixer",
|
||||
+ "spdif_pclk",
|
||||
+ "spdif_aoclk",
|
||||
+ "spdif_mclk",
|
||||
+ "spdif_mclk_sel";
|
||||
+ resets = <&reset RESET_AIU>;
|
||||
+};
|
||||
+
|
||||
&aobus {
|
||||
pinctrl_aobus: pinctrl@14 {
|
||||
compatible = "amlogic,meson-gxbb-aobus-pinctrl";
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
index 259d86399390..d9f00c5a9a5c 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
@@ -49,6 +49,29 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&aiu {
|
||||
+ compatible = "amlogic,aiu-gxl", "amlogic,aiu";
|
||||
+ clocks = <&clkc CLKID_AIU_GLUE>,
|
||||
+ <&clkc CLKID_I2S_OUT>,
|
||||
+ <&clkc CLKID_AOCLK_GATE>,
|
||||
+ <&clkc CLKID_CTS_AMCLK>,
|
||||
+ <&clkc CLKID_MIXER_IFACE>,
|
||||
+ <&clkc CLKID_IEC958>,
|
||||
+ <&clkc CLKID_IEC958_GATE>,
|
||||
+ <&clkc CLKID_CTS_MCLK_I958>,
|
||||
+ <&clkc CLKID_CTS_I958>;
|
||||
+ clock-names = "pclk",
|
||||
+ "i2s_pclk",
|
||||
+ "i2s_aoclk",
|
||||
+ "i2s_mclk",
|
||||
+ "i2s_mixer",
|
||||
+ "spdif_pclk",
|
||||
+ "spdif_aoclk",
|
||||
+ "spdif_mclk",
|
||||
+ "spdif_mclk_sel";
|
||||
+ resets = <&reset RESET_AIU>;
|
||||
+};
|
||||
+
|
||||
&apb {
|
||||
usb2_phy0: phy@78000 {
|
||||
compatible = "amlogic,meson-gxl-usb2-phy";
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,35 @@
|
||||
From 4531d5040a1d6c04cffc76684f9dfcf65bd7d87e Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 26 Dec 2020 23:35:18 +0000
|
||||
Subject: [PATCH 15/79] FROMGIT: clk: meson: clk-pll: make "ret" a signed
|
||||
integer
|
||||
|
||||
The error codes returned by meson_clk_get_pll_settings() are all
|
||||
negative. Make "ret" a signed integer in meson_clk_pll_set_rate() to
|
||||
make it match with the clk_ops.set_rate API as well as the data type
|
||||
returned by meson_clk_get_pll_settings().
|
||||
|
||||
Fixes: 8eed1db1adec6a ("clk: meson: pll: update driver for the g12a")
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
drivers/clk/meson/clk-pll.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/clk/meson/clk-pll.c b/drivers/clk/meson/clk-pll.c
|
||||
index 9404609b5ebf..5b932976483f 100644
|
||||
--- a/drivers/clk/meson/clk-pll.c
|
||||
+++ b/drivers/clk/meson/clk-pll.c
|
||||
@@ -365,8 +365,9 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
{
|
||||
struct clk_regmap *clk = to_clk_regmap(hw);
|
||||
struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
|
||||
- unsigned int enabled, m, n, frac = 0, ret;
|
||||
+ unsigned int enabled, m, n, frac = 0;
|
||||
unsigned long old_rate;
|
||||
+ int ret;
|
||||
|
||||
if (parent_rate == 0 || rate == 0)
|
||||
return -EINVAL;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,107 +0,0 @@
|
||||
From 9132d7f6d3753eceecd18d7e660fcffb12da9ffe Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:32 +0200
|
||||
Subject: [PATCH 016/156] FROMGIT: arm64: dts: meson: p230-q200: add initial
|
||||
audio playback support
|
||||
|
||||
Add basic audio support on the p230/q200 reference design.
|
||||
This initial support is limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-4-jbrunet@baylibre.com
|
||||
---
|
||||
.../boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 63 +++++++++++++++++++
|
||||
1 file changed, 63 insertions(+)
|
||||
|
||||
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 12d5e333e5f2..99c1f7f9d37e 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
||||
@@ -8,12 +8,21 @@
|
||||
* the pin-compatible S912 (GXM) or S905D (GXL) SoCs.
|
||||
*/
|
||||
|
||||
+#include <dt-bindings/sound/meson-aiu.h>
|
||||
+
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &uart_AO;
|
||||
ethernet0 = ðmac;
|
||||
};
|
||||
|
||||
+ spdif_dit: audio-codec-0 {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ status = "okay";
|
||||
+ sound-name-prefix = "DIT";
|
||||
+ };
|
||||
+
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
@@ -102,6 +111,60 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,gx-sound-card";
|
||||
+ model = "GX-P230-Q200";
|
||||
+ 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_h_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
};
|
||||
|
||||
&cec_AO {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 6c888b9a837e8e9e40bb72479744c8b8f25ad456 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 26 Dec 2020 23:36:09 +0000
|
||||
Subject: [PATCH 16/79] FROMGIT: clk: meson: clk-pll: propagate the error from
|
||||
meson_clk_pll_set_rate()
|
||||
|
||||
Popagate the error code from meson_clk_pll_set_rate() when the PLL does
|
||||
not lock with the new settings.
|
||||
|
||||
Fixes: 722825dcd54b2e ("clk: meson: migrate plls clocks to clk_regmap")
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
drivers/clk/meson/clk-pll.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/meson/clk-pll.c b/drivers/clk/meson/clk-pll.c
|
||||
index 5b932976483f..49f27fe53213 100644
|
||||
--- a/drivers/clk/meson/clk-pll.c
|
||||
+++ b/drivers/clk/meson/clk-pll.c
|
||||
@@ -394,7 +394,8 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
if (!enabled)
|
||||
return 0;
|
||||
|
||||
- if (meson_clk_pll_enable(hw)) {
|
||||
+ ret = meson_clk_pll_enable(hw);
|
||||
+ if (ret) {
|
||||
pr_warn("%s: pll did not lock, trying to restore old rate %lu\n",
|
||||
__func__, old_rate);
|
||||
/*
|
||||
@@ -406,7 +407,7 @@ static int meson_clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
meson_clk_pll_set_rate(hw, old_rate, parent_rate);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,77 +0,0 @@
|
||||
From 40f98dae93d648fd915d5f1c57a3f8fbe8ed708f Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:33 +0200
|
||||
Subject: [PATCH 017/156] FROMGIT: arm64: dts: meson: libretech-cc: add initial
|
||||
audio playback support
|
||||
|
||||
Add initial audio support limited to HDMI i2s.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-5-jbrunet@baylibre.com
|
||||
---
|
||||
.../amlogic/meson-gxl-s905x-libretech-cc.dts | 40 +++++++++++++++++++
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
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 a4a71c13891b..2b821c501065 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
|
||||
@@ -8,6 +8,7 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/sound/meson-aiu.h>
|
||||
|
||||
#include "meson-gxl-s905x.dtsi"
|
||||
|
||||
@@ -124,6 +125,45 @@
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc_3v3>;
|
||||
};
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,gx-sound-card";
|
||||
+ model = "GXL-LIBRETECH-S905X-CC";
|
||||
+ 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_I2S_ENCODER>;
|
||||
+ dai-format = "i2s";
|
||||
+ mclk-fs = <256>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ dai-link-2 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&hdmi_tx>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&aiu {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&cec_AO {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,97 @@
|
||||
From b3c25d5936f587b6dcdbebfbd1f7e424713defa6 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 17/79] 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,77 +0,0 @@
|
||||
From 5af6823fc49037004221dd7c34128fd09824f939 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:34 +0200
|
||||
Subject: [PATCH 018/156] FROMGIT: arm64: dts: meson: libretech-ac: add initial
|
||||
audio playback support
|
||||
|
||||
Add initial audio support limited to HDMI i2s.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-6-jbrunet@baylibre.com
|
||||
---
|
||||
.../amlogic/meson-gxl-s805x-libretech-ac.dts | 40 +++++++++++++++++++
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
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 4d5949496596..3f35331c1652 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
|
||||
@@ -8,6 +8,7 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/sound/meson-aiu.h>
|
||||
|
||||
#include "meson-gxl-s905x.dtsi"
|
||||
|
||||
@@ -105,6 +106,45 @@
|
||||
vin-supply = <&vcc_3v3>;
|
||||
regulator-always-on;
|
||||
};
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,gx-sound-card";
|
||||
+ model = "GXL-LIBRETECH-S805X-AC";
|
||||
+ 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_I2S_ENCODER>;
|
||||
+ dai-format = "i2s";
|
||||
+ mclk-fs = <256>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ dai-link-2 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&hdmi_tx>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&aiu {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&cec_AO {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 4d18c18cc0d04d9ca9fd88f2132fa5a7c9645a48 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sun, 15 Nov 2020 10:23:02 +0100
|
||||
Subject: [PATCH 18/79] FROMGIT: net: stmmac: dwmac-meson8b: fix enabling the
|
||||
timing-adjustment clock
|
||||
|
||||
The timing-adjustment clock only has to be enabled when a) there is a
|
||||
2ns RX delay configured using device-tree and b) the phy-mode indicates
|
||||
that the RX delay should be enabled.
|
||||
|
||||
Only enable the RX delay if both are true, instead of (by accident) also
|
||||
enabling it when there's the 2ns RX delay configured but the phy-mode
|
||||
incicates that the RX delay is not used.
|
||||
|
||||
Fixes: 9308c47640d515 ("net: stmmac: dwmac-meson8b: add support for the RX delay configuration")
|
||||
Reported-by: Andrew Lunn <andrew@lunn.ch>
|
||||
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 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
index f184b00f5116..5f500141567d 100644
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
@@ -301,7 +301,7 @@ static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (rx_dly_config & PRG_ETH0_ADJ_ENABLE) {
|
||||
+ if (delay_config & PRG_ETH0_ADJ_ENABLE) {
|
||||
if (!dwmac->timing_adj_clk) {
|
||||
dev_err(dwmac->dev,
|
||||
"The timing-adjustment clock is mandatory for the RX delay re-timing\n");
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,77 +0,0 @@
|
||||
From 45baf9b9d199f17bf4e5eb3ad0da6968e30bde9e Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Tue, 21 Apr 2020 18:39:35 +0200
|
||||
Subject: [PATCH 019/156] FROMGIT: arm64: dts: meson: libretech-pc: add initial
|
||||
audio playback support
|
||||
|
||||
Add initial audio support limited to HDMI i2s.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
|
||||
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20200421163935.775935-7-jbrunet@baylibre.com
|
||||
---
|
||||
.../dts/amlogic/meson-gx-libretech-pc.dtsi | 40 +++++++++++++++++++
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
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 b1da36fdeac6..4cc5f3df5677 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
+#include <dt-bindings/sound/meson-aiu.h>
|
||||
|
||||
/ {
|
||||
adc-keys {
|
||||
@@ -175,6 +176,45 @@
|
||||
regulator-settling-time-up-us = <200>;
|
||||
regulator-settling-time-down-us = <50000>;
|
||||
};
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,gx-sound-card";
|
||||
+ model = "GXL-LIBRETECH-S9XX-PC";
|
||||
+ 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_I2S_ENCODER>;
|
||||
+ dai-format = "i2s";
|
||||
+ mclk-fs = <256>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ dai-link-2 {
|
||||
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&hdmi_tx>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&aiu {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&cec_AO {
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,74 @@
|
||||
From 2c74f4d1663225c4e735690a65eec62dc7816c75 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 19/79] 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,134 +0,0 @@
|
||||
From 274f0a22be97107589d444a3bbb6bcf53ceec2eb Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 May 2020 11:32:27 +0000
|
||||
Subject: [PATCH 020/156] FROMGIT: drm/bridge: dw-hdmi: Add support for RGB
|
||||
limited range
|
||||
|
||||
CEA 861 standard requestis that RGB quantization range is "limited" for
|
||||
CEA modes. Support that by adding CSC matrix which downscales values.
|
||||
|
||||
This allows proper color reproduction on TV and PC monitor at the same
|
||||
time. In future, override property can be added, like "Broadcast RGB"
|
||||
in i915 driver.
|
||||
|
||||
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 63 +++++++++++++++++------
|
||||
1 file changed, 46 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index 383b1073d7de..b8f6ecd4fbeb 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -92,6 +92,12 @@ static const u16 csc_coeff_rgb_in_eitu709[3][4] = {
|
||||
{ 0x6756, 0x78ab, 0x2000, 0x0200 }
|
||||
};
|
||||
|
||||
+static const u16 csc_coeff_rgb_full_to_rgb_limited[3][4] = {
|
||||
+ { 0x1b7c, 0x0000, 0x0000, 0x0020 },
|
||||
+ { 0x0000, 0x1b7c, 0x0000, 0x0020 },
|
||||
+ { 0x0000, 0x0000, 0x1b7c, 0x0020 }
|
||||
+};
|
||||
+
|
||||
struct hdmi_vmode {
|
||||
bool mdataenablepolarity;
|
||||
|
||||
@@ -109,6 +115,7 @@ struct hdmi_data_info {
|
||||
unsigned int pix_repet_factor;
|
||||
unsigned int hdcp_enable;
|
||||
struct hdmi_vmode video_mode;
|
||||
+ bool rgb_limited_range;
|
||||
};
|
||||
|
||||
struct dw_hdmi_i2c {
|
||||
@@ -956,7 +963,11 @@ static void hdmi_video_sample(struct dw_hdmi *hdmi)
|
||||
|
||||
static int is_color_space_conversion(struct dw_hdmi *hdmi)
|
||||
{
|
||||
- return hdmi->hdmi_data.enc_in_bus_format != hdmi->hdmi_data.enc_out_bus_format;
|
||||
+ return (hdmi->hdmi_data.enc_in_bus_format !=
|
||||
+ hdmi->hdmi_data.enc_out_bus_format) ||
|
||||
+ (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_in_bus_format) &&
|
||||
+ hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format) &&
|
||||
+ hdmi->hdmi_data.rgb_limited_range);
|
||||
}
|
||||
|
||||
static int is_color_space_decimation(struct dw_hdmi *hdmi)
|
||||
@@ -986,25 +997,27 @@ static int is_color_space_interpolation(struct dw_hdmi *hdmi)
|
||||
static void dw_hdmi_update_csc_coeffs(struct dw_hdmi *hdmi)
|
||||
{
|
||||
const u16 (*csc_coeff)[3][4] = &csc_coeff_default;
|
||||
+ bool is_input_rgb, is_output_rgb;
|
||||
unsigned i;
|
||||
u32 csc_scale = 1;
|
||||
|
||||
- if (is_color_space_conversion(hdmi)) {
|
||||
- if (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
- if (hdmi->hdmi_data.enc_out_encoding ==
|
||||
- V4L2_YCBCR_ENC_601)
|
||||
- csc_coeff = &csc_coeff_rgb_out_eitu601;
|
||||
- else
|
||||
- csc_coeff = &csc_coeff_rgb_out_eitu709;
|
||||
- } else if (hdmi_bus_fmt_is_rgb(
|
||||
- hdmi->hdmi_data.enc_in_bus_format)) {
|
||||
- if (hdmi->hdmi_data.enc_out_encoding ==
|
||||
- V4L2_YCBCR_ENC_601)
|
||||
- csc_coeff = &csc_coeff_rgb_in_eitu601;
|
||||
- else
|
||||
- csc_coeff = &csc_coeff_rgb_in_eitu709;
|
||||
- csc_scale = 0;
|
||||
- }
|
||||
+ is_input_rgb = hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_in_bus_format);
|
||||
+ is_output_rgb = hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format);
|
||||
+
|
||||
+ if (!is_input_rgb && is_output_rgb) {
|
||||
+ if (hdmi->hdmi_data.enc_out_encoding == V4L2_YCBCR_ENC_601)
|
||||
+ csc_coeff = &csc_coeff_rgb_out_eitu601;
|
||||
+ else
|
||||
+ csc_coeff = &csc_coeff_rgb_out_eitu709;
|
||||
+ } else if (is_input_rgb && !is_output_rgb) {
|
||||
+ if (hdmi->hdmi_data.enc_out_encoding == V4L2_YCBCR_ENC_601)
|
||||
+ csc_coeff = &csc_coeff_rgb_in_eitu601;
|
||||
+ else
|
||||
+ csc_coeff = &csc_coeff_rgb_in_eitu709;
|
||||
+ csc_scale = 0;
|
||||
+ } else if (is_input_rgb && is_output_rgb &&
|
||||
+ hdmi->hdmi_data.rgb_limited_range) {
|
||||
+ csc_coeff = &csc_coeff_rgb_full_to_rgb_limited;
|
||||
}
|
||||
|
||||
/* The CSC registers are sequential, alternating MSB then LSB */
|
||||
@@ -1614,6 +1627,18 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
||||
drm_hdmi_avi_infoframe_from_display_mode(&frame,
|
||||
&hdmi->connector, mode);
|
||||
|
||||
+ if (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
+ drm_hdmi_avi_infoframe_quant_range(&frame, &hdmi->connector,
|
||||
+ mode,
|
||||
+ hdmi->hdmi_data.rgb_limited_range ?
|
||||
+ HDMI_QUANTIZATION_RANGE_LIMITED :
|
||||
+ HDMI_QUANTIZATION_RANGE_FULL);
|
||||
+ } else {
|
||||
+ frame.quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
|
||||
+ frame.ycc_quantization_range =
|
||||
+ HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
|
||||
+ }
|
||||
+
|
||||
if (hdmi_bus_fmt_is_yuv444(hdmi->hdmi_data.enc_out_bus_format))
|
||||
frame.colorspace = HDMI_COLORSPACE_YUV444;
|
||||
else if (hdmi_bus_fmt_is_yuv422(hdmi->hdmi_data.enc_out_bus_format))
|
||||
@@ -2119,6 +2144,10 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
||||
if (hdmi->hdmi_data.enc_out_bus_format == MEDIA_BUS_FMT_FIXED)
|
||||
hdmi->hdmi_data.enc_out_bus_format = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
|
||||
+ hdmi->hdmi_data.rgb_limited_range = hdmi->sink_is_hdmi &&
|
||||
+ drm_default_rgb_quant_range(mode) ==
|
||||
+ HDMI_QUANTIZATION_RANGE_LIMITED;
|
||||
+
|
||||
hdmi->hdmi_data.pix_repet_factor = 0;
|
||||
hdmi->hdmi_data.hdcp_enable = 0;
|
||||
hdmi->hdmi_data.video_mode.mdataenablepolarity = true;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,60 @@
|
||||
From c2a20a85df641aaf33cac447a52aa32ffffd80bc 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 20/79] 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,89 +0,0 @@
|
||||
From ace2c05e270e103e3e026169a987ee7a6a0730b1 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 May 2020 11:33:19 +0000
|
||||
Subject: [PATCH 021/156] FROMGIT: drm/bridge: dw-hdmi: rework csc related
|
||||
functions
|
||||
|
||||
is_color_space_conversion() is a misnomer. It checks not only if color
|
||||
space conversion is needed, but also if format conversion is needed.
|
||||
This is actually desired behaviour because result of this function
|
||||
determines if CSC block should be enabled or not (CSC block can also do
|
||||
format conversion).
|
||||
|
||||
In order to clear misunderstandings, let's rework
|
||||
is_color_space_conversion() to do exactly what is supposed to do and add
|
||||
another function which will determine if CSC block must be enabled or
|
||||
not.
|
||||
|
||||
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 31 +++++++++++++++--------
|
||||
1 file changed, 21 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index b8f6ecd4fbeb..512398dbeb76 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -963,11 +963,14 @@ static void hdmi_video_sample(struct dw_hdmi *hdmi)
|
||||
|
||||
static int is_color_space_conversion(struct dw_hdmi *hdmi)
|
||||
{
|
||||
- return (hdmi->hdmi_data.enc_in_bus_format !=
|
||||
- hdmi->hdmi_data.enc_out_bus_format) ||
|
||||
- (hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_in_bus_format) &&
|
||||
- hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format) &&
|
||||
- hdmi->hdmi_data.rgb_limited_range);
|
||||
+ struct hdmi_data_info *hdmi_data = &hdmi->hdmi_data;
|
||||
+ bool is_input_rgb, is_output_rgb;
|
||||
+
|
||||
+ is_input_rgb = hdmi_bus_fmt_is_rgb(hdmi_data->enc_in_bus_format);
|
||||
+ is_output_rgb = hdmi_bus_fmt_is_rgb(hdmi_data->enc_out_bus_format);
|
||||
+
|
||||
+ return (is_input_rgb != is_output_rgb) ||
|
||||
+ (is_input_rgb && is_output_rgb && hdmi_data->rgb_limited_range);
|
||||
}
|
||||
|
||||
static int is_color_space_decimation(struct dw_hdmi *hdmi)
|
||||
@@ -994,6 +997,13 @@ static int is_color_space_interpolation(struct dw_hdmi *hdmi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static bool is_csc_needed(struct dw_hdmi *hdmi)
|
||||
+{
|
||||
+ return is_color_space_conversion(hdmi) ||
|
||||
+ is_color_space_decimation(hdmi) ||
|
||||
+ is_color_space_interpolation(hdmi);
|
||||
+}
|
||||
+
|
||||
static void dw_hdmi_update_csc_coeffs(struct dw_hdmi *hdmi)
|
||||
{
|
||||
const u16 (*csc_coeff)[3][4] = &csc_coeff_default;
|
||||
@@ -2035,18 +2045,19 @@ static void dw_hdmi_enable_video_path(struct dw_hdmi *hdmi)
|
||||
hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS);
|
||||
|
||||
/* Enable csc path */
|
||||
- if (is_color_space_conversion(hdmi)) {
|
||||
+ if (is_csc_needed(hdmi)) {
|
||||
hdmi->mc_clkdis &= ~HDMI_MC_CLKDIS_CSCCLK_DISABLE;
|
||||
hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS);
|
||||
- }
|
||||
|
||||
- /* Enable color space conversion if needed */
|
||||
- if (is_color_space_conversion(hdmi))
|
||||
hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_IN_PATH,
|
||||
HDMI_MC_FLOWCTRL);
|
||||
- else
|
||||
+ } else {
|
||||
+ hdmi->mc_clkdis |= HDMI_MC_CLKDIS_CSCCLK_DISABLE;
|
||||
+ hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS);
|
||||
+
|
||||
hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_BYPASS,
|
||||
HDMI_MC_FLOWCTRL);
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Workaround to clear the overflow condition */
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,156 @@
|
||||
From 28f7bd400691b66d51db47de83b8c87fb6bae42a 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 21/79] 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
|
||||
|
@ -0,0 +1,103 @@
|
||||
From d6a28cac968ef3683baf3b6f8b329a096de6393a Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Fri, 4 Dec 2020 16:23:55 +0100
|
||||
Subject: [PATCH 22/79] FROMLIST(v1): 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,440 +0,0 @@
|
||||
From 6055acd420bf7e12b70ea56a79c7a7f9dfef7b07 Mon Sep 17 00:00:00 2001
|
||||
From: Dongjin Kim <tobetter@gmail.com>
|
||||
Date: Wed, 13 May 2020 04:04:11 +0000
|
||||
Subject: [PATCH 023/156] FROMGIT: arm64: dts: meson-sm1: add support for
|
||||
Hardkernel ODROID-C4
|
||||
|
||||
Add the board support for the Hardkernel Odroid-C4 single board computer.
|
||||
|
||||
The Odroid-C4 is the Odroid-C2 successor with same form factor, but using
|
||||
a modern Amlogic S905X3 (SM1) SoC and 4x USB3 ports.
|
||||
|
||||
Signed-off-by: Dongjin Kim <tobetter@gmail.com>
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||
.../boot/dts/amlogic/meson-sm1-odroid-c4.dts | 402 ++++++++++++++++++
|
||||
2 files changed, 403 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
index eef0045320f2..5daab72f5639 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
@@ -40,4 +40,5 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.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-a1-ad401.dtb
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
||||
new file mode 100644
|
||||
index 000000000000..00d90b30f8b4
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
||||
@@ -0,0 +1,402 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "meson-sm1.dtsi"
|
||||
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+
|
||||
+/ {
|
||||
+ 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";
|
||||
+
|
||||
+ 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;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ 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_ACTIVE_HIGH>;
|
||||
+ 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";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ vin-supply = <&vcc_5v>;
|
||||
+
|
||||
+ /* Connected to the Hub CHIPENABLE, LOW sets low power state */
|
||||
+ gpio = <&gpio GPIOH_4 GPIO_ACTIVE_HIGH>;
|
||||
+ 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>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&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>;
|
||||
+};
|
||||
+
|
||||
+&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
|
||||
+ * This signal should be handled by a USB specific power sequence
|
||||
+ * in order to reset the Hub when USB bus is powered down.
|
||||
+ */
|
||||
+ usb-hub {
|
||||
+ gpio-hog;
|
||||
+ gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
|
||||
+ output-high;
|
||||
+ line-name = "usb-hub-reset";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&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>;
|
||||
+};
|
||||
+
|
||||
+&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>;
|
||||
+};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 8034a2829adeb23b0431ace73b1b09221d6f27a7 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
Date: Sun, 27 Dec 2020 14:42:02 +0000
|
||||
Subject: [PATCH 23/79] FROMLIST(v1): arm64: dts: meson: switch TFLASH_VDD_EN
|
||||
pin to open drain on Odroid-C4
|
||||
|
||||
For the proper reboot Odroid-C4 board requires to switch TFLASH_VDD_EN
|
||||
pin to the high impedance mode, otherwise the board is stuck in the
|
||||
middle of loading early stages of the bootloader from SD card.
|
||||
|
||||
This can be achieved by using the OPEN_DRAIN flag instead if the
|
||||
ACTIVE_HIGH, what will leave the pin in input to achieve high state (pin
|
||||
has the pull-up) and solve the issue.
|
||||
|
||||
Suggested-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Fixes: 326e57518b0d ("arm64: dts: meson-sm1: add support for Hardkernel ODROID-C4")
|
||||
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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 cf5a98f0e47c..a712273c905a 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
|
||||
@@ -52,7 +52,7 @@
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
- gpio = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
|
||||
+ gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>;
|
||||
enable-active-high;
|
||||
regulator-always-on;
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,82 +0,0 @@
|
||||
From 7c1c1d86645c337d0f3d32e90abe557bfde9b093 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Wed, 13 May 2020 06:53:19 +0000
|
||||
Subject: [PATCH 024/156] FROMGIT: arm64: dts: meson-g12b: move G12B thermal
|
||||
nodes to meson-g12b.dtsi
|
||||
|
||||
The G12B thermal nodes should be in the meson-g12b.dtsi file.
|
||||
|
||||
Fixes: 195f140318a9 ("arm64: dts: meson: g12b: add cooling properties")
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12.dtsi | 23 ---------------------
|
||||
arch/arm64/boot/dts/amlogic/meson-g12b.dtsi | 22 ++++++++++++++++++++
|
||||
2 files changed, 22 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
index 55d39020ec72..f5a4bc819247 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
@@ -354,29 +354,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
-&cpu_thermal {
|
||||
- cooling-maps {
|
||||
- map0 {
|
||||
- trip = <&cpu_passive>;
|
||||
- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
- };
|
||||
- map1 {
|
||||
- trip = <&cpu_hot>;
|
||||
- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
- <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
- };
|
||||
- };
|
||||
-};
|
||||
-
|
||||
ðmac {
|
||||
power-domains = <&pwrc PWRC_G12A_ETH_ID>;
|
||||
};
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
|
||||
index 6dbc3968045b..9b8548e5f6e5 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
|
||||
@@ -113,3 +113,25 @@
|
||||
compatible = "amlogic,g12b-clkc";
|
||||
};
|
||||
|
||||
+&cpu_thermal {
|
||||
+ cooling-maps {
|
||||
+ map0 {
|
||||
+ trip = <&cpu_passive>;
|
||||
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
+ };
|
||||
+ map1 {
|
||||
+ trip = <&cpu_hot>;
|
||||
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,50 +1,53 @@
|
||||
From 1bf06c1222c6de12bc80462b1df332e8d375cf27 Mon Sep 17 00:00:00 2001
|
||||
From ea775ccb6a304e9b294f4aee512d578d271b3a4a Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Sun, 1 Mar 2020 05:43:00 +0000
|
||||
Subject: [PATCH 042/156] FROMGIT: arm64: dts: meson-g12b-gtking-pro: add
|
||||
initial device-tree
|
||||
Date: Fri, 12 Jun 2020 08:05:20 +0000
|
||||
Subject: [PATCH 24/79] FROMLIST(v2): arm64: dts: meson: add initial Beelink
|
||||
GS-King-X device-tree
|
||||
|
||||
The Shenzen AZW (Beelink) GT-King Pro is based on the Amlogic W400
|
||||
reference board with an S922X chip.
|
||||
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
|
||||
- Analogue audio output
|
||||
- 1x RS232 port
|
||||
- 2x USB 2.0 port
|
||||
- 2x USB 3.0 ports
|
||||
- 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
|
||||
- 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>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||
.../dts/amlogic/meson-g12b-gtking-pro.dts | 125 ++++++++++++++++++
|
||||
2 files changed, 126 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||
.../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 8c9e9dfa5da3..5cac4d1d487d 100644
|
||||
index ced03946314f..dce41cd3f347 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
@@ -4,6 +4,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
|
||||
@@ -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-gtking-pro.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||
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..f0c56a16af3d
|
||||
index 000000000000..c9d9dcb0cd65
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
|
||||
@@ -0,0 +1,125 @@
|
||||
+++ 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
|
||||
@ -55,11 +58,17 @@ index 000000000000..f0c56a16af3d
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "meson-g12b-w400.dtsi"
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "azw,gtking", "amlogic,g12b";
|
||||
+ model = "Beelink GT-King Pro";
|
||||
+ compatible = "azw,gsking-x", "amlogic,g12b";
|
||||
+ model = "Beelink GS-King X";
|
||||
+
|
||||
+ aliases {
|
||||
+ rtc0 = &rtc;
|
||||
+ rtc1 = &vrtc;
|
||||
+ };
|
||||
+
|
||||
+ gpio-keys-polled {
|
||||
+ compatible = "gpio-keys-polled";
|
||||
@ -74,24 +83,14 @@ index 000000000000..f0c56a16af3d
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ white {
|
||||
+ label = "power:white";
|
||||
+ gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,axg-sound-card";
|
||||
+ model = "G12B-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",
|
||||
+ "TDMOUT_B IN 2", "FRDDR_C OUT 1",
|
||||
+ "TDM_B Playback", "TDMOUT_B OUT";
|
||||
+ model = "G12B-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>,
|
||||
@ -116,7 +115,7 @@ index 000000000000..f0c56a16af3d
|
||||
+
|
||||
+ /* 8ch hdmi interface */
|
||||
+ dai-link-3 {
|
||||
+ sound-dai = <&tdmif_b>;
|
||||
+ sound-dai = <&tdmif_a>;
|
||||
+ dai-format = "i2s";
|
||||
+ dai-tdm-slot-tx-mask-0 = <1 1>;
|
||||
+ dai-tdm-slot-tx-mask-1 = <1 1>;
|
||||
@ -125,7 +124,7 @@ index 000000000000..f0c56a16af3d
|
||||
+ mclk-fs = <256>;
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
|
||||
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
@ -159,11 +158,23 @@ index 000000000000..f0c56a16af3d
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tdmif_b {
|
||||
+&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_b {
|
||||
+&tdmout_a {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
@ -1,79 +0,0 @@
|
||||
From c1f1a4675a0b6d121c952eea2edbe9b34081fbe6 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Wed, 13 May 2020 06:54:09 +0000
|
||||
Subject: [PATCH 025/156] FROMGIT: arm64: dts: meson-sm1: add cpu thermal nodes
|
||||
|
||||
Add thermal nodes for the Amlogic SM1 SoCs based on the G12A and G12B
|
||||
thermal nodes.
|
||||
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 24 ++++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||
index d4ec735fb1a5..71317f5aada1 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
|
||||
@@ -56,6 +56,7 @@
|
||||
reg = <0x0 0x0>;
|
||||
enable-method = "psci";
|
||||
next-level-cache = <&l2>;
|
||||
+ #cooling-cells = <2>;
|
||||
};
|
||||
|
||||
cpu1: cpu@1 {
|
||||
@@ -64,6 +65,7 @@
|
||||
reg = <0x0 0x1>;
|
||||
enable-method = "psci";
|
||||
next-level-cache = <&l2>;
|
||||
+ #cooling-cells = <2>;
|
||||
};
|
||||
|
||||
cpu2: cpu@2 {
|
||||
@@ -72,6 +74,7 @@
|
||||
reg = <0x0 0x2>;
|
||||
enable-method = "psci";
|
||||
next-level-cache = <&l2>;
|
||||
+ #cooling-cells = <2>;
|
||||
};
|
||||
|
||||
cpu3: cpu@3 {
|
||||
@@ -80,6 +83,7 @@
|
||||
reg = <0x0 0x3>;
|
||||
enable-method = "psci";
|
||||
next-level-cache = <&l2>;
|
||||
+ #cooling-cells = <2>;
|
||||
};
|
||||
|
||||
l2: l2-cache0 {
|
||||
@@ -466,6 +470,26 @@
|
||||
compatible = "amlogic,sm1-clkc";
|
||||
};
|
||||
|
||||
+&cpu_thermal {
|
||||
+ cooling-maps {
|
||||
+ map0 {
|
||||
+ trip = <&cpu_passive>;
|
||||
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
+ };
|
||||
+
|
||||
+ map1 {
|
||||
+ trip = <&cpu_hot>;
|
||||
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
||||
+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
ðmac {
|
||||
power-domains = <&pwrc PWRC_SM1_ETH_ID>;
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,49 @@
|
||||
From dad355f2881fee1ef3239f68650feb84c1eb121a Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Mon, 21 Dec 2020 12:06:25 +0000
|
||||
Subject: [PATCH 25/79] FROMLIST(v1): 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,37 +0,0 @@
|
||||
From 358f6d732c3032cc33991d39c3d9c69723ae9383 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:17:31 +0000
|
||||
Subject: [PATCH 026/156] FROMGIT: arm64: dts: meson: gxl: add acodec support
|
||||
|
||||
Add the internal audio DAC to the gxl SoC DT
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
index d9f00c5a9a5c..4e0d8ef97f99 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
|
||||
@@ -37,6 +37,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ acodec: audio-controller@c8832000 {
|
||||
+ compatible = "amlogic,t9015";
|
||||
+ reg = <0x0 0xc8832000 0x0 0x14>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ sound-name-prefix = "ACODEC";
|
||||
+ clocks = <&clkc CLKID_ACODEC>;
|
||||
+ clock-names = "pclk";
|
||||
+ resets = <&reset RESET_ACODEC>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
crypto: crypto@c883e000 {
|
||||
compatible = "amlogic,gxl-crypto";
|
||||
reg = <0x0 0xc883e000 0x0 0x36>;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,8 +1,8 @@
|
||||
From f0de6c272c4804d00a1979cdc2f4f1b8cb2c9cf2 Mon Sep 17 00:00:00 2001
|
||||
From f1f897b6cf618ab7d4739cde6c7a184d7a05b580 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 12 Jun 2020 08:04:00 +0000
|
||||
Subject: [PATCH 127/156] WIP: dt-bindings: arm: amlogic: add support for the
|
||||
Beelink GS-King-X
|
||||
Subject: [PATCH 26/79] FROMLIST(v2): 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.
|
||||
@ -13,14 +13,14 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
index 55605571e182..52440e38436a 100644
|
||||
index 3341788d1096..6bef60ddda64 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
@@ -151,6 +151,7 @@ properties:
|
||||
- description: Boards with the Amlogic Meson G12B S922X SoC
|
||||
items:
|
||||
- enum:
|
||||
+ - awz,gsking-x
|
||||
+ - azw,gsking-x
|
||||
- azw,gtking
|
||||
- azw,gtking-pro
|
||||
- hardkernel,odroid-n2
|
@ -1,85 +0,0 @@
|
||||
From 268e19c0f927b6dc83b549f0458b3e2f0d6127f4 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:18:27 +0000
|
||||
Subject: [PATCH 027/156] FROMGIT: arm64: dts: meson: p230-q200: add internal
|
||||
DAC support
|
||||
|
||||
Add the necessary bits to support the internal audio DAC the p230/q200
|
||||
reference design derivated boards. The output of this DAC is provided
|
||||
on the 3.5mm jack connector
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
.../boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 32 +++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
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 99c1f7f9d37e..358728f1ee93 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
|
||||
@@ -16,6 +16,13 @@
|
||||
ethernet0 = ðmac;
|
||||
};
|
||||
|
||||
+ dio2133: analog-amplifier {
|
||||
+ compatible = "simple-audio-amplifier";
|
||||
+ sound-name-prefix = "AU2";
|
||||
+ VCC-supply = <&hdmi_5v>;
|
||||
+ enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
spdif_dit: audio-codec-0 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dit";
|
||||
@@ -115,6 +122,14 @@
|
||||
sound {
|
||||
compatible = "amlogic,gx-sound-card";
|
||||
model = "GX-P230-Q200";
|
||||
+ audio-aux-devs = <&dio2133>;
|
||||
+ audio-widgets = "Line", "Lineout";
|
||||
+ audio-routing = "AU2 INL", "ACODEC LOLP",
|
||||
+ "AU2 INR", "ACODEC LORP",
|
||||
+ "AU2 INL", "ACODEC LOLN",
|
||||
+ "AU2 INR", "ACODEC LORN",
|
||||
+ "Lineout", "AU2 OUTL",
|
||||
+ "Lineout", "AU2 OUTR";
|
||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||
<&clkc CLKID_MPLL1>,
|
||||
<&clkc CLKID_MPLL2>;
|
||||
@@ -140,6 +155,10 @@
|
||||
codec-0 {
|
||||
sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
};
|
||||
+
|
||||
+ codec-1 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
|
||||
+ };
|
||||
};
|
||||
|
||||
dai-link-3 {
|
||||
@@ -157,9 +176,22 @@
|
||||
sound-dai = <&hdmi_tx>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ dai-link-5 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&acodec>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
+&acodec {
|
||||
+ AVDD-supply = <&vddio_ao18>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&aiu {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&spdif_out_h_pins>;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 2fb7343e4a5a82681549c417d668a4b45ed28a07 Mon Sep 17 00:00:00 2001
|
||||
From: Qinglang Miao <miaoqinglang@huawei.com>
|
||||
Date: Sat, 28 Nov 2020 16:10:04 +0000
|
||||
Subject: [PATCH 27/79] 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,82 +0,0 @@
|
||||
From bc8d9a3ec6b9e18fbc8829f2a409f430e8800338 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:19:24 +0000
|
||||
Subject: [PATCH 028/156] FROMGIT: arm64: dts: meson: libretech-cc: add
|
||||
internal DAC support
|
||||
|
||||
Add the internal DAC support on the libretech CC. The output of this
|
||||
DAC is provided on the 3.5mm jack connector.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
.../amlogic/meson-gxl-s905x-libretech-cc.dts | 30 +++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
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 2b821c501065..785c72319551 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
|
||||
@@ -22,6 +22,13 @@
|
||||
ethernet0 = ðmac;
|
||||
};
|
||||
|
||||
+ dio2133: analog-amplifier {
|
||||
+ compatible = "simple-audio-amplifier";
|
||||
+ sound-name-prefix = "AU2";
|
||||
+ VCC-supply = <&hdmi_5v>;
|
||||
+ enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
@@ -129,6 +136,12 @@
|
||||
sound {
|
||||
compatible = "amlogic,gx-sound-card";
|
||||
model = "GXL-LIBRETECH-S905X-CC";
|
||||
+ audio-aux-devs = <&dio2133>;
|
||||
+ audio-widgets = "Line", "Lineout";
|
||||
+ audio-routing = "AU2 INL", "ACODEC LOLN",
|
||||
+ "AU2 INR", "ACODEC LORN",
|
||||
+ "Lineout", "AU2 OUTL",
|
||||
+ "Lineout", "AU2 OUTR";
|
||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||
<&clkc CLKID_MPLL1>,
|
||||
<&clkc CLKID_MPLL2>;
|
||||
@@ -150,6 +163,10 @@
|
||||
codec-0 {
|
||||
sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
};
|
||||
+
|
||||
+ codec-1 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
|
||||
+ };
|
||||
};
|
||||
|
||||
dai-link-2 {
|
||||
@@ -159,9 +176,22 @@
|
||||
sound-dai = <&hdmi_tx>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ dai-link-3 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&acodec>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
+&acodec {
|
||||
+ AVDD-supply = <&vddio_ao18>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&aiu {
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,30 @@
|
||||
From bf90debfd857025cd854feee6bd5c3983db94f21 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 28/79] 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 102a3dc146be..df8f2305b988 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,82 +0,0 @@
|
||||
From 930dcfee8439e97981e6d05a79f39aa768532a8e Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:20:23 +0000
|
||||
Subject: [PATCH 029/156] FROMGIT: arm64: dts: meson: libretech-ac: add
|
||||
internal DAC support
|
||||
|
||||
Add the internal DAC support on the libretech CC. The output of this
|
||||
DAC is provided on the 9J5 connector.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
.../amlogic/meson-gxl-s805x-libretech-ac.dts | 30 +++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
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 3f35331c1652..63bdc0407eea 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
|
||||
@@ -98,6 +98,15 @@
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
+ vddio_ao18: regulator-vddio_ao18 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "VDDIO_AO18";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ vin-supply = <&vcc_3v3>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
vddio_boot: regulator-vddio_boot {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VDDIO_BOOT";
|
||||
@@ -110,6 +119,10 @@
|
||||
sound {
|
||||
compatible = "amlogic,gx-sound-card";
|
||||
model = "GXL-LIBRETECH-S805X-AC";
|
||||
+ audio-widgets = "Speaker", "9J5-3 LEFT",
|
||||
+ "Speaker", "9J5-2 RIGHT";
|
||||
+ audio-routing = "9J5-3 LEFT", "ACODEC LOLN",
|
||||
+ "9J5-2 RIGHT", "ACODEC LORN";
|
||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||
<&clkc CLKID_MPLL1>,
|
||||
<&clkc CLKID_MPLL2>;
|
||||
@@ -131,6 +144,10 @@
|
||||
codec-0 {
|
||||
sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
};
|
||||
+
|
||||
+ codec-1 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
|
||||
+ };
|
||||
};
|
||||
|
||||
dai-link-2 {
|
||||
@@ -140,9 +157,22 @@
|
||||
sound-dai = <&hdmi_tx>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ dai-link-3 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&acodec>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
+&acodec {
|
||||
+ AVDD-supply = <&vddio_ao18>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&aiu {
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 792b4a7db1a6427d446be9da31c10ee1687f5e4c Mon Sep 17 00:00:00 2001
|
||||
From: Qinglang Miao <miaoqinglang@huawei.com>
|
||||
Date: Sat, 28 Nov 2020 16:39:27 +0000
|
||||
Subject: [PATCH 29/79] FROMLIST(v1): drm/lima: fix reference leak in
|
||||
lima_pm_busy
|
||||
|
||||
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: 50de2e9ebbc0 ("drm/lima: enable runtime pm")
|
||||
Reported-by: Hulk Robot <hulkci@huawei.com>
|
||||
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
|
||||
---
|
||||
drivers/gpu/drm/lima/lima_sched.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c
|
||||
index 63b4c5643f9c..5cc20b403a25 100644
|
||||
--- a/drivers/gpu/drm/lima/lima_sched.c
|
||||
+++ b/drivers/gpu/drm/lima/lima_sched.c
|
||||
@@ -201,7 +201,7 @@ static int lima_pm_busy(struct lima_device *ldev)
|
||||
int ret;
|
||||
|
||||
/* resume GPU if it has been suspended by runtime PM */
|
||||
- ret = pm_runtime_get_sync(ldev->dev);
|
||||
+ ret = pm_runtime_resume_and_get(ldev->dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,83 +0,0 @@
|
||||
From fc4b8fed5cc950d9ef07a4b4894a9d60a7393510 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:21:28 +0000
|
||||
Subject: [PATCH 030/156] FROMGIT: arm64: dts: meson: libretech-pc: add
|
||||
internal DAC support
|
||||
|
||||
Add the internal DAC support on the libretech CC. The output of this
|
||||
DAC is provided on the 9J4 connector.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
.../dts/amlogic/meson-gx-libretech-pc.dtsi | 31 +++++++++++++++++++
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
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 4cc5f3df5677..0967d1f4820e 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
|
||||
@@ -30,6 +30,13 @@
|
||||
spi0 = &spifc;
|
||||
};
|
||||
|
||||
+ dio2133: analog-amplifier {
|
||||
+ compatible = "simple-audio-amplifier";
|
||||
+ sound-name-prefix = "AU2";
|
||||
+ VCC-supply = <&vcc5v>;
|
||||
+ enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
@@ -180,6 +187,13 @@
|
||||
sound {
|
||||
compatible = "amlogic,gx-sound-card";
|
||||
model = "GXL-LIBRETECH-S9XX-PC";
|
||||
+ audio-aux-devs = <&dio2133>;
|
||||
+ audio-widgets = "Speaker", "7J4-14 LEFT",
|
||||
+ "Speaker", "7J4-11 RIGHT";
|
||||
+ audio-routing = "AU2 INL", "ACODEC LOLN",
|
||||
+ "AU2 INR", "ACODEC LORN",
|
||||
+ "7J4-14 LEFT", "AU2 OUTL",
|
||||
+ "7J4-11 RIGHT", "AU2 OUTR";
|
||||
assigned-clocks = <&clkc CLKID_MPLL0>,
|
||||
<&clkc CLKID_MPLL1>,
|
||||
<&clkc CLKID_MPLL2>;
|
||||
@@ -201,6 +215,10 @@
|
||||
codec-0 {
|
||||
sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
|
||||
};
|
||||
+
|
||||
+ codec-1 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
|
||||
+ };
|
||||
};
|
||||
|
||||
dai-link-2 {
|
||||
@@ -210,9 +228,22 @@
|
||||
sound-dai = <&hdmi_tx>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ dai-link-3 {
|
||||
+ sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&acodec>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
|
||||
+&acodec {
|
||||
+ AVDD-supply = <&vddio_ao18>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&aiu {
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,86 @@
|
||||
From eb85e9dd941793114aa1583a982999068ee93740 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Lebed <lebed.dmitry@gmail.com>
|
||||
Date: Fri, 18 Dec 2020 08:49:32 +0000
|
||||
Subject: [PATCH 30/79] FROMLIST(v1): mmc: meson-gx: check for scatterlist size
|
||||
alignment in block mode
|
||||
|
||||
Enable SGDMA support for SD_IO_RW_EXTENDED and add proper check
|
||||
for scatterlist size alignment in block mode.
|
||||
|
||||
According to documentation, in SDIO block mode meson-gx DMA could
|
||||
only handle buffers with sizes that are multiples of SDIO block size.
|
||||
|
||||
Some SDIO drivers like brcmfmac use scatterlist API, but do not enforce
|
||||
proper scatterlist buffer size alignemnt, this looks like a root cause
|
||||
of non-working CMD53.
|
||||
|
||||
Some minor style fixes.
|
||||
|
||||
Signed-off-by: Dmitry Lebed <lebed.dmitry@gmail.com>
|
||||
---
|
||||
drivers/mmc/host/meson-gx-mmc.c | 37 ++++++++++++++++++++-------------
|
||||
1 file changed, 22 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
|
||||
index 13f6a2c0ed04..eb6c02bc4a02 100644
|
||||
--- a/drivers/mmc/host/meson-gx-mmc.c
|
||||
+++ b/drivers/mmc/host/meson-gx-mmc.c
|
||||
@@ -227,7 +227,6 @@ static void meson_mmc_get_transfer_mode(struct mmc_host *mmc,
|
||||
struct mmc_data *data = mrq->data;
|
||||
struct scatterlist *sg;
|
||||
int i;
|
||||
- bool use_desc_chain_mode = true;
|
||||
|
||||
/*
|
||||
* When Controller DMA cannot directly access DDR memory, disable
|
||||
@@ -237,25 +236,33 @@ static void meson_mmc_get_transfer_mode(struct mmc_host *mmc,
|
||||
if (host->dram_access_quirk)
|
||||
return;
|
||||
|
||||
- /*
|
||||
- * Broken SDIO with AP6255-based WiFi on Khadas VIM Pro has been
|
||||
- * reported. For some strange reason this occurs in descriptor
|
||||
- * chain mode only. So let's fall back to bounce buffer mode
|
||||
- * for command SD_IO_RW_EXTENDED.
|
||||
- */
|
||||
- if (mrq->cmd->opcode == SD_IO_RW_EXTENDED)
|
||||
- return;
|
||||
+ if (data->blocks > 1) {
|
||||
+ /*
|
||||
+ * In block mode DMA descriptor format, "length" field indicates
|
||||
+ * number of blocks and there is no way to pass DMA size that
|
||||
+ * is not multiple of SDIO block size, making it impossible to
|
||||
+ * tie more than one memory buffer with single SDIO block.
|
||||
+ * Block mode sg buffer size should be aligned with SDIO block
|
||||
+ * size, otherwise chain mode could not be used.
|
||||
+ */
|
||||
+ for_each_sg(data->sg, sg, data->sg_len, i) {
|
||||
+ if (sg->length % data->blksz) {
|
||||
+ WARN_ONCE(1, "unaligned sg len %u blksize %u\n",
|
||||
+ sg->length, data->blksz);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- for_each_sg(data->sg, sg, data->sg_len, i)
|
||||
+ for_each_sg(data->sg, sg, data->sg_len, i) {
|
||||
/* check for 8 byte alignment */
|
||||
- if (sg->offset & 7) {
|
||||
+ if (sg->offset % 8) {
|
||||
WARN_ONCE(1, "unaligned scatterlist buffer\n");
|
||||
- use_desc_chain_mode = false;
|
||||
- break;
|
||||
+ return;
|
||||
}
|
||||
+ }
|
||||
|
||||
- if (use_desc_chain_mode)
|
||||
- data->host_cookie |= SD_EMMC_DESC_CHAIN_MODE;
|
||||
+ data->host_cookie |= SD_EMMC_DESC_CHAIN_MODE;
|
||||
}
|
||||
|
||||
static inline bool meson_mmc_desc_chain_mode(const struct mmc_data *data)
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 27b512b569ec9ed7a2912e079b241cc622b48401 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:22:26 +0000
|
||||
Subject: [PATCH 031/156] FROMGIT: arm64: dts: meson: g12: add internal DAC
|
||||
|
||||
Add internal audio DAC support on the g12 and sm1 SoC family
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
index 0a625ad14712..9eaa452ce07a 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
|
||||
@@ -250,6 +250,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ acodec: audio-controller@32000 {
|
||||
+ compatible = "amlogic,t9015";
|
||||
+ reg = <0x0 0x32000 0x0 0x14>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ sound-name-prefix = "ACODEC";
|
||||
+ clocks = <&clkc CLKID_AUDIO_CODEC>;
|
||||
+ clock-names = "pclk";
|
||||
+ resets = <&reset RESET_AUDIO_CODEC>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
periphs: bus@34400 {
|
||||
compatible = "simple-bus";
|
||||
reg = <0x0 0x34400 0x0 0x400>;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,48 @@
|
||||
From dafd61f40996680aa2a8d2a2f897390ef246b638 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 31/79] 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,38 +0,0 @@
|
||||
From fd12e659a2fbebe5c6bd7c9ff64de7bbb59964b7 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:23:20 +0000
|
||||
Subject: [PATCH 032/156] FROMGIT: arm64: dts: meson: g12: add internal DAC
|
||||
glue
|
||||
|
||||
Add the internal DAC glue support on the g12 and sm1 family
|
||||
This glue connects the different TDM interfaces of the SoC to
|
||||
the internal audio DAC codec.
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-g12.dtsi | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
index f5a4bc819247..6a1f4dcf6488 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
|
||||
@@ -343,6 +343,15 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ toacodec: audio-controller@740 {
|
||||
+ compatible = "amlogic,g12a-toacodec";
|
||||
+ reg = <0x0 0x740 0x0 0x4>;
|
||||
+ #sound-dai-cells = <1>;
|
||||
+ sound-name-prefix = "TOACODEC";
|
||||
+ resets = <&clkc_audio AUD_RESET_TOACODEC>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
tohdmitx: audio-controller@744 {
|
||||
compatible = "amlogic,g12a-tohdmitx";
|
||||
reg = <0x0 0x744 0x0 0x4>;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,105 @@
|
||||
From 1cdf814d6c594292237fc777947db4249c4061a5 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 32/79] 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,29 +0,0 @@
|
||||
From 9b4ac4cdf9f313e4d1000dc64ef9437d9fedc381 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 13 May 2020 07:24:51 +0000
|
||||
Subject: [PATCH 033/156] FROMGIT: dt-bindings: reset: meson: add gxl internal
|
||||
dac reset
|
||||
|
||||
Add the reset line of the internal DAC found on the amlogic gxl SoC family
|
||||
|
||||
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
---
|
||||
include/dt-bindings/reset/amlogic,meson-gxbb-reset.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/dt-bindings/reset/amlogic,meson-gxbb-reset.h b/include/dt-bindings/reset/amlogic,meson-gxbb-reset.h
|
||||
index ea5058618863..883bfd3bcbad 100644
|
||||
--- a/include/dt-bindings/reset/amlogic,meson-gxbb-reset.h
|
||||
+++ b/include/dt-bindings/reset/amlogic,meson-gxbb-reset.h
|
||||
@@ -69,7 +69,7 @@
|
||||
#define RESET_SYS_CPU_L2 58
|
||||
#define RESET_SYS_CPU_P 59
|
||||
#define RESET_SYS_CPU_MBIST 60
|
||||
-/* 61 */
|
||||
+#define RESET_ACODEC 61
|
||||
/* 62 */
|
||||
/* 63 */
|
||||
/* RESET2 */
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,97 @@
|
||||
From b0f55b047ecb02796026c0038a3356f7c751eac8 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 33/79] 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,32 +0,0 @@
|
||||
From 7a909e686b3697106302dffaf6298ca4a35de447 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 28 Feb 2020 19:08:03 +0000
|
||||
Subject: [PATCH 034/156] FROMGIT: dt-bindings: add vendor prefix for Smartlabs
|
||||
LLC
|
||||
|
||||
Smartlabs LLC are a professional integrator of Interactive TV solutions
|
||||
and IPTV/VOD devices [1].
|
||||
|
||||
[1] https://www.smartlabs.tv/en/about/
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
index d3891386d671..a0adda624fc4 100644
|
||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
@@ -936,6 +936,8 @@ patternProperties:
|
||||
description: Sitronix Technology Corporation
|
||||
"^skyworks,.*":
|
||||
description: Skyworks Solutions, Inc.
|
||||
+ "^smartlabs,.*":
|
||||
+ description: SmartLabs LLC
|
||||
"^smsc,.*":
|
||||
description: Standard Microsystems Corporation
|
||||
"^snps,.*":
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,459 @@
|
||||
From a7786b82737f2ea71c58287d5c7ab6faba12f602 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Tue, 4 Feb 2020 15:35:03 +0100
|
||||
Subject: [PATCH 34/79] WIP: drm/panfrost: Make sure MMU context lifetime is
|
||||
not bound to panfrost_priv
|
||||
|
||||
Jobs can be in-flight when the file descriptor is closed (either because
|
||||
the process did not terminate properly, or because it didn't wait for
|
||||
all GPU jobs to be finished), and apparently panfrost_job_close() does
|
||||
not cancel already running jobs. Let's refcount the MMU context object
|
||||
so it's lifetime is no longer bound to the FD lifetime and running jobs
|
||||
can finish properly without generating spurious page faults.
|
||||
|
||||
Reported-by: Icecream95 <ixn@keemail.me>
|
||||
Fixes: 7282f7645d06 ("drm/panfrost: Implement per FD address spaces")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
---
|
||||
drivers/gpu/drm/panfrost/panfrost_device.h | 8 +-
|
||||
drivers/gpu/drm/panfrost/panfrost_drv.c | 50 ++-----
|
||||
drivers/gpu/drm/panfrost/panfrost_gem.c | 20 ++-
|
||||
drivers/gpu/drm/panfrost/panfrost_job.c | 4 +-
|
||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 160 ++++++++++++++-------
|
||||
drivers/gpu/drm/panfrost/panfrost_mmu.h | 5 +-
|
||||
6 files changed, 136 insertions(+), 111 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_device.h b/drivers/gpu/drm/panfrost/panfrost_device.h
|
||||
index 597cf1459b0a..4c6bdea5537b 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_device.h
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_device.h
|
||||
@@ -120,8 +120,12 @@ struct panfrost_device {
|
||||
};
|
||||
|
||||
struct panfrost_mmu {
|
||||
+ struct panfrost_device *pfdev;
|
||||
+ struct kref refcount;
|
||||
struct io_pgtable_cfg pgtbl_cfg;
|
||||
struct io_pgtable_ops *pgtbl_ops;
|
||||
+ struct drm_mm mm;
|
||||
+ spinlock_t mm_lock;
|
||||
int as;
|
||||
atomic_t as_count;
|
||||
struct list_head list;
|
||||
@@ -132,9 +136,7 @@ struct panfrost_file_priv {
|
||||
|
||||
struct drm_sched_entity sched_entity[NUM_JOB_SLOTS];
|
||||
|
||||
- struct panfrost_mmu mmu;
|
||||
- struct drm_mm mm;
|
||||
- spinlock_t mm_lock;
|
||||
+ struct panfrost_mmu *mmu;
|
||||
};
|
||||
|
||||
static inline struct panfrost_device *to_panfrost_device(struct drm_device *ddev)
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
index 83a461bdeea8..b2aa8e050314 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
@@ -417,7 +417,7 @@ static int panfrost_ioctl_madvise(struct drm_device *dev, void *data,
|
||||
* anyway, so let's not bother.
|
||||
*/
|
||||
if (!list_is_singular(&bo->mappings.list) ||
|
||||
- WARN_ON_ONCE(first->mmu != &priv->mmu)) {
|
||||
+ WARN_ON_ONCE(first->mmu != priv->mmu)) {
|
||||
ret = -EINVAL;
|
||||
goto out_unlock_mappings;
|
||||
}
|
||||
@@ -449,32 +449,6 @@ int panfrost_unstable_ioctl_check(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-#define PFN_4G (SZ_4G >> PAGE_SHIFT)
|
||||
-#define PFN_4G_MASK (PFN_4G - 1)
|
||||
-#define PFN_16M (SZ_16M >> PAGE_SHIFT)
|
||||
-
|
||||
-static void panfrost_drm_mm_color_adjust(const struct drm_mm_node *node,
|
||||
- unsigned long color,
|
||||
- u64 *start, u64 *end)
|
||||
-{
|
||||
- /* Executable buffers can't start or end on a 4GB boundary */
|
||||
- if (!(color & PANFROST_BO_NOEXEC)) {
|
||||
- u64 next_seg;
|
||||
-
|
||||
- if ((*start & PFN_4G_MASK) == 0)
|
||||
- (*start)++;
|
||||
-
|
||||
- if ((*end & PFN_4G_MASK) == 0)
|
||||
- (*end)--;
|
||||
-
|
||||
- next_seg = ALIGN(*start, PFN_4G);
|
||||
- if (next_seg - *start <= PFN_16M)
|
||||
- *start = next_seg + 1;
|
||||
-
|
||||
- *end = min(*end, ALIGN(*start, PFN_4G) - 1);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
static int
|
||||
panfrost_open(struct drm_device *dev, struct drm_file *file)
|
||||
{
|
||||
@@ -489,15 +463,11 @@ panfrost_open(struct drm_device *dev, struct drm_file *file)
|
||||
panfrost_priv->pfdev = pfdev;
|
||||
file->driver_priv = panfrost_priv;
|
||||
|
||||
- spin_lock_init(&panfrost_priv->mm_lock);
|
||||
-
|
||||
- /* 4G enough for now. can be 48-bit */
|
||||
- drm_mm_init(&panfrost_priv->mm, SZ_32M >> PAGE_SHIFT, (SZ_4G - SZ_32M) >> PAGE_SHIFT);
|
||||
- panfrost_priv->mm.color_adjust = panfrost_drm_mm_color_adjust;
|
||||
-
|
||||
- ret = panfrost_mmu_pgtable_alloc(panfrost_priv);
|
||||
- if (ret)
|
||||
- goto err_pgtable;
|
||||
+ panfrost_priv->mmu = panfrost_mmu_ctx_create(pfdev);
|
||||
+ if (IS_ERR(panfrost_priv->mmu)) {
|
||||
+ ret = PTR_ERR(panfrost_priv->mmu);
|
||||
+ goto err_free;
|
||||
+ }
|
||||
|
||||
ret = panfrost_job_open(panfrost_priv);
|
||||
if (ret)
|
||||
@@ -506,9 +476,8 @@ panfrost_open(struct drm_device *dev, struct drm_file *file)
|
||||
return 0;
|
||||
|
||||
err_job:
|
||||
- panfrost_mmu_pgtable_free(panfrost_priv);
|
||||
-err_pgtable:
|
||||
- drm_mm_takedown(&panfrost_priv->mm);
|
||||
+ panfrost_mmu_ctx_put(panfrost_priv->mmu);
|
||||
+err_free:
|
||||
kfree(panfrost_priv);
|
||||
return ret;
|
||||
}
|
||||
@@ -521,8 +490,7 @@ panfrost_postclose(struct drm_device *dev, struct drm_file *file)
|
||||
panfrost_perfcnt_close(file);
|
||||
panfrost_job_close(panfrost_priv);
|
||||
|
||||
- panfrost_mmu_pgtable_free(panfrost_priv);
|
||||
- drm_mm_takedown(&panfrost_priv->mm);
|
||||
+ panfrost_mmu_ctx_put(panfrost_priv->mmu);
|
||||
kfree(panfrost_priv);
|
||||
}
|
||||
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
|
||||
index 3e0723bc36bd..23377481f4e3 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
|
||||
@@ -60,7 +60,7 @@ panfrost_gem_mapping_get(struct panfrost_gem_object *bo,
|
||||
|
||||
mutex_lock(&bo->mappings.lock);
|
||||
list_for_each_entry(iter, &bo->mappings.list, node) {
|
||||
- if (iter->mmu == &priv->mmu) {
|
||||
+ if (iter->mmu == priv->mmu) {
|
||||
kref_get(&iter->refcount);
|
||||
mapping = iter;
|
||||
break;
|
||||
@@ -74,16 +74,13 @@ panfrost_gem_mapping_get(struct panfrost_gem_object *bo,
|
||||
static void
|
||||
panfrost_gem_teardown_mapping(struct panfrost_gem_mapping *mapping)
|
||||
{
|
||||
- struct panfrost_file_priv *priv;
|
||||
-
|
||||
if (mapping->active)
|
||||
panfrost_mmu_unmap(mapping);
|
||||
|
||||
- priv = container_of(mapping->mmu, struct panfrost_file_priv, mmu);
|
||||
- spin_lock(&priv->mm_lock);
|
||||
+ spin_lock(&mapping->mmu->mm_lock);
|
||||
if (drm_mm_node_allocated(&mapping->mmnode))
|
||||
drm_mm_remove_node(&mapping->mmnode);
|
||||
- spin_unlock(&priv->mm_lock);
|
||||
+ spin_unlock(&mapping->mmu->mm_lock);
|
||||
}
|
||||
|
||||
static void panfrost_gem_mapping_release(struct kref *kref)
|
||||
@@ -94,6 +91,7 @@ static void panfrost_gem_mapping_release(struct kref *kref)
|
||||
|
||||
panfrost_gem_teardown_mapping(mapping);
|
||||
drm_gem_object_put(&mapping->obj->base.base);
|
||||
+ panfrost_mmu_ctx_put(mapping->mmu);
|
||||
kfree(mapping);
|
||||
}
|
||||
|
||||
@@ -143,11 +141,11 @@ int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv)
|
||||
else
|
||||
align = size >= SZ_2M ? SZ_2M >> PAGE_SHIFT : 0;
|
||||
|
||||
- mapping->mmu = &priv->mmu;
|
||||
- spin_lock(&priv->mm_lock);
|
||||
- ret = drm_mm_insert_node_generic(&priv->mm, &mapping->mmnode,
|
||||
+ mapping->mmu = panfrost_mmu_ctx_get(priv->mmu);
|
||||
+ spin_lock(&mapping->mmu->mm_lock);
|
||||
+ ret = drm_mm_insert_node_generic(&mapping->mmu->mm, &mapping->mmnode,
|
||||
size >> PAGE_SHIFT, align, color, 0);
|
||||
- spin_unlock(&priv->mm_lock);
|
||||
+ spin_unlock(&mapping->mmu->mm_lock);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
@@ -176,7 +174,7 @@ void panfrost_gem_close(struct drm_gem_object *obj, struct drm_file *file_priv)
|
||||
|
||||
mutex_lock(&bo->mappings.lock);
|
||||
list_for_each_entry(iter, &bo->mappings.list, node) {
|
||||
- if (iter->mmu == &priv->mmu) {
|
||||
+ if (iter->mmu == priv->mmu) {
|
||||
mapping = iter;
|
||||
list_del(&iter->node);
|
||||
break;
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
|
||||
index d6d5c15184f9..b600618abb49 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
|
||||
@@ -165,7 +165,7 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
||||
return;
|
||||
}
|
||||
|
||||
- cfg = panfrost_mmu_as_get(pfdev, &job->file_priv->mmu);
|
||||
+ cfg = panfrost_mmu_as_get(pfdev, job->file_priv->mmu);
|
||||
|
||||
job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF);
|
||||
job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32);
|
||||
@@ -524,7 +524,7 @@ static irqreturn_t panfrost_job_irq_handler(int irq, void *data)
|
||||
if (job) {
|
||||
pfdev->jobs[j] = NULL;
|
||||
|
||||
- panfrost_mmu_as_put(pfdev, &job->file_priv->mmu);
|
||||
+ panfrost_mmu_as_put(pfdev, job->file_priv->mmu);
|
||||
panfrost_devfreq_record_idle(&pfdev->pfdevfreq);
|
||||
|
||||
dma_fence_signal_locked(job->done_fence);
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
index 7c1b3481b785..42da9c40fc4b 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
@@ -1,5 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* Copyright 2019 Linaro, Ltd, Rob Herring <robh@kernel.org> */
|
||||
+
|
||||
+#include <drm/panfrost_drm.h>
|
||||
+
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/delay.h>
|
||||
@@ -337,7 +340,7 @@ static void mmu_tlb_inv_context_s1(void *cookie)
|
||||
|
||||
static void mmu_tlb_sync_context(void *cookie)
|
||||
{
|
||||
- //struct panfrost_device *pfdev = cookie;
|
||||
+ //struct panfrost_mmu *mmu = cookie;
|
||||
// TODO: Wait 1000 GPU cycles for HW_ISSUE_6367/T60X
|
||||
}
|
||||
|
||||
@@ -352,57 +355,10 @@ static const struct iommu_flush_ops mmu_tlb_ops = {
|
||||
.tlb_flush_walk = mmu_tlb_flush_walk,
|
||||
};
|
||||
|
||||
-int panfrost_mmu_pgtable_alloc(struct panfrost_file_priv *priv)
|
||||
-{
|
||||
- struct panfrost_mmu *mmu = &priv->mmu;
|
||||
- struct panfrost_device *pfdev = priv->pfdev;
|
||||
-
|
||||
- INIT_LIST_HEAD(&mmu->list);
|
||||
- mmu->as = -1;
|
||||
-
|
||||
- mmu->pgtbl_cfg = (struct io_pgtable_cfg) {
|
||||
- .pgsize_bitmap = SZ_4K | SZ_2M,
|
||||
- .ias = FIELD_GET(0xff, pfdev->features.mmu_features),
|
||||
- .oas = FIELD_GET(0xff00, pfdev->features.mmu_features),
|
||||
- .coherent_walk = pfdev->coherent,
|
||||
- .tlb = &mmu_tlb_ops,
|
||||
- .iommu_dev = pfdev->dev,
|
||||
- };
|
||||
-
|
||||
- mmu->pgtbl_ops = alloc_io_pgtable_ops(ARM_MALI_LPAE, &mmu->pgtbl_cfg,
|
||||
- priv);
|
||||
- if (!mmu->pgtbl_ops)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-void panfrost_mmu_pgtable_free(struct panfrost_file_priv *priv)
|
||||
-{
|
||||
- struct panfrost_device *pfdev = priv->pfdev;
|
||||
- struct panfrost_mmu *mmu = &priv->mmu;
|
||||
-
|
||||
- spin_lock(&pfdev->as_lock);
|
||||
- if (mmu->as >= 0) {
|
||||
- pm_runtime_get_noresume(pfdev->dev);
|
||||
- if (pm_runtime_active(pfdev->dev))
|
||||
- panfrost_mmu_disable(pfdev, mmu->as);
|
||||
- pm_runtime_put_autosuspend(pfdev->dev);
|
||||
-
|
||||
- clear_bit(mmu->as, &pfdev->as_alloc_mask);
|
||||
- clear_bit(mmu->as, &pfdev->as_in_use_mask);
|
||||
- list_del(&mmu->list);
|
||||
- }
|
||||
- spin_unlock(&pfdev->as_lock);
|
||||
-
|
||||
- free_io_pgtable_ops(mmu->pgtbl_ops);
|
||||
-}
|
||||
-
|
||||
static struct panfrost_gem_mapping *
|
||||
addr_to_mapping(struct panfrost_device *pfdev, int as, u64 addr)
|
||||
{
|
||||
struct panfrost_gem_mapping *mapping = NULL;
|
||||
- struct panfrost_file_priv *priv;
|
||||
struct drm_mm_node *node;
|
||||
u64 offset = addr >> PAGE_SHIFT;
|
||||
struct panfrost_mmu *mmu;
|
||||
@@ -415,11 +371,10 @@ addr_to_mapping(struct panfrost_device *pfdev, int as, u64 addr)
|
||||
goto out;
|
||||
|
||||
found_mmu:
|
||||
- priv = container_of(mmu, struct panfrost_file_priv, mmu);
|
||||
|
||||
- spin_lock(&priv->mm_lock);
|
||||
+ spin_lock(&mmu->mm_lock);
|
||||
|
||||
- drm_mm_for_each_node(node, &priv->mm) {
|
||||
+ drm_mm_for_each_node(node, &mmu->mm) {
|
||||
if (offset >= node->start &&
|
||||
offset < (node->start + node->size)) {
|
||||
mapping = drm_mm_node_to_panfrost_mapping(node);
|
||||
@@ -429,7 +384,7 @@ addr_to_mapping(struct panfrost_device *pfdev, int as, u64 addr)
|
||||
}
|
||||
}
|
||||
|
||||
- spin_unlock(&priv->mm_lock);
|
||||
+ spin_unlock(&mmu->mm_lock);
|
||||
out:
|
||||
spin_unlock(&pfdev->as_lock);
|
||||
return mapping;
|
||||
@@ -535,6 +490,107 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static void panfrost_mmu_release_ctx(struct kref *kref)
|
||||
+{
|
||||
+ struct panfrost_mmu *mmu = container_of(kref, struct panfrost_mmu,
|
||||
+ refcount);
|
||||
+ struct panfrost_device *pfdev = mmu->pfdev;
|
||||
+
|
||||
+ spin_lock(&pfdev->as_lock);
|
||||
+ if (mmu->as >= 0) {
|
||||
+ pm_runtime_get_noresume(pfdev->dev);
|
||||
+ if (pm_runtime_active(pfdev->dev))
|
||||
+ panfrost_mmu_disable(pfdev, mmu->as);
|
||||
+ pm_runtime_put_autosuspend(pfdev->dev);
|
||||
+
|
||||
+ clear_bit(mmu->as, &pfdev->as_alloc_mask);
|
||||
+ clear_bit(mmu->as, &pfdev->as_in_use_mask);
|
||||
+ list_del(&mmu->list);
|
||||
+ }
|
||||
+ spin_unlock(&pfdev->as_lock);
|
||||
+
|
||||
+ free_io_pgtable_ops(mmu->pgtbl_ops);
|
||||
+ drm_mm_takedown(&mmu->mm);
|
||||
+ kfree(mmu);
|
||||
+}
|
||||
+
|
||||
+void panfrost_mmu_ctx_put(struct panfrost_mmu *mmu)
|
||||
+{
|
||||
+ kref_put(&mmu->refcount, panfrost_mmu_release_ctx);
|
||||
+}
|
||||
+
|
||||
+struct panfrost_mmu *panfrost_mmu_ctx_get(struct panfrost_mmu *mmu)
|
||||
+{
|
||||
+ kref_get(&mmu->refcount);
|
||||
+
|
||||
+ return mmu;
|
||||
+}
|
||||
+
|
||||
+#define PFN_4G (SZ_4G >> PAGE_SHIFT)
|
||||
+#define PFN_4G_MASK (PFN_4G - 1)
|
||||
+#define PFN_16M (SZ_16M >> PAGE_SHIFT)
|
||||
+
|
||||
+static void panfrost_drm_mm_color_adjust(const struct drm_mm_node *node,
|
||||
+ unsigned long color,
|
||||
+ u64 *start, u64 *end)
|
||||
+{
|
||||
+ /* Executable buffers can't start or end on a 4GB boundary */
|
||||
+ if (!(color & PANFROST_BO_NOEXEC)) {
|
||||
+ u64 next_seg;
|
||||
+
|
||||
+ if ((*start & PFN_4G_MASK) == 0)
|
||||
+ (*start)++;
|
||||
+
|
||||
+ if ((*end & PFN_4G_MASK) == 0)
|
||||
+ (*end)--;
|
||||
+
|
||||
+ next_seg = ALIGN(*start, PFN_4G);
|
||||
+ if (next_seg - *start <= PFN_16M)
|
||||
+ *start = next_seg + 1;
|
||||
+
|
||||
+ *end = min(*end, ALIGN(*start, PFN_4G) - 1);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+struct panfrost_mmu *panfrost_mmu_ctx_create(struct panfrost_device *pfdev)
|
||||
+{
|
||||
+ struct panfrost_mmu *mmu;
|
||||
+
|
||||
+ mmu = kzalloc(sizeof(*mmu), GFP_KERNEL);
|
||||
+ if (!mmu)
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
+
|
||||
+ mmu->pfdev = pfdev;
|
||||
+ spin_lock_init(&mmu->mm_lock);
|
||||
+
|
||||
+ /* 4G enough for now. can be 48-bit */
|
||||
+ drm_mm_init(&mmu->mm, SZ_32M >> PAGE_SHIFT, (SZ_4G - SZ_32M) >> PAGE_SHIFT);
|
||||
+ mmu->mm.color_adjust = panfrost_drm_mm_color_adjust;
|
||||
+
|
||||
+ INIT_LIST_HEAD(&mmu->list);
|
||||
+ mmu->as = -1;
|
||||
+
|
||||
+ mmu->pgtbl_cfg = (struct io_pgtable_cfg) {
|
||||
+ .pgsize_bitmap = SZ_4K | SZ_2M,
|
||||
+ .ias = FIELD_GET(0xff, pfdev->features.mmu_features),
|
||||
+ .oas = FIELD_GET(0xff00, pfdev->features.mmu_features),
|
||||
+ .coherent_walk = pfdev->coherent,
|
||||
+ .tlb = &mmu_tlb_ops,
|
||||
+ .iommu_dev = pfdev->dev,
|
||||
+ };
|
||||
+
|
||||
+ mmu->pgtbl_ops = alloc_io_pgtable_ops(ARM_MALI_LPAE, &mmu->pgtbl_cfg,
|
||||
+ mmu);
|
||||
+ if (!mmu->pgtbl_ops) {
|
||||
+ kfree(mmu);
|
||||
+ return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
+
|
||||
+ kref_init(&mmu->refcount);
|
||||
+
|
||||
+ return mmu;
|
||||
+}
|
||||
+
|
||||
static const char *access_type_name(struct panfrost_device *pfdev,
|
||||
u32 fault_status)
|
||||
{
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.h b/drivers/gpu/drm/panfrost/panfrost_mmu.h
|
||||
index 44fc2edf63ce..cc2a0d307feb 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.h
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.h
|
||||
@@ -18,7 +18,8 @@ void panfrost_mmu_reset(struct panfrost_device *pfdev);
|
||||
u32 panfrost_mmu_as_get(struct panfrost_device *pfdev, struct panfrost_mmu *mmu);
|
||||
void panfrost_mmu_as_put(struct panfrost_device *pfdev, struct panfrost_mmu *mmu);
|
||||
|
||||
-int panfrost_mmu_pgtable_alloc(struct panfrost_file_priv *priv);
|
||||
-void panfrost_mmu_pgtable_free(struct panfrost_file_priv *priv);
|
||||
+struct panfrost_mmu *panfrost_mmu_ctx_get(struct panfrost_mmu *mmu);
|
||||
+void panfrost_mmu_ctx_put(struct panfrost_mmu *mmu);
|
||||
+struct panfrost_mmu *panfrost_mmu_ctx_create(struct panfrost_device *pfdev);
|
||||
|
||||
#endif
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,43 +0,0 @@
|
||||
From a66c639c8a4503663b43f0275b67e79624ae9ddf Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 28 Feb 2020 19:10:01 +0000
|
||||
Subject: [PATCH 035/156] FROMGIT: dt-bindings: arm: amlogic: add support for
|
||||
the Smartlabs SML-5442TW
|
||||
|
||||
The SML-5442TW is an STB for O2 Czech IPTV/VOD and DVB-T/T2 based on the
|
||||
Amlogic P231 reference design using the S905D chipset. Specs:
|
||||
|
||||
2GB DDR3 RAM
|
||||
8GB eMMC storage
|
||||
10/100 Base-T Ethernet
|
||||
802.11 a/b/g/n/ac + BT 4.1 HS sdio wireless module (QCA9377)
|
||||
2x single colour and 1x dual colour LEDs on the front panel
|
||||
1x reset button on the front panel
|
||||
HDMI 2.0 (4k@60p) video
|
||||
Composite video + 2-channel audio output on 3.5mm jack
|
||||
S/PDIF audio output
|
||||
Single DVB-T/T2 tuner (AVL6762/MxL608)
|
||||
2x USB 2.0 ports
|
||||
1x micro SD card slot
|
||||
UART pins (internal)
|
||||
|
||||
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 11908b151e0a..47badda69ef5 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
@@ -107,6 +107,7 @@ properties:
|
||||
- amlogic,p231
|
||||
- libretech,aml-s905d-pc
|
||||
- phicomm,n1
|
||||
+ - smartlabs,sml5442tw
|
||||
- const: amlogic,s905d
|
||||
- const: amlogic,meson-gxl
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,135 @@
|
||||
From 85a687a98eddfb5a77579e2350211a9fcb15bf69 Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Thu, 3 Nov 2016 15:29:23 +0100
|
||||
Subject: [PATCH 35/79] WIP: arm64: meson: add Amlogic Meson GX PM Suspend
|
||||
|
||||
The Amlogic Meson GX SoCs uses a non-standard argument to the
|
||||
PSCI CPU_SUSPEND call to enter system suspend.
|
||||
|
||||
Implement such call within platform_suspend_ops.
|
||||
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
drivers/firmware/meson/Kconfig | 6 ++
|
||||
drivers/firmware/meson/Makefile | 1 +
|
||||
drivers/firmware/meson/meson_gx_pm.c | 86 ++++++++++++++++++++++++++++
|
||||
3 files changed, 93 insertions(+)
|
||||
create mode 100644 drivers/firmware/meson/meson_gx_pm.c
|
||||
|
||||
diff --git a/drivers/firmware/meson/Kconfig b/drivers/firmware/meson/Kconfig
|
||||
index f2fdd3756648..d3ead92ac61b 100644
|
||||
--- a/drivers/firmware/meson/Kconfig
|
||||
+++ b/drivers/firmware/meson/Kconfig
|
||||
@@ -9,3 +9,9 @@ config MESON_SM
|
||||
depends on ARM64_4K_PAGES
|
||||
help
|
||||
Say y here to enable the Amlogic secure monitor driver
|
||||
+
|
||||
+config MESON_GX_PM
|
||||
+ bool
|
||||
+ default ARCH_MESON if ARM64
|
||||
+ help
|
||||
+ Say y here to enable the Amlogic GX SoC Power Management
|
||||
diff --git a/drivers/firmware/meson/Makefile b/drivers/firmware/meson/Makefile
|
||||
index c6c09483b622..0193cdfee32f 100644
|
||||
--- a/drivers/firmware/meson/Makefile
|
||||
+++ b/drivers/firmware/meson/Makefile
|
||||
@@ -1,2 +1,3 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-$(CONFIG_MESON_SM) += meson_sm.o
|
||||
+obj-$(CONFIG_MESON_GX_PM) += meson_gx_pm.o
|
||||
diff --git a/drivers/firmware/meson/meson_gx_pm.c b/drivers/firmware/meson/meson_gx_pm.c
|
||||
new file mode 100644
|
||||
index 000000000000..c104c2e4c77f
|
||||
--- /dev/null
|
||||
+++ b/drivers/firmware/meson/meson_gx_pm.c
|
||||
@@ -0,0 +1,86 @@
|
||||
+/*
|
||||
+ * Amlogic Meson GX Power Management
|
||||
+ *
|
||||
+ * Copyright (c) 2016 Baylibre, SAS.
|
||||
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of version 2 of the GNU General Public License as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
+ * more details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/suspend.h>
|
||||
+#include <linux/arm-smccc.h>
|
||||
+
|
||||
+#include <uapi/linux/psci.h>
|
||||
+
|
||||
+#include <asm/suspend.h>
|
||||
+
|
||||
+/*
|
||||
+ * The Amlogic GX SoCs uses a special argument value to the
|
||||
+ * PSCI CPU_SUSPEND method to enter SUSPEND_MEM.
|
||||
+ */
|
||||
+
|
||||
+#define MESON_SUSPEND_PARAM 0x0010000
|
||||
+#define PSCI_FN_NATIVE(version, name) PSCI_##version##_FN64_##name
|
||||
+
|
||||
+static int meson_gx_suspend_finish(unsigned long arg)
|
||||
+{
|
||||
+ struct arm_smccc_res res;
|
||||
+
|
||||
+ arm_smccc_smc(PSCI_FN_NATIVE(0_2, CPU_SUSPEND), arg,
|
||||
+ virt_to_phys(cpu_resume), 0, 0, 0, 0, 0, &res);
|
||||
+
|
||||
+ return res.a0;
|
||||
+}
|
||||
+
|
||||
+static int meson_gx_suspend_enter(suspend_state_t state)
|
||||
+{
|
||||
+ switch (state) {
|
||||
+ case PM_SUSPEND_MEM:
|
||||
+ return cpu_suspend(MESON_SUSPEND_PARAM,
|
||||
+ meson_gx_suspend_finish);
|
||||
+ }
|
||||
+
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+
|
||||
+static const struct platform_suspend_ops meson_gx_pm_ops = {
|
||||
+ .enter = meson_gx_suspend_enter,
|
||||
+ .valid = suspend_valid_only_mem,
|
||||
+};
|
||||
+
|
||||
+static const struct of_device_id meson_gx_pm_match[] = {
|
||||
+ { .compatible = "amlogic,meson-gx-pm", },
|
||||
+ { /* sentinel */ },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, meson_gx_pm_match);
|
||||
+
|
||||
+static int meson_gx_pm_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ suspend_set_ops(&meson_gx_pm_ops);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct platform_driver meson_gx_pm_driver = {
|
||||
+ .probe = meson_gx_pm_probe,
|
||||
+ .driver = {
|
||||
+ .name = "meson-gx-pm",
|
||||
+ .of_match_table = meson_gx_pm_match,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(meson_gx_pm_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
+MODULE_DESCRIPTION("Amlogic Meson GX PM driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,122 +0,0 @@
|
||||
From 90ae363f4e28aa8ebb8eadd8edf21854080bd3f5 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 28 Feb 2020 19:16:35 +0000
|
||||
Subject: [PATCH 036/156] FROMGIT: arm64: dts: meson: add support for the
|
||||
Smartlabs SML-5442TW
|
||||
|
||||
The Smartlabs SML-5442TW is based on the Amlogic P231 reference design
|
||||
but with the following differences:
|
||||
|
||||
- The Yellow and Blue LEDs are available but disabled
|
||||
- The Red and Green LEDs are used to signal off/on status
|
||||
- uart_AO can be accessed after opening the case; soldered pins exist
|
||||
- QCA9377 instead of the usual Ampak/Broadcom module
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||
.../dts/amlogic/meson-gxl-s905d-sml5442tw.dts | 80 +++++++++++++++++++
|
||||
2 files changed, 81 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
index 5daab72f5639..af883e0bfb9c 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/Makefile
|
||||
+++ b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
@@ -27,6 +27,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p230.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p231.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-phicomm-n1.dtb
|
||||
+dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-sml5442tw.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s805x-p241.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-p281.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-tx3-mini.dtb
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts
|
||||
new file mode 100644
|
||||
index 000000000000..8509f615a604
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts
|
||||
@@ -0,0 +1,80 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) Christian Hewitt <christianshewitt@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "meson-gxl-s905d.dtsi"
|
||||
+#include "meson-gx-p23x-q20x.dtsi"
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "smartlabs,sml5442tw", "amlogic,s905d", "amlogic,meson-gxl";
|
||||
+ model = "SmartLabs SML-5442TW";
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ yellow {
|
||||
+ color = <LED_COLOR_ID_YELLOW>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ blue {
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ green {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+
|
||||
+ red {
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ gpios = <&gpio GPIODV_27 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ðmac {
|
||||
+ status = "okay";
|
||||
+ phy-mode = "rmii";
|
||||
+ phy-handle = <&internal_phy>;
|
||||
+};
|
||||
+
|
||||
+&i2c_A {
|
||||
+ status = "okay";
|
||||
+ pinctrl-0 = <&i2c_a_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+};
|
||||
+
|
||||
+&internal_phy {
|
||||
+ pinctrl-0 = <ð_link_led_pins>, <ð_act_led_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+};
|
||||
+
|
||||
+/* 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 = "qcom,qca9377-bt";
|
||||
+ enable-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
||||
+ max-speed = <2000000>;
|
||||
+ clocks = <&wifi32k>;
|
||||
+ clock-names = "lpo";
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 87131b3b370f73a57aba13f73e4071a51702c8fa Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Thu, 3 Nov 2016 15:29:25 +0100
|
||||
Subject: [PATCH 36/79] WIP: arm64: dts: meson: add support for GX PM and
|
||||
Virtual RTC
|
||||
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 9 +++++++++
|
||||
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
|
||||
index ac6e99a9c95f..3823c0f25e7a 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
|
||||
@@ -216,6 +216,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ system-suspend {
|
||||
+ compatible = "amlogic,meson-gx-pm";
|
||||
+ };
|
||||
+
|
||||
efuse: efuse {
|
||||
compatible = "amlogic,meson-gx-efuse", "amlogic,meson-gxbb-efuse";
|
||||
#address-cells = <1>;
|
||||
@@ -453,6 +457,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ vrtc: rtc@a8 {
|
||||
+ compatible = "amlogic,meson-vrtc";
|
||||
+ reg = <0x0 0x000a8 0x0 0x4>;
|
||||
+ };
|
||||
+
|
||||
cec_AO: cec@100 {
|
||||
compatible = "amlogic,meson-gx-ao-cec";
|
||||
reg = <0x0 0x00100 0x0 0x14>;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,32 +0,0 @@
|
||||
From a09cbc00673c29b8f69573b012573ef0e45adcf0 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Tue, 7 Jan 2020 04:37:57 +0000
|
||||
Subject: [PATCH 037/156] FROMGIT: arm64: dts: meson: add ethernet interrupt to
|
||||
wetek dtsi
|
||||
|
||||
Add Ethernet interrupt details to the WeTek Hub/Play2 dtsi to resolve
|
||||
an issue with Ethernet probing in mainline u-boot.
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||
index d6133af09d64..ad812854a107 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
|
||||
@@ -149,6 +149,10 @@
|
||||
reset-assert-us = <10000>;
|
||||
reset-deassert-us = <30000>;
|
||||
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
|
||||
+
|
||||
+ interrupt-parent = <&gpio_intc>;
|
||||
+ /* MAC_INTR on GPIOZ_15 */
|
||||
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 0013b81146b4c086526052acb9cee8ba965bab4d Mon Sep 17 00:00:00 2001
|
||||
From 173afaa69d1d3b373d43195073a5159d5f69fb28 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 15 May 2020 07:23:05 +0000
|
||||
Subject: [PATCH 134/156] WIP: arm64: dts: meson: add audio playback to
|
||||
nexbox-a1
|
||||
Subject: [PATCH 37/79] WIP: arm64: dts: meson: add audio playback to nexbox-a1
|
||||
|
||||
Add initial support is limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
||||
@ -12,7 +11,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
1 file changed, 80 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
|
||||
index c2bd4dbbf38c..854212198f4a 100644
|
||||
index dfa7a37a1281..a5db3f67d33f 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
|
||||
@@ -10,6 +10,7 @@
|
@ -1,915 +0,0 @@
|
||||
From ce220c323922e69c562f82a727fd6a3d03a18258 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 17 Apr 2020 03:59:13 +0000
|
||||
Subject: [PATCH 038/156] FROMGIT: arm64: dts: meson: convert ugoos-am6 to
|
||||
common w400 dtsi
|
||||
|
||||
Convert the Ugoos AM6 dts into meson-g12b-w400.dtsi, and then create
|
||||
a new AM6 dts that references it. This is in preparation for several
|
||||
new G12B devices that will share the common w400 dtsi.
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
.../boot/dts/amlogic/meson-g12b-ugoos-am6.dts | 410 +----------------
|
||||
.../boot/dts/amlogic/meson-g12b-w400.dtsi | 423 ++++++++++++++++++
|
||||
2 files changed, 424 insertions(+), 409 deletions(-)
|
||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi
|
||||
|
||||
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 fdaacfd96b97..73637de80c21 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
|
||||
@@ -7,42 +7,13 @@
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
-#include "meson-g12b.dtsi"
|
||||
-#include "meson-g12b-s922x.dtsi"
|
||||
-#include <dt-bindings/input/input.h>
|
||||
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
|
||||
+#include "meson-g12b-w400.dtsi"
|
||||
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
|
||||
|
||||
/ {
|
||||
compatible = "ugoos,am6", "amlogic,s922x", "amlogic,g12b";
|
||||
model = "Ugoos AM6";
|
||||
|
||||
- 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>;
|
||||
- };
|
||||
-
|
||||
- sdio_pwrseq: sdio-pwrseq {
|
||||
- compatible = "mmc-pwrseq-simple";
|
||||
- reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||
- clocks = <&wifi32k>;
|
||||
- clock-names = "ext_clock";
|
||||
- };
|
||||
-
|
||||
spdif_dit: audio-codec-1 {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dit";
|
||||
@@ -50,154 +21,6 @@
|
||||
sound-name-prefix = "DIT";
|
||||
};
|
||||
|
||||
- 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 = "VCC_5V";
|
||||
- regulator-min-microvolt = <5000000>;
|
||||
- regulator-max-microvolt = <5000000>;
|
||||
- vin-supply = <&main_12v>;
|
||||
-
|
||||
- gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
|
||||
- enable-active-high;
|
||||
- };
|
||||
-
|
||||
- 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_a: regulator-vddcpu-a {
|
||||
- /*
|
||||
- * MP1653 Regulator.
|
||||
- */
|
||||
- compatible = "pwm-regulator";
|
||||
-
|
||||
- regulator-name = "VDDCPU_A";
|
||||
- regulator-min-microvolt = <721000>;
|
||||
- regulator-max-microvolt = <1022000>;
|
||||
-
|
||||
- vin-supply = <&main_12v>;
|
||||
-
|
||||
- pwms = <&pwm_ab 0 1250 0>;
|
||||
- pwm-dutycycle-range = <100 0>;
|
||||
-
|
||||
- regulator-boot-on;
|
||||
- regulator-always-on;
|
||||
- };
|
||||
-
|
||||
- vddcpu_b: regulator-vddcpu-b {
|
||||
- /*
|
||||
- * MP1652 Regulator.
|
||||
- */
|
||||
- compatible = "pwm-regulator";
|
||||
-
|
||||
- regulator-name = "VDDCPU_B";
|
||||
- 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;
|
||||
- };
|
||||
-
|
||||
- usb1_pow: regulator-usb1-pow {
|
||||
- compatible = "regulator-fixed";
|
||||
- regulator-name = "USB1_POW";
|
||||
- regulator-min-microvolt = <5000000>;
|
||||
- regulator-max-microvolt = <5000000>;
|
||||
- vin-supply = <&vcc_5v>;
|
||||
-
|
||||
- /* connected to SY6280A Power Switch */
|
||||
- gpio = <&gpio GPIOA_8 GPIO_ACTIVE_HIGH>;
|
||||
- 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 USB3 Type-A Port power enable */
|
||||
- gpio = <&gpio GPIOAO_7 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;
|
||||
- };
|
||||
-
|
||||
- cvbs-connector {
|
||||
- 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>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
-
|
||||
sound {
|
||||
compatible = "amlogic,axg-sound-card";
|
||||
model = "G12B-UGOOS-AM6";
|
||||
@@ -277,110 +100,16 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
-
|
||||
- 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_b>;
|
||||
- operating-points-v2 = <&cpu_opp_table_0>;
|
||||
- clocks = <&clkc CLKID_CPU_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cpu1 {
|
||||
- cpu-supply = <&vddcpu_b>;
|
||||
- operating-points-v2 = <&cpu_opp_table_0>;
|
||||
- clocks = <&clkc CLKID_CPU_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cpu100 {
|
||||
- cpu-supply = <&vddcpu_a>;
|
||||
- operating-points-v2 = <&cpub_opp_table_1>;
|
||||
- clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cpu101 {
|
||||
- cpu-supply = <&vddcpu_a>;
|
||||
- operating-points-v2 = <&cpub_opp_table_1>;
|
||||
- clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cpu102 {
|
||||
- cpu-supply = <&vddcpu_a>;
|
||||
- operating-points-v2 = <&cpub_opp_table_1>;
|
||||
- clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cpu103 {
|
||||
- cpu-supply = <&vddcpu_a>;
|
||||
- operating-points-v2 = <&cpub_opp_table_1>;
|
||||
- clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
- clock-latency = <50000>;
|
||||
-};
|
||||
-
|
||||
-&cvbs_vdac_port {
|
||||
- cvbs_vdac_out: endpoint {
|
||||
- remote-endpoint = <&cvbs_connector_in>;
|
||||
- };
|
||||
-};
|
||||
-
|
||||
-&ext_mdio {
|
||||
- external_phy: ethernet-phy@0 {
|
||||
- /* Realtek RTL8211F (0x001cc916) */
|
||||
- reg = <0>;
|
||||
- max-speed = <1000>;
|
||||
-
|
||||
- reset-assert-us = <10000>;
|
||||
- reset-deassert-us = <30000>;
|
||||
- reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
|
||||
-
|
||||
- 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";
|
||||
};
|
||||
@@ -393,112 +122,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&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-khadas";
|
||||
};
|
||||
|
||||
-&pwm_ab {
|
||||
- pinctrl-0 = <&pwm_a_e_pins>;
|
||||
- pinctrl-names = "default";
|
||||
- clocks = <&xtal>;
|
||||
- clock-names = "clkin0";
|
||||
- status = "okay";
|
||||
-};
|
||||
-
|
||||
-&pwm_AO_cd {
|
||||
- pinctrl-0 = <&pwm_ao_d_e_pins>;
|
||||
- pinctrl-names = "default";
|
||||
- clocks = <&xtal>;
|
||||
- clock-names = "clkin1";
|
||||
- status = "okay";
|
||||
-};
|
||||
-
|
||||
-&pwm_ef {
|
||||
- pinctrl-0 = <&pwm_e_pins>;
|
||||
- pinctrl-names = "default";
|
||||
- clocks = <&xtal>;
|
||||
- clock-names = "clkin0";
|
||||
- status = "okay";
|
||||
-};
|
||||
-
|
||||
-/* 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;
|
||||
-
|
||||
- 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 = <50000000>;
|
||||
- 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;
|
||||
- max-frequency = <100000000>;
|
||||
- disable-wp;
|
||||
-
|
||||
- mmc-pwrseq = <&emmc_pwrseq>;
|
||||
- vmmc-supply = <&vcc_3v3>;
|
||||
- vqmmc-supply = <&flash_1v8>;
|
||||
-};
|
||||
-
|
||||
&spdifout {
|
||||
pinctrl-0 = <&spdif_out_h_pins>;
|
||||
pinctrl-names = "default";
|
||||
@@ -520,38 +147,3 @@
|
||||
&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";
|
||||
- vbus-supply = <&usb_pwr_en>;
|
||||
-};
|
||||
-
|
||||
-&usb2_phy0 {
|
||||
- phy-supply = <&usb1_pow>;
|
||||
-};
|
||||
-
|
||||
-&usb2_phy1 {
|
||||
- phy-supply = <&usb1_pow>;
|
||||
-};
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi
|
||||
new file mode 100644
|
||||
index 000000000000..98b70d216a6f
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi
|
||||
@@ -0,0 +1,423 @@
|
||||
+// 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.dtsi"
|
||||
+#include "meson-g12b-s922x.dtsi"
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/gpio/meson-g12a-gpio.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>;
|
||||
+ };
|
||||
+
|
||||
+ sdio_pwrseq: sdio-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||
+ clocks = <&wifi32k>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ };
|
||||
+
|
||||
+ 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 = "VCC_5V";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ vin-supply = <&main_12v>;
|
||||
+
|
||||
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+
|
||||
+ 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_a: regulator-vddcpu-a {
|
||||
+ /*
|
||||
+ * MP1653 Regulator.
|
||||
+ */
|
||||
+ compatible = "pwm-regulator";
|
||||
+
|
||||
+ regulator-name = "VDDCPU_A";
|
||||
+ regulator-min-microvolt = <721000>;
|
||||
+ regulator-max-microvolt = <1022000>;
|
||||
+
|
||||
+ vin-supply = <&main_12v>;
|
||||
+
|
||||
+ pwms = <&pwm_ab 0 1250 0>;
|
||||
+ pwm-dutycycle-range = <100 0>;
|
||||
+
|
||||
+ regulator-boot-on;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ vddcpu_b: regulator-vddcpu-b {
|
||||
+ /*
|
||||
+ * MP1652 Regulator.
|
||||
+ */
|
||||
+ compatible = "pwm-regulator";
|
||||
+
|
||||
+ regulator-name = "VDDCPU_B";
|
||||
+ 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;
|
||||
+ };
|
||||
+
|
||||
+ usb1_pow: regulator-usb1-pow {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "USB1_POW";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ vin-supply = <&vcc_5v>;
|
||||
+
|
||||
+ /* connected to SY6280A Power Switch */
|
||||
+ gpio = <&gpio GPIOA_8 GPIO_ACTIVE_HIGH>;
|
||||
+ 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 USB3 Type-A Port power enable */
|
||||
+ gpio = <&gpio GPIOAO_7 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;
|
||||
+ };
|
||||
+
|
||||
+ cvbs-connector {
|
||||
+ 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>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wifi32k: wifi32k {
|
||||
+ compatible = "pwm-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <32768>;
|
||||
+ pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&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>;
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <&vddcpu_b>;
|
||||
+ operating-points-v2 = <&cpu_opp_table_0>;
|
||||
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cpu1 {
|
||||
+ cpu-supply = <&vddcpu_b>;
|
||||
+ operating-points-v2 = <&cpu_opp_table_0>;
|
||||
+ clocks = <&clkc CLKID_CPU_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cpu100 {
|
||||
+ cpu-supply = <&vddcpu_a>;
|
||||
+ operating-points-v2 = <&cpub_opp_table_1>;
|
||||
+ clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cpu101 {
|
||||
+ cpu-supply = <&vddcpu_a>;
|
||||
+ operating-points-v2 = <&cpub_opp_table_1>;
|
||||
+ clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cpu102 {
|
||||
+ cpu-supply = <&vddcpu_a>;
|
||||
+ operating-points-v2 = <&cpub_opp_table_1>;
|
||||
+ clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cpu103 {
|
||||
+ cpu-supply = <&vddcpu_a>;
|
||||
+ operating-points-v2 = <&cpub_opp_table_1>;
|
||||
+ clocks = <&clkc CLKID_CPUB_CLK>;
|
||||
+ clock-latency = <50000>;
|
||||
+};
|
||||
+
|
||||
+&cvbs_vdac_port {
|
||||
+ cvbs_vdac_out: endpoint {
|
||||
+ remote-endpoint = <&cvbs_connector_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ext_mdio {
|
||||
+ external_phy: ethernet-phy@0 {
|
||||
+ /* Realtek RTL8211F (0x001cc916) */
|
||||
+ reg = <0>;
|
||||
+ max-speed = <1000>;
|
||||
+
|
||||
+ reset-assert-us = <10000>;
|
||||
+ reset-deassert-us = <30000>;
|
||||
+ reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
|
||||
+
|
||||
+ 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>;
|
||||
+};
|
||||
+
|
||||
+&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_ab {
|
||||
+ pinctrl-0 = <&pwm_a_e_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clocks = <&xtal>;
|
||||
+ clock-names = "clkin0";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm_AO_cd {
|
||||
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clocks = <&xtal>;
|
||||
+ clock-names = "clkin1";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm_ef {
|
||||
+ pinctrl-0 = <&pwm_e_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ clocks = <&xtal>;
|
||||
+ clock-names = "clkin0";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* 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;
|
||||
+
|
||||
+ 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 = <50000000>;
|
||||
+ 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;
|
||||
+ max-frequency = <100000000>;
|
||||
+ disable-wp;
|
||||
+
|
||||
+ mmc-pwrseq = <&emmc_pwrseq>;
|
||||
+ vmmc-supply = <&vcc_3v3>;
|
||||
+ vqmmc-supply = <&flash_1v8>;
|
||||
+};
|
||||
+
|
||||
+&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";
|
||||
+ vbus-supply = <&usb_pwr_en>;
|
||||
+};
|
||||
+
|
||||
+&usb2_phy0 {
|
||||
+ phy-supply = <&usb1_pow>;
|
||||
+};
|
||||
+
|
||||
+&usb2_phy1 {
|
||||
+ phy-supply = <&usb1_pow>;
|
||||
+};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2e982715b779ed2d50347037c64d5733714cfb50 Mon Sep 17 00:00:00 2001
|
||||
From 3b686d39b8d1778b44f72f9f5d196b2055d3e145 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 15 May 2020 07:52:47 +0000
|
||||
Subject: [PATCH 137/156] WIP: arm64: dts: meson: add audio playback to p201
|
||||
Subject: [PATCH 38/79] WIP: arm64: dts: meson: add audio playback to p201
|
||||
|
||||
Add initial audio support limited to HDMI i2s.
|
||||
|
@ -1,30 +0,0 @@
|
||||
From c3257c27d8ef835466a79695c46f9697b7d5800e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 11 Oct 2019 09:01:54 +0000
|
||||
Subject: [PATCH 039/156] FROMGIT: dt-bindings: arm: amlogic: add support for
|
||||
the Beelink GT-King
|
||||
|
||||
The Shenzen AZW (Beelink) GT-King is based on the Amlogic W400 reference
|
||||
board with an S922X chip.
|
||||
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
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 47badda69ef5..cd7a081a4f17 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
@@ -149,6 +149,7 @@ properties:
|
||||
- description: Boards with the Amlogic Meson G12B S922X SoC
|
||||
items:
|
||||
- enum:
|
||||
+ - azw,gtking
|
||||
- hardkernel,odroid-n2
|
||||
- khadas,vim3
|
||||
- ugoos,am6
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4fea728793a5576837bff09660f0dbbfa1460c9b Mon Sep 17 00:00:00 2001
|
||||
From 97eee44a18eae6703551cd69a40e0edb3e70067e Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 15 May 2020 07:56:15 +0000
|
||||
Subject: [PATCH 138/156] WIP: arm64: dts: meson: add audio playback to p200
|
||||
Subject: [PATCH 39/79] WIP: arm64: dts: meson: add audio playback to p200
|
||||
|
||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
@ -1,194 +0,0 @@
|
||||
From 2be156eb10cb6f180d1dc3b5eb0fb46b0c9f5d58 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 11 Oct 2019 09:24:44 +0000
|
||||
Subject: [PATCH 040/156] FROMGIT: arm64: dts: meson-g12b-gtking: add initial
|
||||
device-tree
|
||||
|
||||
The Shenzen AZW (Beelink) GT-King is based on the Amlogic W400 reference
|
||||
board with an S922X 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
|
||||
- Analogue audio output
|
||||
- 1x USB 2.0 port
|
||||
- 2x USB 3.0 ports
|
||||
- IR receiver
|
||||
- 1x micro SD card slot
|
||||
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/amlogic/Makefile | 1 +
|
||||
.../boot/dts/amlogic/meson-g12b-gtking.dts | 145 ++++++++++++++++++
|
||||
2 files changed, 146 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
|
||||
index af883e0bfb9c..8c9e9dfa5da3 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-gtking.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||
new file mode 100644
|
||||
index 000000000000..eeb7bc5539ef
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
|
||||
@@ -0,0 +1,145 @@
|
||||
+// 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/sound/meson-g12a-tohdmitx.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "azw,gtking", "amlogic,g12b";
|
||||
+ model = "Beelink GT-King";
|
||||
+
|
||||
+ spdif_dit: audio-codec-1 {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ status = "okay";
|
||||
+ sound-name-prefix = "DIT";
|
||||
+ };
|
||||
+
|
||||
+ sound {
|
||||
+ compatible = "amlogic,axg-sound-card";
|
||||
+ model = "G12B-GTKING";
|
||||
+ 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",
|
||||
+ "SPDIFOUT IN 0", "FRDDR_A OUT 3",
|
||||
+ "SPDIFOUT IN 1", "FRDDR_B OUT 3",
|
||||
+ "SPDIFOUT IN 2", "FRDDR_C OUT 3";
|
||||
+
|
||||
+ 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>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ /* spdif hdmi or toslink interface */
|
||||
+ dai-link-4 {
|
||||
+ sound-dai = <&spdifout>;
|
||||
+
|
||||
+ codec-0 {
|
||||
+ sound-dai = <&spdif_dit>;
|
||||
+ };
|
||||
+
|
||||
+ codec-1 {
|
||||
+ sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ /* spdif hdmi interface */
|
||||
+ dai-link-5 {
|
||||
+ sound-dai = <&spdifout_b>;
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ /* hdmi glue */
|
||||
+ dai-link-6 {
|
||||
+ 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";
|
||||
+};
|
||||
+
|
||||
+&spdifout {
|
||||
+ pinctrl-0 = <&spdif_out_h_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdifout_b {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tdmif_b {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tdmout_b {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tohdmitx {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 8b2e4f20dbd2360a4052c5399082c40cd8f33e0b Mon Sep 17 00:00:00 2001
|
||||
From c1b47b0868145e1a6266440212831ee0f3e66ad9 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 15 May 2020 08:02:54 +0000
|
||||
Subject: [PATCH 139/156] WIP: arm64: dts: meson: add audio playback to
|
||||
Subject: [PATCH 40/79] WIP: arm64: dts: meson: add audio playback to
|
||||
p212-s905x dtsi
|
||||
|
||||
Add initial audio support limited to HDMI i2s.
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
|
||||
index 6ac678f88bd8..da8c2e5296f6 100644
|
||||
index 05cb2f5e5c36..40776d42bf8e 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
|
||||
@@ -11,6 +11,7 @@
|
@ -1,30 +0,0 @@
|
||||
From 0ad9ee94642b54d1e4b0e35ff4f2749fd2dc056c Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Sun, 1 Mar 2020 05:33:19 +0000
|
||||
Subject: [PATCH 041/156] FROMGIT: dt-bindings: arm: amlogic: add support for
|
||||
the Beelink GT-King Pro
|
||||
|
||||
The Shenzen AZW (Beelink) GT-King Pro is based on the Amlogic W400 reference
|
||||
board with an S922X chip.
|
||||
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
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 cd7a081a4f17..db35e0d0134c 100644
|
||||
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
|
||||
@@ -150,6 +150,7 @@ properties:
|
||||
items:
|
||||
- enum:
|
||||
- azw,gtking
|
||||
+ - azw,gtking-pro
|
||||
- hardkernel,odroid-n2
|
||||
- khadas,vim3
|
||||
- ugoos,am6
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,8 +1,7 @@
|
||||
From 5a047746565c8a51e32b0ec77403295ccb62ad4b Mon Sep 17 00:00:00 2001
|
||||
From 79e65aaf2909fb6ebd9191cb77631e7347e1e221 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Fri, 15 May 2020 08:13:00 +0000
|
||||
Subject: [PATCH 140/156] WIP: arm64: dts: meson: add audio playback to
|
||||
rbox-pro
|
||||
Subject: [PATCH 41/79] WIP: arm64: dts: meson: add audio playback to rbox-pro
|
||||
|
||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
||||
@ -12,7 +11,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
1 file changed, 80 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
|
||||
index c89c9f846fb1..7b23b3da27ff 100644
|
||||
index dde7cfe12cff..e6d1b3a3776f 100644
|
||||
--- a/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 @@
|
@ -1,7 +1,7 @@
|
||||
From 77f7897d27e5f16069ea6d37a4e056b039764382 Mon Sep 17 00:00:00 2001
|
||||
From f4e3bb8586cc10951a97746019192b9830c1d848 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Sun, 17 May 2020 05:00:55 +0000
|
||||
Subject: [PATCH 141/156] WIP: arm64: dts: meson: add audio playback to u200
|
||||
Subject: [PATCH 42/79] WIP: arm64: dts: meson: add audio playback to u200
|
||||
|
||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 6dba3484b6a8c467ccc3982879d0a02484b52bbe Mon Sep 17 00:00:00 2001
|
||||
From: Neil Armstrong <narmstrong@baylibre.com>
|
||||
Date: Sat, 2 May 2020 21:17:45 +0000
|
||||
Subject: [PATCH 043/156] FROMGIT: MAINTAINERS: update the Amlogic VDEC driver
|
||||
maintainer entry
|
||||
|
||||
Add myself as co-maintainer of the Amlogic VDEC driver, and add the
|
||||
missing vdec DT yaml bindings.
|
||||
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
MAINTAINERS | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 50659d76976b..091b74ff830a 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -11016,10 +11016,12 @@ F: drivers/mtd/nand/raw/meson_*
|
||||
|
||||
MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
|
||||
M: Maxime Jourdan <mjourdan@baylibre.com>
|
||||
+M: Neil Armstrong <narmstrong@baylibre.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
L: linux-amlogic@lists.infradead.org
|
||||
S: Supported
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
+F: Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
|
||||
F: drivers/staging/media/meson/vdec/
|
||||
|
||||
METHODE UDPU SUPPORT
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,18 +1,19 @@
|
||||
From e485aa1d6f2033732e79f11618b65c0c8f6b393d Mon Sep 17 00:00:00 2001
|
||||
From 7c504771602f2b10e4c3aca200178101a05f380f Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hewitt <christianshewitt@gmail.com>
|
||||
Date: Sat, 16 May 2020 07:04:58 +0000
|
||||
Subject: [PATCH 142/156] WIP: arm64: dts: meson: add audio playback to
|
||||
vega-s95 dtsi
|
||||
Subject: [PATCH 43/79] WIP: arm64: dts: meson: add audio playback to vega-s95
|
||||
dtsi
|
||||
|
||||
Add initial support limited to HDMI i2s and SPDIF (LPCM).
|
||||
|
||||
Tested-by: Oleg Ivanov <150balbes@yandex.ru>
|
||||
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
|
||||
---
|
||||
.../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi | 61 +++++++++++++++++++
|
||||
1 file changed, 61 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
|
||||
index 222ee8069cfa..1300585a1ec7 100644
|
||||
index 9b0b81f191f1..2976a9c42e11 100644
|
||||
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
|
||||
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
|
||||
@@ -4,6 +4,7 @@
|
@ -1,67 +0,0 @@
|
||||
From cd4532a161555ae66ec62cc274b988f9c356f496 Mon Sep 17 00:00:00 2001
|
||||
From: Maxime Jourdan <mjourdan@baylibre.com>
|
||||
Date: Sat, 2 May 2020 21:15:13 +0000
|
||||
Subject: [PATCH 044/156] FROMGIT: media: meson: vdec: enable mcrcc for VP9
|
||||
|
||||
The motion compensation reference cache controller allows caching
|
||||
parts of reference frames for faster decoding.
|
||||
|
||||
Fixes: 00c43088aa68 ("media: meson: vdec: add VP9 decoder support")
|
||||
Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com>
|
||||
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
||||
---
|
||||
drivers/staging/media/meson/vdec/codec_vp9.c | 31 ++++++++++++++++++++
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/meson/vdec/codec_vp9.c b/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||
index 60e4fc0052b3..897f5d7a6aad 100644
|
||||
--- a/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||
+++ b/drivers/staging/media/meson/vdec/codec_vp9.c
|
||||
@@ -854,6 +854,36 @@ static int codec_vp9_stop(struct amvdec_session *sess)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Program LAST & GOLDEN frames into the motion compensation reference cache
|
||||
+ * controller
|
||||
+ */
|
||||
+static void codec_vp9_set_mcrcc(struct amvdec_session *sess)
|
||||
+{
|
||||
+ struct amvdec_core *core = sess->core;
|
||||
+ struct codec_vp9 *vp9 = sess->priv;
|
||||
+ u32 val;
|
||||
+
|
||||
+ /* Reset mcrcc */
|
||||
+ amvdec_write_dos(core, HEVCD_MCRCC_CTL1, 0x2);
|
||||
+ /* Disable on I-frame */
|
||||
+ if (vp9->cur_frame->type == KEY_FRAME || vp9->cur_frame->intra_only) {
|
||||
+ amvdec_write_dos(core, HEVCD_MCRCC_CTL1, 0x0);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_ACCCONFIG_ADDR, BIT(1));
|
||||
+ val = amvdec_read_dos(core, HEVCD_MPP_ANC_CANVAS_DATA_ADDR) & 0xffff;
|
||||
+ val |= (val << 16);
|
||||
+ amvdec_write_dos(core, HEVCD_MCRCC_CTL2, val);
|
||||
+ val = amvdec_read_dos(core, HEVCD_MPP_ANC_CANVAS_DATA_ADDR) & 0xffff;
|
||||
+ val |= (val << 16);
|
||||
+ amvdec_write_dos(core, HEVCD_MCRCC_CTL3, val);
|
||||
+
|
||||
+ /* Enable mcrcc progressive-mode */
|
||||
+ amvdec_write_dos(core, HEVCD_MCRCC_CTL1, 0xff0);
|
||||
+}
|
||||
+
|
||||
static void codec_vp9_set_sao(struct amvdec_session *sess,
|
||||
struct vb2_buffer *vb)
|
||||
{
|
||||
@@ -1267,6 +1297,7 @@ static void codec_vp9_process_frame(struct amvdec_session *sess)
|
||||
|
||||
amvdec_write_dos(core, HEVC_PARSER_PICTURE_SIZE,
|
||||
(vp9->height << 16) | vp9->width);
|
||||
+ codec_vp9_set_mcrcc(sess);
|
||||
codec_vp9_set_sao(sess, &vp9->cur_frame->vbuf->vb2_buf);
|
||||
|
||||
vp9_loop_filter_frame_init(core, &vp9->seg_4lf,
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From a49b5ea299d4b5cc7259738f548fe5be167ee1b6 Mon Sep 17 00:00:00 2001
|
||||
From 88b8ee6b6c50088d1347808276a9fa37a15d5ae2 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Fri, 15 Feb 2019 14:21:27 +0100
|
||||
Subject: [PATCH 116/156] WIP: clk: meson: g12a: fix gp0 and hifi ranges
|
||||
Subject: [PATCH 44/79] WIP: clk: meson: g12a: fix gp0 and hifi ranges
|
||||
|
||||
While some SoC samples are able to lock with a PLL factor of 55, others
|
||||
samples can't. ATM, a minimum of 60 appears to work on all the samples
|
||||
@ -21,10 +21,10 @@ Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
|
||||
index 5c2e5cedca96..7fe99b36a53b 100644
|
||||
index b080359b4645..a805bac93c11 100644
|
||||
--- a/drivers/clk/meson/g12a.c
|
||||
+++ b/drivers/clk/meson/g12a.c
|
||||
@@ -1591,7 +1591,7 @@ static struct clk_regmap g12b_cpub_clk_trace = {
|
||||
@@ -1603,7 +1603,7 @@ static struct clk_regmap g12b_cpub_clk_trace = {
|
||||
};
|
||||
|
||||
static const struct pll_mult_range g12a_gp0_pll_mult_range = {
|
@ -1,43 +0,0 @@
|
||||
From 83b54115d89c0668d97c30e843b93de001530d0c Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 1 Jun 2020 08:56:41 +0000
|
||||
Subject: [PATCH 045/156] FROMGIT: dt-bindings: net: meson-dwmac: Add the
|
||||
amlogic, rx-delay-ns property
|
||||
|
||||
The PRG_ETHERNET registers on Meson8b and newer SoCs can add an RX
|
||||
delay. Add a property with the known supported values so it can be
|
||||
configured according to the board layout.
|
||||
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
.../bindings/net/amlogic,meson-dwmac.yaml | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
index ae91aa9d8616..66074314e57a 100644
|
||||
--- a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
+++ b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
@@ -67,6 +67,19 @@ allOf:
|
||||
PHY and MAC are adding a delay).
|
||||
Any configuration is ignored when the phy-mode is set to "rmii".
|
||||
|
||||
+ amlogic,rx-delay-ns:
|
||||
+ 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".
|
||||
+
|
||||
properties:
|
||||
compatible:
|
||||
additionalItems: true
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 99b732b7cd8b442ceec880d36586d24a5c2b1c23 Mon Sep 17 00:00:00 2001
|
||||
From a44a27bb6bda088ca9dcdf44f338b3694d69b6f4 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Brunet <jbrunet@baylibre.com>
|
||||
Date: Wed, 17 Jun 2020 16:30:53 +0000
|
||||
Subject: [PATCH 117/156] WIP: clk: meson: g12a: fix hifi pll lock
|
||||
Date: Tue, 14 Apr 2020 10:45:08 +0200
|
||||
Subject: [PATCH 45/79] WIP: clk: meson: g12a: fix hifi pll lock
|
||||
|
||||
The HIFI pll of the g12a sometimes takes a long time to report the lock in
|
||||
HIFI_PLL_CNTL0 bit 31. The would eventually be reported but the delay may
|
||||
@ -16,10 +16,10 @@ Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
|
||||
index 7fe99b36a53b..e672e9f015f0 100644
|
||||
index a805bac93c11..c22611d3669a 100644
|
||||
--- a/drivers/clk/meson/g12a.c
|
||||
+++ b/drivers/clk/meson/g12a.c
|
||||
@@ -1771,7 +1771,7 @@ static struct clk_regmap g12a_hifi_pll_dco = {
|
||||
@@ -1783,7 +1783,7 @@ static struct clk_regmap g12a_hifi_pll_dco = {
|
||||
},
|
||||
.l = {
|
||||
.reg_off = HHI_HIFI_PLL_CNTL0,
|
@ -1,58 +0,0 @@
|
||||
From 6aade93a6dccc6d345495cd1f3b9457c3bc8c0a4 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 1 Jun 2020 08:57:48 +0000
|
||||
Subject: [PATCH 046/156] FROMGIT: dt-bindings: net: dwmac-meson: Document the
|
||||
"timing-adjustment" clock
|
||||
|
||||
The PRG_ETHERNET registers can add an RX delay in RGMII mode. This
|
||||
requires an internal re-timing circuit whose input clock is called
|
||||
"timing adjustment clock". Document this clock input so the clock can be
|
||||
enabled as needed.
|
||||
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
.../devicetree/bindings/net/amlogic,meson-dwmac.yaml | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
index 66074314e57a..64c20c92c07d 100644
|
||||
--- a/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
+++ b/Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
|
||||
@@ -40,18 +40,22 @@ allOf:
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
+ minItems: 3
|
||||
+ maxItems: 4
|
||||
items:
|
||||
- description: GMAC main clock
|
||||
- description: First parent clock of the internal mux
|
||||
- description: Second parent clock of the internal mux
|
||||
+ - description: The clock which drives the timing adjustment logic
|
||||
|
||||
clock-names:
|
||||
minItems: 3
|
||||
- maxItems: 3
|
||||
+ maxItems: 4
|
||||
items:
|
||||
- const: stmmaceth
|
||||
- const: clkin0
|
||||
- const: clkin1
|
||||
+ - const: timing-adjustment
|
||||
|
||||
amlogic,tx-delay-ns:
|
||||
$ref: /schemas/types.yaml#definitions/uint32
|
||||
@@ -120,7 +124,7 @@ examples:
|
||||
reg = <0xc9410000 0x10000>, <0xc8834540 0x8>;
|
||||
interrupts = <8>;
|
||||
interrupt-names = "macirq";
|
||||
- clocks = <&clk_eth>, <&clkc_fclk_div2>, <&clk_mpll2>;
|
||||
- clock-names = "stmmaceth", "clkin0", "clkin1";
|
||||
+ clocks = <&clk_eth>, <&clk_fclk_div2>, <&clk_mpll2>, <&clk_fclk_div2>;
|
||||
+ clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
|
||||
phy-mode = "rgmii";
|
||||
};
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,197 @@
|
||||
From 66dcce54150521f90c493814c4e06fe02009a737 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <christianshewitt@gmail.com>
|
||||
Date: Tue, 7 Jul 2020 15:24:33 +0000
|
||||
Subject: [PATCH 46/79] WIP: drm/bridge: dw-hdmi-i2s: HBR audio experiments
|
||||
|
||||
---
|
||||
.../drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 21 +++++++++++++++++--
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 5 +++++
|
||||
include/sound/hdmi-codec.h | 1 +
|
||||
sound/soc/codecs/hdmi-codec.c | 4 +++-
|
||||
sound/soc/meson/aiu-acodec-ctrl.c | 2 +-
|
||||
sound/soc/meson/aiu-codec-ctrl.c | 2 +-
|
||||
sound/soc/meson/aiu.h | 3 ++-
|
||||
sound/soc/meson/axg-tdm.h | 3 ++-
|
||||
sound/soc/meson/g12a-tohdmitx.c | 2 +-
|
||||
9 files changed, 35 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
index feb04f127b55..54cadf32b974 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
@@ -40,8 +40,11 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
{
|
||||
struct dw_hdmi_i2s_audio_data *audio = data;
|
||||
struct dw_hdmi *hdmi = audio->hdmi;
|
||||
+ int sample_width = hparms->sample_width;
|
||||
+ int ca = hparms->cea.channel_allocation;
|
||||
u8 conf0 = 0;
|
||||
u8 conf1 = 0;
|
||||
+ u8 conf2 = 0;
|
||||
u8 inputclkfs = 0;
|
||||
|
||||
/* it cares I2S only */
|
||||
@@ -57,6 +60,17 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
inputclkfs = HDMI_AUD_INPUTCLKFS_64FS;
|
||||
conf0 = (HDMI_AUD_CONF0_I2S_SELECT | HDMI_AUD_CONF0_I2S_EN0);
|
||||
|
||||
+ if (hparms->format == SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE) {
|
||||
+ conf2 |= HDMI_AUD_CONF2_NLPCM;
|
||||
+ if (hparms->channels == 8)
|
||||
+ conf2 |= HDMI_AUD_CONF2_HBR;
|
||||
+
|
||||
+ sample_width = 21;
|
||||
+ ca = 0;
|
||||
+ }
|
||||
+
|
||||
+ hdmi_write(audio, conf2, HDMI_AUD_CONF2);
|
||||
+
|
||||
/* Enable the required i2s lanes */
|
||||
switch (hparms->channels) {
|
||||
case 7 ... 8:
|
||||
@@ -70,10 +84,13 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
/* Fall-thru */
|
||||
}
|
||||
|
||||
- switch (hparms->sample_width) {
|
||||
+ switch (sample_width) {
|
||||
case 16:
|
||||
conf1 = HDMI_AUD_CONF1_WIDTH_16;
|
||||
break;
|
||||
+ case 21:
|
||||
+ conf1 = HDMI_AUD_CONF1_WIDTH_21;
|
||||
+ break;
|
||||
case 24:
|
||||
case 32:
|
||||
conf1 = HDMI_AUD_CONF1_WIDTH_24;
|
||||
@@ -104,7 +121,7 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
dw_hdmi_set_sample_rate(hdmi, hparms->sample_rate);
|
||||
dw_hdmi_set_channel_status(hdmi, hparms->iec.status);
|
||||
dw_hdmi_set_channel_count(hdmi, hparms->channels);
|
||||
- dw_hdmi_set_channel_allocation(hdmi, hparms->cea.channel_allocation);
|
||||
+ dw_hdmi_set_channel_allocation(hdmi, ca);
|
||||
|
||||
hdmi_write(audio, inputclkfs, HDMI_AUD_INPUTCLKFS);
|
||||
hdmi_write(audio, conf0, HDMI_AUD_CONF0);
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
||||
index 1999db05bc3b..bff849a336f7 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
||||
@@ -917,8 +917,13 @@ enum {
|
||||
HDMI_AUD_CONF1_MODE_BURST_1 = 0x60,
|
||||
HDMI_AUD_CONF1_MODE_BURST_2 = 0x80,
|
||||
HDMI_AUD_CONF1_WIDTH_16 = 0x10,
|
||||
+ HDMI_AUD_CONF1_WIDTH_21 = 0x15,
|
||||
HDMI_AUD_CONF1_WIDTH_24 = 0x18,
|
||||
|
||||
+/* AUD_CONF1 field values */
|
||||
+ HDMI_AUD_CONF2_NLPCM = 0x02,
|
||||
+ HDMI_AUD_CONF2_HBR = 0x01,
|
||||
+
|
||||
/* AUD_CTS3 field values */
|
||||
HDMI_AUD_CTS3_N_SHIFT_OFFSET = 5,
|
||||
HDMI_AUD_CTS3_N_SHIFT_MASK = 0xe0,
|
||||
diff --git a/include/sound/hdmi-codec.h b/include/sound/hdmi-codec.h
|
||||
index b55970859a13..c3bd757375e9 100644
|
||||
--- a/include/sound/hdmi-codec.h
|
||||
+++ b/include/sound/hdmi-codec.h
|
||||
@@ -45,6 +45,7 @@ struct hdmi_codec_params {
|
||||
int sample_rate;
|
||||
int sample_width;
|
||||
int channels;
|
||||
+ snd_pcm_format_t format;
|
||||
};
|
||||
|
||||
typedef void (*hdmi_codec_plugged_cb)(struct device *dev,
|
||||
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
|
||||
index d5fcc4db8284..0f32c81b5ea3 100644
|
||||
--- a/sound/soc/codecs/hdmi-codec.c
|
||||
+++ b/sound/soc/codecs/hdmi-codec.c
|
||||
@@ -488,6 +488,7 @@ static int hdmi_codec_hw_params(struct snd_pcm_substream *substream,
|
||||
hp.sample_width = params_width(params);
|
||||
hp.sample_rate = params_rate(params);
|
||||
hp.channels = params_channels(params);
|
||||
+ hp.format = params_format(params);
|
||||
|
||||
return hcp->hcd.ops->hw_params(dai->dev->parent, hcp->hcd.data,
|
||||
cf, &hp);
|
||||
@@ -617,7 +618,8 @@ static const struct snd_soc_dai_ops hdmi_codec_spdif_dai_ops = {
|
||||
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S20_3BE |\
|
||||
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_3BE |\
|
||||
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE |\
|
||||
- SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE)
|
||||
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE |\
|
||||
+ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd,
|
||||
struct snd_soc_dai *dai)
|
||||
diff --git a/sound/soc/meson/aiu-acodec-ctrl.c b/sound/soc/meson/aiu-acodec-ctrl.c
|
||||
index 7078197e0cc5..7b1356b4c891 100644
|
||||
--- a/sound/soc/meson/aiu-acodec-ctrl.c
|
||||
+++ b/sound/soc/meson/aiu-acodec-ctrl.c
|
||||
@@ -114,7 +114,7 @@ static const struct snd_soc_dai_ops aiu_acodec_ctrl_output_ops = {
|
||||
#define AIU_ACODEC_CTRL_FORMATS \
|
||||
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
|
||||
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
- SNDRV_PCM_FMTBIT_S32_LE)
|
||||
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
#define AIU_ACODEC_STREAM(xname, xsuffix, xchmax) \
|
||||
{ \
|
||||
diff --git a/sound/soc/meson/aiu-codec-ctrl.c b/sound/soc/meson/aiu-codec-ctrl.c
|
||||
index 4b773d3e8b07..c41be9302afd 100644
|
||||
--- a/sound/soc/meson/aiu-codec-ctrl.c
|
||||
+++ b/sound/soc/meson/aiu-codec-ctrl.c
|
||||
@@ -86,7 +86,7 @@ static const struct snd_soc_dai_ops aiu_codec_ctrl_output_ops = {
|
||||
#define AIU_CODEC_CTRL_FORMATS \
|
||||
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
|
||||
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
- SNDRV_PCM_FMTBIT_S32_LE)
|
||||
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
#define AIU_CODEC_CTRL_STREAM(xname, xsuffix) \
|
||||
{ \
|
||||
diff --git a/sound/soc/meson/aiu.h b/sound/soc/meson/aiu.h
|
||||
index 87aa19ac4af3..a52169d4ae9d 100644
|
||||
--- a/sound/soc/meson/aiu.h
|
||||
+++ b/sound/soc/meson/aiu.h
|
||||
@@ -42,7 +42,8 @@ struct aiu {
|
||||
|
||||
#define AIU_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
|
||||
SNDRV_PCM_FMTBIT_S20_LE | \
|
||||
- SNDRV_PCM_FMTBIT_S24_LE)
|
||||
+ SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
+ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
int aiu_of_xlate_dai_name(struct snd_soc_component *component,
|
||||
struct of_phandle_args *args,
|
||||
diff --git a/sound/soc/meson/axg-tdm.h b/sound/soc/meson/axg-tdm.h
|
||||
index 5774ce0916d4..b2218203023b 100644
|
||||
--- a/sound/soc/meson/axg-tdm.h
|
||||
+++ b/sound/soc/meson/axg-tdm.h
|
||||
@@ -21,7 +21,8 @@
|
||||
SNDRV_PCM_FMTBIT_S16_LE | \
|
||||
SNDRV_PCM_FMTBIT_S20_LE | \
|
||||
SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
- SNDRV_PCM_FMTBIT_S32_LE)
|
||||
+ SNDRV_PCM_FMTBIT_S32_LE | \
|
||||
+ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
struct axg_tdm_iface {
|
||||
struct clk *sclk;
|
||||
diff --git a/sound/soc/meson/g12a-tohdmitx.c b/sound/soc/meson/g12a-tohdmitx.c
|
||||
index 9b2b59536ced..ae07ca57623e 100644
|
||||
--- a/sound/soc/meson/g12a-tohdmitx.c
|
||||
+++ b/sound/soc/meson/g12a-tohdmitx.c
|
||||
@@ -155,7 +155,7 @@ static const struct snd_soc_dai_ops g12a_tohdmitx_output_ops = {
|
||||
#define TOHDMITX_I2S_FORMATS \
|
||||
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
|
||||
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
- SNDRV_PCM_FMTBIT_S32_LE)
|
||||
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
|
||||
#define TOHDMITX_STREAM(xname, xsuffix, xfmt, xchmax) \
|
||||
{ \
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,49 +0,0 @@
|
||||
From a2278fbac0d217cb4d3ffa332d50d292f2b1c449 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Mon, 1 Jun 2020 08:58:55 +0000
|
||||
Subject: [PATCH 047/156] FROMGIT: net: stmmac: dwmac-meson8b: use FIELD_PREP
|
||||
instead of open-coding it
|
||||
|
||||
Use FIELD_PREP() to shift a value to the correct offset based on a
|
||||
bitmask instead of open-coding the logic.
|
||||
No functional changes.
|
||||
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
---
|
||||
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
index a3934ca6a043..c9ec0cb68082 100644
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c
|
||||
@@ -5,6 +5,7 @@
|
||||
* Copyright (C) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
*/
|
||||
|
||||
+#include <linux/bitfield.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/device.h>
|
||||
@@ -32,7 +33,6 @@
|
||||
#define PRG_ETH0_CLK_M250_SEL_SHIFT 4
|
||||
#define PRG_ETH0_CLK_M250_SEL_MASK GENMASK(4, 4)
|
||||
|
||||
-#define PRG_ETH0_TXDLY_SHIFT 5
|
||||
#define PRG_ETH0_TXDLY_MASK GENMASK(6, 5)
|
||||
|
||||
/* divider for the result of m250_sel */
|
||||
@@ -262,7 +262,8 @@ static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
|
||||
PRG_ETH0_INVERTED_RMII_CLK, 0);
|
||||
|
||||
meson8b_dwmac_mask_bits(dwmac, PRG_ETH0, PRG_ETH0_TXDLY_MASK,
|
||||
- tx_dly_val << PRG_ETH0_TXDLY_SHIFT);
|
||||
+ FIELD_PREP(PRG_ETH0_TXDLY_MASK,
|
||||
+ tx_dly_val));
|
||||
|
||||
/* Configure the 125MHz RGMII TX clock, the IP block changes
|
||||
* the output automatically (= without us having to configure
|
||||
--
|
||||
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