0
0
mirror of https://github.com/libretro/Lakka-LibreELEC.git synced 2025-03-16 12:00:24 +00:00

Merge branch 'LibreELEC/master'

update to 10.95.1 - LE11 Beta2
This commit is contained in:
Tomáš Kelemen (vudiq)
2023-02-12 20:37:05 +01:00
140 changed files with 3923 additions and 1243 deletions
packages
addons
addon-depends/docker
service/docker
linux-firmware
brcmfmac_sdio-firmware
kernel-firmware
linux
mediacenter/LibreELEC-settings
sysutils
busybox/scripts
ethmactool/scripts
tools/atf
projects
Amlogic
bootloader/scripts
devices/AMLGX/patches/linux
amlogic-0001-LOCAL-set-meson-gx-cma-pool-to-896MB.patchamlogic-0002-LOCAL-set-meson-g12-cma-pool-to-896MB.patchamlogic-0003-LOCAL-arm64-fix-Kodi-sysinfo-CPU-information.patchamlogic-0004-LOCAL-arm64-meson-add-Amlogic-Meson-GX-PM-Suspend.patchamlogic-0005-LOCAL-arm64-dts-meson-add-support-for-GX-PM-and-Virt.patchamlogic-0006-LOCAL-arm64-dts-meson-add-rtc-vrtc-aliases-to-Khadas.patchamlogic-0007-LOCAL-arm64-dts-meson-add-rtc-vrtc-aliases-to-Khadas.patchamlogic-0008-LOCAL-arm64-dts-meson-add-rtc-vrtc-aliases-to-Minix-.patchamlogic-0009-LOCAL-ALSA-Assign-internal-PCM-chmap-ELD-IEC958-kctl.patchamlogic-0010-LOCAL-usb-hub-disable-autosuspend-for-Genesys-Logic-.patchamlogic-0011-LOCAL-of-partial-revert-of-fdt.c-changes.patchamlogic-0012-FROMGIT-6.2-Revert-arm64-dts-meson-sm1-odroid-hc4-di.patchamlogic-0012-REVERT-mmc-meson-gx-add-SDIO-interrupt-support.patchamlogic-0013-FROMGIT-6.3-arm64-dts-meson-remove-CPU-opps-below-1G.patchamlogic-0014-FROMGIT-6.3-arm64-dts-meson-add-Broadcom-WiFi-to-P21.patchamlogic-0015-FROMGIT-6.3-arm64-dts-meson-move-pwm_ef-node-in-P212.patchamlogic-0016-FROMGIT-6.3-arm64-dts-meson-remove-WiFi-BT-nodes-fro.patchamlogic-0017-FROMGIT-6.3-arm64-dts-meson-add-audio-playback-to-S9.patchamlogic-0018-FROMGIT-6.3-dt-bindings-reset-meson-g12a-Add-missing.patchamlogic-0019-FROMGIT-6.3-dt-bindings-power-Add-G12A-NNA-power-dom.patchamlogic-0020-FROMGIT-6.3-soc-amlogic-meson-pwrc-Add-NNA-power-dom.patchamlogic-0021-FROMGIT-6.3-arm64-dts-Add-DT-node-for-the-VIPNano-QI.patchamlogic-0022-FROMGIT-6.3-drm-etnaviv-Add-nn_core_count-to-chip-fe.patchamlogic-0023-FROMGIT-6.3-drm-etnaviv-Warn-when-probing-on-NPUs.patchamlogic-0024-FROMGIT-6.3-drm-etnaviv-add-HWDB-entry-for-VIPNano-Q.patchamlogic-0025-FROMGIT-6.3-arm64-dts-Fix-NPU-power-domain-reference.patchamlogic-0026-FROMGIT-6.3-clk-meson-mpll-Switch-from-.round_rate-t.patchamlogic-0027-FROMGIT-6.3-clk-meson-dualdiv-switch-from-.round_rat.patchamlogic-0028-FROMGIT-6.3-clk-meson-sclk-div-switch-from-.round_ra.patchamlogic-0029-FROMGIT-6.3-clk-meson-clk-cpu-dyndiv-switch-from-.ro.patchamlogic-0030-FROMGIT-6.3-arm64-dts-amlogic-meson-sm1-odroid-hc4-f.patchamlogic-0031-FROMGIT-6.3-arm64-dts-meson-make-dts-use-gpio-fan-ma.patchamlogic-0032-FROMGIT-6.3-arm64-dts-meson-radxa-zero-allow-usb-otg.patchamlogic-0033-FROMGIT-6.3-arm64-dts-meson-bananapi-m5-switch-VDDIO.patchamlogic-0034-FROMGIT-6.3-arm64-dts-meson-meson-sm1-bananapi-m5-co.patchamlogic-0035-FROMGIT-6.3-dt-bindings-arm-amlogic-add-support-for-.patchamlogic-0036-FROMGIT-6.3-arm64-dts-meson-add-support-for-BananaPi.patchamlogic-0037-FROMGIT-6.3-dt-bindings-arm-amlogic-add-support-for-.patchamlogic-0038-FROMGIT-6.3-arm64-dts-meson-add-support-for-Radxa-Ze.patchamlogic-0039-FROMGIT-6.4-dt-bindings-net-add-amlogic-gxl-mdio-mul.patchamlogic-0040-FROMGIT-6.4-net-mdio-add-amlogic-gxl-mdio-mux-suppor.patchamlogic-0041-FROMLIST-v1-mmc-meson-gx-fix-deferred-probing.patchamlogic-0042-FROMLIST-v5-dt-bindings-vendor-prefixes-Add-Titan-Mi.patchamlogic-0043-FROMLIST-v5-dt-bindings-auxdisplay-Add-Titan-Micro-E.patchamlogic-0044-FROMLIST-v5-docs-ABI-document-tm1628-attribute-displ.patchamlogic-0045-FROMLIST-v5-auxdisplay-add-support-for-Titanmec-TM16.patchamlogic-0045-WIP-drivers-meson-vdec-add-handling-to-HEVC-decoder-.patchamlogic-0046-FROMLIST-v5-arm64-dts-meson-gxl-s905w-tx3-mini-add-s.patchamlogic-0046-WIP-drivers-meson-vdec-add-HEVC-support-to-GXBB.patchamlogic-0047-FROMLIST-v5-MAINTAINERS-Add-entry-for-tm1628-auxdisp.patchamlogic-0048-FROMLIST-v1-ASoC-hdmi-codec-reorder-channel-allocati.patchamlogic-0049-FROMLIST-v1-media-meson-vdec-remove-redundant-if-sta.patchamlogic-0049-WIP-arm64-dts-meson-radxa-zero-add-support-for-the-u.patchamlogic-0050-FROMLIST-v1-media-meson-vdec-esparser-check-parsing-.patchamlogic-0051-FROMLIST-v2-media-meson-vdec-implement-10bit-bitstre.patchamlogic-0052-FROMLIST-v2-media-meson-vdec-add-HEVC-decode-codec.patchamlogic-0052-WIP-arm64-dts-meson-add-support-for-the-NPU-on-Radxa.patchamlogic-0053-FROMLIST-v2-dt-bindings-media-rc-add-rc-dreambox-bin.patchamlogic-0054-FROMLIST-v2-media-rc-add-common-keymap-for-Dreambox-.patchamlogic-0055-FROMLIST-v2-dt-bindings-media-rc-add-rc-beelink-mxii.patchamlogic-0056-FROMLIST-v2-media-rc-add-Beelink-Mini-MXIII-keymap.patchamlogic-0057-FROMLIST-v1-net-phy-meson-gxl-use-MMD-access-dummy-s.patchamlogic-0058-FROMLIST-v1-arm64-dts-meson-axg-Make-mmc-host-contro.patchamlogic-0059-FROMLIST-v1-arm64-dts-meson-g12-common-Make-mmc-host.patchamlogic-0060-FROMLIST-v1-arm64-dts-meson-gx-Make-mmc-host-control.patchamlogic-0061-FROMLIST-v1-drm-meson-meson_venc-Relax-the-supported.patchamlogic-0062-FROMLIST-v2-arm64-dts-meson-gxbb-kii-pro-sort-and-ti.patchamlogic-0063-FROMLIST-v2-arm64-dts-meson-gxbb-kii-pro-complete-th.patchamlogic-0064-FROMLIST-v2-arm64-dts-meson-gxbb-kii-pro-add-initial.patchamlogic-0065-WIP-media-meson-vdec-disable-MPEG1-MPEG2-hardware-de.patchamlogic-0066-WIP-arm64-dts-meson-set-p212-p23x-q20x-SDIO-to-100MH.patchamlogic-0067-WIP-arm64-dts-meson-add-UHS-SDIO-capabilities-to-p21.patchamlogic-0068-WIP-arm64-dts-meson-remove-SDIO-node-from-Khadas-VIM.patchamlogic-0069-WIP-arm64-dts-meson-add-audio-playback-to-p201.patchamlogic-0070-WIP-arm64-dts-meson-add-audio-playback-to-p200.patchamlogic-0071-WIP-arm64-dts-meson-add-audio-playback-to-u200.patchamlogic-0072-WIP-arm64-dts-meson-add-Headphone-output-to-Beelink-.patchamlogic-0073-WIP-dt-bindings-arm-amlogic-add-support-for-the-Tani.patchamlogic-0074-WIP-arm64-dts-meson-add-support-for-the-Tanix-TX5-Ma.patchamlogic-0075-WIP-arm64-dts-meson-add-multiple-MeCool-device-trees.patchamlogic-0076-WIP-dt-bindings-arm-amlogic-add-support-for-Minix-NE.patchamlogic-0077-WIP-arm64-dts-meson-add-initial-device-tree-for-Mini.patchamlogic-0078-LOCAL-arm64-dts-meson-add-rtc-vrtc-aliases-to-Minix-.patchamlogic-0079-WIP-dt-bindings-arm-amlogic-add-support-for-Beelink-.patchamlogic-0080-WIP-arm64-dts-meson-add-support-for-Beelink-Mini-MXI.patchamlogic-0081-WIP-media-rc-add-keymap-for-MeCool-M8S-Pro-W-remote.patchamlogic-0082-WIP-dt-bindings-arm-amlogic-add-support-for-MeCool-M.patchamlogic-0083-WIP-arm64-dts-meson-add-support-for-MeCool-M8S-Pro-W.patchamlogic-0084-WIP-dt-bindings-arm-amlogic-add-Vero-4K-binding.patchamlogic-0085-WIP-arm64-dts-meson-add-support-for-OSMC-Vero-4K.patchamlogic-0086-WIP-arm64-dts-meson-add-RTL8822CS-bluetooth-to-X96-A.patchamlogic-0087-WIP-media-rc-add-keymap-for-Venz-V10-remote.patchamlogic-0088-WIP-dt-bindings-arm-amlogic-add-S905L-and-Venz-V10-b.patchamlogic-0089-WIP-arm64-dts-meson-add-support-for-Venz-V10.patchamlogic-0090-WIP-dt-bindings-vendor-prefixes-add-tbee-prefix.patchamlogic-0091-FIXUP-add-adc-gpio-keys-and-led-s-to-dreambox.patchamlogic-0091-WIP-dt-bindings-arm-amlogic-add-TBee-Box-binding.patchamlogic-0092-WIP-arm64-dts-meson-add-support-for-TBee-Box.patchamlogic-0092-fixup_am6-plus.patchamlogic-0093-WIP-dt-bindings-arm-amlogic-add-Beelink-GT1-binding.patchamlogic-0094-WIP-arm64-dts-meson-add-support-for-Beelink-GT1.patchamlogic-0095-WIP-arm64-dts-meson-add-vcc_5v-regulator-to-WeTek-dt.patchamlogic-0096-WIP-arm64-dts-meson-add-audio-lineout-to-WeTek-Play2.patchamlogic-0097-WIP-arm64-dts-amlogic-fix-cvbs-disable-on-WeTek-Hub.patchamlogic-0098-WIP-ASoC-dt-bindings-add-compatible-for-es8323-i2c.patchamlogic-0099-WIP-ASoC-codecs-add-support-for-ES8323.patchamlogic-0100-WIP-dt-bindings-add-dream-vendor-prefix.patchamlogic-0101-WIP-dt-bindings-arm-amlogic-add-support-for-Dreambox.patchamlogic-0102-WIP-arm64-dts-meson-add-initial-device-trees-for-Dre.patchamlogic-0103-WIP-dt-bindings-arm-amlogic-add-support-for-Ugoos-AM.patchamlogic-0104-WIP-arm64-dts-meson-add-support-for-Ugoos-AM6-Plus.patchamlogic-0105-arm64-dts-meson-add-support-for-MeCool-M8S-Pro-Plus.patchamlogic-0106-WIP-arm64-dts-meson-radxa-zero2-add-pwm-fan-support.patchamlogic-0107-WIP-dt-bindings-arm-amlogic-add-support-for-Tanix-TX.patchamlogic-0108-WIP-arm64-dts-meson-add-initial-device-tree-for-Tani.patchamlogic-0109-WIP-arm64-dts-meson-add-7-segment-display-to-Tanix-T.patchamlogic-0110-WIP-arm64-dts-meson-sml5442tw-add-cap-sdio-irq-to-pr.patchamlogic-0111-WIP-net-phy-add-support-for-Maxio-MAE0621A.patch
linux
Rockchip
README.md
bootloader
devices/RK3288/filesystem/usr/bin
patches/linux/default
scripts

@ -3,7 +3,7 @@
PKG_NAME="cli"
PKG_VERSION="$(get_pkg_version moby)"
PKG_SHA256="3379d06cd6177832b91f4796c680b6bf15c7895773448716b4c3c5253f611d1b"
PKG_SHA256="37bc1c71a782fc10d35aa6708c1b3c90a71f3947c33665cb0de68df25dc14d94"
PKG_LICENSE="ASL"
PKG_SITE="https://github.com/docker/cli"
PKG_URL="https://github.com/docker/cli/archive/v${PKG_VERSION}.tar.gz"
@ -12,7 +12,7 @@ PKG_LONGDESC="The Docker CLI"
PKG_TOOLCHAIN="manual"
# Git commit of the matching release https://github.com/docker/cli/releases
export PKG_GIT_COMMIT="e92dd87c3209361f29b692ab4b8f0f9248779297"
export PKG_GIT_COMMIT="a5ee5b1dfc9b8f08ed9e020bb54fc18550173ef6"
configure_target() {
go_configure

@ -2,8 +2,8 @@
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="moby"
PKG_VERSION="23.0.0"
PKG_SHA256="94492508260e57eb93399257d53435cd5308ca6330e173ca6e6f3dbf4c6e12f3"
PKG_VERSION="23.0.1"
PKG_SHA256="c8e6c0ac5f0c772023e3430f80190e0f86644b6d94cac63118b03561385f7b56"
PKG_LICENSE="ASL"
PKG_SITE="https://mobyproject.org/"
PKG_URL="https://github.com/moby/moby/archive/v${PKG_VERSION}.tar.gz"
@ -12,7 +12,7 @@ PKG_LONGDESC="Moby is an open-source project created by Docker to enable and acc
PKG_TOOLCHAIN="manual"
# Git commit of the matching release https://github.com/moby/moby
export PKG_GIT_COMMIT="d7573ab8672555762688f4c7ab8cc69ae8ec1a47"
export PKG_GIT_COMMIT="bc3805a0a0d3b5bd3f0e6c69f46ac08dd53377c7"
PKG_MOBY_BUILDTAGS="daemon \
autogen \

@ -3,7 +3,7 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="docker"
PKG_REV="0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="ASL"
PKG_SITE="http://www.docker.com/"

@ -2,8 +2,8 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="brcmfmac_sdio-firmware"
PKG_VERSION="59fe14f8f4d5c06ab5d7a5244ced4036509adfbe"
PKG_SHA256="7af96aaad31548239dd8ef4260422bfd8a47ef403598266d0b465e5b59cef57e"
PKG_VERSION="c70355f9ec6d015b91a5c3199aa08b433e2f7caf"
PKG_SHA256="1a17f203d77590a1492e8fb156091caafcdec1c66b3df9152f42414892fa6471"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/LibreELEC/brcmfmac_sdio-firmware"
PKG_URL="https://github.com/LibreELEC/brcmfmac_sdio-firmware/archive/${PKG_VERSION}.tar.gz"

@ -2,8 +2,8 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="kernel-firmware"
PKG_VERSION="20230117"
PKG_SHA256="df11e25ba2fb4d5343473757e17a3b4cef599250a26b1f7e0f038850f0cb3d64"
PKG_VERSION="20230210"
PKG_SHA256="6e3d9e8d52cffc4ec0dbe8533a8445328e0524a20f159a5b61c2706f983ce38a"
PKG_LICENSE="other"
PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/"
PKG_URL="https://cdn.kernel.org/pub/linux/kernel/firmware/linux-firmware-${PKG_VERSION}.tar.xz"

@ -16,10 +16,11 @@ PKG_PATCH_DIRS="${LINUX}"
case "${LINUX}" in
amlogic)
PKG_VERSION="90ca7a874a9093e500cc6147cecd85ad2e6a2852" # 6.1.5
PKG_SHA256="6fed4ac4f4585ebac26e82022f377fca29f8b4dc8042e34db1f67b53f4f5d2d8"
PKG_VERSION="d60c95efffe84428e3611431bf688f50bfc13f4e" # 6.1.11
PKG_SHA256="e6d5524d72b0ccb047a429f4d46a119a823622507c14985e95f8aa3e2600a779"
PKG_URL="https://github.com/torvalds/linux/archive/${PKG_VERSION}.tar.gz"
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
PKG_PATCH_DIRS="default"
;;
raspberrypi)
PKG_VERSION="eaf07c3a977e7210896bf66e65969252741b9d74" # 6.1.10

@ -0,0 +1,231 @@
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-wireless@vger.kernel.org
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
Ping-Ke Shih <pkshih@realtek.com>,
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
Andreas Henriksson <andreas@fatal.se>,
Viktor Petrenko <g0000ga@gmail.com>,
Sascha Hauer <s.hauer@pengutronix.de>
Subject: [PATCH v2 0/3] wifi: rtw88: USB fixes
Date: Fri, 10 Feb 2023 12:16:29 +0100
Message-Id: <20230210111632.1985205-1-s.hauer@pengutronix.de>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
X-SA-Exim-Mail-From: sha@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
Precedence: bulk
List-ID: <linux-wireless.vger.kernel.org>
X-Mailing-List: linux-wireless@vger.kernel.org
This series addresses issues for the recently added RTW88 USB support
reported by Andreas Henriksson and also our customer.
The hardware can't handle urbs that have a size of multiple of the
bulkout_size (usually 512 bytes). The symptom is that the hardware
stalls completely. The issue can be reproduced by sending a suitably
sized ping packet from the device:
ping -s 394 <somehost>
(It's 394 bytes here on a RTL8822CU and RTL8821CU, the actual size may
differ on other chips, it was 402 bytes on a RTL8723DU)
Other than that qsel was not set correctly. The sympton here is that
only one of multiple bulk endpoints was used to send data.
Changes since v1:
- Use URB_ZERO_PACKET to let the USB host controller handle it automatically
rather than working around the issue.
Sascha Hauer (3):
wifi: rtw88: usb: Set qsel correctly
wifi: rtw88: usb: send Zero length packets if necessary
wifi: rtw88: usb: drop now unnecessary URB size check
drivers/net/wireless/realtek/rtw88/usb.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
Reported-by: Andreas Henriksson <andreas@fatal.se>
Tested-by: Andreas Henriksson <andreas@fatal.se>
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-wireless@vger.kernel.org
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
Ping-Ke Shih <pkshih@realtek.com>,
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
Andreas Henriksson <andreas@fatal.se>,
Viktor Petrenko <g0000ga@gmail.com>,
Sascha Hauer <s.hauer@pengutronix.de>
Subject: [PATCH v2 1/3] wifi: rtw88: usb: Set qsel correctly
Date: Fri, 10 Feb 2023 12:16:30 +0100
Message-Id: <20230210111632.1985205-2-s.hauer@pengutronix.de>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
MIME-Version: 1.0
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
X-SA-Exim-Mail-From: sha@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
Precedence: bulk
List-ID: <linux-wireless.vger.kernel.org>
X-Mailing-List: linux-wireless@vger.kernel.org
We have to extract qsel from the skb before doing skb_push() on it,
otherwise qsel will always be 0.
Fixes: a82dfd33d1237 ("wifi: rtw88: Add common USB chip support")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/net/wireless/realtek/rtw88/usb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
index 4ef38279b64c9..d9e995544e405 100644
--- a/drivers/net/wireless/realtek/rtw88/usb.c
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
@@ -471,9 +471,9 @@ static int rtw_usb_tx_write(struct rtw_dev *rtwdev,
u8 *pkt_desc;
int ep;
+ pkt_info->qsel = rtw_usb_tx_queue_mapping_to_qsel(skb);
pkt_desc = skb_push(skb, chip->tx_pkt_desc_sz);
memset(pkt_desc, 0, chip->tx_pkt_desc_sz);
- pkt_info->qsel = rtw_usb_tx_queue_mapping_to_qsel(skb);
ep = qsel_to_ep(rtwusb, pkt_info->qsel);
rtw_tx_fill_tx_desc(pkt_info, skb);
rtw_tx_fill_txdesc_checksum(rtwdev, pkt_info, skb->data);
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-wireless@vger.kernel.org
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
Ping-Ke Shih <pkshih@realtek.com>,
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
Andreas Henriksson <andreas@fatal.se>,
Viktor Petrenko <g0000ga@gmail.com>,
Sascha Hauer <s.hauer@pengutronix.de>
Subject: [PATCH v2 2/3] wifi: rtw88: usb: send Zero length packets if
necessary
Date: Fri, 10 Feb 2023 12:16:31 +0100
Message-Id: <20230210111632.1985205-3-s.hauer@pengutronix.de>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
MIME-Version: 1.0
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
X-SA-Exim-Mail-From: sha@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
Precedence: bulk
List-ID: <linux-wireless.vger.kernel.org>
X-Mailing-List: linux-wireless@vger.kernel.org
Zero length packets are necessary when sending URBs with size
multiple of bulkout_size, otherwise the hardware just stalls.
Fixes: a82dfd33d1237 ("wifi: rtw88: Add common USB chip support")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/net/wireless/realtek/rtw88/usb.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
index d9e995544e405..1a09c9288198a 100644
--- a/drivers/net/wireless/realtek/rtw88/usb.c
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
@@ -271,6 +271,7 @@ static int rtw_usb_write_port(struct rtw_dev *rtwdev, u8 qsel, struct sk_buff *s
return -ENOMEM;
usb_fill_bulk_urb(urb, usbd, pipe, skb->data, skb->len, cb, context);
+ urb->transfer_flags |= URB_ZERO_PACKET;
ret = usb_submit_urb(urb, GFP_ATOMIC);
usb_free_urb(urb);
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-wireless@vger.kernel.org
Cc: Neo Jou <neojou@gmail.com>, Hans Ulli Kroll <linux@ulli-kroll.de>,
Ping-Ke Shih <pkshih@realtek.com>,
Yan-Hsuan Chuang <tony0620emma@gmail.com>,
Kalle Valo <kvalo@kernel.org>, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
kernel@pengutronix.de, Alexander Hochbaum <alex@appudo.com>,
Da Xue <da@libre.computer>, Po-Hao Huang <phhuang@realtek.com>,
Andreas Henriksson <andreas@fatal.se>,
Viktor Petrenko <g0000ga@gmail.com>,
Sascha Hauer <s.hauer@pengutronix.de>
Subject: [PATCH v2 3/3] wifi: rtw88: usb: drop now unnecessary URB size check
Date: Fri, 10 Feb 2023 12:16:32 +0100
Message-Id: <20230210111632.1985205-4-s.hauer@pengutronix.de>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20230210111632.1985205-1-s.hauer@pengutronix.de>
References: <20230210111632.1985205-1-s.hauer@pengutronix.de>
MIME-Version: 1.0
X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2
X-SA-Exim-Mail-From: sha@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: linux-wireless@vger.kernel.org
Precedence: bulk
List-ID: <linux-wireless.vger.kernel.org>
X-Mailing-List: linux-wireless@vger.kernel.org
Now that we send URBs with the URB_ZERO_PACKET flag set we no longer
need to make sure that the URB sizes are not multiple of the
bulkout_size. Drop the check.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/net/wireless/realtek/rtw88/usb.c | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
index 1a09c9288198a..2a8336b1847a5 100644
--- a/drivers/net/wireless/realtek/rtw88/usb.c
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
@@ -414,24 +414,11 @@ static int rtw_usb_write_data_rsvd_page(struct rtw_dev *rtwdev, u8 *buf,
u32 size)
{
const struct rtw_chip_info *chip = rtwdev->chip;
- struct rtw_usb *rtwusb;
struct rtw_tx_pkt_info pkt_info = {0};
- u32 len, desclen;
-
- rtwusb = rtw_get_usb_priv(rtwdev);
pkt_info.tx_pkt_size = size;
pkt_info.qsel = TX_DESC_QSEL_BEACON;
-
- desclen = chip->tx_pkt_desc_sz;
- len = desclen + size;
- if (len % rtwusb->bulkout_size == 0) {
- len += RTW_USB_PACKET_OFFSET_SZ;
- pkt_info.offset = desclen + RTW_USB_PACKET_OFFSET_SZ;
- pkt_info.pkt_offset = 1;
- } else {
- pkt_info.offset = desclen;
- }
+ pkt_info.offset = chip->tx_pkt_desc_sz;
return rtw_usb_write_data(rtwdev, &pkt_info, buf);
}

@ -3,8 +3,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="LibreELEC-settings"
PKG_VERSION="1d458c6242668ffca70aa5da56bec1fd548b5e88"
PKG_SHA256="d08bbf432fc9906eb9365199dfbab2042a7b439a8a704d51e0b220b4b4c97296"
PKG_VERSION="9a334c0857fe5ccf84af272f42dc6f6cd5c72e4b"
PKG_SHA256="71be076033ae4bcb9012a12c2fc47b0805b0e40db2e812e19613643bbcba978c"
PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv"
PKG_URL="https://github.com/LibreELEC/service.libreelec.settings/archive/${PKG_VERSION}.tar.gz"

@ -23,7 +23,7 @@ do_stop(){
}
case $(dtname) in
oranth,tx3-mini)
oranth,tx3-mini|oranth,tx9-pro)
LED_PATH_COLON="/sys/devices/platform/spi/spi_master/spi0/spi0.0/leds/:colon/brightness"
LED_PATH_TEXT="/sys/devices/platform/spi/spi_master/spi0/spi0.0/display_text"
;;

@ -4,7 +4,7 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
case $DTNAME in
radxa,zero)
radxa,zero*)
echo "Skipping configuration, eth0 not detected"
exit 0
;;

@ -14,13 +14,13 @@ PKG_TOOLCHAIN="manual"
[ -n "${KERNEL_TOOLCHAIN}" ] && PKG_DEPENDS_TARGET+=" gcc-${KERNEL_TOOLCHAIN}:host"
if [ "${PROJECT}" = "Rockchip" -a "${DEVICE}" = "RK3399" ]; then
if [ "${ATF_PLATFORM}" = "rk3399" ]; then
PKG_DEPENDS_TARGET+=" gcc-arm-none-eabi:host"
export M0_CROSS_COMPILE="${TOOLCHAIN}/bin/arm-none-eabi-"
fi
make_target() {
if [ "${DEVICE}" = "iMX8" ]; then
if [ "${ATF_PLATFORM}" = "imx8mq" ]; then
CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--no-warn-rwx-segments" CFLAGS="--param=min-pagesize=0" make PLAT=${ATF_PLATFORM} bl31
else
CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="--no-warn-rwx-segments" CFLAGS="" make PLAT=${ATF_PLATFORM} bl31

@ -1,3 +1,5 @@
if fatload mmc 0 0x1000000 u-boot.ext; then go 0x1000000; fi;
if fatload usb 0 0x1000000 u-boot.ext; then go 0x1000000; fi;
setenv env_addr 0x1040000
setenv boot_start 'bootm ${loadaddr} - ${dtb_mem_addr}'
setenv addmac 'if printenv mac; then setenv bootargs ${bootargs} mac=${mac}; elif printenv eth_mac; then setenv bootargs ${bootargs} mac=${eth_mac}; fi'

@ -1,7 +1,7 @@
From ff14abfd54075d016f8d46e30e3395dd5613024b Mon Sep 17 00:00:00 2001
From 96c275bc11a788a05f203a350cb554a249e51eae Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 13 Apr 2019 05:41:51 +0000
Subject: [PATCH 01/92] LOCAL: set meson-gx cma pool to 896MB
Subject: [PATCH 001/111] LOCAL: set meson-gx cma pool to 896MB
This change sets the CMA pool to a larger 896MB! value for vdec use

@ -1,7 +1,7 @@
From 184621c6007e47fb0415a05668f132006c80caa9 Mon Sep 17 00:00:00 2001
From b381fd01e0f8121106c943ce2e97965b5a8f1eb5 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 14 Aug 2019 19:58:14 +0000
Subject: [PATCH 02/92] LOCAL: set meson-g12 cma pool to 896MB
Subject: [PATCH 002/111] LOCAL: set meson-g12 cma pool to 896MB
This change sets the CMA pool to a larger 896MB! value for vdec use

@ -1,7 +1,7 @@
From b1e12b3742785eecdda1b58e2445c3d83eccf445 Mon Sep 17 00:00:00 2001
From 254a90493072296f96a1f3ff12a2909fce8845fd Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 13 Apr 2019 05:45:18 +0000
Subject: [PATCH 03/92] LOCAL: arm64: fix Kodi sysinfo CPU information
Subject: [PATCH 003/111] LOCAL: arm64: fix Kodi sysinfo CPU information
This allows the CPU information to show in the Kodi sysinfo screen, e.g.

@ -1,7 +1,7 @@
From a859d1225bad98a5398a4777acc0cb64d32dfe04 Mon Sep 17 00:00:00 2001
From d9578c193745e8bc6351705b4048c666906abb9e Mon Sep 17 00:00:00 2001
From: Neil Armstrong <narmstrong@baylibre.com>
Date: Thu, 3 Nov 2016 15:29:23 +0100
Subject: [PATCH 04/92] LOCAL: arm64: meson: add Amlogic Meson GX PM Suspend
Subject: [PATCH 004/111] LOCAL: 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.

@ -1,7 +1,7 @@
From 87dbe21ffcdcd929dcb86f31453fcb400c954cd7 Mon Sep 17 00:00:00 2001
From db9cc13e36dbbf385e625e69571ef987a3322c0d Mon Sep 17 00:00:00 2001
From: Neil Armstrong <narmstrong@baylibre.com>
Date: Thu, 3 Nov 2016 15:29:25 +0100
Subject: [PATCH 05/92] LOCAL: arm64: dts: meson: add support for GX PM and
Subject: [PATCH 005/111] LOCAL: arm64: dts: meson: add support for GX PM and
Virtual RTC
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>

@ -1,7 +1,7 @@
From 6f466ee418a0ce0de01ac2671efc5e73364b83eb Mon Sep 17 00:00:00 2001
From 8031cf2c53a83213f9e2334041d03e9284cac733 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 21 Jan 2021 01:35:36 +0000
Subject: [PATCH 06/92] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Subject: [PATCH 006/111] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Khadas VIM
Add aliases to ensure the vrtc time (which normally proves first) is /dev/rtc1

@ -1,7 +1,7 @@
From 14ad2621e7d5d7d96ef6ead4ed2dd2658d75acc6 Mon Sep 17 00:00:00 2001
From e94b053abcbd21ae957cb23de89cc82e5d3a045c Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 6 Nov 2021 13:01:08 +0000
Subject: [PATCH 07/92] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Subject: [PATCH 007/111] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Khadas VIM2
Add aliases to ensure the vrtc time (which normally proves first) is /dev/rtc1

@ -1,8 +1,8 @@
From b9ec4238130625734e858f024ca9f5d87642bb62 Mon Sep 17 00:00:00 2001
From d2f7e226584a6b78399478299fd5ba3a2e1d671c Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Mon, 1 Feb 2021 19:27:40 +0000
Subject: [PATCH 08/92] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to Minix
NEO U9-H
Subject: [PATCH 008/111] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Minix NEO U9-H
Add node aliases to prevent meson-vrtc from claiming /dev/rtc0

@ -1,8 +1,8 @@
From 0cade3f576c5486cc914c32c7478af90aedf31bb Mon Sep 17 00:00:00 2001
From 76e432285ba1ec0f38c73ba98557f65363ad6049 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi.hannula@iki.fi>
Date: Sun, 17 Apr 2022 04:37:48 +0000
Subject: [PATCH 09/92] LOCAL: ALSA: Assign internal PCM chmap/ELD/IEC958 kctls
to device 0
Subject: [PATCH 009/111] LOCAL: ALSA: Assign internal PCM chmap/ELD/IEC958
kctls to device 0
On SoC sound devices utilizing codec2codec DAI links with a HDMI codec
the kctls for chmap, ELD, IEC958 are currently created using the

@ -1,8 +1,8 @@
From 72ea6f5c5fe299d105ebee91103ae26a7473af46 Mon Sep 17 00:00:00 2001
From 13366cc3b3163c1f4523074ef23d85d0022ceed2 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Mon, 3 Jan 2022 10:44:17 +0000
Subject: [PATCH 10/92] LOCAL: usb: hub: disable autosuspend for Genesys Logic
Hubs
Subject: [PATCH 010/111] LOCAL: usb: hub: disable autosuspend for Genesys
Logic Hubs
Disable autosuspend in Genesys Logic hubs to allow USB devices on the
Odroid C2 board to be used. The alternative to this patch is setting
@ -17,18 +17,18 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index bbab424b0d55..ccfd0b312867 100644
index 0aaaadb02cc6..1ca434aed00b 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -5797,7 +5797,7 @@ static const struct usb_device_id hub_id_table[] = {
@@ -5800,7 +5800,7 @@ static const struct usb_device_id hub_id_table[] = {
| USB_DEVICE_ID_MATCH_INT_CLASS,
.idVendor = USB_VENDOR_GENESYS_LOGIC,
.bInterfaceClass = USB_CLASS_HUB,
- .driver_info = HUB_QUIRK_CHECK_PORT_AUTOSUSPEND},
+ .driver_info = HUB_QUIRK_DISABLE_AUTOSUSPEND},
{ .match_flags = USB_DEVICE_ID_MATCH_DEV_CLASS,
.bDeviceClass = USB_CLASS_HUB},
{ .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS,
{ .match_flags = USB_DEVICE_ID_MATCH_VENDOR
| USB_DEVICE_ID_MATCH_PRODUCT,
.idVendor = USB_VENDOR_TEXAS_INSTRUMENTS,
--
2.34.1

@ -1,7 +1,7 @@
From 0efd3bd51c74ee027a993d1a51501dd20c70e9ac Mon Sep 17 00:00:00 2001
From 3a73eb6db4399030da096bd884c382be9a8fac93 Mon Sep 17 00:00:00 2001
From: Stefan Agner <stefan@agner.ch>
Date: Wed, 15 Sep 2021 05:00:45 +0000
Subject: [PATCH 11/92] LOCAL: of: partial revert of fdt.c changes
Subject: [PATCH 011/111] LOCAL: of: partial revert of fdt.c changes
This resolves reports similar to the below which are present in dmesg
since Linux 5.10; which are also causing crashes in some distros:
@ -14,10 +14,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
1 file changed, 9 deletions(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 4f88e8bbdd27..efa14615b865 100644
index d1a68b6d03b3..81508e8b34d2 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -481,15 +481,6 @@ static int __init early_init_dt_reserve_memory(phys_addr_t base,
@@ -480,15 +480,6 @@ static int __init early_init_dt_reserve_memory(phys_addr_t base,
phys_addr_t size, bool nomap)
{
if (nomap) {

@ -1,8 +1,8 @@
From d84e72164608f4cf0b022afd3435fa67a0e529c1 Mon Sep 17 00:00:00 2001
From 3837d793e505f1578b55b89ee079b89cd89fb274 Mon Sep 17 00:00:00 2001
From: Pierre-Olivier Mercier <nemunaire@nemunai.re>
Date: Wed, 4 Jan 2023 15:19:06 +0000
Subject: [PATCH 33/92] FROMLIST(v1): Revert "arm64: dts: meson-sm1-odroid-hc4:
disable unused USB PHY0"
Subject: [PATCH 012/111] FROMGIT(6.2): Revert "arm64: dts:
meson-sm1-odroid-hc4: disable unused USB PHY0"
This reverts commit 703e84d6615a4a95fb504c8f2e4c9426b86f3930.

@ -1,197 +0,0 @@
From 95ad58d671ddc3b20f6de9a90659a12bfed01548 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 14 Jan 2023 12:25:33 +0000
Subject: [PATCH 12/92] REVERT: mmc: meson-gx: add SDIO interrupt support
This reverts commit 066ecde6d826b443f492570e080cba3f2212280d.
See https://lore.kernel.org/linux-amlogic/52861a84-0fe2-37f0-d66a-145f2ebe1d79@gmail.com/T/#m9c6a0aa6b221bcbf51457e612456c6fff5eeacfa
---
drivers/mmc/host/meson-gx-mmc.c | 70 +++++----------------------------
1 file changed, 10 insertions(+), 60 deletions(-)
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
index 6e5ea0213b47..a8258ea5364c 100644
--- a/drivers/mmc/host/meson-gx-mmc.c
+++ b/drivers/mmc/host/meson-gx-mmc.c
@@ -41,17 +41,14 @@
#define CLK_V2_TX_DELAY_MASK GENMASK(19, 16)
#define CLK_V2_RX_DELAY_MASK GENMASK(23, 20)
#define CLK_V2_ALWAYS_ON BIT(24)
-#define CLK_V2_IRQ_SDIO_SLEEP BIT(25)
#define CLK_V3_TX_DELAY_MASK GENMASK(21, 16)
#define CLK_V3_RX_DELAY_MASK GENMASK(27, 22)
#define CLK_V3_ALWAYS_ON BIT(28)
-#define CLK_V3_IRQ_SDIO_SLEEP BIT(29)
#define CLK_TX_DELAY_MASK(h) (h->data->tx_delay_mask)
#define CLK_RX_DELAY_MASK(h) (h->data->rx_delay_mask)
#define CLK_ALWAYS_ON(h) (h->data->always_on)
-#define CLK_IRQ_SDIO_SLEEP(h) (h->data->irq_sdio_sleep)
#define SD_EMMC_DELAY 0x4
#define SD_EMMC_ADJUST 0x8
@@ -138,7 +135,6 @@ struct meson_mmc_data {
unsigned int rx_delay_mask;
unsigned int always_on;
unsigned int adjust;
- unsigned int irq_sdio_sleep;
};
struct sd_emmc_desc {
@@ -178,7 +174,6 @@ struct meson_host {
bool vqmmc_enabled;
bool needs_pre_post_req;
- spinlock_t lock;
};
#define CMD_CFG_LENGTH_MASK GENMASK(8, 0)
@@ -435,7 +430,6 @@ static int meson_mmc_clk_init(struct meson_host *host)
clk_reg |= FIELD_PREP(CLK_CORE_PHASE_MASK, CLK_PHASE_180);
clk_reg |= FIELD_PREP(CLK_TX_PHASE_MASK, CLK_PHASE_0);
clk_reg |= FIELD_PREP(CLK_RX_PHASE_MASK, CLK_PHASE_0);
- clk_reg |= CLK_IRQ_SDIO_SLEEP(host);
writel(clk_reg, host->regs + SD_EMMC_CLOCK);
/* get the mux parents */
@@ -934,54 +928,32 @@ static void meson_mmc_read_resp(struct mmc_host *mmc, struct mmc_command *cmd)
}
}
-static void __meson_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
-{
- struct meson_host *host = mmc_priv(mmc);
- u32 reg_irqen = IRQ_EN_MASK;
-
- if (enable)
- reg_irqen |= IRQ_SDIO;
- writel(reg_irqen, host->regs + SD_EMMC_IRQ_EN);
-}
-
static irqreturn_t meson_mmc_irq(int irq, void *dev_id)
{
struct meson_host *host = dev_id;
struct mmc_command *cmd;
+ struct mmc_data *data;
u32 status, raw_status;
irqreturn_t ret = IRQ_NONE;
raw_status = readl(host->regs + SD_EMMC_STATUS);
- status = raw_status & (IRQ_EN_MASK | IRQ_SDIO);
+ status = raw_status & IRQ_EN_MASK;
if (!status) {
dev_dbg(host->dev,
"Unexpected IRQ! irq_en 0x%08lx - status 0x%08x\n",
- IRQ_EN_MASK | IRQ_SDIO, raw_status);
+ IRQ_EN_MASK, raw_status);
return IRQ_NONE;
}
- if (WARN_ON(!host))
+ if (WARN_ON(!host) || WARN_ON(!host->cmd))
return IRQ_NONE;
/* ack all raised interrupts */
writel(status, host->regs + SD_EMMC_STATUS);
cmd = host->cmd;
-
- if (status & IRQ_SDIO) {
- spin_lock(&host->lock);
- __meson_mmc_enable_sdio_irq(host->mmc, 0);
- sdio_signal_irq(host->mmc);
- spin_unlock(&host->lock);
- status &= ~IRQ_SDIO;
- if (!status)
- return IRQ_HANDLED;
- }
-
- if (WARN_ON(!cmd))
- return IRQ_NONE;
-
+ data = cmd->data;
cmd->error = 0;
if (status & IRQ_CRC_ERR) {
dev_dbg(host->dev, "CRC Error - status 0x%08x\n", status);
@@ -999,9 +971,12 @@ static irqreturn_t meson_mmc_irq(int irq, void *dev_id)
meson_mmc_read_resp(host->mmc, cmd);
- if (status & (IRQ_END_OF_CHAIN | IRQ_RESP_STATUS)) {
- struct mmc_data *data = cmd->data;
+ if (status & IRQ_SDIO) {
+ dev_dbg(host->dev, "IRQ: SDIO TODO.\n");
+ ret = IRQ_HANDLED;
+ }
+ if (status & (IRQ_END_OF_CHAIN | IRQ_RESP_STATUS)) {
if (data && !cmd->error)
data->bytes_xfered = data->blksz * data->blocks;
if (meson_mmc_bounce_buf_read(data) ||
@@ -1144,21 +1119,6 @@ static int meson_mmc_voltage_switch(struct mmc_host *mmc, struct mmc_ios *ios)
return -EINVAL;
}
-static void meson_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
-{
- struct meson_host *host = mmc_priv(mmc);
- unsigned long flags;
-
- spin_lock_irqsave(&host->lock, flags);
- __meson_mmc_enable_sdio_irq(mmc, enable);
- spin_unlock_irqrestore(&host->lock, flags);
-}
-
-static void meson_mmc_ack_sdio_irq(struct mmc_host *mmc)
-{
- meson_mmc_enable_sdio_irq(mmc, 1);
-}
-
static const struct mmc_host_ops meson_mmc_ops = {
.request = meson_mmc_request,
.set_ios = meson_mmc_set_ios,
@@ -1168,8 +1128,6 @@ static const struct mmc_host_ops meson_mmc_ops = {
.execute_tuning = meson_mmc_resampling_tuning,
.card_busy = meson_mmc_card_busy,
.start_signal_voltage_switch = meson_mmc_voltage_switch,
- .enable_sdio_irq = meson_mmc_enable_sdio_irq,
- .ack_sdio_irq = meson_mmc_ack_sdio_irq,
};
static int meson_mmc_probe(struct platform_device *pdev)
@@ -1275,13 +1233,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
if (ret)
goto err_init_clk;
- spin_lock_init(&host->lock);
-
mmc->caps |= MMC_CAP_CMD23;
-
- if (mmc->caps & MMC_CAP_SDIO_IRQ)
- mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;
-
if (host->dram_access_quirk) {
/* Limit segments to 1 due to low available sram memory */
mmc->max_segs = 1;
@@ -1374,7 +1326,6 @@ static const struct meson_mmc_data meson_gx_data = {
.rx_delay_mask = CLK_V2_RX_DELAY_MASK,
.always_on = CLK_V2_ALWAYS_ON,
.adjust = SD_EMMC_ADJUST,
- .irq_sdio_sleep = CLK_V2_IRQ_SDIO_SLEEP,
};
static const struct meson_mmc_data meson_axg_data = {
@@ -1382,7 +1333,6 @@ static const struct meson_mmc_data meson_axg_data = {
.rx_delay_mask = CLK_V3_RX_DELAY_MASK,
.always_on = CLK_V3_ALWAYS_ON,
.adjust = SD_EMMC_V3_ADJUST,
- .irq_sdio_sleep = CLK_V3_IRQ_SDIO_SLEEP,
};
static const struct of_device_id meson_mmc_of_match[] = {
--
2.34.1

@ -0,0 +1,53 @@
From e7055f8ff6e60ef492d6c1baef6cbfec6a346668 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 19 Jan 2023 05:03:53 +0000
Subject: [PATCH 013/111] FROMGIT(6.3): arm64: dts: meson: remove CPU opps
below 1GHz for G12A boards
Amlogic G12A devices experience CPU stalls and random board wedges when
the system idles and CPU cores clock down to lower opp points. Recent
vendor kernels include a change to remove 100-250MHz and other distro
sources also remove the 500/667MHz points. Unless all 100-667Mhz opps
are removed or the CPU governor forced to performance stalls are still
observed, so let's remove them to improve stability and uptime.
Fixes: b190056fa9ee ("arm64: dts: meson-g12a: add cpus OPP table")
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-g12a.dtsi | 20 --------------------
1 file changed, 20 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12a.dtsi
index fb0ab27d1f64..6eaceb717d61 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12a.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a.dtsi
@@ -57,26 +57,6 @@ cpu_opp_table: opp-table {
compatible = "operating-points-v2";
opp-shared;
- opp-100000000 {
- opp-hz = /bits/ 64 <100000000>;
- opp-microvolt = <731000>;
- };
-
- opp-250000000 {
- opp-hz = /bits/ 64 <250000000>;
- opp-microvolt = <731000>;
- };
-
- opp-500000000 {
- opp-hz = /bits/ 64 <500000000>;
- opp-microvolt = <731000>;
- };
-
- opp-667000000 {
- opp-hz = /bits/ 64 <666666666>;
- opp-microvolt = <731000>;
- };
-
opp-1000000000 {
opp-hz = /bits/ 64 <1000000000>;
opp-microvolt = <731000>;
--
2.34.1

@ -1,7 +1,8 @@
From e5a4a0047f094aea697fcb6133b1112830afb5ab Mon Sep 17 00:00:00 2001
From 673311690caf7aaf2c5436d1c1fe659923722266 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 13 Jan 2022 03:50:01 +0000
Subject: [PATCH 35/92] WIP: arm64: dts: meson: add Broadcom WiFi to P212 dtsi
Subject: [PATCH 014/111] FROMGIT(6.3): arm64: dts: meson: add Broadcom WiFi to
P212 dtsi
The P212 has a combined WiFi/BT module. The BT side is already enabled
in the dtsi but the WiFi side is not. Let's enable the WiFi module.

@ -1,7 +1,8 @@
From cf4221c578efbc38145eb0b0ab494b5345738262 Mon Sep 17 00:00:00 2001
From c57576fe884da0e37c2d8e2cfb60384bf1ef1525 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 13 Jan 2022 03:56:12 +0000
Subject: [PATCH 36/92] WIP: arm64: dts: meson: move pwm_ef node in P212 dtsi
Subject: [PATCH 015/111] FROMGIT(6.3): arm64: dts: meson: move pwm_ef node in
P212 dtsi
Cosmetic-only change to alpha-sort the pwm_ef node.

@ -1,8 +1,8 @@
From 3b9ee8fdaeec5b4c4cb6bc7c3f02a8831ee5439f Mon Sep 17 00:00:00 2001
From 88b550fb8d8e2ae36f5dec1af6bcba7a354adfd9 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 13 Jan 2022 03:58:58 +0000
Subject: [PATCH 37/92] WIP: arm64: dts: meson: remove WiFi/BT nodes from
Khadas VIM1
Subject: [PATCH 016/111] FROMGIT(6.3): arm64: dts: meson: remove WiFi/BT nodes
from Khadas VIM1
The Broadcom WiFi/BT SDIO nodes are now inherited from the P212 common dtsi
so we can remove them from the VIM1 board dts.

@ -1,8 +1,8 @@
From 8187f1b091c9b66ff30fa0d999b78e527a942ebc Mon Sep 17 00:00:00 2001
From 0442a4911ff03670d8e6b7ad5aa4cc92bcb185bf Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 13 Jan 2022 04:30:44 +0000
Subject: [PATCH 41/92] WIP: arm64: dts: meson: add audio playback to
S905X-P212 dts
Subject: [PATCH 017/111] FROMGIT(6.3): arm64: dts: meson: add audio playback
to S905X-P212 dts
Add support for the HDMI and Analogue i2s audio outputs.

@ -1,7 +1,7 @@
From ceb50e98435f388832372b434660eec802e20b0f Mon Sep 17 00:00:00 2001
From aabc97b6f87e7ec9c91be72d23a9e2d01fcae006 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Wed, 30 Nov 2022 12:03:14 +0000
Subject: [PATCH 21/92] FROMLIST(v6): dt-bindings: reset: meson-g12a: Add
Subject: [PATCH 018/111] FROMGIT(6.3): dt-bindings: reset: meson-g12a: Add
missing NNA reset
Doesn't appear in the TRM I have, but it is used by the downstream

@ -1,7 +1,7 @@
From 5f95a5931e6459199c4524f477d76875b6191619 Mon Sep 17 00:00:00 2001
From 5779ea2a58e718e36f7c1c908accb8d11e153587 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Wed, 30 Nov 2022 12:04:02 +0000
Subject: [PATCH 22/92] FROMLIST(v6): dt-bindings: power: Add G12A NNA power
Subject: [PATCH 019/111] FROMGIT(6.3): dt-bindings: power: Add G12A NNA power
domain
Add define for the NNA power domain for the NPU in the G12A.

@ -1,7 +1,7 @@
From bc98444729a3facb4c950f0eb14a5994fd1e73bf Mon Sep 17 00:00:00 2001
From f55721060b899c1608b331ddb6f1e5b2286cdfd5 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Wed, 30 Nov 2022 12:04:51 +0000
Subject: [PATCH 23/92] FROMLIST(v6): soc: amlogic: meson-pwrc: Add NNA power
Subject: [PATCH 020/111] FROMGIT(6.3): soc: amlogic: meson-pwrc: Add NNA power
domain for A311D
Based on power initialization sequence in downstream driver.

@ -1,7 +1,7 @@
From 4c9cf2ba95cf5dde129212e0a4f7228cda5db8ec Mon Sep 17 00:00:00 2001
From 1375fb3e0e176ee81b4836662851680795dbb8ce Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Wed, 30 Nov 2022 12:05:46 +0000
Subject: [PATCH 24/92] FROMLIST(v6): arm64: dts: Add DT node for the
Subject: [PATCH 021/111] FROMGIT(6.3): arm64: dts: Add DT node for the
VIPNano-QI on the A311D
This "NPU" is very similar to the Vivante GPUs and Etnaviv works well

@ -1,7 +1,7 @@
From d10e70fc05550e96af4a5778266d9b03ec3a78a2 Mon Sep 17 00:00:00 2001
From 040be3af745825591836564525c21c2168bf2067 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Sat, 3 Dec 2022 06:01:47 +0000
Subject: [PATCH 25/92] FROMLIST(v6): drm/etnaviv: Add nn_core_count to chip
Subject: [PATCH 022/111] FROMGIT(6.3): drm/etnaviv: Add nn_core_count to chip
feature struct
We will use these for differentiating between GPUs and NPUs, as the

@ -1,7 +1,7 @@
From c39b01d9b9a85ca8ec4d4b91ec2cf50b80936027 Mon Sep 17 00:00:00 2001
From 23de0a186d883057b2d9d1baaab20dd0799c66bf Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Sat, 3 Dec 2022 06:02:31 +0000
Subject: [PATCH 26/92] FROMLIST(v6): drm/etnaviv: Warn when probing on NPUs
Subject: [PATCH 023/111] FROMGIT(6.3): drm/etnaviv: Warn when probing on NPUs
Userspace is still not making full use of the hardware, so we don't know
yet if changes to the UAPI won't be needed. Warn about it.

@ -1,7 +1,7 @@
From 856f72c12e899110274043d1d1032987fb06ba5d Mon Sep 17 00:00:00 2001
From de2f35d7917a0c3a1ab70105ca19a37cd5e7f6e9 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Sat, 3 Dec 2022 06:03:16 +0000
Subject: [PATCH 27/92] FROMLIST(v6): drm/etnaviv: add HWDB entry for
Subject: [PATCH 024/111] FROMGIT(6.3): drm/etnaviv: add HWDB entry for
VIPNano-QI.7120.0055
This is a compute-only module marketed towards AI and vision

@ -1,7 +1,7 @@
From 66cbc9c2806ca408c3795c70a252e9802c365538 Mon Sep 17 00:00:00 2001
From fbdbc0b5333c5a16a96e84c3f7b5af251adec4a5 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Sat, 3 Dec 2022 06:04:00 +0000
Subject: [PATCH 28/92] FROMLIST(v6): arm64: dts: Fix NPU power domain
Subject: [PATCH 025/111] FROMGIT(6.3): arm64: dts: Fix NPU power domain
references in Amlogic G12-based SoCs
The power sequence is different between SoCs in that family, so get the

@ -1,8 +1,8 @@
From e27dcbffd0a5e9fe9a0a5ce4b2f0351a24812ea5 Mon Sep 17 00:00:00 2001
From 8278874258d78e4457481affb7ffd826e2408db2 Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Mon, 26 Dec 2022 04:41:46 +0000
Subject: [PATCH 29/92] FROMLIST(v1): clk: meson: mpll: Switch from .round_rate
to .determine_rate
Subject: [PATCH 026/111] FROMGIT(6.3): clk: meson: mpll: Switch from
.round_rate to .determine_rate
clk_ops.round_rate will be removed at some point. It's replacement is
.determine_rate. Switch clk-mpll over to use .determine_rate.

@ -1,7 +1,7 @@
From 618d9912efd9ad02acad0ba978ae52144c931af7 Mon Sep 17 00:00:00 2001
From ceecaec793943916fdb1cfe79eafb3cf52dde66a Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Mon, 26 Dec 2022 04:42:41 +0000
Subject: [PATCH 30/92] FROMLIST(v1): clk: meson: dualdiv: switch from
Subject: [PATCH 027/111] FROMGIT(6.3): clk: meson: dualdiv: switch from
.round_rate to .determine_rate
clk_ops.round_rate will be removed at some point. It's replacement is

@ -1,7 +1,7 @@
From 5dfb053aef5c9f6d7a0ffd17004d9c7d18f6f9bb Mon Sep 17 00:00:00 2001
From 8bb0710558620503e3ec7cafc38738f5a9b93d3c Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Mon, 26 Dec 2022 04:43:33 +0000
Subject: [PATCH 31/92] FROMLIST(v1): clk: meson: sclk-div: switch from
Subject: [PATCH 028/111] FROMGIT(6.3): clk: meson: sclk-div: switch from
.round_rate to .determine_rate
clk_ops.round_rate will be removed at some point. It's replacement is

@ -1,7 +1,7 @@
From 0f23ef2ab5c65e129ba40ddd15d601e1f3c59776 Mon Sep 17 00:00:00 2001
From 0c09663824b014b6c804bb8add4ab9cec14d800f Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Mon, 26 Dec 2022 04:44:26 +0000
Subject: [PATCH 32/92] FROMLIST(v1): clk: meson: clk-cpu-dyndiv: switch from
Subject: [PATCH 029/111] FROMGIT(6.3): clk: meson: clk-cpu-dyndiv: switch from
.round_rate to .determine_rate
clk_ops.round_rate will be removed at some point. It's replacement is

@ -0,0 +1,42 @@
From b7216d87cf7ac3a8245e60686d6c366cf08ad0a4 Mon Sep 17 00:00:00 2001
From: Neil Armstrong <neil.armstrong@linaro.org>
Date: Tue, 24 Jan 2023 12:39:08 +0100
Subject: [PATCH 030/111] FROMGIT(6.3): arm64: dts: amlogic:
meson-sm1-odroid-hc4: fix active fan thermal trip
Add an active trip tied to the on-board fan cooling device, which is better
than describing it along the passive cooling maps.
Fixes: 33b14f663df8 ("arm64: dts: meson: add initial device-tree for ODROID-HC4")
Reported-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
index a1f0c38ccadd..74088e7280fe 100644
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
@@ -76,9 +76,17 @@ sound {
};
&cpu_thermal {
+ trips {
+ cpu_active: cpu-active {
+ temperature = <60000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+ };
+
cooling-maps {
map {
- trip = <&cpu_passive>;
+ trip = <&cpu_active>;
cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
--
2.34.1

@ -1,8 +1,8 @@
From 9faf586f51d20766a18a6b17bd0ce263c2880ed2 Mon Sep 17 00:00:00 2001
From 1319a6e3efd4430c98a8f140a88369575d9314c4 Mon Sep 17 00:00:00 2001
From: David Heidelberg <david@ixit.cz>
Date: Sat, 27 Nov 2021 07:23:35 +0000
Subject: [PATCH 13/92] FROMLIST(v2): arm64: dts: meson: make dts use gpio-fan
matrix instead of array
Subject: [PATCH 031/111] FROMGIT(6.3): arm64: dts: meson: make dts use
gpio-fan matrix instead of array
No functional changes.

@ -0,0 +1,27 @@
From 90c3434be68f83289b15699de1ce6b7860992f4f Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 26 Jan 2023 12:20:19 +0000
Subject: [PATCH 032/111] FROMGIT(6.3): arm64: dts: meson: radxa-zero: allow
usb otg mode
Setting dr_mode to "host" prevents otg which can be useful on a board
with limited connectivity options. So don't force host mode.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
index e3bb6df42ff3..cf0a9be83fc4 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
@@ -401,5 +401,4 @@ &uart_AO {
&usb {
status = "okay";
- dr_mode = "host";
};
--
2.34.1

@ -0,0 +1,38 @@
From e2ea4a7a55108c60d9e90f3fdcb1adb3158a8bb3 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 26 Jan 2023 16:15:59 +0000
Subject: [PATCH 033/111] FROMGIT(6.3): arm64: dts: meson: bananapi-m5: switch
VDDIO_C pin to OPEN_DRAIN
For proper warm (re)boot from SD card the BPI-M5 board requires TFLASH_VDD_EN
and VDDIO_C pins to be switched to high impedance mode. This can be achieved
using OPEN_DRAIN instead of ACTIVE_HIGH to leave the GPIO pins in input mode
and retain high state (pin has the pull-up).
This change is inspired by meson-sm1-odroid.dtsi where OPEN_DRAIN has been
used to resolve similar problems with the Odroid C4 board (TF_IO in the C4
dts is the equivalent regulator).
Fixes 976e920183e4 ("arm64: dts: meson-sm1: add Banana PI BPI-M5 board dts")
Suggested-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
index cadba194b149..e8a23861013f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
@@ -123,7 +123,7 @@ vddio_c: regulator-vddio_c {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
- enable-gpio = <&gpio_ao GPIOE_2 GPIO_ACTIVE_HIGH>;
+ enable-gpio = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
enable-active-high;
regulator-always-on;
--
2.34.1

@ -0,0 +1,941 @@
From 52c42f7f202692c55c448955875b326f9e885e49 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 25 Jan 2023 08:10:48 +0000
Subject: [PATCH 034/111] FROMGIT(6.3): arm64: dts: meson:
meson-sm1-bananapi-m5: convert to dtsi
Convert the BPI-M5 dts into meson-sm1-bananapi.dtsi to support the
addition of new boards based on the same design.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
.../dts/amlogic/meson-sm1-bananapi-m5.dts | 427 +----------------
.../boot/dts/amlogic/meson-sm1-bananapi.dtsi | 435 ++++++++++++++++++
2 files changed, 436 insertions(+), 426 deletions(-)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-bananapi.dtsi
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
index e8a23861013f..34b3238ee0a0 100644
--- a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
@@ -6,10 +6,7 @@
/dts-v1/;
-#include "meson-sm1.dtsi"
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/input/linux-event-codes.h>
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include "meson-sm1-bananapi.dtsi"
#include <dt-bindings/sound/meson-g12a-toacodec.h>
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
@@ -17,28 +14,6 @@ / {
compatible = "bananapi,bpi-m5", "amlogic,sm1";
model = "Banana Pi BPI-M5";
- adc_keys {
- compatible = "adc-keys";
- io-channels = <&saradc 2>;
- io-channel-names = "buttons";
- keyup-threshold-microvolt = <1800000>;
-
- key {
- label = "SW3";
- linux,code = <BTN_3>;
- press-threshold-microvolt = <1700000>;
- };
- };
-
- aliases {
- serial0 = &uart_AO;
- ethernet0 = &ethmac;
- };
-
- chosen {
- stdout-path = "serial0:115200n8";
- };
-
/* TOFIX: handle CVBS_DET on SARADC channel 0 */
cvbs-connector {
compatible = "composite-video-connector";
@@ -50,150 +25,6 @@ cvbs_connector_in: endpoint {
};
};
- emmc_pwrseq: emmc-pwrseq {
- compatible = "mmc-pwrseq-emmc";
- reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
- };
-
- gpio-keys {
- compatible = "gpio-keys";
-
- key {
- label = "SW1";
- linux,code = <BTN_1>;
- gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
- interrupt-parent = <&gpio_intc>;
- interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
- };
- };
-
- hdmi-connector {
- compatible = "hdmi-connector";
- type = "a";
-
- port {
- hdmi_connector_in: endpoint {
- remote-endpoint = <&hdmi_tx_tmds_out>;
- };
- };
- };
-
- leds {
- compatible = "gpio-leds";
-
- green {
- color = <LED_COLOR_ID_GREEN>;
- function = LED_FUNCTION_STATUS;
- gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
- };
-
- blue {
- color = <LED_COLOR_ID_BLUE>;
- function = LED_FUNCTION_STATUS;
- gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_LOW>;
- linux,default-trigger = "heartbeat";
- };
- };
-
- memory@0 {
- device_type = "memory";
- reg = <0x0 0x0 0x0 0x40000000>;
- };
-
- emmc_1v8: regulator-emmc_1v8 {
- compatible = "regulator-fixed";
- regulator-name = "EMMC_1V8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vddao_3v3>;
- regulator-always-on;
- };
-
- dc_in: regulator-dc_in {
- compatible = "regulator-fixed";
- regulator-name = "DC_IN";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- regulator-always-on;
- };
-
- vddio_c: regulator-vddio_c {
- compatible = "regulator-gpio";
- regulator-name = "VDDIO_C";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
-
- enable-gpio = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
- enable-active-high;
- regulator-always-on;
-
- gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_DRAIN>;
- gpios-states = <1>;
-
- states = <1800000 0>,
- <3300000 1>;
- };
-
- tflash_vdd: regulator-tflash_vdd {
- compatible = "regulator-fixed";
- regulator-name = "TFLASH_VDD";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- vin-supply = <&dc_in>;
- gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
- enable-active-high;
- regulator-always-on;
- };
-
- vddao_1v8: regulator-vddao_1v8 {
- compatible = "regulator-fixed";
- regulator-name = "VDDAO_1V8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vddao_3v3>;
- regulator-always-on;
- };
-
- vddao_3v3: regulator-vddao_3v3 {
- compatible = "regulator-fixed";
- regulator-name = "VDDAO_3V3";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- vin-supply = <&dc_in>;
- regulator-always-on;
- };
-
- vddcpu: regulator-vddcpu {
- /*
- * SY8120B1ABC DC/DC Regulator.
- */
- compatible = "pwm-regulator";
-
- regulator-name = "VDDCPU";
- regulator-min-microvolt = <690000>;
- regulator-max-microvolt = <1050000>;
-
- pwm-supply = <&dc_in>;
-
- pwms = <&pwm_AO_cd 1 1250 0>;
- pwm-dutycycle-range = <100 0>;
-
- regulator-boot-on;
- regulator-always-on;
- };
-
- /* USB Hub Power Enable */
- vl_pwr_en: regulator-vl_pwr_en {
- compatible = "regulator-fixed";
- regulator-name = "VL_PWR_EN";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- vin-supply = <&dc_in>;
-
- gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- };
-
sound {
compatible = "amlogic,axg-sound-card";
model = "BPI-M5";
@@ -319,68 +150,17 @@ &acodec {
status = "okay";
};
-&arb {
- status = "okay";
-};
&clkc_audio {
status = "okay";
};
-&cpu0 {
- cpu-supply = <&vddcpu>;
- operating-points-v2 = <&cpu_opp_table>;
- clocks = <&clkc CLKID_CPU_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu1 {
- cpu-supply = <&vddcpu>;
- operating-points-v2 = <&cpu_opp_table>;
- clocks = <&clkc CLKID_CPU1_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu2 {
- cpu-supply = <&vddcpu>;
- operating-points-v2 = <&cpu_opp_table>;
- clocks = <&clkc CLKID_CPU2_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu3 {
- cpu-supply = <&vddcpu>;
- operating-points-v2 = <&cpu_opp_table>;
- clocks = <&clkc CLKID_CPU3_CLK>;
- clock-latency = <50000>;
-};
-
&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>;
-
- interrupt-parent = <&gpio_intc>;
- /* MAC_INTR on GPIOZ_14 */
- interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
- };
-};
-
-&ethmac {
- pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
- pinctrl-names = "default";
- status = "okay";
- phy-mode = "rgmii-txid";
- phy-handle = <&external_phy>;
-};
-
&frddr_a {
status = "okay";
};
@@ -393,192 +173,6 @@ &frddr_c {
status = "okay";
};
-&gpio {
- gpio-line-names =
- /* GPIOZ */
- "ETH_MDIO", /* GPIOZ_0 */
- "ETH_MDC", /* GPIOZ_1 */
- "ETH_RXCLK", /* GPIOZ_2 */
- "ETH_RX_DV", /* GPIOZ_3 */
- "ETH_RXD0", /* GPIOZ_4 */
- "ETH_RXD1", /* GPIOZ_5 */
- "ETH_RXD2", /* GPIOZ_6 */
- "ETH_RXD3", /* GPIOZ_7 */
- "ETH_TXCLK", /* GPIOZ_8 */
- "ETH_TXEN", /* GPIOZ_9 */
- "ETH_TXD0", /* GPIOZ_10 */
- "ETH_TXD1", /* GPIOZ_11 */
- "ETH_TXD2", /* GPIOZ_12 */
- "ETH_TXD3", /* GPIOZ_13 */
- "ETH_INTR", /* GPIOZ_14 */
- "ETH_NRST", /* GPIOZ_15 */
- /* GPIOH */
- "HDMI_SDA", /* GPIOH_0 */
- "HDMI_SCL", /* GPIOH_1 */
- "HDMI_HPD", /* GPIOH_2 */
- "HDMI_CEC", /* GPIOH_3 */
- "VL-RST_N", /* GPIOH_4 */
- "CON1-P36", /* GPIOH_5 */
- "VL-PWREN", /* GPIOH_6 */
- "WiFi_3V3_1V8", /* GPIOH_7 */
- "TFLASH_VDD_EN", /* GPIOH_8 */
- /* BOOT */
- "eMMC_D0", /* BOOT_0 */
- "eMMC_D1", /* BOOT_1 */
- "eMMC_D2", /* BOOT_2 */
- "eMMC_D3", /* BOOT_3 */
- "eMMC_D4", /* BOOT_4 */
- "eMMC_D5", /* BOOT_5 */
- "eMMC_D6", /* BOOT_6 */
- "eMMC_D7", /* BOOT_7 */
- "eMMC_CLK", /* BOOT_8 */
- "",
- "eMMC_CMD", /* BOOT_10 */
- "",
- "eMMC_RST#", /* BOOT_12 */
- "eMMC_DS", /* BOOT_13 */
- "", "",
- /* GPIOC */
- "SD_D0_B", /* GPIOC_0 */
- "SD_D1_B", /* GPIOC_1 */
- "SD_D2_B", /* GPIOC_2 */
- "SD_D3_B", /* GPIOC_3 */
- "SD_CLK_B", /* GPIOC_4 */
- "SD_CMD_B", /* GPIOC_5 */
- "CARD_EN_DET", /* GPIOC_6 */
- "",
- /* GPIOA */
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "",
- "CON1-P27", /* GPIOA_14 */
- "CON1-P28", /* GPIOA_15 */
- /* GPIOX */
- "CON1-P16", /* GPIOX_0 */
- "CON1-P18", /* GPIOX_1 */
- "CON1-P22", /* GPIOX_2 */
- "CON1-P11", /* GPIOX_3 */
- "CON1-P13", /* GPIOX_4 */
- "CON1-P07", /* GPIOX_5 */
- "CON1-P33", /* GPIOX_6 */
- "CON1-P15", /* GPIOX_7 */
- "CON1-P19", /* GPIOX_8 */
- "CON1-P21", /* GPIOX_9 */
- "CON1-P24", /* GPIOX_10 */
- "CON1-P23", /* GPIOX_11 */
- "CON1-P08", /* GPIOX_12 */
- "CON1-P10", /* GPIOX_13 */
- "CON1-P29", /* GPIOX_14 */
- "CON1-P31", /* GPIOX_15 */
- "CON1-P26", /* GPIOX_16 */
- "CON1-P03", /* GPIOX_17 */
- "CON1-P05", /* GPIOX_18 */
- "CON1-P32"; /* GPIOX_19 */
-
- /*
- * WARNING: The USB Hub on the BPI-M5 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 */
- "DEBUG TX", /* GPIOAO_0 */
- "DEBUG RX", /* GPIOAO_1 */
- "SYS_LED2", /* GPIOAO_2 */
- "UPDATE_KEY", /* GPIOAO_3 */
- "CON1-P40", /* GPIOAO_4 */
- "IR_IN", /* GPIOAO_5 */
- "TF_3V3N_1V8_EN", /* GPIOAO_6 */
- "CON1-P35", /* GPIOAO_7 */
- "CON1-P12", /* GPIOAO_8 */
- "CON1-P37", /* GPIOAO_9 */
- "CON1-P38", /* GPIOAO_10 */
- "SYS_LED", /* GPIOAO_11 */
- /* GPIOE */
- "VDDEE_PWM", /* GPIOE_0 */
- "VDDCPU_PWM", /* GPIOE_1 */
- "TF_PWR_EN"; /* GPIOE_2 */
-};
-
-&hdmi_tx {
- status = "okay";
- pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
- pinctrl-names = "default";
- hdmi-supply = <&dc_in>;
-};
-
-&hdmi_tx_tmds_port {
- hdmi_tx_tmds_out: endpoint {
- remote-endpoint = <&hdmi_connector_in>;
- };
-};
-
-&ir {
- status = "okay";
- pinctrl-0 = <&remote_input_ao_pins>;
- pinctrl-names = "default";
-};
-
-&pwm_AO_cd {
- pinctrl-0 = <&pwm_ao_d_e_pins>;
- pinctrl-names = "default";
- clocks = <&xtal>;
- clock-names = "clkin1";
- status = "okay";
-};
-
-&saradc {
- status = "okay";
- vref-supply = <&vddao_1v8>;
-};
-
-/* 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;
-
- /* TOFIX: SD card is barely usable in SDR modes */
-
- cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
- vmmc-supply = <&tflash_vdd>;
- vqmmc-supply = <&vddio_c>;
-};
-
-/* 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 = <&vddao_3v3>;
- vqmmc-supply = <&emmc_1v8>;
-};
-
&tdmif_b {
status = "okay";
};
@@ -626,22 +220,3 @@ &toddr_b {
&toddr_c {
status = "okay";
};
-
-&uart_AO {
- status = "okay";
- pinctrl-0 = <&uart_ao_a_pins>;
- pinctrl-names = "default";
-};
-
-&usb {
- status = "okay";
-};
-
-&usb2_phy0 {
- phy-supply = <&dc_in>;
-};
-
-&usb2_phy1 {
- /* Enable the hub which is connected to this port */
- phy-supply = <&vl_pwr_en>;
-};
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi.dtsi
new file mode 100644
index 000000000000..c914f1148185
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi.dtsi
@@ -0,0 +1,435 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 BayLibre SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+#include "meson-sm1.dtsi"
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+
+/ {
+ adc_keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 2>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+
+ key {
+ label = "SW3";
+ linux,code = <BTN_3>;
+ press-threshold-microvolt = <1700000>;
+ };
+ };
+
+ aliases {
+ serial0 = &uart_AO;
+ ethernet0 = &ethmac;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ emmc_pwrseq: emmc-pwrseq {
+ compatible = "mmc-pwrseq-emmc";
+ reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ key {
+ label = "SW1";
+ linux,code = <BTN_1>;
+ gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
+ interrupt-parent = <&gpio_intc>;
+ interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
+ };
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&hdmi_tx_tmds_out>;
+ };
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led-green {
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
+ };
+
+ led-blue {
+ color = <LED_COLOR_ID_BLUE>;
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ emmc_1v8: regulator-emmc_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "EMMC_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vddao_3v3>;
+ regulator-always-on;
+ };
+
+ dc_in: regulator-dc_in {
+ compatible = "regulator-fixed";
+ regulator-name = "DC_IN";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ };
+
+ vddio_c: regulator-vddio_c {
+ compatible = "regulator-gpio";
+ regulator-name = "VDDIO_C";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+
+ enable-gpio = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ regulator-always-on;
+
+ gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_DRAIN>;
+ gpios-states = <1>;
+
+ states = <1800000 0>,
+ <3300000 1>;
+ };
+
+ tflash_vdd: regulator-tflash_vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "TFLASH_VDD";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&dc_in>;
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ vddao_1v8: regulator-vddao_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vddao_3v3>;
+ regulator-always-on;
+ };
+
+ vddao_3v3: regulator-vddao_3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&dc_in>;
+ regulator-always-on;
+ };
+
+ vddcpu: regulator-vddcpu {
+ /*
+ * SY8120B1ABC DC/DC Regulator.
+ */
+ compatible = "pwm-regulator";
+
+ regulator-name = "VDDCPU";
+ regulator-min-microvolt = <690000>;
+ regulator-max-microvolt = <1050000>;
+
+ pwm-supply = <&dc_in>;
+
+ pwms = <&pwm_AO_cd 1 1250 0>;
+ pwm-dutycycle-range = <100 0>;
+
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ /* USB Hub Power Enable */
+ vl_pwr_en: regulator-vl_pwr_en {
+ compatible = "regulator-fixed";
+ regulator-name = "VL_PWR_EN";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&dc_in>;
+
+ gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+};
+
+&arb {
+ status = "okay";
+};
+
+&cpu0 {
+ cpu-supply = <&vddcpu>;
+ operating-points-v2 = <&cpu_opp_table>;
+ clocks = <&clkc CLKID_CPU_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu1 {
+ cpu-supply = <&vddcpu>;
+ operating-points-v2 = <&cpu_opp_table>;
+ clocks = <&clkc CLKID_CPU1_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu2 {
+ cpu-supply = <&vddcpu>;
+ operating-points-v2 = <&cpu_opp_table>;
+ clocks = <&clkc CLKID_CPU2_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu3 {
+ cpu-supply = <&vddcpu>;
+ operating-points-v2 = <&cpu_opp_table>;
+ clocks = <&clkc CLKID_CPU3_CLK>;
+ clock-latency = <50000>;
+};
+
+&ext_mdio {
+ external_phy: ethernet-phy@0 {
+ /* Realtek RTL8211F (0x001cc916) */
+ reg = <0>;
+ max-speed = <1000>;
+
+ interrupt-parent = <&gpio_intc>;
+ /* MAC_INTR on GPIOZ_14 */
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+&ethmac {
+ pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ phy-mode = "rgmii-txid";
+ phy-handle = <&external_phy>;
+};
+
+&gpio {
+ gpio-line-names =
+ /* GPIOZ */
+ "ETH_MDIO", /* GPIOZ_0 */
+ "ETH_MDC", /* GPIOZ_1 */
+ "ETH_RXCLK", /* GPIOZ_2 */
+ "ETH_RX_DV", /* GPIOZ_3 */
+ "ETH_RXD0", /* GPIOZ_4 */
+ "ETH_RXD1", /* GPIOZ_5 */
+ "ETH_RXD2", /* GPIOZ_6 */
+ "ETH_RXD3", /* GPIOZ_7 */
+ "ETH_TXCLK", /* GPIOZ_8 */
+ "ETH_TXEN", /* GPIOZ_9 */
+ "ETH_TXD0", /* GPIOZ_10 */
+ "ETH_TXD1", /* GPIOZ_11 */
+ "ETH_TXD2", /* GPIOZ_12 */
+ "ETH_TXD3", /* GPIOZ_13 */
+ "ETH_INTR", /* GPIOZ_14 */
+ "ETH_NRST", /* GPIOZ_15 */
+ /* GPIOH */
+ "HDMI_SDA", /* GPIOH_0 */
+ "HDMI_SCL", /* GPIOH_1 */
+ "HDMI_HPD", /* GPIOH_2 */
+ "HDMI_CEC", /* GPIOH_3 */
+ "VL-RST_N", /* GPIOH_4 */
+ "CON1-P36", /* GPIOH_5 */
+ "VL-PWREN", /* GPIOH_6 */
+ "WiFi_3V3_1V8", /* GPIOH_7 */
+ "TFLASH_VDD_EN", /* GPIOH_8 */
+ /* BOOT */
+ "eMMC_D0", /* BOOT_0 */
+ "eMMC_D1", /* BOOT_1 */
+ "eMMC_D2", /* BOOT_2 */
+ "eMMC_D3", /* BOOT_3 */
+ "eMMC_D4", /* BOOT_4 */
+ "eMMC_D5", /* BOOT_5 */
+ "eMMC_D6", /* BOOT_6 */
+ "eMMC_D7", /* BOOT_7 */
+ "eMMC_CLK", /* BOOT_8 */
+ "",
+ "eMMC_CMD", /* BOOT_10 */
+ "",
+ "eMMC_RST#", /* BOOT_12 */
+ "eMMC_DS", /* BOOT_13 */
+ "", "",
+ /* GPIOC */
+ "SD_D0_B", /* GPIOC_0 */
+ "SD_D1_B", /* GPIOC_1 */
+ "SD_D2_B", /* GPIOC_2 */
+ "SD_D3_B", /* GPIOC_3 */
+ "SD_CLK_B", /* GPIOC_4 */
+ "SD_CMD_B", /* GPIOC_5 */
+ "CARD_EN_DET", /* GPIOC_6 */
+ "",
+ /* GPIOA */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "",
+ "CON1-P27", /* GPIOA_14 */
+ "CON1-P28", /* GPIOA_15 */
+ /* GPIOX */
+ "CON1-P16", /* GPIOX_0 */
+ "CON1-P18", /* GPIOX_1 */
+ "CON1-P22", /* GPIOX_2 */
+ "CON1-P11", /* GPIOX_3 */
+ "CON1-P13", /* GPIOX_4 */
+ "CON1-P07", /* GPIOX_5 */
+ "CON1-P33", /* GPIOX_6 */
+ "CON1-P15", /* GPIOX_7 */
+ "CON1-P19", /* GPIOX_8 */
+ "CON1-P21", /* GPIOX_9 */
+ "CON1-P24", /* GPIOX_10 */
+ "CON1-P23", /* GPIOX_11 */
+ "CON1-P08", /* GPIOX_12 */
+ "CON1-P10", /* GPIOX_13 */
+ "CON1-P29", /* GPIOX_14 */
+ "CON1-P31", /* GPIOX_15 */
+ "CON1-P26", /* GPIOX_16 */
+ "CON1-P03", /* GPIOX_17 */
+ "CON1-P05", /* GPIOX_18 */
+ "CON1-P32"; /* GPIOX_19 */
+
+ /*
+ * WARNING: The USB Hub 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 to reset the Hub
+ * when the 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 */
+ "DEBUG TX", /* GPIOAO_0 */
+ "DEBUG RX", /* GPIOAO_1 */
+ "SYS_LED2", /* GPIOAO_2 */
+ "UPDATE_KEY", /* GPIOAO_3 */
+ "CON1-P40", /* GPIOAO_4 */
+ "IR_IN", /* GPIOAO_5 */
+ "TF_3V3N_1V8_EN", /* GPIOAO_6 */
+ "CON1-P35", /* GPIOAO_7 */
+ "CON1-P12", /* GPIOAO_8 */
+ "CON1-P37", /* GPIOAO_9 */
+ "CON1-P38", /* GPIOAO_10 */
+ "SYS_LED", /* GPIOAO_11 */
+ /* GPIOE */
+ "VDDEE_PWM", /* GPIOE_0 */
+ "VDDCPU_PWM", /* GPIOE_1 */
+ "TF_PWR_EN"; /* GPIOE_2 */
+};
+
+&hdmi_tx {
+ status = "okay";
+ pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+ pinctrl-names = "default";
+ hdmi-supply = <&dc_in>;
+};
+
+&hdmi_tx_tmds_port {
+ hdmi_tx_tmds_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_input_ao_pins>;
+ pinctrl-names = "default";
+};
+
+&pwm_AO_cd {
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
+ pinctrl-names = "default";
+ clocks = <&xtal>;
+ clock-names = "clkin1";
+ status = "okay";
+};
+
+&saradc {
+ status = "okay";
+ vref-supply = <&vddao_1v8>;
+};
+
+/* 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;
+
+ /* TOFIX: SD card is barely usable in SDR modes */
+
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+ vmmc-supply = <&tflash_vdd>;
+ vqmmc-supply = <&vddio_c>;
+};
+
+/* 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 = <&vddao_3v3>;
+ vqmmc-supply = <&emmc_1v8>;
+};
+
+&uart_AO {
+ status = "okay";
+ pinctrl-0 = <&uart_ao_a_pins>;
+ pinctrl-names = "default";
+};
+
+&usb {
+ status = "okay";
+};
+
+&usb2_phy0 {
+ phy-supply = <&dc_in>;
+};
+
+&usb2_phy1 {
+ /* Enable the hub which is connected to this port */
+ phy-supply = <&vl_pwr_en>;
+};
--
2.34.1

@ -0,0 +1,28 @@
From 88b6e2cd10d2bcb2921f959c8d2781feae9e8e7d Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 25 Jan 2023 09:28:27 +0000
Subject: [PATCH 035/111] FROMGIT(6.3): dt-bindings: arm: amlogic: add support
for BananaPi M2-Pro
BPI-M2-PRO is based upon the BPI-M5 using the Amlogic SM1 (S905X3) chipset.
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 9fda2436c618..d63f6b899f25 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -175,6 +175,7 @@ properties:
- enum:
- amediatech,x96-air
- amediatech,x96-air-gbit
+ - bananapi,bpi-m2-pro
- bananapi,bpi-m5
- cyx,a95xf3-air
- cyx,a95xf3-air-gbit
--
2.34.1

@ -0,0 +1,139 @@
From 1a6ff5c5aaf0f8f1e418766d09926eaac617e07e Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 25 Jan 2023 08:13:28 +0000
Subject: [PATCH 036/111] FROMGIT(6.3): arm64: dts: meson: add support for
BananaPi M2-Pro
BPI-M2-PRO is based upon the BPI-M5 design except for a different
physical board layout and the following changes:
- USB 3.0 ports reduced from 4x to 2x
- 3.5mm Combined CVBS/Audio Jack removed
- RTL8821BU WiFi/BT module (internal USB connected)
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../dts/amlogic/meson-sm1-bananapi-m2-pro.dts | 98 +++++++++++++++++++
2 files changed, 99 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m2-pro.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index e213aeebb774..5e5433718c6e 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -59,6 +59,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-s4-s805x2-aq222.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-gbit.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m2-pro.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m5.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-h96-max.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m2-pro.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m2-pro.dts
new file mode 100644
index 000000000000..4890d5d9a4f7
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m2-pro.dts
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 BayLibre SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+/dts-v1/;
+
+#include "meson-sm1-bananapi.dtsi"
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+ compatible = "bananapi,bpi-m2-pro", "amlogic,sm1";
+ model = "Banana Pi BPI-M2-PRO";
+
+ sound {
+ compatible = "amlogic,axg-sound-card";
+ model = "BPI-M2-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";
+
+ assigned-clocks = <&clkc CLKID_MPLL2>,
+ <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&frddr_b>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&frddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-3 {
+ sound-dai = <&tdmif_b>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ dai-tdm-slot-tx-mask-1 = <1 1>;
+ dai-tdm-slot-tx-mask-2 = <1 1>;
+ dai-tdm-slot-tx-mask-3 = <1 1>;
+ mclk-fs = <256>;
+
+ codec {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+ };
+ };
+
+ /* hdmi glue */
+ dai-link-4 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+ codec {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&clkc_audio {
+ status = "okay";
+};
+
+&frddr_a {
+ status = "okay";
+};
+
+&frddr_b {
+ status = "okay";
+};
+
+&frddr_c {
+ status = "okay";
+};
+
+&tdmif_b {
+ status = "okay";
+};
+
+&tdmout_b {
+ status = "okay";
+};
+
+&tohdmitx {
+ status = "okay";
+};
--
2.34.1

@ -1,19 +1,20 @@
From 18e13ed0bc6e08e4e772758fff2e8114044cdf64 Mon Sep 17 00:00:00 2001
From 1ade064f078d44502e8f1bdfb9629364803916aa Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 16 Feb 2022 07:27:07 +0000
Subject: [PATCH 50/92] WIP: dt-bindings: arm: amlogic: add support for Radxa
Zero2
Subject: [PATCH 037/111] FROMGIT(6.3): dt-bindings: arm: amlogic: add support
for Radxa Zero2
The Radxa Zero2 is a small form-factor SBC using the Amlogic
A311D chip.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
index 9fda2436c618..cf81dc06df2e 100644
index d63f6b899f25..7ded40b309a4 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -154,6 +154,7 @@ properties:

@ -1,7 +1,8 @@
From 3d8adf4989896bf6166454e0e48d7ae04c4ae2ec Mon Sep 17 00:00:00 2001
From 1b7061d7b6255b8752d04c671bda9d2a250f9637 Mon Sep 17 00:00:00 2001
From: Yuntian Zhang <yt@radxa.com>
Date: Fri, 14 Jan 2022 15:50:02 +0000
Subject: [PATCH 51/92] WIP: arm64: dts: meson: add support for Radxa Zero2
Subject: [PATCH 038/111] FROMGIT(6.3): arm64: dts: meson: add support for
Radxa Zero2
Radxa Zero2 is a small form factor SBC based on the Amlogic A311D
chipset that ships in a number of eMMC configurations:
@ -21,12 +22,12 @@ Signed-off-by: Yuntian Zhang <yt@radxa.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../dts/amlogic/meson-g12b-radxa-zero2.dts | 499 ++++++++++++++++++
2 files changed, 500 insertions(+)
.../dts/amlogic/meson-g12b-radxa-zero2.dts | 489 ++++++++++++++++++
2 files changed, 490 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index e213aeebb774..4aa1aa0e22a8 100644
index 5e5433718c6e..5d5ec22a469e 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -14,6 +14,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
@ -39,10 +40,10 @@ index e213aeebb774..4aa1aa0e22a8 100644
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
new file mode 100644
index 000000000000..fefa6f2b7abf
index 000000000000..9a60c5ec2072
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
@@ -0,0 +1,499 @@
@@ -0,0 +1,489 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
@ -99,17 +100,6 @@ index 000000000000..fefa6f2b7abf
+ };
+ };
+
+ cvbs-connector {
+ status = "disabled";
+ compatible = "composite-video-connector";
+
+ port {
+ cvbs_connector_in: endpoint {
+ remote-endpoint = <&cvbs_vdac_out>;
+ };
+ };
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
@ -133,7 +123,7 @@ index 000000000000..fefa6f2b7abf
+ clock-names = "ext_clock";
+ };
+
+ ao_5v: regulator-ao_5v {
+ ao_5v: regulator-ao-5v {
+ compatible = "regulator-fixed";
+ regulator-name = "AO_5V";
+ regulator-min-microvolt = <5000000>;
@ -141,7 +131,7 @@ index 000000000000..fefa6f2b7abf
+ regulator-always-on;
+ };
+
+ vcc_1v8: regulator-vcc_1v8 {
+ vcc_1v8: regulator-vcc-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_1V8";
+ regulator-min-microvolt = <1800000>;
@ -150,7 +140,7 @@ index 000000000000..fefa6f2b7abf
+ regulator-always-on;
+ };
+
+ vcc_3v3: regulator-vcc_3v3 {
+ vcc_3v3: regulator-vcc-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_3V3";
+ regulator-min-microvolt = <3300000>;
@ -160,7 +150,7 @@ index 000000000000..fefa6f2b7abf
+ /* FIXME: actually controlled by VDDCPU_B_EN */
+ };
+
+ vddao_1v8: regulator-vddao_1v8 {
+ vddao_1v8: regulator-vddao-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDIO_AO1V8";
+ regulator-min-microvolt = <1800000>;
@ -169,7 +159,7 @@ index 000000000000..fefa6f2b7abf
+ regulator-always-on;
+ };
+
+ vddao_3v3: regulator-vddao_3v3 {
+ vddao_3v3: regulator-vddao-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
@ -232,7 +222,6 @@ index 000000000000..fefa6f2b7abf
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
@ -271,7 +260,7 @@ index 000000000000..fefa6f2b7abf
+ };
+ };
+
+ wifi32k: wifi32k {
+ wifi32k: clock-0 {
+ compatible = "pwm-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32768>;
@ -343,12 +332,6 @@ index 000000000000..fefa6f2b7abf
+ clock-latency = <50000>;
+};
+
+&cvbs_vdac_port {
+ cvbs_vdac_out: endpoint {
+ remote-endpoint = <&cvbs_connector_in>;
+ };
+};
+
+&frddr_a {
+ status = "okay";
+};
@ -427,6 +410,14 @@ index 000000000000..fefa6f2b7abf
+ status = "okay";
+};
+
+&pwm_AO_ab {
+ pinctrl-0 = <&pwm_ao_a_pins>;
+ pinctrl-names = "default";
+ clocks = <&xtal>;
+ clock-names = "clkin3";
+ status = "okay";
+};
+
+&pwm_AO_cd {
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
+ pinctrl-names = "default";

@ -0,0 +1,89 @@
From 3ae86059d42184d4f7a8c73b2b8468076304230a Mon Sep 17 00:00:00 2001
From: Jerome Brunet <jbrunet@baylibre.com>
Date: Mon, 30 Jan 2023 16:16:15 +0100
Subject: [PATCH 039/111] FROMGIT(6.4): dt-bindings: net: add amlogic gxl mdio
multiplexer
Add documentation for the MDIO bus multiplexer found on the Amlogic GXL
SoC family
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
.../bindings/net/amlogic,gxl-mdio-mux.yaml | 64 +++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/amlogic,gxl-mdio-mux.yaml
diff --git a/Documentation/devicetree/bindings/net/amlogic,gxl-mdio-mux.yaml b/Documentation/devicetree/bindings/net/amlogic,gxl-mdio-mux.yaml
new file mode 100644
index 000000000000..27ae004dbea0
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/amlogic,gxl-mdio-mux.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/amlogic,gxl-mdio-mux.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic GXL MDIO bus multiplexer
+
+maintainers:
+ - Jerome Brunet <jbrunet@baylibre.com>
+
+description:
+ This is a special case of a MDIO bus multiplexer. It allows to choose between
+ the internal mdio bus leading to the embedded 10/100 PHY or the external
+ MDIO bus on the Amlogic GXL SoC family.
+
+allOf:
+ - $ref: mdio-mux.yaml#
+
+properties:
+ compatible:
+ const: amlogic,gxl-mdio-mux
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ clock-names:
+ items:
+ - const: ref
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ eth_phy_mux: mdio@558 {
+ compatible = "amlogic,gxl-mdio-mux";
+ reg = <0x558 0xc>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&refclk>;
+ clock-names = "ref";
+ mdio-parent-bus = <&mdio0>;
+
+ external_mdio: mdio@0 {
+ reg = <0x0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ internal_mdio: mdio@1 {
+ reg = <0x1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
--
2.34.1

@ -0,0 +1,225 @@
From 5fefed97cf53d24b221ba5c4dd7d9dabb5adc25c Mon Sep 17 00:00:00 2001
From: Jerome Brunet <jbrunet@baylibre.com>
Date: Mon, 30 Jan 2023 16:16:16 +0100
Subject: [PATCH 040/111] FROMGIT(6.4): net: mdio: add amlogic gxl mdio mux
support
Add support for the mdio mux and internal phy glue of the GXL SoC
family
Reported-by: Da Xue <da@lessconfused.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
drivers/net/mdio/Kconfig | 11 ++
drivers/net/mdio/Makefile | 1 +
drivers/net/mdio/mdio-mux-meson-gxl.c | 164 ++++++++++++++++++++++++++
3 files changed, 176 insertions(+)
create mode 100644 drivers/net/mdio/mdio-mux-meson-gxl.c
diff --git a/drivers/net/mdio/Kconfig b/drivers/net/mdio/Kconfig
index bfa16826a6e1..90309980686e 100644
--- a/drivers/net/mdio/Kconfig
+++ b/drivers/net/mdio/Kconfig
@@ -215,6 +215,17 @@ config MDIO_BUS_MUX_MESON_G12A
the amlogic g12a SoC. The multiplexers connects either the external
or the internal MDIO bus to the parent bus.
+config MDIO_BUS_MUX_MESON_GXL
+ tristate "Amlogic GXL based MDIO bus multiplexer"
+ depends on ARCH_MESON || COMPILE_TEST
+ depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
+ select MDIO_BUS_MUX
+ default m if ARCH_MESON
+ help
+ This module provides a driver for the MDIO multiplexer/glue of
+ the amlogic GXL SoC. The multiplexer connects either the external
+ or the internal MDIO bus to the parent bus.
+
config MDIO_BUS_MUX_BCM6368
tristate "Broadcom BCM6368 MDIO bus multiplexers"
depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
diff --git a/drivers/net/mdio/Makefile b/drivers/net/mdio/Makefile
index 15f8dc4042ce..7d4cb4c11e4e 100644
--- a/drivers/net/mdio/Makefile
+++ b/drivers/net/mdio/Makefile
@@ -28,5 +28,6 @@ obj-$(CONFIG_MDIO_BUS_MUX_BCM6368) += mdio-mux-bcm6368.o
obj-$(CONFIG_MDIO_BUS_MUX_BCM_IPROC) += mdio-mux-bcm-iproc.o
obj-$(CONFIG_MDIO_BUS_MUX_GPIO) += mdio-mux-gpio.o
obj-$(CONFIG_MDIO_BUS_MUX_MESON_G12A) += mdio-mux-meson-g12a.o
+obj-$(CONFIG_MDIO_BUS_MUX_MESON_GXL) += mdio-mux-meson-gxl.o
obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += mdio-mux-mmioreg.o
obj-$(CONFIG_MDIO_BUS_MUX_MULTIPLEXER) += mdio-mux-multiplexer.o
diff --git a/drivers/net/mdio/mdio-mux-meson-gxl.c b/drivers/net/mdio/mdio-mux-meson-gxl.c
new file mode 100644
index 000000000000..76188575ca1f
--- /dev/null
+++ b/drivers/net/mdio/mdio-mux-meson-gxl.c
@@ -0,0 +1,164 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2022 Baylibre, SAS.
+ * Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+#include <linux/bitfield.h>
+#include <linux/delay.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/mdio-mux.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+
+#define ETH_REG2 0x0
+#define REG2_PHYID GENMASK(21, 0)
+#define EPHY_GXL_ID 0x110181
+#define REG2_LEDACT GENMASK(23, 22)
+#define REG2_LEDLINK GENMASK(25, 24)
+#define REG2_DIV4SEL BIT(27)
+#define REG2_ADCBYPASS BIT(30)
+#define REG2_CLKINSEL BIT(31)
+#define ETH_REG3 0x4
+#define REG3_ENH BIT(3)
+#define REG3_CFGMODE GENMASK(6, 4)
+#define REG3_AUTOMDIX BIT(7)
+#define REG3_PHYADDR GENMASK(12, 8)
+#define REG3_PWRUPRST BIT(21)
+#define REG3_PWRDOWN BIT(22)
+#define REG3_LEDPOL BIT(23)
+#define REG3_PHYMDI BIT(26)
+#define REG3_CLKINEN BIT(29)
+#define REG3_PHYIP BIT(30)
+#define REG3_PHYEN BIT(31)
+#define ETH_REG4 0x8
+#define REG4_PWRUPRSTSIG BIT(0)
+
+#define MESON_GXL_MDIO_EXTERNAL_ID 0
+#define MESON_GXL_MDIO_INTERNAL_ID 1
+
+struct gxl_mdio_mux {
+ void __iomem *regs;
+ void *mux_handle;
+};
+
+static void gxl_enable_internal_mdio(struct gxl_mdio_mux *priv)
+{
+ u32 val;
+
+ /* Setup the internal phy */
+ val = (REG3_ENH |
+ FIELD_PREP(REG3_CFGMODE, 0x7) |
+ REG3_AUTOMDIX |
+ FIELD_PREP(REG3_PHYADDR, 8) |
+ REG3_LEDPOL |
+ REG3_PHYMDI |
+ REG3_CLKINEN |
+ REG3_PHYIP);
+
+ writel(REG4_PWRUPRSTSIG, priv->regs + ETH_REG4);
+ writel(val, priv->regs + ETH_REG3);
+ mdelay(10);
+
+ /* NOTE: The HW kept the phy id configurable at runtime.
+ * The id below is arbitrary. It is the one used in the vendor code.
+ * The only constraint is that it must match the one in
+ * drivers/net/phy/meson-gxl.c to properly match the PHY.
+ */
+ writel(FIELD_PREP(REG2_PHYID, EPHY_GXL_ID),
+ priv->regs + ETH_REG2);
+
+ /* Enable the internal phy */
+ val |= REG3_PHYEN;
+ writel(val, priv->regs + ETH_REG3);
+ writel(0, priv->regs + ETH_REG4);
+
+ /* The phy needs a bit of time to power up */
+ mdelay(10);
+}
+
+static void gxl_enable_external_mdio(struct gxl_mdio_mux *priv)
+{
+ /* Reset the mdio bus mux to the external phy */
+ writel(0, priv->regs + ETH_REG3);
+}
+
+static int gxl_mdio_switch_fn(int current_child, int desired_child,
+ void *data)
+{
+ struct gxl_mdio_mux *priv = dev_get_drvdata(data);
+
+ if (current_child == desired_child)
+ return 0;
+
+ switch (desired_child) {
+ case MESON_GXL_MDIO_EXTERNAL_ID:
+ gxl_enable_external_mdio(priv);
+ break;
+ case MESON_GXL_MDIO_INTERNAL_ID:
+ gxl_enable_internal_mdio(priv);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static const struct of_device_id gxl_mdio_mux_match[] = {
+ { .compatible = "amlogic,gxl-mdio-mux", },
+ {},
+};
+MODULE_DEVICE_TABLE(of, gxl_mdio_mux_match);
+
+static int gxl_mdio_mux_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct gxl_mdio_mux *priv;
+ struct clk *rclk;
+ int ret;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+ platform_set_drvdata(pdev, priv);
+
+ priv->regs = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(priv->regs))
+ return PTR_ERR(priv->regs);
+
+ rclk = devm_clk_get_enabled(dev, "ref");
+ if (IS_ERR(rclk))
+ return dev_err_probe(dev, PTR_ERR(rclk),
+ "failed to get reference clock\n");
+
+ ret = mdio_mux_init(dev, dev->of_node, gxl_mdio_switch_fn,
+ &priv->mux_handle, dev, NULL);
+ if (ret)
+ dev_err_probe(dev, ret, "mdio multiplexer init failed\n");
+
+ return ret;
+}
+
+static int gxl_mdio_mux_remove(struct platform_device *pdev)
+{
+ struct gxl_mdio_mux *priv = platform_get_drvdata(pdev);
+
+ mdio_mux_uninit(priv->mux_handle);
+
+ return 0;
+}
+
+static struct platform_driver gxl_mdio_mux_driver = {
+ .probe = gxl_mdio_mux_probe,
+ .remove = gxl_mdio_mux_remove,
+ .driver = {
+ .name = "gxl-mdio-mux",
+ .of_match_table = gxl_mdio_mux_match,
+ },
+};
+module_platform_driver(gxl_mdio_mux_driver);
+
+MODULE_DESCRIPTION("Amlogic GXL MDIO multiplexer driver");
+MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
+MODULE_LICENSE("GPL");
--
2.34.1

@ -1,7 +1,7 @@
From f19c935ec550a795e05b2357b00edfef0bdfa398 Mon Sep 17 00:00:00 2001
From 7562b64e26f1a0f87ad8540f471c09a3b89bebb0 Mon Sep 17 00:00:00 2001
From: Sergey Shtylyov <s.shtylyov@omp.ru>
Date: Fri, 24 Dec 2021 06:09:57 +0000
Subject: [PATCH 14/92] FROMLIST(v1): mmc: meson-gx: fix deferred probing
Subject: [PATCH 041/111] FROMLIST(v1): mmc: meson-gx: fix deferred probing
The driver overrides the error codes and IRQ0 returned by platform_get_irq()
to -EINVAL, so if it returns -EPROBE_DEFER, the driver will fail the probe
@ -17,10 +17,10 @@ Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
index a8258ea5364c..2454d92c4391 100644
index 6e5ea0213b47..03d313a27a7a 100644
--- a/drivers/mmc/host/meson-gx-mmc.c
+++ b/drivers/mmc/host/meson-gx-mmc.c
@@ -1183,8 +1183,8 @@ static int meson_mmc_probe(struct platform_device *pdev)
@@ -1225,8 +1225,8 @@ static int meson_mmc_probe(struct platform_device *pdev)
}
host->irq = platform_get_irq(pdev, 0);

@ -1,7 +1,7 @@
From f135d58914b0d5c93af9f93f9a9908a08fd87531 Mon Sep 17 00:00:00 2001
From d1c8a0dc1f678fd6c32ef6592604f28a51b35453 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
Date: Sun, 20 Feb 2022 08:23:12 +0000
Subject: [PATCH 15/92] FROMLIST(v5): dt-bindings: vendor-prefixes: Add Titan
Subject: [PATCH 042/111] FROMLIST(v5): dt-bindings: vendor-prefixes: Add Titan
Micro Electronics
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

@ -1,8 +1,8 @@
From a2b6a10d9cedb6db79a6a5b3efc0f14fd2ac9387 Mon Sep 17 00:00:00 2001
From 83eb54f6693f4540d2bbba0faf1573cf6ca54f62 Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Sun, 20 Feb 2022 08:24:47 +0000
Subject: [PATCH 16/92] FROMLIST(v5): dt-bindings: auxdisplay: Add Titan Micro
Electronics TM1628
Subject: [PATCH 043/111] FROMLIST(v5): dt-bindings: auxdisplay: Add Titan
Micro Electronics TM1628
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

@ -1,7 +1,7 @@
From d6dadd1402bc7e9a112ac7f6e2776083d9d26fe0 Mon Sep 17 00:00:00 2001
From 9b4992bc421b74d3d3b2452351f95dd159baa07f Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Sun, 20 Feb 2022 08:26:27 +0000
Subject: [PATCH 17/92] FROMLIST(v5): docs: ABI: document tm1628 attribute
Subject: [PATCH 044/111] FROMLIST(v5): docs: ABI: document tm1628 attribute
display-text
Document the attribute for reading / writing the text to be displayed on

@ -1,7 +1,7 @@
From 7d01e16ca5d7a49b5030fb2c30c0dab7f311eb95 Mon Sep 17 00:00:00 2001
From 46ce3710c69cd23dad35803f9ee51f92ef33a62a Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Mon, 4 Apr 2022 18:51:20 +0000
Subject: [PATCH 18/92] FROMLIST(v5): auxdisplay: add support for Titanmec
Subject: [PATCH 045/111] FROMLIST(v5): auxdisplay: add support for Titanmec
TM1628 7 segment display controller
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

@ -1,157 +0,0 @@
From f5d5669ec148d7bb2459e50d2a988ae0e1fb03c2 Mon Sep 17 00:00:00 2001
From: benjamin545 <benjamin545@gmail.com>
Date: Mon, 2 Aug 2021 15:18:40 -0400
Subject: [PATCH 45/92] WIP: drivers: meson: vdec: add handling to HEVC decoder
to show frames when ready
..rather than when no longer referenced
the HEVC decode driver would not show the next frame until it was no longer referenced,
this would cause a backup of frames that were ready to render but held up by one or more
frames that were still referenced. The decoded picture buffer would fill up and stall
playback as no new frames could be placed in the decoded picture buffer.
---
drivers/staging/media/meson/vdec/codec_hevc.c | 52 ++++++++++++-------
1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/codec_hevc.c b/drivers/staging/media/meson/vdec/codec_hevc.c
index 3a6fd04a2d33..01218efde99b 100644
--- a/drivers/staging/media/meson/vdec/codec_hevc.c
+++ b/drivers/staging/media/meson/vdec/codec_hevc.c
@@ -223,6 +223,7 @@ struct hevc_frame {
u32 poc;
int referenced;
+ int show;
u32 num_reorder_pic;
u32 cur_slice_idx;
@@ -448,9 +449,11 @@ static void codec_hevc_update_referenced(struct codec_hevc *hevc)
((1 << (RPS_USED_BIT - 1)) - 1);
if (param->p.CUR_RPS[i] & (1 << (RPS_USED_BIT - 1))) {
poc_tmp = curr_poc -
- ((1 << (RPS_USED_BIT - 1)) - delt);
- } else
+ ((1 << (RPS_USED_BIT - 1)) - delt);
+ } else {
poc_tmp = curr_poc + delt;
+ }
+
if (poc_tmp == frame->poc) {
is_referenced = 1;
break;
@@ -462,13 +465,13 @@ static void codec_hevc_update_referenced(struct codec_hevc *hevc)
}
static struct hevc_frame *
-codec_hevc_get_lowest_poc_frame(struct codec_hevc *hevc)
+codec_hevc_get_next_ready_frame(struct codec_hevc *hevc)
{
struct hevc_frame *tmp, *ret = NULL;
u32 poc = INT_MAX;
list_for_each_entry(tmp, &hevc->ref_frames_list, list) {
- if (tmp->poc < poc) {
+ if ((tmp->poc < poc) && tmp->show) {
ret = tmp;
poc = tmp->poc;
}
@@ -478,28 +481,35 @@ codec_hevc_get_lowest_poc_frame(struct codec_hevc *hevc)
}
/* Try to output as many frames as possible */
-static void codec_hevc_output_frames(struct amvdec_session *sess)
+static void codec_hevc_show_frames(struct amvdec_session *sess)
{
- struct hevc_frame *tmp;
+ struct hevc_frame *tmp, *n;
struct codec_hevc *hevc = sess->priv;
- while ((tmp = codec_hevc_get_lowest_poc_frame(hevc))) {
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
if (hevc->curr_poc &&
- (tmp->referenced ||
- tmp->num_reorder_pic >= hevc->frames_num))
+ (hevc->frames_num <= tmp->num_reorder_pic))
break;
dev_dbg(sess->core->dev, "DONE frame poc %u; vbuf %u\n",
tmp->poc, tmp->vbuf->vb2_buf.index);
amvdec_dst_buf_done_offset(sess, tmp->vbuf, tmp->offset,
V4L2_FIELD_NONE, false);
+
+ tmp->show = 0;
+ hevc->frames_num--;
+ }
+
+ /* clean output frame buffer */
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
+ if (tmp->referenced || tmp->show)
+ continue;
+
list_del(&tmp->list);
kfree(tmp);
- hevc->frames_num--;
}
}
-
static int
codec_hevc_setup_workspace(struct amvdec_session *sess,
struct codec_hevc *hevc)
@@ -650,14 +660,17 @@ static int codec_hevc_start(struct amvdec_session *sess)
static void codec_hevc_flush_output(struct amvdec_session *sess)
{
struct codec_hevc *hevc = sess->priv;
- struct hevc_frame *tmp;
+ struct hevc_frame *tmp, *n;
- while (!list_empty(&hevc->ref_frames_list)) {
- tmp = codec_hevc_get_lowest_poc_frame(hevc);
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
amvdec_dst_buf_done(sess, tmp->vbuf, V4L2_FIELD_NONE);
+ tmp->show = 0;
+ hevc->frames_num--;
+ }
+
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
list_del(&tmp->list);
kfree(tmp);
- hevc->frames_num--;
}
}
@@ -719,6 +732,7 @@ codec_hevc_prepare_new_frame(struct amvdec_session *sess)
new_frame->vbuf = vbuf;
new_frame->referenced = 1;
+ new_frame->show = 1;
new_frame->poc = hevc->curr_poc;
new_frame->cur_slice_type = params->p.slice_type;
new_frame->num_reorder_pic = params->p.sps_num_reorder_pics_0;
@@ -1267,7 +1281,7 @@ static int codec_hevc_process_segment(struct amvdec_session *sess)
/* First slice: new frame */
if (slice_segment_address == 0) {
codec_hevc_update_referenced(hevc);
- codec_hevc_output_frames(sess);
+ codec_hevc_show_frames(sess);
hevc->cur_frame = codec_hevc_prepare_new_frame(sess);
if (!hevc->cur_frame)
@@ -1370,9 +1384,11 @@ static void codec_hevc_fetch_rpm(struct amvdec_session *sess)
u16 *rpm_vaddr = hevc->workspace_vaddr + RPM_OFFSET;
int i, j;
- for (i = 0; i < RPM_SIZE; i += 4)
+ for (i = 0; i < RPM_SIZE; i += 4) {
for (j = 0; j < 4; j++)
- hevc->rpm_param.l.data[i + j] = rpm_vaddr[i + 3 - j];
+ hevc->rpm_param.l.data[i + j] =
+ rpm_vaddr[i + 3 - j];
+ }
}
static void codec_hevc_resume(struct amvdec_session *sess)
--
2.34.1

@ -1,8 +1,8 @@
From 4c521341fbecf30baa20f2da32ada53aede0ed1e Mon Sep 17 00:00:00 2001
From f4ef754dbd28b2764f3eb2307ddc6db41ff7cde5 Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Mon, 4 Apr 2022 18:52:34 +0000
Subject: [PATCH 19/92] FROMLIST(v5): arm64: dts: meson-gxl-s905w-tx3-mini: add
support for the 7 segment display
Subject: [PATCH 046/111] FROMLIST(v5): arm64: dts: meson-gxl-s905w-tx3-mini:
add support for the 7 segment display
This patch adds support for the 7 segment display of the device.

@ -1,39 +0,0 @@
From 15e99400c562118a9ac674700a9da43bf57fae6d Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 21 Nov 2021 19:12:07 +0000
Subject: [PATCH 46/92] WIP: drivers: meson: vdec: add HEVC support to GXBB
It's not clear whether the GXL firmware is the same one used with GXBB
but let's try it and see!
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
drivers/staging/media/meson/vdec/vdec_platform.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/staging/media/meson/vdec/vdec_platform.c b/drivers/staging/media/meson/vdec/vdec_platform.c
index 8592cb3aaea9..810039a02b44 100644
--- a/drivers/staging/media/meson/vdec/vdec_platform.c
+++ b/drivers/staging/media/meson/vdec/vdec_platform.c
@@ -16,6 +16,18 @@
static const struct amvdec_format vdec_formats_gxbb[] = {
{
+ .pixfmt = V4L2_PIX_FMT_HEVC,
+ .min_buffers = 4,
+ .max_buffers = 24,
+ .max_width = 3840,
+ .max_height = 2160,
+ .vdec_ops = &vdec_hevc_ops,
+ .codec_ops = &codec_hevc_ops,
+ .firmware_path = "meson/vdec/gxl_hevc.bin",
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
+ }, {
.pixfmt = V4L2_PIX_FMT_H264,
.min_buffers = 2,
.max_buffers = 24,
--
2.34.1

@ -1,7 +1,7 @@
From 0548abd0394d2185344898ac10bd8e43fc8a6a3a Mon Sep 17 00:00:00 2001
From 6f65d3a38399d34407c53bfa3843e58de181bd5d Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Mon, 4 Apr 2022 18:53:32 +0000
Subject: [PATCH 20/92] FROMLIST(v5): MAINTAINERS: Add entry for tm1628
Subject: [PATCH 047/111] FROMLIST(v5): MAINTAINERS: Add entry for tm1628
auxdisplay driver
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
@ -10,10 +10,10 @@ Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
1 file changed, 7 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 886d3f69ee64..c81d579853a6 100644
index d4822ae39e39..e4d13fc30cf6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20726,6 +20726,13 @@ W: http://sourceforge.net/projects/tlan/
@@ -20728,6 +20728,13 @@ W: http://sourceforge.net/projects/tlan/
F: Documentation/networking/device_drivers/ethernet/ti/tlan.rst
F: drivers/net/ethernet/ti/tlan.*

@ -1,7 +1,8 @@
From 6c22741ba7990df5127aecf0cf7dc0603b90159b Mon Sep 17 00:00:00 2001
From 0c0b16bdfe46c648965eef0ac97d06ffb7552c8e Mon Sep 17 00:00:00 2001
From: Jonas Karlman <jonas@kwiboo.se>
Date: Sun, 23 Dec 2018 02:24:38 +0100
Subject: [PATCH 34/92] WIP: ASoC: hdmi-codec: reorder channel allocation list
Subject: [PATCH 048/111] FROMLIST(v1): ASoC: hdmi-codec: reorder channel
allocation list
Wrong channel allocation is selected by hdmi_codec_get_ch_alloc_table_idx().

@ -1,11 +1,14 @@
From f4cef56cd5fd2b91cd38d6a8f56a2c16081d0f5f Mon Sep 17 00:00:00 2001
From: benjamin545 <benjamin545@gmail.com>
From f8d0646502e7ed9c0748036a9dbd9f8b59934f08 Mon Sep 17 00:00:00 2001
From: Benjamin Roszak <benjamin545@gmail.com>
Date: Thu, 15 Jul 2021 14:32:33 -0400
Subject: [PATCH 42/92] WIP: drivers: meson: vdec: remove redundant if
Subject: [PATCH 049/111] FROMLIST(v1): media: meson: vdec: remove redundant if
statement
checking if sess->fmt_out->pixfmt is V4L2_PIX_FMT_VP9 was already done
as a condition to enter the if statement where this additional check is performed
Checking if sess->fmt_out->pixfmt is V4L2_PIX_FMT_VP9 was already done as a
condition to enter the if statement where this additional check is made.
Signed-off-by: Benjamin Roszak <benjamin545@gmail.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
drivers/staging/media/meson/vdec/esparser.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

@ -1,94 +0,0 @@
From 885a1a5806ff78e2ac3e3263a8542e7a46be0f82 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Tue, 17 Aug 2021 16:16:43 +0000
Subject: [PATCH 49/92] WIP: arm64: dts: meson: radxa-zero: add support for the
usb type-c controller
Radxa Zero uses an FUSB302 type-c controller, so lets enable it.
NB: Polarity swapping via GPIO is not implemented in the current driver
(see drivers/usb/typec/tcpm/fusb302.c) so it is not possible to handle
GPIOAO_6 for USB3 polarity control.
Suggested-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
.../dts/amlogic/meson-g12a-radxa-zero.dts | 44 +++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
index e3bb6df42ff3..5e3dc013409f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
@@ -60,6 +60,14 @@ sdio_pwrseq: sdio-pwrseq {
clock-names = "ext_clock";
};
+ typec2_vbus: regulator-typec2_vbus {
+ compatible = "regulator-fixed";
+ regulator-name = "TYPEC2_VBUS";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&ao_5v>;
+ };
+
ao_5v: regulator-ao_5v {
compatible = "regulator-fixed";
regulator-name = "AO_5V";
@@ -191,6 +199,18 @@ wifi32k: wifi32k {
};
};
+&ao_pinctrl {
+ /* Ensure the TYPE C controller irq pin is not driven by the SoC */
+ fusb302_irq_pins: fusb302_irq {
+ mux {
+ groups = "GPIOAO_5";
+ function = "gpio_aobus";
+ bias-pull-up;
+ output-disable;
+ };
+ };
+};
+
&arb {
status = "okay";
};
@@ -278,6 +298,22 @@ &ir {
pinctrl-names = "default";
};
+&i2c_AO {
+ fusb302@22 {
+ compatible = "fcs,fusb302";
+ reg = <0x22>;
+
+ pinctrl-0 = <&fusb302_irq_pins>;
+ pinctrl-names = "default";
+ interrupt-parent = <&gpio_intc>;
+ interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
+
+ vbus-supply = <&typec2_vbus>;
+
+ status = "okay";
+ };
+};
+
&pwm_AO_cd {
pinctrl-0 = <&pwm_ao_d_e_pins>;
pinctrl-names = "default";
@@ -403,3 +439,11 @@ &usb {
status = "okay";
dr_mode = "host";
};
+
+&usb2_phy0 {
+ phy-supply = <&typec2_vbus>;
+};
+
+&usb3_pcie_phy {
+ phy-supply = <&typec2_vbus>;
+};
--
2.34.1

@ -1,16 +1,19 @@
From 64002523532d6e5746c147fa3e7e7fc0c3c4222c Mon Sep 17 00:00:00 2001
From 75ff9a5f57cdc8bd007529832601204f987c731d Mon Sep 17 00:00:00 2001
From: Neil Armstrong <narmstrong@baylibre.com>
Date: Mon, 22 Nov 2021 09:15:21 +0000
Subject: [PATCH 47/92] WIP: drivers: meson: vdec: check if parser has really
parser before marking input buffer as error
Subject: [PATCH 050/111] FROMLIST(v1): media: meson: vdec: esparser: check
parsing state with hardware write pointer
Also check the hardware write pointer to check if ES Parser has stalled.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
drivers/staging/media/meson/vdec/esparser.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
drivers/staging/media/meson/vdec/esparser.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
index df5956c6141d..06f627b141fb 100644
index 7b15fc54efe4..1904d58875ad 100644
--- a/drivers/staging/media/meson/vdec/esparser.c
+++ b/drivers/staging/media/meson/vdec/esparser.c
@@ -300,6 +300,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
@ -21,7 +24,7 @@ index df5956c6141d..06f627b141fb 100644
/*
* When max ref frame is held by VP9, this should be -= 3 to prevent a
@@ -354,15 +355,20 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
@@ -353,15 +354,21 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
}
pad_size = esparser_pad_start_code(core, vb, payload_size);
@ -37,7 +40,8 @@ index df5956c6141d..06f627b141fb 100644
- return 0;
+ if (ret < 0 || wp2 == wp) {
+ dev_err(core->dev, "esparser: input parsing error ret %d (%x <=> %x)\n", ret, wp, wp2);
+ dev_err(core->dev, "esparser: input parsing error ret %d (%x <=> %x)\n",
+ ret, wp, wp2);
+ amvdec_remove_ts(sess, vb->timestamp);
+ v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
+

@ -1,19 +1,32 @@
From 7f52e06b00d93a73a5e2b7eb2fdab2c978b00cc6 Mon Sep 17 00:00:00 2001
From: benjamin545 <benjamin545@gmail.com>
Date: Thu, 15 Jul 2021 16:32:39 -0400
Subject: [PATCH 43/92] WIP: drivers: meson: vdec: improve mmu and fbc handling
and add 10 bit handling
From d8c0dea196a1c42845010a9364e6d58e572df2a2 Mon Sep 17 00:00:00 2001
From: Benjamin Roszak <benjamin545@gmail.com>
Date: Mon, 23 Jan 2023 10:56:46 +0000
Subject: [PATCH 051/111] FROMLIST(v2): media: meson: vdec: implement 10bit
bitstream handling
In order to support 10bit bitstream decoding, buffers and MMU
handling must be cleaned up to support either downscale output
from compressed 10bit decoding to uncompressed 8bit NV12 output
or to compressed 10bit proprietary encoded frame format.
For that, "am21c" name is moved to "amfbc" to reflect the upstream
Amlogic Compressed framebuffer modifier naming.
Compressed frame buffers allocation is also cleaned up so it
can be shared with the HEVC decoder implementation.
Signed-off-by: Benjamin Roszak <benjamin545@gmail.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
drivers/staging/media/meson/vdec/codec_h264.c | 3 +-
.../media/meson/vdec/codec_hevc_common.c | 164 +++++++++++-------
.../media/meson/vdec/codec_hevc_common.c | 161 +++++++++++-------
.../media/meson/vdec/codec_hevc_common.h | 3 +-
drivers/staging/media/meson/vdec/codec_vp9.c | 36 ++--
drivers/staging/media/meson/vdec/codec_vp9.c | 35 ++--
drivers/staging/media/meson/vdec/esparser.c | 1 +
drivers/staging/media/meson/vdec/vdec.h | 1 +
.../staging/media/meson/vdec/vdec_helpers.c | 46 +++--
.../staging/media/meson/vdec/vdec_helpers.c | 44 +++--
.../staging/media/meson/vdec/vdec_helpers.h | 10 +-
8 files changed, 163 insertions(+), 101 deletions(-)
8 files changed, 161 insertions(+), 97 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/codec_h264.c b/drivers/staging/media/meson/vdec/codec_h264.c
index c61128fc4bb9..d53c9a464bde 100644
@ -30,7 +43,7 @@ index c61128fc4bb9..d53c9a464bde 100644
/*
diff --git a/drivers/staging/media/meson/vdec/codec_hevc_common.c b/drivers/staging/media/meson/vdec/codec_hevc_common.c
index 0315cc0911cd..d6ed82dc93ca 100644
index 0315cc0911cd..1c74b4837dcb 100644
--- a/drivers/staging/media/meson/vdec/codec_hevc_common.c
+++ b/drivers/staging/media/meson/vdec/codec_hevc_common.c
@@ -30,8 +30,11 @@ const u16 vdec_hevc_parser_cmd[] = {
@ -93,14 +106,13 @@ index 0315cc0911cd..d6ed82dc93ca 100644
- else if (codec_hevc_use_downsample(pixfmt_cap, is_10bit))
- buf_y_paddr = comm->fbc_buffer_paddr[idx];
- else
- buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
+ if (codec_hevc_use_downsample(pixfmt_cap, is_10bit)) {
+ if (codec_hevc_use_mmu(revision, pixfmt_cap, is_10bit))
+ buf_y_paddr = comm->mmu_header_paddr[idx];
+ else
+ buf_y_paddr = comm->fbc_buffer_paddr[idx];
+ } else {
+ buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
buf_y_paddr = vb2_dma_contig_plane_dma_addr(vb, 0);
+ }
amvdec_write_dos(core, HEVCD_MPP_ANC2AXI_TBL_DATA,
@ -194,7 +206,7 @@ index 0315cc0911cd..d6ed82dc93ca 100644
}
}
@@ -213,33 +233,49 @@ void codec_hevc_free_mmu_headers(struct amvdec_session *sess,
@@ -213,33 +233,50 @@ void codec_hevc_free_mmu_headers(struct amvdec_session *sess,
comm->mmu_map_paddr);
comm->mmu_map_vaddr = NULL;
}
@ -232,6 +244,7 @@ index 0315cc0911cd..d6ed82dc93ca 100644
dma_addr_t paddr;
- void *vaddr = dma_alloc_coherent(dev, MMU_COMPRESS_HEADER_SIZE,
- &paddr, GFP_KERNEL);
+
+ void *vaddr = dma_alloc_coherent(dev, am21_size, &paddr,
+ GFP_KERNEL);
if (!vaddr) {
@ -256,7 +269,7 @@ index 0315cc0911cd..d6ed82dc93ca 100644
}
return 0;
@@ -250,21 +286,24 @@ int codec_hevc_setup_buffers(struct amvdec_session *sess,
@@ -250,21 +287,24 @@ int codec_hevc_setup_buffers(struct amvdec_session *sess,
int is_10bit)
{
struct amvdec_core *core = sess->core;
@ -281,17 +294,16 @@ index 0315cc0911cd..d6ed82dc93ca 100644
- ret = codec_hevc_alloc_mmu_headers(sess, comm);
- if (ret) {
- codec_hevc_free_fbc_buffers(sess, comm);
- return ret;
- }
+ sess->pixfmt_cap, is_10bit) ||
+ codec_hevc_use_downsample(sess->pixfmt_cap, is_10bit)) {
+ ret = codec_hevc_alloc_fbc_buffers(sess, comm);
+ if (ret)
+ return ret;
return ret;
- }
}
if (core->platform->revision == VDEC_REVISION_GXBB)
@@ -278,19 +317,24 @@ EXPORT_SYMBOL_GPL(codec_hevc_setup_buffers);
@@ -278,19 +318,24 @@ EXPORT_SYMBOL_GPL(codec_hevc_setup_buffers);
void codec_hevc_fill_mmu_map(struct amvdec_session *sess,
struct codec_hevc_common *comm,
@ -337,7 +349,7 @@ index cf072b8a9da2..13f9f1d90a94 100644
#endif
diff --git a/drivers/staging/media/meson/vdec/codec_vp9.c b/drivers/staging/media/meson/vdec/codec_vp9.c
index 897f5d7a6aad..bfc312ec2a56 100644
index 897f5d7a6aad..33b758cded77 100644
--- a/drivers/staging/media/meson/vdec/codec_vp9.c
+++ b/drivers/staging/media/meson/vdec/codec_vp9.c
@@ -458,12 +458,6 @@ struct codec_vp9 {
@ -360,20 +372,20 @@ index 897f5d7a6aad..bfc312ec2a56 100644
- if (codec_hevc_use_fbc(sess->pixfmt_cap, vp9->is_10bit)) {
- val = amvdec_read_dos(core, HEVC_SAO_CTRL5) & ~0xff0200;
- amvdec_write_dos(core, HEVC_SAO_CTRL5, val);
- amvdec_write_dos(core, HEVC_CM_BODY_START_ADDR, buf_y_paddr);
- }
+ if (codec_hevc_use_fbc(sess->pixfmt_cap, vp9->is_10bit))
+ amvdec_write_dos(core, HEVC_CM_BODY_START_ADDR, buf_y_paddr);
amvdec_write_dos(core, HEVC_CM_BODY_START_ADDR, buf_y_paddr);
- }
if (sess->pixfmt_cap == V4L2_PIX_FMT_NV12M) {
buf_y_paddr =
@@ -920,8 +911,12 @@ static void codec_vp9_set_sao(struct amvdec_session *sess,
@@ -920,8 +911,13 @@ static void codec_vp9_set_sao(struct amvdec_session *sess,
if (codec_hevc_use_mmu(core->platform->revision, sess->pixfmt_cap,
vp9->is_10bit)) {
- amvdec_write_dos(core, HEVC_CM_HEADER_START_ADDR,
- vp9->common.mmu_header_paddr[vb->index]);
+ dma_addr_t header_adr;
+
+ if (codec_hevc_use_downsample(sess->pixfmt_cap, vp9->is_10bit))
+ header_adr = vp9->common.mmu_header_paddr[vb->index];
+ else
@ -382,7 +394,7 @@ index 897f5d7a6aad..bfc312ec2a56 100644
/* use HEVC_CM_HEADER_START_ADDR */
amvdec_write_dos_bits(core, HEVC_SAO_CTRL5, BIT(10));
}
@@ -1148,9 +1143,13 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
@@ -1148,9 +1144,13 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
{
struct amvdec_core *core = sess->core;
u32 scale = 0;
@ -396,7 +408,7 @@ index 897f5d7a6aad..bfc312ec2a56 100644
amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_ACCCONFIG_ADDR, 1);
codec_vp9_set_refs(sess, vp9);
amvdec_write_dos(core, HEVCD_MPP_ANC_CANVAS_ACCCONFIG_ADDR,
@@ -1166,8 +1165,9 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
@@ -1166,8 +1166,9 @@ static void codec_vp9_set_mc(struct amvdec_session *sess,
vp9->frame_refs[i]->height != vp9->height)
scale = 1;
@ -408,7 +420,7 @@ index 897f5d7a6aad..bfc312ec2a56 100644
amvdec_write_dos(core, VP9D_MPP_REFINFO_DATA,
vp9->frame_refs[i]->width);
@@ -1283,7 +1283,8 @@ static void codec_vp9_process_frame(struct amvdec_session *sess)
@@ -1283,7 +1284,8 @@ static void codec_vp9_process_frame(struct amvdec_session *sess)
if (codec_hevc_use_mmu(core->platform->revision, sess->pixfmt_cap,
vp9->is_10bit))
codec_hevc_fill_mmu_map(sess, &vp9->common,
@ -418,7 +430,7 @@ index 897f5d7a6aad..bfc312ec2a56 100644
intra_only = param->p.show_frame ? 0 : param->p.intra_only;
@@ -2132,7 +2133,8 @@ static irqreturn_t codec_vp9_threaded_isr(struct amvdec_session *sess)
@@ -2132,7 +2134,8 @@ static irqreturn_t codec_vp9_threaded_isr(struct amvdec_session *sess)
codec_vp9_fetch_rpm(sess);
if (codec_vp9_process_rpm(vp9)) {
@ -429,10 +441,10 @@ index 897f5d7a6aad..bfc312ec2a56 100644
/* No frame is actually processed */
vp9->cur_frame = NULL;
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
index 7b15fc54efe4..5d2273d53d02 100644
index 1904d58875ad..3cd29ab4f979 100644
--- a/drivers/staging/media/meson/vdec/esparser.c
+++ b/drivers/staging/media/meson/vdec/esparser.c
@@ -319,6 +319,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
@@ -320,6 +320,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
if (esparser_vififo_get_free_space(sess) < payload_size ||
atomic_read(&sess->esparser_queued_bufs) >= num_dst_bufs)
return -EAGAIN;
@ -453,7 +465,7 @@ index 0906b8fb5cc6..a48170fe4cff 100644
u8 quantization;
u8 xfer_func;
diff --git a/drivers/staging/media/meson/vdec/vdec_helpers.c b/drivers/staging/media/meson/vdec/vdec_helpers.c
index 7d2a75653250..d684057509bf 100644
index 7d2a75653250..fef76142f0c5 100644
--- a/drivers/staging/media/meson/vdec/vdec_helpers.c
+++ b/drivers/staging/media/meson/vdec/vdec_helpers.c
@@ -50,32 +50,40 @@ void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val)
@ -533,11 +545,10 @@ index 7d2a75653250..d684057509bf 100644
dpb_size <= sess->num_dst_bufs) {
sess->fmt_out->codec_ops->resume(sess);
- return;
- }
+ } else {
+ sess->status = STATUS_NEEDS_RESUME;
+ sess->changed_format = 0;
+ }
}
- sess->changed_format = 0;
sess->width = width;

@ -1,16 +1,23 @@
From 9324cfd9b3774304892f3635a58bba14b12ded95 Mon Sep 17 00:00:00 2001
From: benjamin545 <benjamin545@gmail.com>
Date: Thu, 15 Jul 2021 17:08:42 -0400
Subject: [PATCH 44/92] WIP: drivers: meson: vdec: add HEVC decode codec
From 7054d1b911a184c16dc6fec862e7c3f46fe2c601 Mon Sep 17 00:00:00 2001
From: Maxime Jourdan <mjourdan@baylibre.com>
Date: Mon, 23 Jan 2023 11:07:04 +0000
Subject: [PATCH 052/111] FROMLIST(v2): media: meson: vdec: add HEVC decode
codec
Add initial HEVC codec for the Amlogic GXBB/GXL/GXM SoCs using
the common "HEVC" decoder driver.
Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com>
[codec alignment to upstream changes and frame handling improvements]
Signed-off-by: Benjamin Roszak <benjamin545@gmail.com>
---
drivers/staging/media/meson/vdec/Makefile | 2 +-
drivers/staging/media/meson/vdec/codec_hevc.c | 1440 +++++++++++++++++
drivers/staging/media/meson/vdec/codec_hevc.c | 1462 +++++++++++++++++
drivers/staging/media/meson/vdec/codec_hevc.h | 13 +
drivers/staging/media/meson/vdec/esparser.c | 2 +-
drivers/staging/media/meson/vdec/esparser.c | 3 +-
drivers/staging/media/meson/vdec/hevc_regs.h | 1 +
.../staging/media/meson/vdec/vdec_platform.c | 49 +
6 files changed, 1505 insertions(+), 2 deletions(-)
.../staging/media/meson/vdec/vdec_platform.c | 37 +
6 files changed, 1516 insertions(+), 2 deletions(-)
create mode 100644 drivers/staging/media/meson/vdec/codec_hevc.c
create mode 100644 drivers/staging/media/meson/vdec/codec_hevc.h
@ -28,10 +35,10 @@ index 6e726af84ac9..16f848e456b9 100644
obj-$(CONFIG_VIDEO_MESON_VDEC) += meson-vdec.o
diff --git a/drivers/staging/media/meson/vdec/codec_hevc.c b/drivers/staging/media/meson/vdec/codec_hevc.c
new file mode 100644
index 000000000000..3a6fd04a2d33
index 000000000000..fcaaa1ad50b8
--- /dev/null
+++ b/drivers/staging/media/meson/vdec/codec_hevc.c
@@ -0,0 +1,1440 @@
@@ -0,0 +1,1462 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Maxime Jourdan <mjourdan@baylibre.com>
@ -257,6 +264,7 @@ index 000000000000..3a6fd04a2d33
+ u32 poc;
+
+ int referenced;
+ int show;
+ u32 num_reorder_pic;
+
+ u32 cur_slice_idx;
@ -268,6 +276,7 @@ index 000000000000..3a6fd04a2d33
+};
+
+struct codec_hevc {
+ /* Protect the data structure */
+ struct mutex lock;
+
+ /* Common part of the HEVC decoder */
@ -383,6 +392,7 @@ index 000000000000..3a6fd04a2d33
+
+ for (i = 0; i < num_ref_idx_l0_active; i++) {
+ int cidx;
+
+ if (params->p.modification_flag & 0x1)
+ cidx = mod_list[i];
+ else
@ -399,6 +409,7 @@ index 000000000000..3a6fd04a2d33
+ if (params->p.modification_flag & 0x2) {
+ for (i = 0; i < num_ref_idx_l1_active; i++) {
+ int cidx;
+
+ if (params->p.modification_flag & 0x1)
+ cidx = mod_list[num_ref_idx_l0_active + i];
+ else
@ -411,6 +422,7 @@ index 000000000000..3a6fd04a2d33
+ } else {
+ for (i = 0; i < num_ref_idx_l1_active; i++) {
+ int cidx = i % total_num;
+
+ frame->ref_poc_list[1][frame->cur_slice_idx][i] =
+ cidx >= num_pos ? ref_picset0[cidx - num_pos] :
+ ref_picset1[cidx];
@ -475,6 +487,7 @@ index 000000000000..3a6fd04a2d33
+
+ for (i = 0; i < MAX_REF_ACTIVE; i++) {
+ int delt;
+
+ if (param->p.CUR_RPS[i] & 0x8000)
+ break;
+
@ -483,8 +496,10 @@ index 000000000000..3a6fd04a2d33
+ if (param->p.CUR_RPS[i] & (1 << (RPS_USED_BIT - 1))) {
+ poc_tmp = curr_poc -
+ ((1 << (RPS_USED_BIT - 1)) - delt);
+ } else
+ } else {
+ poc_tmp = curr_poc + delt;
+ }
+
+ if (poc_tmp == frame->poc) {
+ is_referenced = 1;
+ break;
@ -496,13 +511,13 @@ index 000000000000..3a6fd04a2d33
+}
+
+static struct hevc_frame *
+codec_hevc_get_lowest_poc_frame(struct codec_hevc *hevc)
+codec_hevc_get_next_ready_frame(struct codec_hevc *hevc)
+{
+ struct hevc_frame *tmp, *ret = NULL;
+ u32 poc = INT_MAX;
+
+ list_for_each_entry(tmp, &hevc->ref_frames_list, list) {
+ if (tmp->poc < poc) {
+ if ((tmp->poc < poc) && tmp->show) {
+ ret = tmp;
+ poc = tmp->poc;
+ }
@ -512,27 +527,34 @@ index 000000000000..3a6fd04a2d33
+}
+
+/* Try to output as many frames as possible */
+static void codec_hevc_output_frames(struct amvdec_session *sess)
+static void codec_hevc_show_frames(struct amvdec_session *sess)
+{
+ struct hevc_frame *tmp;
+ struct hevc_frame *tmp, *n;
+ struct codec_hevc *hevc = sess->priv;
+
+ while ((tmp = codec_hevc_get_lowest_poc_frame(hevc))) {
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
+ if (hevc->curr_poc &&
+ (tmp->referenced ||
+ tmp->num_reorder_pic >= hevc->frames_num))
+ (hevc->frames_num <= tmp->num_reorder_pic))
+ break;
+
+ dev_dbg(sess->core->dev, "DONE frame poc %u; vbuf %u\n",
+ tmp->poc, tmp->vbuf->vb2_buf.index);
+ amvdec_dst_buf_done_offset(sess, tmp->vbuf, tmp->offset,
+ V4L2_FIELD_NONE, false);
+ list_del(&tmp->list);
+ kfree(tmp);
+
+ tmp->show = 0;
+ hevc->frames_num--;
+ }
+}
+
+ /* clean output frame buffer */
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
+ if (tmp->referenced || tmp->show)
+ continue;
+
+ list_del(&tmp->list);
+ kfree(tmp);
+ }
+}
+
+static int
+codec_hevc_setup_workspace(struct amvdec_session *sess,
@ -663,7 +685,6 @@ index 000000000000..3a6fd04a2d33
+ hevc->aux_vaddr = dma_alloc_coherent(core->dev, SIZE_AUX,
+ &hevc->aux_paddr, GFP_KERNEL);
+ if (!hevc->aux_vaddr) {
+ dev_err(core->dev, "Failed to request HEVC AUX\n");
+ ret = -ENOMEM;
+ goto free_hevc;
+ }
@ -684,14 +705,17 @@ index 000000000000..3a6fd04a2d33
+static void codec_hevc_flush_output(struct amvdec_session *sess)
+{
+ struct codec_hevc *hevc = sess->priv;
+ struct hevc_frame *tmp;
+ struct hevc_frame *tmp, *n;
+
+ while (!list_empty(&hevc->ref_frames_list)) {
+ tmp = codec_hevc_get_lowest_poc_frame(hevc);
+ while ((tmp = codec_hevc_get_next_ready_frame(hevc))) {
+ amvdec_dst_buf_done(sess, tmp->vbuf, V4L2_FIELD_NONE);
+ tmp->show = 0;
+ hevc->frames_num--;
+ }
+
+ list_for_each_entry_safe(tmp, n, &hevc->ref_frames_list, list) {
+ list_del(&tmp->list);
+ kfree(tmp);
+ hevc->frames_num--;
+ }
+}
+
@ -753,6 +777,7 @@ index 000000000000..3a6fd04a2d33
+
+ new_frame->vbuf = vbuf;
+ new_frame->referenced = 1;
+ new_frame->show = 1;
+ new_frame->poc = hevc->curr_poc;
+ new_frame->cur_slice_type = params->p.slice_type;
+ new_frame->num_reorder_pic = params->p.sps_num_reorder_pics_0;
@ -820,6 +845,7 @@ index 000000000000..3a6fd04a2d33
+ if (codec_hevc_use_mmu(core->platform->revision, sess->pixfmt_cap,
+ hevc->is_10bit)) {
+ dma_addr_t header_adr = vb2_dma_contig_plane_dma_addr(vb, 0);
+
+ if (codec_hevc_use_downsample(sess->pixfmt_cap, hevc->is_10bit))
+ header_adr = hevc->common.mmu_header_paddr[vb->index];
+ amvdec_write_dos(core, HEVC_CM_HEADER_START_ADDR, header_adr);
@ -898,8 +924,8 @@ index 000000000000..3a6fd04a2d33
+
+ slice_deblocking_filter_disabled_flag = (misc_flag0 >>
+ SLICE_DEBLOCKING_FILTER_DISABLED_FLAG_BIT) & 0x1;
+ if ((misc_flag0 & (1 << DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_BIT))
+ && (misc_flag0 & (1 << DEBLOCKING_FILTER_OVERRIDE_FLAG_BIT))) {
+ if ((misc_flag0 & (1 << DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_BIT)) &&
+ (misc_flag0 & (1 << DEBLOCKING_FILTER_OVERRIDE_FLAG_BIT))) {
+ val |= slice_deblocking_filter_disabled_flag << 2;
+
+ if (!slice_deblocking_filter_disabled_flag) {
@ -917,10 +943,10 @@ index 000000000000..3a6fd04a2d33
+ val |= (param->p.pps_tc_offset_div2 & 0xf) << 7;
+ }
+ }
+ if ((misc_flag0 & (1 << PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG_BIT))
+ && ((misc_flag0 & (1 << SLICE_SAO_LUMA_FLAG_BIT))
+ || (misc_flag0 & (1 << SLICE_SAO_CHROMA_FLAG_BIT))
+ || (!slice_deblocking_filter_disabled_flag))) {
+ if ((misc_flag0 & (1 << PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG_BIT)) &&
+ ((misc_flag0 & (1 << SLICE_SAO_LUMA_FLAG_BIT)) ||
+ (misc_flag0 & (1 << SLICE_SAO_CHROMA_FLAG_BIT)) ||
+ (!slice_deblocking_filter_disabled_flag))) {
+ val |=
+ ((misc_flag0 >>
+ SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED_FLAG_BIT)
@ -1014,9 +1040,8 @@ index 000000000000..3a6fd04a2d33
+ lcu_size_log2 == 5 ? 0x80 : 0x20;
+ dma_addr_t col_mv_rd_start_addr, col_mv_rd_ptr, col_mv_rd_end_addr;
+ dma_addr_t mpred_mv_wr_ptr;
+ u32 val;
+
+ val = amvdec_read_dos(core, HEVC_MPRED_CURR_LCU);
+ amvdec_read_dos(core, HEVC_MPRED_CURR_LCU);
+
+ col_mv_rd_start_addr = codec_hevc_get_frame_mv_paddr(hevc, col_frame);
+ mpred_mv_wr_ptr = codec_hevc_get_frame_mv_paddr(hevc, frame) +
@ -1163,7 +1188,8 @@ index 000000000000..3a6fd04a2d33
+ }
+
+ if (codec_hevc_use_fbc(sess->pixfmt_cap, hevc->is_10bit)) {
+ buf_id_y = buf_id_uv = ref_frame->vbuf->vb2_buf.index;
+ buf_id_y = ref_frame->vbuf->vb2_buf.index;
+ buf_id_uv = buf_id_y;
+ } else {
+ buf_id_y = ref_frame->vbuf->vb2_buf.index * 2;
+ buf_id_uv = buf_id_y + 1;
@ -1301,7 +1327,7 @@ index 000000000000..3a6fd04a2d33
+ /* First slice: new frame */
+ if (slice_segment_address == 0) {
+ codec_hevc_update_referenced(hevc);
+ codec_hevc_output_frames(sess);
+ codec_hevc_show_frames(sess);
+
+ hevc->cur_frame = codec_hevc_prepare_new_frame(sess);
+ if (!hevc->cur_frame)
@ -1366,7 +1392,8 @@ index 000000000000..3a6fd04a2d33
+
+ switch (param->p.chroma_format_idc) {
+ case 1:
+ sub_height = 2; /* fallthrough */
+ sub_height = 2;
+ fallthrough;
+ case 2:
+ sub_width = 2;
+ break;
@ -1404,9 +1431,11 @@ index 000000000000..3a6fd04a2d33
+ u16 *rpm_vaddr = hevc->workspace_vaddr + RPM_OFFSET;
+ int i, j;
+
+ for (i = 0; i < RPM_SIZE; i += 4)
+ for (i = 0; i < RPM_SIZE; i += 4) {
+ for (j = 0; j < 4; j++)
+ hevc->rpm_param.l.data[i + j] = rpm_vaddr[i + 3 - j];
+ hevc->rpm_param.l.data[i + j] =
+ rpm_vaddr[i + 3 - j];
+ }
+}
+
+static void codec_hevc_resume(struct amvdec_session *sess)
@ -1492,15 +1521,16 @@ index 000000000000..f2f9b2464df1
+
+#endif
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
index 5d2273d53d02..df5956c6141d 100644
index 3cd29ab4f979..6988348ce714 100644
--- a/drivers/staging/media/meson/vdec/esparser.c
+++ b/drivers/staging/media/meson/vdec/esparser.c
@@ -309,7 +309,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
@@ -310,7 +310,8 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
* they could pause when there is no capture buffer available and
* resume on this notification.
*/
- if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9) {
+ if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9 || sess->fmt_out->pixfmt ==V4L2_PIX_FMT_HEVC) {
+ if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9 ||
+ sess->fmt_out->pixfmt == V4L2_PIX_FMT_HEVC) {
if (codec_ops->num_pending_bufs)
num_dst_bufs = codec_ops->num_pending_bufs(sess);
@ -1517,10 +1547,10 @@ index 0392f41a1eed..e7eabdd2b119 100644
#define HEVC_SAO_MMU_VH1_ADDR 0xd8ec
diff --git a/drivers/staging/media/meson/vdec/vdec_platform.c b/drivers/staging/media/meson/vdec/vdec_platform.c
index 88c9d72e1c83..8592cb3aaea9 100644
index 88c9d72e1c83..ea2aa0e8cf0b 100644
--- a/drivers/staging/media/meson/vdec/vdec_platform.c
+++ b/drivers/staging/media/meson/vdec/vdec_platform.c
@@ -11,6 +11,7 @@
@@ -11,10 +11,23 @@
#include "vdec_hevc.h"
#include "codec_mpeg12.h"
#include "codec_h264.h"
@ -1528,11 +1558,7 @@ index 88c9d72e1c83..8592cb3aaea9 100644
#include "codec_vp9.h"
static const struct amvdec_format vdec_formats_gxbb[] = {
@@ -64,6 +65,18 @@ static const struct amvdec_format vdec_formats_gxl[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
+ }, {
{
+ .pixfmt = V4L2_PIX_FMT_HEVC,
+ .min_buffers = 4,
+ .max_buffers = 24,
@ -1544,48 +1570,11 @@ index 88c9d72e1c83..8592cb3aaea9 100644
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
}, {
.pixfmt = V4L2_PIX_FMT_H264,
.min_buffers = 2,
@@ -114,6 +127,18 @@ static const struct amvdec_format vdec_formats_gxm[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
+ }, {
+ .pixfmt = V4L2_PIX_FMT_HEVC,
+ .min_buffers = 4,
+ .max_buffers = 24,
+ .max_width = 3840,
+ .max_height = 2160,
+ .vdec_ops = &vdec_hevc_ops,
+ .codec_ops = &codec_hevc_ops,
+ .firmware_path = "meson/vdec/gxl_hevc.bin",
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
}, {
.pixfmt = V4L2_PIX_FMT_H264,
.min_buffers = 2,
@@ -165,6 +190,18 @@ static const struct amvdec_format vdec_formats_g12a[] = {
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
}, {
+ .pixfmt = V4L2_PIX_FMT_HEVC,
+ .min_buffers = 4,
+ .max_buffers = 24,
+ .max_width = 3840,
+ .max_height = 2160,
+ .vdec_ops = &vdec_hevc_ops,
+ .codec_ops = &codec_hevc_ops,
+ .firmware_path = "meson/vdec/g12a_hevc_mmu.bin",
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
+ },{
.pixfmt = V4L2_PIX_FMT_H264,
.min_buffers = 2,
.max_buffers = 24,
@@ -214,6 +251,18 @@ static const struct amvdec_format vdec_formats_sm1[] = {
@@ -64,6 +77,18 @@ static const struct amvdec_format vdec_formats_gxl[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
@ -1597,7 +1586,26 @@ index 88c9d72e1c83..8592cb3aaea9 100644
+ .max_height = 2160,
+ .vdec_ops = &vdec_hevc_ops,
+ .codec_ops = &codec_hevc_ops,
+ .firmware_path = "meson/vdec/sm1_hevc_mmu.bin",
+ .firmware_path = "meson/vdec/gxl_hevc.bin",
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,
}, {
.pixfmt = V4L2_PIX_FMT_H264,
.min_buffers = 2,
@@ -114,6 +139,18 @@ static const struct amvdec_format vdec_formats_gxm[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
+ }, {
+ .pixfmt = V4L2_PIX_FMT_HEVC,
+ .min_buffers = 4,
+ .max_buffers = 24,
+ .max_width = 3840,
+ .max_height = 2160,
+ .vdec_ops = &vdec_hevc_ops,
+ .codec_ops = &codec_hevc_ops,
+ .firmware_path = "meson/vdec/gxl_hevc.bin",
+ .pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
+ .flags = V4L2_FMT_FLAG_COMPRESSED |
+ V4L2_FMT_FLAG_DYN_RESOLUTION,

@ -1,35 +0,0 @@
From 7c9aedb198c2dc03679ca8bd3908790f1dbdffb5 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 30 Nov 2022 12:07:55 +0000
Subject: [PATCH 52/92] WIP: arm64: dts: meson: add support for the NPU on
Radxa Zero2
Radxa Zero2 has an NPU on the A311D SoC, so lets enable it.
NPU support depends upon [0].
[0] https://patchwork.kernel.org/project/linux-amlogic/cover/20221129085047.49813-1-tomeu.vizoso@collabora.com/
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
index fefa6f2b7abf..7432c7f9255b 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-radxa-zero2.dts
@@ -366,6 +366,10 @@ &ir {
pinctrl-names = "default";
};
+&npu {
+ status = "okay";
+};
+
&pwm_ab {
pinctrl-0 = <&pwm_a_e_pins>;
pinctrl-names = "default";
--
2.34.1

@ -0,0 +1,28 @@
From bdf45a337371af5b1a10fae377997fce17100356 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 1 Feb 2023 08:53:39 +0000
Subject: [PATCH 053/111] FROMLIST(v2): dt-bindings: media: rc: add rc-dreambox
binding
Add a binding for the rc-dreambox remote keymap
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
Documentation/devicetree/bindings/media/rc.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
index e732b7f3a635..e7d2ae5a7eb9 100644
--- a/Documentation/devicetree/bindings/media/rc.yaml
+++ b/Documentation/devicetree/bindings/media/rc.yaml
@@ -55,6 +55,7 @@ properties:
- rc-dm1105-nec
- rc-dntv-live-dvb-t
- rc-dntv-live-dvbt-pro
+ - rc-dreambox
- rc-dtt200u
- rc-dvbsky
- rc-dvico-mce
--
2.34.1

@ -1,41 +1,39 @@
From 6d33dfefde64db49246af2d0a7cd9c87accfdf65 Mon Sep 17 00:00:00 2001
From b4177ebf1b5659010688563561d678941183a53a Mon Sep 17 00:00:00 2001
From: Emanuel Strobel <emanuel.strobel@yahoo.com>
Date: Mon, 5 Apr 2021 17:57:57 +0000
Subject: [PATCH 85/92] WIP: media: rc: add common keymap for Dreambox RC10 and
RC20/RC-BT remotes
Subject: [PATCH 054/111] FROMLIST(v2): media: rc: add common keymap for
Dreambox RC10/RC0 and RC20/RC-BT remotes
Add a common keymap and bindings for the RC10 and RC20/RC-BT remotes
used with the Dreambox One and Dreambox Two DVB-S/T boxes. The maps
are combined since the IR codes do not conflict and both boxes have
been sold with both remote designs.
Add a common keymap for the RC10/RC0 and RC20/RC-BT remotes used with
the Dreambox One and Dreambox Two DVB-S/T boxes. The maps are combined
since the IR codes do not conflict and both boxes have shipped with
both remote designs over time.
Both remote types can be programmed to control TVs, so include non-IR
keys that are used to switch-to or toggle the remote mode:
- DREAM in RC10/RC0 switches to (Dreambox) STB control mode
- TV in RC10/RC0 switches to TV control mode
- MODE in RC20/RC-BT toggles between STB/TV/BT control modes
In the RC20 keymap the Android MIC (voice search) key maps to KEY_HELP
and EXIT is mapped to KEY_ESC to replicate the go-backwards navigation
behaviour in the Android vendor OS that ships on Dreambox devices.
Signed-off-by: Emanuel Strobel <emanuel.strobel@yahoo.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
.../devicetree/bindings/media/rc.yaml | 1 +
drivers/media/rc/keymaps/Makefile | 1 +
drivers/media/rc/keymaps/rc-dreambox.c | 147 ++++++++++++++++++
drivers/media/rc/keymaps/rc-dreambox.c | 151 +++++++++++++++++++++++++
include/media/rc-map.h | 1 +
4 files changed, 150 insertions(+)
3 files changed, 153 insertions(+)
create mode 100644 drivers/media/rc/keymaps/rc-dreambox.c
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
index d4ef523cb3d5..f390a5d2c82d 100644
--- a/Documentation/devicetree/bindings/media/rc.yaml
+++ b/Documentation/devicetree/bindings/media/rc.yaml
@@ -56,6 +56,7 @@ properties:
- rc-dm1105-nec
- rc-dntv-live-dvb-t
- rc-dntv-live-dvbt-pro
+ - rc-dreambox
- rc-dtt200u
- rc-dvbsky
- rc-dvico-mce
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
index 77d8b5a69815..03bc9a8d355e 100644
index f513ff5caf4e..6931c89fca99 100644
--- a/drivers/media/rc/keymaps/Makefile
+++ b/drivers/media/rc/keymaps/Makefile
@@ -38,6 +38,7 @@ obj-$(CONFIG_RC_MAP) += \
@@ -37,6 +37,7 @@ obj-$(CONFIG_RC_MAP) += \
rc-dm1105-nec.o \
rc-dntv-live-dvb-t.o \
rc-dntv-live-dvbt-pro.o \
@ -45,92 +43,49 @@ index 77d8b5a69815..03bc9a8d355e 100644
rc-dvico-mce.o \
diff --git a/drivers/media/rc/keymaps/rc-dreambox.c b/drivers/media/rc/keymaps/rc-dreambox.c
new file mode 100644
index 000000000000..0ccbed367ea3
index 000000000000..dea024fa3a22
--- /dev/null
+++ b/drivers/media/rc/keymaps/rc-dreambox.c
@@ -0,0 +1,147 @@
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: GPL-2.0+
+//
+// Copyright (c) 2021 Emanuel Strobel <emanuel.strobel@yahoo.com>
+/*
+ * Copyright (c) 2021 Emanuel Strobel <emanuel.strobel@yahoo.com>
+ */
+
+#include <media/rc-map.h>
+#include <linux/module.h>
+
+//
+// Keytable for the Dreabox RC10 and RC20/RC-BT remote controls
+//
+/*
+ * Keytable for Dreambox RC10/RC0 and RC20/RC-BT remote controls
+ *
+ * Keys that are not IR addressable:
+ *
+ * // DREAM switches to STB control mode
+ * // TV switches to TV control mode
+ * // MODE toggles STB/TV/BT control modes
+ *
+ */
+
+static struct rc_map_table dreambox[] = {
+
+ /* Dreambox RC10 remote */
+
+ { 0x3401, KEY_POWER },
+
+ // DREAM
+ { 0x3426, KEY_HELP },
+ // TV
+
+ { 0x3404, KEY_1 },
+ { 0x3405, KEY_2 },
+ { 0x3406, KEY_3 },
+ { 0x3408, KEY_4 },
+ { 0x3409, KEY_5 },
+ { 0x340a, KEY_6 },
+ { 0x340c, KEY_7 },
+ { 0x340d, KEY_8 },
+ { 0x340e, KEY_9 },
+ { 0x340b, KEY_PREVIOUS },
+ { 0x3410, KEY_0 },
+ { 0x340f, KEY_NEXT },
+
+ { 0x341f, KEY_RED },
+ { 0x3420, KEY_GREEN },
+ { 0x3421, KEY_YELLOW },
+ { 0x3422, KEY_BLUE },
+
+ { 0x341b, KEY_INFO },
+ { 0x341c, KEY_MENU },
+ { 0x3430, KEY_AUDIO },
+ { 0x3431, KEY_PVR },
+
+ { 0x3414, KEY_LEFT },
+ { 0x3411, KEY_UP },
+ { 0x3416, KEY_RIGHT },
+ { 0x3419, KEY_DOWN },
+ { 0x3415, KEY_OK },
+
+ { 0x3413, KEY_VOLUMEUP },
+ { 0x3418, KEY_VOLUMEDOWN },
+
+ { 0x3412, KEY_ESC }, // EXIT
+ { 0x3407, KEY_MUTE },
+
+ { 0x3417, KEY_PAGEUP },
+ { 0x341a, KEY_PAGEDOWN },
+
+ { 0x3432, KEY_PREVIOUSSONG },
+ { 0x3433, KEY_PLAYPAUSE },
+ { 0x3434, KEY_STOP },
+ { 0x3435, KEY_NEXTSONG },
+
+ // TV
+ // RADIO
+ { 0x3425, KEY_TEXT },
+ { 0x3436, KEY_RECORD },
+
+ /* Dreambox RC20/RC-BT */
+
+ { 0x321a, KEY_MUTE },
+ // MODE
+ /* Dreambox RC10/RC0/RCU-BT remote */
+ { 0x3200, KEY_POWER },
+
+ { 0x3223, KEY_PREVIOUSSONG },
+ { 0x3224, KEY_PLAYPAUSE },
+ { 0x3226, KEY_NEXTSONG },
+ // DREAM
+ { 0x3290, KEY_HELP },
+ // TV
+
+ { 0x322a, KEY_RECORD },
+ { 0x3225, KEY_STOP },
+ { 0x3229, KEY_TEXT },
+ { 0x3201, KEY_1 },
+ { 0x3202, KEY_2 },
+ { 0x3203, KEY_3 },
+ { 0x3204, KEY_4 },
+ { 0x3205, KEY_5 },
+ { 0x3206, KEY_6 },
+ { 0x3207, KEY_7 },
+ { 0x3208, KEY_8 },
+ { 0x3209, KEY_9 },
+ { 0x320a, KEY_PREVIOUS },
+ { 0x320b, KEY_0 },
+ { 0x320c, KEY_NEXT },
+
+ { 0x321f, KEY_RED },
+ { 0x3220, KEY_GREEN },
@ -152,24 +107,71 @@ index 000000000000..0ccbed367ea3
+ { 0x321c, KEY_VOLUMEDOWN },
+
+ { 0x321d, KEY_ESC }, // EXIT
+ { 0x3290, KEY_HELP },
+ { 0x321a, KEY_MUTE },
+
+ { 0x321b, KEY_PAGEUP },
+ { 0x321e, KEY_PAGEDOWN },
+
+ { 0x3201, KEY_1 },
+ { 0x3202, KEY_2 },
+ { 0x3203, KEY_3 },
+ { 0x3204, KEY_4 },
+ { 0x3205, KEY_5 },
+ { 0x3206, KEY_6 },
+ { 0x3207, KEY_7 },
+ { 0x3208, KEY_8 },
+ { 0x3209, KEY_9 },
+ { 0x320a, KEY_PREVIOUS },
+ { 0x320b, KEY_0 },
+ { 0x320c, KEY_NEXT },
+ { 0x3223, KEY_PREVIOUSSONG },
+ { 0x3224, KEY_PLAYPAUSE },
+ { 0x3225, KEY_STOP },
+ { 0x3226, KEY_NEXTSONG },
+
+ { 0x3227, KEY_TV },
+ { 0x3228, KEY_RADIO },
+ { 0x3229, KEY_TEXT },
+ { 0x322a, KEY_RECORD },
+
+ /* Dreambox RC20/RC-BT */
+ { 0x3407, KEY_MUTE },
+ // MODE
+ { 0x3401, KEY_POWER },
+
+ { 0x3432, KEY_PREVIOUSSONG },
+ { 0x3433, KEY_PLAYPAUSE },
+ { 0x3435, KEY_NEXTSONG },
+
+ { 0x3436, KEY_RECORD },
+ { 0x3434, KEY_STOP },
+ { 0x3425, KEY_TEXT },
+
+ { 0x341f, KEY_RED },
+ { 0x3420, KEY_GREEN },
+ { 0x3421, KEY_YELLOW },
+ { 0x3422, KEY_BLUE },
+
+ { 0x341b, KEY_INFO },
+ { 0x341c, KEY_MENU },
+ { 0x3430, KEY_AUDIO },
+ { 0x3431, KEY_PVR },
+
+ { 0x3414, KEY_LEFT },
+ { 0x3411, KEY_UP },
+ { 0x3416, KEY_RIGHT },
+ { 0x3419, KEY_DOWN },
+ { 0x3415, KEY_OK },
+
+ { 0x3413, KEY_VOLUMEUP },
+ { 0x3418, KEY_VOLUMEDOWN },
+
+ { 0x3412, KEY_ESC }, // EXIT
+ { 0x3426, KEY_HELP }, // MIC
+
+ { 0x3417, KEY_PAGEUP },
+ { 0x341a, KEY_PAGEDOWN },
+
+ { 0x3404, KEY_1 },
+ { 0x3405, KEY_2 },
+ { 0x3406, KEY_3 },
+ { 0x3408, KEY_4 },
+ { 0x3409, KEY_5 },
+ { 0x340a, KEY_6 },
+ { 0x340c, KEY_7 },
+ { 0x340d, KEY_8 },
+ { 0x340e, KEY_9 },
+ { 0x340b, KEY_PREVIOUS },
+ { 0x3410, KEY_0 },
+ { 0x340f, KEY_NEXT },
+};
+
+static struct rc_map_list dreambox_map = {
@ -197,10 +199,10 @@ index 000000000000..0ccbed367ea3
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Emanuel Strobel <emanuel.strobel@yahoo.com>");
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
index 43d254930daa..dadd4d27a760 100644
index 793b54342dff..94ee968d4722 100644
--- a/include/media/rc-map.h
+++ b/include/media/rc-map.h
@@ -242,6 +242,7 @@ struct rc_map *rc_map_get(const char *name);
@@ -241,6 +241,7 @@ struct rc_map *rc_map_get(const char *name);
#define RC_MAP_DM1105_NEC "rc-dm1105-nec"
#define RC_MAP_DNTV_LIVE_DVB_T "rc-dntv-live-dvb-t"
#define RC_MAP_DNTV_LIVE_DVBT_PRO "rc-dntv-live-dvbt-pro"

@ -0,0 +1,28 @@
From 9a0008048a5647e0e530a9cb91d7aad6d15dcc1d Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 4 Feb 2023 06:42:20 +0000
Subject: [PATCH 055/111] FROMLIST(v2): dt-bindings: media: rc: add
rc-beelink-mxiii
Add a binding for the rc-beelink-mxiii remote keymap
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
Documentation/devicetree/bindings/media/rc.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
index e7d2ae5a7eb9..deeda4bb8dae 100644
--- a/Documentation/devicetree/bindings/media/rc.yaml
+++ b/Documentation/devicetree/bindings/media/rc.yaml
@@ -39,6 +39,7 @@ properties:
- rc-avertv-303
- rc-azurewave-ad-tu700
- rc-beelink-gs1
+ - rc-beelink-mxiii
- rc-behold
- rc-behold-columbus
- rc-budget-ci-old
--
2.34.1

@ -1,35 +1,22 @@
From f228cf6645db4c58217f1d8e763e09133d44a25b Mon Sep 17 00:00:00 2001
From a0fe1da807693e90c1ebb1f1eeeef40e85da3f4f Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 8 Dec 2021 15:33:47 +0000
Subject: [PATCH 63/92] WIP: media: rc: add keymap for Beelink Mini MXIII
remote
Subject: [PATCH 056/111] FROMLIST(v2): media: rc: add Beelink Mini MXIII
keymap
Add a keymap and bindings for the simple IR (NEC) remote used with
the Beelink Mini MXIII Android STB device.
Add a keymap for the simple IR (NEC) remote used with the Beelink
Mini MXIII Android STB device.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
---
.../devicetree/bindings/media/rc.yaml | 1 +
drivers/media/rc/keymaps/Makefile | 1 +
drivers/media/rc/keymaps/rc-beelink-mxiii.c | 54 +++++++++++++++++++
drivers/media/rc/keymaps/rc-beelink-mxiii.c | 57 +++++++++++++++++++++
include/media/rc-map.h | 1 +
4 files changed, 57 insertions(+)
3 files changed, 59 insertions(+)
create mode 100644 drivers/media/rc/keymaps/rc-beelink-mxiii.c
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
index e732b7f3a635..4f53fea766c6 100644
--- a/Documentation/devicetree/bindings/media/rc.yaml
+++ b/Documentation/devicetree/bindings/media/rc.yaml
@@ -39,6 +39,7 @@ properties:
- rc-avertv-303
- rc-azurewave-ad-tu700
- rc-beelink-gs1
+ - rc-beelink-mxiii
- rc-behold
- rc-behold-columbus
- rc-budget-ci-old
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
index f513ff5caf4e..f3bf9878d72c 100644
index 6931c89fca99..f19558fdab0c 100644
--- a/drivers/media/rc/keymaps/Makefile
+++ b/drivers/media/rc/keymaps/Makefile
@@ -22,6 +22,7 @@ obj-$(CONFIG_RC_MAP) += \
@ -42,20 +29,23 @@ index f513ff5caf4e..f3bf9878d72c 100644
rc-budget-ci-old.o \
diff --git a/drivers/media/rc/keymaps/rc-beelink-mxiii.c b/drivers/media/rc/keymaps/rc-beelink-mxiii.c
new file mode 100644
index 000000000000..09b77295e0a3
index 000000000000..01180cd92205
--- /dev/null
+++ b/drivers/media/rc/keymaps/rc-beelink-mxiii.c
@@ -0,0 +1,54 @@
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0+
+//
+// Copyright (C) 2019 Christian Hewitt <christianshewitt@gmail.com>
+/*
+ * Copyright (C) 2019 Christian Hewitt <christianshewitt@gmail.com>
+ *
+ */
+
+#include <media/rc-map.h>
+#include <linux/module.h>
+
+//
+// Keytable for the Beelink Mini MXIII remote control
+//
+/*
+ * Keytable for the Beelink Mini MXIII remote control
+ *
+ */
+
+static struct rc_map_table beelink_mxiii[] = {
+ { 0xb2dc, KEY_POWER },
@ -101,7 +91,7 @@ index 000000000000..09b77295e0a3
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Christian Hewitt <christianshewitt@gmail.com");
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
index 793b54342dff..e4ddb3586d05 100644
index 94ee968d4722..4676545ffd8f 100644
--- a/include/media/rc-map.h
+++ b/include/media/rc-map.h
@@ -225,6 +225,7 @@ struct rc_map *rc_map_get(const char *name);

@ -0,0 +1,38 @@
From a4e31b98108590466745bb7c5bd770fd504b82a8 Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Tue, 31 Jan 2023 22:03:21 +0100
Subject: [PATCH 057/111] FROMLIST(v1): net: phy: meson-gxl: use MMD access
dummy stubs for GXL, internal PHY
Jerome provided the information that also the GXL internal PHY doesn't
support MMD register access and EEE. MMD reads return 0xffff, what
results in e.g. completely wrong ethtool --show-eee output.
Therefore use the MMD dummy stubs.
Note: The Fixes tag references the commit that added the MMD dummy
access stubs.
Fixes: 5df7af85ecd8 ("net: phy: Add general dummy stubs for MMD register access")
Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Chris Healy <healych@amazon.com>
---
drivers/net/phy/meson-gxl.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/phy/meson-gxl.c b/drivers/net/phy/meson-gxl.c
index 5e41658b1e2f..a6015cd03bff 100644
--- a/drivers/net/phy/meson-gxl.c
+++ b/drivers/net/phy/meson-gxl.c
@@ -261,6 +261,8 @@ static struct phy_driver meson_gxl_phy[] = {
.handle_interrupt = meson_gxl_handle_interrupt,
.suspend = genphy_suspend,
.resume = genphy_resume,
+ .read_mmd = genphy_read_mmd_unsupported,
+ .write_mmd = genphy_write_mmd_unsupported,
}, {
PHY_ID_MATCH_EXACT(0x01803301),
.name = "Meson G12A Internal PHY",
--
2.34.1

@ -0,0 +1,49 @@
From 4ef9075d2d7f134c858be4e55452fdc237bac08d Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Thu, 9 Feb 2023 21:10:31 +0100
Subject: [PATCH 058/111] FROMLIST(v1): arm64: dts: meson-axg: Make mmc host
controller interrupts level-sensitive
The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.
[0] https://www.spinics.net/lists/linux-mmc/msg73991.html
Fixes: 221cf34bac54 ("ARM64: dts: meson-axg: enable the eMMC controller")
Reported-by: Peter Suti <peter.suti@streamunlimited.com>
Tested-by: Vyacheslav Bocharov <adeep@lexina.in>
Tested-by: Peter Suti <peter.suti@streamunlimited.com>
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
index 04f797b5a012..73cd1791a13f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi
@@ -1885,7 +1885,7 @@ apb: bus@ffe00000 {
sd_emmc_b: sd@5000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0x5000 0x0 0x800>;
- interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
clocks = <&clkc CLKID_SD_EMMC_B>,
<&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -1897,7 +1897,7 @@ sd_emmc_b: sd@5000 {
sd_emmc_c: mmc@7000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0x7000 0x0 0x800>;
- interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
clocks = <&clkc CLKID_SD_EMMC_C>,
<&clkc CLKID_SD_EMMC_C_CLK0>,
--
2.34.1

@ -0,0 +1,58 @@
From ea7ed9bb24f2f21b7cbe477987ef3594a2c9f03a Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Thu, 9 Feb 2023 21:11:10 +0100
Subject: [PATCH 059/111] FROMLIST(v1): arm64: dts: meson-g12-common: Make mmc
host controller interrupts level-sensitive
The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.
[0] https://www.spinics.net/lists/linux-mmc/msg73991.html
Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
index 6841e1909250..749d5b3e3554 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
@@ -2318,7 +2318,7 @@ uart_A: serial@24000 {
sd_emmc_a: sd@ffe03000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe03000 0x0 0x800>;
- interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
clocks = <&clkc CLKID_SD_EMMC_A>,
<&clkc CLKID_SD_EMMC_A_CLK0>,
@@ -2330,7 +2330,7 @@ sd_emmc_a: sd@ffe03000 {
sd_emmc_b: sd@ffe05000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe05000 0x0 0x800>;
- interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
clocks = <&clkc CLKID_SD_EMMC_B>,
<&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -2342,7 +2342,7 @@ sd_emmc_b: sd@ffe05000 {
sd_emmc_c: mmc@ffe07000 {
compatible = "amlogic,meson-axg-mmc";
reg = <0x0 0xffe07000 0x0 0x800>;
- interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
clocks = <&clkc CLKID_SD_EMMC_C>,
<&clkc CLKID_SD_EMMC_C_CLK0>,
--
2.34.1

@ -0,0 +1,53 @@
From 67322e7c3e95cc2ff9d90cc446b2d9364e60fdad Mon Sep 17 00:00:00 2001
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Thu, 9 Feb 2023 21:11:47 +0100
Subject: [PATCH 060/111] FROMLIST(v1): arm64: dts: meson-gx: Make mmc host
controller interrupts level-sensitive
The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.
[0] https://www.spinics.net/lists/linux-mmc/msg73991.html
Fixes: ef8d2ffedf18 ("ARM64: dts: meson-gxbb: add MMC support")
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index b278a8380f8a..b8e43b406cec 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -611,21 +611,21 @@ apb: apb@d0000000 {
sd_emmc_a: mmc@70000 {
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
reg = <0x0 0x70000 0x0 0x800>;
- interrupts = <GIC_SPI 216 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
sd_emmc_b: mmc@72000 {
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
reg = <0x0 0x72000 0x0 0x800>;
- interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
sd_emmc_c: mmc@74000 {
compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
reg = <0x0 0x74000 0x0 0x800>;
- interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
+ interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
};
--
2.34.1

@ -0,0 +1,34 @@
From 0e0cb2bd55ab48a127ecb221937543bb7b8a7896 Mon Sep 17 00:00:00 2001
From: Carlo Caione <ccaione@baylibre.com>
Date: Fri, 10 Feb 2023 11:55:34 +0100
Subject: [PATCH 061/111] FROMLIST(v1): drm/meson/meson_venc: Relax the
supported mode checks
Relax a bit the supported modes list by including also 480x1920. This
was actually tested on real hardware and it works correctly.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
---
drivers/gpu/drm/meson/meson_venc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_venc.c b/drivers/gpu/drm/meson/meson_venc.c
index 3c55ed003359..5b3621589a9f 100644
--- a/drivers/gpu/drm/meson/meson_venc.c
+++ b/drivers/gpu/drm/meson/meson_venc.c
@@ -866,10 +866,10 @@ meson_venc_hdmi_supported_mode(const struct drm_display_mode *mode)
DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC))
return MODE_BAD;
- if (mode->hdisplay < 640 || mode->hdisplay > 1920)
+ if (mode->hdisplay < 480 || mode->hdisplay > 1920)
return MODE_BAD_HVALUE;
- if (mode->vdisplay < 480 || mode->vdisplay > 1200)
+ if (mode->vdisplay < 480 || mode->vdisplay > 1920)
return MODE_BAD_VVALUE;
return MODE_OK;
--
2.34.1

@ -0,0 +1,88 @@
From 65e2378a8aeb278caa69582245cbeead137787e3 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 10 Feb 2023 02:16:12 +0000
Subject: [PATCH 062/111] FROMLIST(v2): arm64: dts: meson: gxbb-kii-pro: sort
and tidy the dts
Alpha-sort the nodes, move the default line in the LED node to where it's
normally found, and remove excess spacing. No functional changes.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Tested-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
---
.../boot/dts/amlogic/meson-gxbb-kii-pro.dts | 32 ++++++++-----------
1 file changed, 14 insertions(+), 18 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
index 6d8cc00fedc7..9bfdb54d912a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
@@ -6,21 +6,22 @@
/dts-v1/;
#include "meson-gxbb-p20x.dtsi"
-
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
+
/ {
compatible = "videostrong,kii-pro", "amlogic,meson-gxbb";
model = "Videostrong KII Pro";
leds {
compatible = "gpio-leds";
+
status {
gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
- default-state = "off";
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_STATUS;
+ default-state = "off";
};
};
@@ -34,24 +35,8 @@ button-reset {
gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
};
};
-
-};
-
-
-
-&uart_A {
- status = "okay";
- pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
- pinctrl-names = "default";
- uart-has-rtscts;
-
- bluetooth {
- compatible = "brcm,bcm4335a0";
- };
};
-
-
&ethmac {
status = "okay";
pinctrl-0 = <&eth_rmii_pins>;
@@ -78,3 +63,14 @@ eth_phy0: ethernet-phy@0 {
&ir {
linux,rc-map-name = "rc-videostrong-kii-pro";
};
+
+&uart_A {
+ status = "okay";
+ pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
+ pinctrl-names = "default";
+ uart-has-rtscts;
+
+ bluetooth {
+ compatible = "brcm,bcm4335a0";
+ };
+};
--
2.34.1

@ -0,0 +1,34 @@
From 234a08e2ea0f891bd5db2afa2cc608eb868f3995 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 10 Feb 2023 02:21:08 +0000
Subject: [PATCH 063/111] FROMLIST(v2): arm64: dts: meson: gxbb-kii-pro:
complete the bluetooth node
Add missing content to the bluetooth node to align it with the content
used in (all) other GXBB dts files.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Tested-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
---
arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
index 9bfdb54d912a..435ae2aa404e 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
@@ -72,5 +72,10 @@ &uart_A {
bluetooth {
compatible = "brcm,bcm4335a0";
+ shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
+ host-wakeup-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
+ max-speed = <2000000>;
+ clocks = <&wifi32k>;
+ clock-names = "lpo";
};
};
--
2.34.1

@ -0,0 +1,101 @@
From a1b4579c41ff75c11a4a904500a8cacdff11549f Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 10 Feb 2023 02:29:00 +0000
Subject: [PATCH 064/111] FROMLIST(v2): arm64: dts: meson: gxbb-kii-pro: add
initial audio support
Add initial support for HDMI and S/PDIF audio output.
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Tested-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
---
.../boot/dts/amlogic/meson-gxbb-kii-pro.dts | 60 +++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
index 435ae2aa404e..a09340e9f73a 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts
@@ -9,11 +9,19 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-aiu.h>
/ {
compatible = "videostrong,kii-pro", "amlogic,meson-gxbb";
model = "Videostrong KII Pro";
+ spdif_dit: audio-codec-0 {
+ #sound-dai-cells = <0>;
+ compatible = "linux,spdif-dit";
+ status = "okay";
+ sound-name-prefix = "DIT";
+ };
+
leds {
compatible = "gpio-leds";
@@ -35,6 +43,58 @@ button-reset {
gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
};
};
+
+ sound {
+ compatible = "amlogic,gx-sound-card";
+ model = "KII-PRO";
+ assigned-clocks = <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>,
+ <&clkc CLKID_MPLL2>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+
+ dai-link-0 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+ dai-format = "i2s";
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+ };
+ };
+
+ dai-link-3 {
+ sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
+
+ codec-0 {
+ sound-dai = <&spdif_dit>;
+ };
+ };
+
+ dai-link-4 {
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+ codec-0 {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&aiu {
+ status = "okay";
+ pinctrl-0 = <&spdif_out_y_pins>;
+ pinctrl-names = "default";
};
&ethmac {
--
2.34.1

@ -1,7 +1,7 @@
From 0990c81824f144c0182c2f9496b6871900660289 Mon Sep 17 00:00:00 2001
From 43ec52b9d17ab542bef9b3192a5512221068209f Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Thu, 5 Jan 2023 15:16:46 +0000
Subject: [PATCH 48/92] WIP: drivers: meson: vdec: disable MPEG1/MPEG2 hardware
Subject: [PATCH 065/111] WIP: media: meson: vdec: disable MPEG1/MPEG2 hardware
decoding
The MPEG1/2 decoder is broken and nobody has volunteered to poke
@ -15,7 +15,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
1 file changed, 110 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/vdec_platform.c b/drivers/staging/media/meson/vdec/vdec_platform.c
index 810039a02b44..c1ffe04d3b2c 100644
index ea2aa0e8cf0b..1c0d188929dc 100644
--- a/drivers/staging/media/meson/vdec/vdec_platform.c
+++ b/drivers/staging/media/meson/vdec/vdec_platform.c
@@ -39,28 +39,6 @@ static const struct amvdec_format vdec_formats_gxbb[] = {
@ -105,7 +105,7 @@ index 810039a02b44..c1ffe04d3b2c 100644
},
};
@@ -225,28 +159,6 @@ static const struct amvdec_format vdec_formats_g12a[] = {
@@ -213,28 +147,6 @@ static const struct amvdec_format vdec_formats_g12a[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,
@ -134,7 +134,7 @@ index 810039a02b44..c1ffe04d3b2c 100644
},
};
@@ -287,28 +199,6 @@ static const struct amvdec_format vdec_formats_sm1[] = {
@@ -263,28 +175,6 @@ static const struct amvdec_format vdec_formats_sm1[] = {
.pixfmts_cap = { V4L2_PIX_FMT_NV12M, 0 },
.flags = V4L2_FMT_FLAG_COMPRESSED |
V4L2_FMT_FLAG_DYN_RESOLUTION,

@ -1,7 +1,7 @@
From 83bcc4cb433a445d281844fc35eb09c5f7b34a62 Mon Sep 17 00:00:00 2001
From 97cc891c6c0b572437523ad6eb253340be4a4ddb Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Tue, 18 Jan 2022 15:09:12 +0000
Subject: [PATCH 38/92] WIP: arm64: dts: meson: set p212/p23x/q20x SDIO to
Subject: [PATCH 066/111] WIP: arm64: dts: meson: set p212/p23x/q20x SDIO to
100MHz
Amlogic datasheets describe 50MHz max-frequency for SDIO on GXL/GXM but

@ -1,7 +1,7 @@
From 1093ac36e96e54222564186a00bef5442e67c7b8 Mon Sep 17 00:00:00 2001
From b9788f09d5ccb7e4ec6d157d1fc61ad6020a5d80 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 19 Jan 2022 06:45:06 +0000
Subject: [PATCH 39/92] WIP: arm64: dts: meson: add UHS SDIO capabilities to
Subject: [PATCH 067/111] WIP: arm64: dts: meson: add UHS SDIO capabilities to
p212/p23x/q20x
Add UHS capabilities to the SDIO node to enable 100MHz speeds.

@ -1,7 +1,7 @@
From 957338182bd6312a2644ba67d43a33fccedaf4a7 Mon Sep 17 00:00:00 2001
From d12a805ed4d64c4ea05f61a24cb33dcd2d389a4a Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Tue, 18 Jan 2022 15:18:32 +0000
Subject: [PATCH 40/92] WIP: arm64: dts: meson: remove SDIO node from Khadas
Subject: [PATCH 068/111] WIP: arm64: dts: meson: remove SDIO node from Khadas
VIM1
Now that SDIO 100MHz max-frequency is inherited from the p212 dtsi we

@ -1,7 +1,7 @@
From 1a3ee4cb5ea27bd9594133196599b8a9142f860b Mon Sep 17 00:00:00 2001
From 03c36c6fa06ada1585e41cf58f96915795eb6389 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 15 May 2020 07:52:47 +0000
Subject: [PATCH 53/92] WIP: arm64: dts: meson: add audio playback to p201
Subject: [PATCH 069/111] WIP: arm64: dts: meson: add audio playback to p201
Add initial audio support limited to HDMI i2s.

@ -1,7 +1,7 @@
From 888a7c084900b84b1730f3f550dce896ac524426 Mon Sep 17 00:00:00 2001
From 8b691fc20b8c4a4b1fc9ab820300ff442f1ac60c Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 15 May 2020 07:56:15 +0000
Subject: [PATCH 54/92] WIP: arm64: dts: meson: add audio playback to p200
Subject: [PATCH 070/111] WIP: arm64: dts: meson: add audio playback to p200
Add initial support limited to HDMI i2s and SPDIF (LPCM).

@ -1,7 +1,7 @@
From c8effdc08eca825a89ab022b9e4873c8d2d8bfce Mon Sep 17 00:00:00 2001
From f33d261b05bca837d107bd982eb1b2adc340fe10 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 17 May 2020 05:00:55 +0000
Subject: [PATCH 55/92] WIP: arm64: dts: meson: add audio playback to u200
Subject: [PATCH 071/111] WIP: arm64: dts: meson: add audio playback to u200
Add initial support limited to HDMI i2s and SPDIF (LPCM).

@ -1,8 +1,8 @@
From c6513a896b55e08bd20dfa90cc6d007866a852f1 Mon Sep 17 00:00:00 2001
From 2766a02ccf4d6c74527dc9b8db52633b938bf1e4 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 27 Nov 2021 13:50:06 +0000
Subject: [PATCH 56/92] WIP: arm64: dts: meson: add Headphone output to Beelink
GT-King
Subject: [PATCH 072/111] WIP: arm64: dts: meson: add Headphone output to
Beelink GT-King
Add support for the Headphone audio DAC built-in to the S922X chip.

@ -1,7 +1,7 @@
From 49a971c963c99fade69e9f2266e7567a3071acd6 Mon Sep 17 00:00:00 2001
From 266a3495aa60d1b60baf5d0d9a7ff9172897d9b5 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sat, 29 Feb 2020 15:13:02 +0000
Subject: [PATCH 57/92] WIP: dt-bindings: arm: amlogic: add support for the
Subject: [PATCH 073/111] WIP: dt-bindings: arm: amlogic: add support for the
Tanix TX5 Max
The Oranth (Tanix) TX5 Max is based on the Amlogic U200 reference
@ -13,7 +13,7 @@ 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 cf81dc06df2e..e8b9fc4eb8a6 100644
index 7ded40b309a4..940fda576809 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -146,6 +146,7 @@ properties:

@ -1,7 +1,7 @@
From ce597f5f290d4452403311a6a01f89ed19b7d71d Mon Sep 17 00:00:00 2001
From 7117e6d0e474ec77a6f23b2a541b3f8f083f6881 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 20 Oct 2019 04:06:59 +0000
Subject: [PATCH 58/92] WIP: arm64: dts: meson: add support for the Tanix TX5
Subject: [PATCH 074/111] WIP: arm64: dts: meson: add support for the Tanix TX5
Max
The Tanix TX5 Max is based on the Amlogic U200 reference design
@ -26,7 +26,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12a-tanix-tx5max.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 4aa1aa0e22a8..249f0923b4cc 100644
index 5d5ec22a469e..a69bd3a4769f 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-axg-jethome-jethub-j110-rev-3.dtb

@ -1,7 +1,7 @@
From 09b8dcfeb45c42812cab811f99b808bc8207ce45 Mon Sep 17 00:00:00 2001
From 408001e0cb0a593d827a0fbc662cab4a51b02437 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Mon, 21 Oct 2019 03:58:06 +0000
Subject: [PATCH 59/92] WIP: arm64: dts: meson: add multiple MeCool device
Subject: [PATCH 075/111] WIP: arm64: dts: meson: add multiple MeCool device
trees
This adds initial device trees for a range of MeCool devices based on various
@ -25,7 +25,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-mecool-m8s-plus.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 249f0923b4cc..4239aad5686e 100644
index a69bd3a4769f..791c6ff9f121 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -19,6 +19,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-radxa-zero2.dtb

@ -1,7 +1,7 @@
From f8d9d1c6c3a661b405bab2aff3ff88b8974c02a4 Mon Sep 17 00:00:00 2001
From c6b189846236a70302987cd56e986d8b78026024 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 11 Apr 2021 05:50:13 +0000
Subject: [PATCH 60/92] WIP: dt-bindings: arm: amlogic: add support for Minix
Subject: [PATCH 076/111] WIP: dt-bindings: arm: amlogic: add support for Minix
NEO-U1
The Minix NEO-U1 is an Android STB based on the Amlogic P200 (GXBB)
@ -13,7 +13,7 @@ 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 e8b9fc4eb8a6..275d3fcd7366 100644
index 940fda576809..dfdf6c42ea47 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -58,6 +58,7 @@ properties:

@ -1,7 +1,7 @@
From a189ef3f25cdf625bef9984253c2125349122867 Mon Sep 17 00:00:00 2001
From 101a607a87c7d46f6880990259c35e5610b3fc57 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 11 Apr 2021 05:52:14 +0000
Subject: [PATCH 61/92] WIP: arm64: dts: meson: add initial device-tree for
Subject: [PATCH 077/111] WIP: arm64: dts: meson: add initial device-tree for
Minix NEO-U1
The Minix NEO-U1 is an Android STB based on the Amlogic P200 (GXBB)
@ -30,7 +30,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxbb-minix-neo-u1.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 4239aad5686e..72f8d27e63e4 100644
index 791c6ff9f121..f5f17f2f0fc2 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -21,6 +21,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb

@ -1,8 +1,8 @@
From 3867c618f355daf842e6bb3a2b121213b8cd2605 Mon Sep 17 00:00:00 2001
From 6ee8e73b9be15ad7e88cc8588ec1802b3f7e9c94 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Fri, 19 Aug 2022 21:32:21 +0000
Subject: [PATCH 62/92] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to Minix
NEO-U1
Subject: [PATCH 078/111] LOCAL: arm64: dts: meson: add rtc/vrtc aliases to
Minix NEO-U1
Add node aliases to prevent meson-vrtc from claiming /dev/rtc0

@ -1,8 +1,8 @@
From d23c3fbbae77767a676c25c6f45674db1b021c53 Mon Sep 17 00:00:00 2001
From a480b81545e0eee9fc677f4723544939c30eb827 Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 8 Dec 2021 15:28:50 +0000
Subject: [PATCH 64/92] WIP: dt-bindings: arm: amlogic: add support for Beelink
Mini MXIII
Subject: [PATCH 079/111] WIP: dt-bindings: arm: amlogic: add support for
Beelink Mini MXIII
The Beelink Mini MXIII is an Android STB based on the Amlogic P200
(GXBB) reference design with an S905 chip.
@ -13,7 +13,7 @@ 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 275d3fcd7366..68b21500a620 100644
index dfdf6c42ea47..70cb580f8b7e 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -56,6 +56,7 @@ properties:

@ -1,7 +1,7 @@
From 38209ac02c1c97a58bb8d3c9861fe718e0d1b731 Mon Sep 17 00:00:00 2001
From 73a08273ebb74b7df8d787fe8aa1eb049777659b Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Wed, 8 Dec 2021 15:26:00 +0000
Subject: [PATCH 65/92] WIP: arm64: dts: meson: add support for Beelink Mini
Subject: [PATCH 080/111] WIP: arm64: dts: meson: add support for Beelink Mini
MXIII
This is a GXBB board that ships in two variants, one with
@ -15,7 +15,7 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxbb-beelink-mini-mxiii.dts
diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 72f8d27e63e4..fad2df44475a 100644
index f5f17f2f0fc2..b7d7cb46b70a 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -19,6 +19,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-radxa-zero2.dtb

@ -1,7 +1,8 @@
From 4193b220c01c63ace1e117133388f5e13a2365d0 Mon Sep 17 00:00:00 2001
From 015633ca12f7ddea34c5fabfdadc38941105d24e Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 16 Jan 2022 08:48:02 +0000
Subject: [PATCH 66/92] WIP: media: rc: add keymap for MeCool M8S Pro W remote
Subject: [PATCH 081/111] WIP: media: rc: add keymap for MeCool M8S Pro W
remote
Add a keymap and bindings for the simple IR (NEC) remote used with
the MeCool M8S Pro W Android STB device.
@ -16,10 +17,10 @@ Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
create mode 100644 drivers/media/rc/keymaps/rc-mecool-m8s-pro-w.c
diff --git a/Documentation/devicetree/bindings/media/rc.yaml b/Documentation/devicetree/bindings/media/rc.yaml
index 4f53fea766c6..6578a2328ec5 100644
index deeda4bb8dae..37583861376e 100644
--- a/Documentation/devicetree/bindings/media/rc.yaml
+++ b/Documentation/devicetree/bindings/media/rc.yaml
@@ -94,6 +94,7 @@ properties:
@@ -95,6 +95,7 @@ properties:
- rc-manli
- rc-mecool-kii-pro
- rc-mecool-kiii-pro
@ -28,10 +29,10 @@ index 4f53fea766c6..6578a2328ec5 100644
- rc-medion-x10-digitainer
- rc-medion-x10-or2x
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
index f3bf9878d72c..ef48a6bbeca4 100644
index f19558fdab0c..f1fba08d8ed4 100644
--- a/drivers/media/rc/keymaps/Makefile
+++ b/drivers/media/rc/keymaps/Makefile
@@ -75,6 +75,8 @@ obj-$(CONFIG_RC_MAP) += \
@@ -76,6 +76,8 @@ obj-$(CONFIG_RC_MAP) += \
rc-manli.o \
rc-mecool-kiii-pro.o \
rc-mecool-kii-pro.o \
@ -122,10 +123,10 @@ index 000000000000..9024b999d5a9
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Christian Hewitt <christianshewitt@gmail.com");
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
index e4ddb3586d05..9b6f09a6fd3a 100644
index 4676545ffd8f..4c4eaaf02ac1 100644
--- a/include/media/rc-map.h
+++ b/include/media/rc-map.h
@@ -281,6 +281,7 @@ struct rc_map *rc_map_get(const char *name);
@@ -282,6 +282,7 @@ struct rc_map *rc_map_get(const char *name);
#define RC_MAP_MANLI "rc-manli"
#define RC_MAP_MECOOL_KII_PRO "rc-mecool-kii-pro"
#define RC_MAP_MECOOL_KIII_PRO "rc-mecool-kiii-pro"

@ -1,8 +1,8 @@
From 221e808484625d17da5c2311d738240c1e35923b Mon Sep 17 00:00:00 2001
From 1710a44099635dcee1a8d2aaa58f74e2b6f305be Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 16 Jan 2022 08:15:36 +0000
Subject: [PATCH 67/92] WIP: dt-bindings: arm: amlogic: add support for MeCool
M8S Pro W
Subject: [PATCH 082/111] WIP: dt-bindings: arm: amlogic: add support for
MeCool M8S Pro W
The MeCool M8S Pro W is an Android STB based on the Amlogic P281
(GXL) reference design with an S905W chip.
@ -13,7 +13,7 @@ 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 68b21500a620..8e96318342f4 100644
index 70cb580f8b7e..f9d6a8f82d01 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -89,6 +89,7 @@ properties:

@ -1,8 +1,8 @@
From 4e94b6b505ff2ccfcb34540a82858ff4fc42246e Mon Sep 17 00:00:00 2001
From 3056b503ae67841eaac7c68419fe94a050b97faa Mon Sep 17 00:00:00 2001
From: Christian Hewitt <christianshewitt@gmail.com>
Date: Sun, 16 Jan 2022 08:17:41 +0000
Subject: [PATCH 68/92] WIP: arm64: dts: meson: add support for MeCool M8S Pro
W
Subject: [PATCH 083/111] WIP: arm64: dts: meson: add support for MeCool M8S
Pro W
MeCool M8S Pro W is an Android STB based on the Amlogic P281 (GXL)
reference design with an S905W chip and the following specs:

Some files were not shown because too many files have changed in this diff Show More