mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a60826684c | ||
|
|
10ebbc56d7 | ||
|
|
607a66a480 | ||
|
|
22fa5fcf37 | ||
|
|
c5d293ce7b | ||
|
|
4ef34b70d4 | ||
|
|
b1474f23c9 | ||
|
|
d9cb0e0749 | ||
|
|
2dd7685a8e | ||
|
|
33895da3f3 | ||
|
|
7f305c3e9b | ||
|
|
f88d19b575 | ||
|
|
f547d15d69 | ||
|
|
66b256f806 | ||
|
|
2a41bdf4dd | ||
|
|
a08e52b2c3 | ||
|
|
185df54170 | ||
|
|
5ce550c354 | ||
|
|
2fef238f35 | ||
|
|
ff66210b8a | ||
|
|
4d9a9d0735 | ||
|
|
4f7766c635 | ||
|
|
3101d67150 | ||
|
|
e739659f29 | ||
|
|
6560ed36ef | ||
|
|
f6b7711a18 | ||
|
|
75b6560b8a | ||
|
|
e95168ea70 | ||
|
|
a7b989e1ae | ||
|
|
8d87ef9f77 | ||
|
|
72d319e8f3 | ||
|
|
04f5ba1f7e | ||
|
|
de9caf8dca | ||
|
|
8d0ee6b68f | ||
|
|
86a07cd1c8 | ||
|
|
1333a8c1ad | ||
|
|
9f36748e13 | ||
|
|
c0c15bf059 | ||
|
|
1a2fa0a989 | ||
|
|
8db5a28732 | ||
|
|
7404f97082 | ||
|
|
5babb79e55 | ||
|
|
f040af4702 | ||
|
|
3300e758af | ||
|
|
641caf3b52 | ||
|
|
274d41ea82 | ||
|
|
3cc4d90cda | ||
|
|
830c72fe53 | ||
|
|
63cf0d45de | ||
|
|
1b8a86b462 | ||
|
|
e2ca6d1a5f | ||
|
|
9f5e173f9b | ||
|
|
267903e4a7 | ||
|
|
04dc864eeb | ||
|
|
8ba9ad0273 | ||
|
|
37e83ff5fb | ||
|
|
8cc0a3477b | ||
|
|
8a24fa120e | ||
|
|
ac0326ce7e | ||
|
|
de404e3bb0 | ||
|
|
70f2cdb888 | ||
|
|
e409a10cf8 | ||
|
|
ed9b628eda | ||
|
|
628fdbf308 | ||
|
|
232af29e56 | ||
|
|
3fc69e137a | ||
|
|
4fddc317f9 | ||
|
|
85e40c5d80 | ||
|
|
5f42542eaf | ||
|
|
535fb41c04 | ||
|
|
19da637c9b | ||
|
|
3463a19cbb | ||
|
|
3bff294c54 | ||
|
|
87947af96d | ||
|
|
ee452e66df | ||
|
|
92018b05ea | ||
|
|
481b229fe2 | ||
|
|
2f04664a2c | ||
|
|
40e1be9482 | ||
|
|
85e3d8d4e0 | ||
|
|
d0cc71fac2 | ||
|
|
3c4c327d0c | ||
|
|
d1b674cf3d | ||
|
|
7fa2987e4e | ||
|
|
d6d915d0cc | ||
|
|
780c7a3db0 | ||
|
|
d17389306d | ||
|
|
a75ad960d7 | ||
|
|
b64a2fbad1 | ||
|
|
68760f97da | ||
|
|
f9d2c335b6 | ||
|
|
adbd61821b | ||
|
|
111da88831 |
@@ -1,7 +1,7 @@
|
||||
### Questions about LibreELEC?
|
||||
|
||||
To get your questions answered, please ask in the LibreELEC [Forum], on IRC:
|
||||
\#libreelec on freenode.net.
|
||||
\#libreelec on Libera.Chat.
|
||||
|
||||
Do not open an issue.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ LibreELEC is a 'Just enough OS' Linux distribution for the award-winning [Kodi](
|
||||
|
||||
**Issues & Support**
|
||||
|
||||
Please ask questions in the [LibreELEC forum: Help & Support](https://forum.libreelec.tv/forum-3.html) or ask a member of project staff in the #libreelec IRC channel on Freenode. Please report bugs via [GitHub Issues](https://github.com/LibreELEC/LibreELEC.tv/issues).
|
||||
Please ask questions in the [LibreELEC forum: Help & Support](https://forum.libreelec.tv/forum-3.html) or ask a member of project staff in the #libreelec IRC channel on Libera.Chat. Please report bugs via [GitHub Issues](https://github.com/LibreELEC/LibreELEC.tv/issues).
|
||||
|
||||
**Donations**
|
||||
|
||||
|
||||
@@ -763,8 +763,8 @@ check_arch() {
|
||||
linux_config_dir="${PROJECT_DIR}/${PROJECT}/linux"
|
||||
fi
|
||||
|
||||
if [ ! -e "$linux_config_dir/linux.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf" ] &&
|
||||
! ls "$linux_config_dir/"*/linux.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf &>/dev/null; then
|
||||
if [ ! -e "$linux_config_dir/linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf" ] &&
|
||||
! ls "$linux_config_dir/"*/linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf &>/dev/null; then
|
||||
arch_err_msg="\n $dashes$dashes$dashes"
|
||||
arch_err_msg="${arch_err_msg}\n ERROR: Architecture not found, use a valid Architecture"
|
||||
arch_err_msg="${arch_err_msg}\n for your project or create a new config"
|
||||
@@ -1246,7 +1246,7 @@ kernel_config_path() {
|
||||
pkg_linux_version="$(get_pkg_version linux)"
|
||||
pkg_linux_dir="$(get_pkg_directory linux)"
|
||||
|
||||
config_name="linux.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf"
|
||||
config_name="linux.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf"
|
||||
|
||||
for cfg in $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/$pkg_linux_version/$config_name \
|
||||
$PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/$LINUX/$config_name \
|
||||
@@ -1268,7 +1268,7 @@ kernel_config_path() {
|
||||
kernel_initramfs_confs() {
|
||||
local config_name cfg confs
|
||||
|
||||
config_name="initramfs.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf"
|
||||
config_name="initramfs.${TARGET_KERNEL_PATCH_ARCH:-$TARGET_ARCH}.conf"
|
||||
confs="$(get_pkg_directory initramfs)/config/initramfs.conf"
|
||||
|
||||
for cfg in $PROJECT_DIR/$PROJECT/packages/initramfs/config/$config_name \
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libmediainfo"
|
||||
PKG_VERSION="20.09"
|
||||
PKG_SHA256="d07ce857330a9f9eedc4e5748f8022af1e9540e88a732d4e45c818c8ec4dd196"
|
||||
PKG_VERSION="21.03"
|
||||
PKG_SHA256="56b7e9abf80cba48032165cd7a46fd8d43dd63e3af35765f66c3f134caaca4ca"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://mediaarea.net/en/MediaInfo/Download/Source"
|
||||
PKG_URL="https://mediaarea.net/download/source/libmediainfo/${PKG_VERSION}/libmediainfo_${PKG_VERSION}.tar.xz"
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libzen"
|
||||
PKG_VERSION="0.4.38"
|
||||
PKG_SHA256="b8825b3190b3a31d8d362547cfa26a3c10e8c063df2d87e4a05758d6b756c8ab"
|
||||
PKG_VERSION="0.4.39"
|
||||
PKG_SHA256="cded5d7774294e7d5b42768ceb285243709b6e99eec6e980a3cf7f0890dbb622"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://mediaarea.net/en/MediaInfo/"
|
||||
PKG_URL="http://mediaarea.net/download/source/libzen/${PKG_VERSION}/libzen_${PKG_VERSION}.tar.xz"
|
||||
PKG_SITE="https://mediaarea.net/en/MediaInfo/"
|
||||
PKG_URL="https://mediaarea.net/download/source/libzen/${PKG_VERSION}/libzen_${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mediainfo"
|
||||
PKG_VERSION="20.09"
|
||||
PKG_SHA256="39327ef83caa38a96114d1b90654012b9ef727538fe82c37dd67aea2cf4f0f67"
|
||||
PKG_VERSION="21.03"
|
||||
PKG_SHA256="de50ca0b2c607b8999d3c9e542d27c97030a59f31859b612335315be6850021e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://mediaarea.net/en/MediaInfo/Download/Source"
|
||||
PKG_URL="https://mediaarea.net/download/source/mediainfo/${PKG_VERSION}/mediainfo_${PKG_VERSION}.tar.xz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mpg123"
|
||||
PKG_VERSION="1.26.4"
|
||||
PKG_SHA256="081991540df7a666b29049ad870f293cfa28863b36488ab4d58ceaa7b5846454"
|
||||
PKG_VERSION="1.27.2"
|
||||
PKG_SHA256="52f6ceb962c05db0c043bb27acf5a721381f5f356ac4610e5221f50293891b04"
|
||||
PKG_LICENSE="LGPLv2"
|
||||
PKG_SITE="http://www.mpg123.org/"
|
||||
PKG_URL="http://downloads.sourceforge.net/sourceforge/mpg123/mpg123-${PKG_VERSION}.tar.bz2"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mpv-drmprime"
|
||||
PKG_VERSION="0.33.0"
|
||||
PKG_SHA256="f1b9baf5dc2eeaf376597c28a6281facf6ed98ff3d567e3955c95bf2459520b4"
|
||||
PKG_VERSION="0.33.1"
|
||||
PKG_SHA256="100a116b9f23bdcda3a596e9f26be3a69f166a4f1d00910d1789b6571c46f3a9"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://mpv.io/"
|
||||
PKG_URL="https://github.com/mpv-player/mpv/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="squeezelite"
|
||||
PKG_VERSION="78fef68d39704753cb7101231a8d3bc29f2aa2c9" # 2021-01-03 # 1.9.8.1315
|
||||
PKG_SHA256="e4dce15d6f8968150d9535cb4e95017b4097d2282a1da1c87b3c7651dbca40c3"
|
||||
PKG_VERSION="556de5689d27b4440adbfeb3c3012da02dbf438e" # 2021-05-14 # 1.9.9.1386
|
||||
PKG_SHA256="8de5348b0ee23f4a24371dad589c887d083194e24a0e526585417edcd34a4d86"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/ralph-irving/squeezelite"
|
||||
PKG_URL="https://github.com/ralph-irving/squeezelite/archive/${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="irssi"
|
||||
PKG_VERSION="1.2.2"
|
||||
PKG_SHA256="6727060c918568ba2ff4295ad736128dba0b995d7b20491bca11f593bd857578"
|
||||
PKG_VERSION="1.2.3"
|
||||
PKG_SHA256="a647bfefed14d2221fa77b6edac594934dc672c4a560417b1abcbbc6b88d769f"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.irssi.org/"
|
||||
PKG_URL="https://github.com/irssi/irssi/releases/download/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
From a0544571a80196e5b7705f56e6e2cbcdf7b4d80e Mon Sep 17 00:00:00 2001
|
||||
From: ailin-nemui <ailin-nemui@users.noreply.github.com>
|
||||
Date: Thu, 23 Apr 2020 21:45:15 +0200
|
||||
Subject: [PATCH] manually handle NUL unicode in g_utf8_get_next_char_validated
|
||||
|
||||
A change in GLib 2.63 broke some assumptions in Irssi that the null-byte
|
||||
NUL / U+0000 is a valid Unicode character. This would occur when the
|
||||
user types Ctrl+Space. As a result, the input loop never manages to
|
||||
process the NUL-byte (and any other user input that follows, ever).
|
||||
|
||||
This patch adds a manual check that properly advances the input loop if
|
||||
GLib returns -2 (incomplete character) despite the length being positive
|
||||
and a NUL is in first position.
|
||||
|
||||
Fixes #1180
|
||||
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/967
|
||||
https://gitlab.gnome.org/GNOME/glib/-/issues/2093
|
||||
---
|
||||
src/fe-text/term-terminfo.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/fe-text/term-terminfo.c b/src/fe-text/term-terminfo.c
|
||||
index 5235f72d2..78496a64f 100644
|
||||
--- a/src/fe-text/term-terminfo.c
|
||||
+++ b/src/fe-text/term-terminfo.c
|
||||
@@ -672,7 +672,11 @@ void term_stop(void)
|
||||
|
||||
static int input_utf8(const unsigned char *buffer, int size, unichar *result)
|
||||
{
|
||||
- unichar c = g_utf8_get_char_validated((char *)buffer, size);
|
||||
+ unichar c = g_utf8_get_char_validated((char *) buffer, size);
|
||||
+
|
||||
+ /* GLib >= 2.63 do not accept Unicode NUL anymore */
|
||||
+ if (c == (unichar) -2 && *buffer == 0 && size > 0)
|
||||
+ c = 0;
|
||||
|
||||
switch (c) {
|
||||
case (unichar)-1:
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="lftp"
|
||||
PKG_VERSION="4.8.4"
|
||||
PKG_SHA256="4ebc271e9e5cea84a683375a0f7e91086e5dac90c5d51bb3f169f75386107a62"
|
||||
PKG_VERSION="4.9.2"
|
||||
PKG_SHA256="c517c4f4f9c39bd415d7313088a2b1e313b2d386867fe40b7692b83a20f0670d"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="http://lftp.yar.ru/"
|
||||
PKG_URL="http://lftp.yar.ru/ftp/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
diff -Naur a/configure b/configure
|
||||
--- a/configure 2016-11-16 05:11:30.000000000 -0800
|
||||
+++ b/configure 2016-11-19 11:21:25.384243165 -0800
|
||||
@@ -48854,7 +48854,7 @@
|
||||
readline_include_dir="$readline_include_dir/readline"
|
||||
+++ b/configure 2021-04-17 14:18:59.000000000 +0000
|
||||
@@ -55428,7 +55428,7 @@
|
||||
fi
|
||||
readline_ld_flags="-L$readline_prefix/lib"
|
||||
- readline_lib_flags="-lreadline"
|
||||
+ readline_lib_flags="-lreadline -lncurses"
|
||||
if test -z "$readline_lib_flags"; then
|
||||
- readline_lib_flags="-lreadline"
|
||||
+ readline_lib_flags="-lreadline -lncurses"
|
||||
fi
|
||||
run_readline_test="yes"
|
||||
elif test "$readline_requested" = "yes"; then
|
||||
if test -n "$readline_include_dir" -a -n "$readline_lib_flags"; then
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="rar2fs"
|
||||
PKG_VERSION="1.29.3"
|
||||
PKG_SHA256="e813ad62cccdc6081f00c081eb09b435e6ed58422a8f83e222e1aa9d7a0f0866"
|
||||
PKG_VERSION="1.29.5"
|
||||
PKG_SHA256="a56e9f2fd3d5037087b8405cff85ce7ffb74a904176f33f55b7bd15117cff2be"
|
||||
PKG_LICENSE="GPL3"
|
||||
PKG_SITE="https://github.com/hasse69/rar2fs"
|
||||
PKG_URL="https://github.com/hasse69/rar2fs/releases/download/v${PKG_VERSION}/rar2fs-${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="bottom"
|
||||
PKG_VERSION="0.6.1"
|
||||
PKG_SHA256="aa9c26e7e8e1300e9827c098317efa28cc28ae8acabfdb12f14e4ba65f42a57c"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/ClementTsang/bottom"
|
||||
PKG_URL="https://github.com/ClementTsang/bottom/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain rust"
|
||||
PKG_LONGDESC="A TUI system monitor written in Rust."
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
make_target() {
|
||||
. "$(get_build_dir rust)/cargo/env"
|
||||
cargo build \
|
||||
--release \
|
||||
--locked \
|
||||
--all-features
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}
|
||||
cp ${PKG_BUILD}/.${TARGET_NAME}/*/release/btm ${INSTALL}
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="oniguruma"
|
||||
PKG_VERSION="6.9.6"
|
||||
PKG_SHA256="bd0faeb887f748193282848d01ec2dad8943b5dfcb8dc03ed52dcc963549e819"
|
||||
PKG_VERSION="6.9.7.1"
|
||||
PKG_SHA256="6444204b9c34e6eb6c0b23021ce89a0370dad2b2f5c00cd44c342753e0b204d9"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://github.com/kkos/oniguruma"
|
||||
PKG_URL="https://github.com/kkos/oniguruma/releases/download/v${PKG_VERSION}/onig-${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="file"
|
||||
PKG_VERSION="5.39"
|
||||
PKG_SHA256="6c136f512bf4851b06de4d829ba4df8cbffc1ab1ecfbc1a4ded88a7c4f8c4180"
|
||||
PKG_VERSION="5.40"
|
||||
PKG_SHA256="35488116b068042320374f60e505e37c2c61b899402f9968e070b63dc39286d4"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="http://www.darwinsys.com/file/"
|
||||
PKG_URL="https://github.com/file/file/archive/FILE${PKG_VERSION/./_}.tar.gz"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mc"
|
||||
PKG_VERSION="4.8.25"
|
||||
PKG_SHA256="ffc19617f20ebb23330acd3998b7fd559a042d172fa55746d53d246697b2548a"
|
||||
PKG_VERSION="4.8.26"
|
||||
PKG_SHA256="c6deadc50595f2d9a22dc6c299a9f28b393e358346ebf6ca444a8469dc166c27"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.midnight-commander.org"
|
||||
PKG_URL="http://ftp.midnight-commander.org/mc-${PKG_VERSION}.tar.xz"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,10 +2,10 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mtpfs"
|
||||
PKG_VERSION="fd3864dd6f0e8183fa2598d4cf890401d3a1e09a"
|
||||
PKG_SHA256="f004136a82452d13362581277eb2496033aa13a6c3f35d0501327248f3120456"
|
||||
PKG_VERSION="d228a21b07062170e05fb71a7a7bf4a74ad559e1"
|
||||
PKG_SHA256="4b89e014201a01634022a6348874361f5ca729e455b8c1f9990fa10647590b52"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.adebenham.com/mtpfs/"
|
||||
PKG_SITE="https://www.adebenham.com/mtpfs/"
|
||||
PKG_URL="https://github.com/cjd/mtpfs/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain fuse glib libmtp"
|
||||
PKG_LONGDESC="MTPfs is a FUSE filesystem that supports reading and writing from any MTP device."
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="stress-ng"
|
||||
PKG_VERSION="0.12.02"
|
||||
PKG_SHA256="f847be115f60d3ad7d37c806fd1bfb1412aa3c631fca581d6dc233322f50d6a5"
|
||||
PKG_VERSION="0.12.09"
|
||||
PKG_SHA256="cffac091082c7adbfec649be3c66941c3d622f8b96795656bcce2e20d669cfeb"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://kernel.ubuntu.com/~cking/stress-ng/"
|
||||
PKG_URL="https://kernel.ubuntu.com/~cking/tarballs/stress-ng/stress-ng-${PKG_VERSION}.tar.xz"
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 15c9e6cc828c..3b68824ce727 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -376,7 +376,7 @@ stress-ng: $(OBJS)
|
||||
--- a/Makefile 2021-05-09 11:37:35.000000000 +0000
|
||||
+++ b/Makefile 2021-05-09 11:37:43.000000000 +0000
|
||||
@@ -390,7 +390,7 @@
|
||||
$(V)sync
|
||||
|
||||
makeconfig:
|
||||
@if [ ! -e config ]; then \
|
||||
- STATIC=$(STATIC) $(MAKE) -f Makefile.config; \
|
||||
+ STATIC=$(STATIC) $(MAKE) -j1 -f Makefile.config; \
|
||||
fi
|
||||
config.h:
|
||||
- +$(MAKE) -f Makefile.config STATIC=$(STATIC) -j
|
||||
+ +$(MAKE) -f Makefile.config STATIC=$(STATIC) -j1
|
||||
|
||||
#
|
||||
.PHONY:
|
||||
makeconfig: config.h
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="unrar"
|
||||
PKG_VERSION="6.0.3"
|
||||
PKG_SHA256="1def53392d879f9e304aa6eac1339cf41f9bce1111a2f5845071665738c4aca0"
|
||||
PKG_VERSION="6.0.6"
|
||||
PKG_SHA256="011ef7290d3394a62bb5bfced914cd510a7eea7255cf69417f9c952bb6056588"
|
||||
PKG_LICENSE="free"
|
||||
PKG_SITE="https://www.rarlab.com/rar_add.htm"
|
||||
PKG_URL="http://www.rarlab.com/rar/unrarsrc-${PKG_VERSION}.tar.gz"
|
||||
PKG_URL="https://www.rarlab.com/rar/unrarsrc-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="unrar extract, test and view RAR archives"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="vim"
|
||||
PKG_VERSION="8.2.2293"
|
||||
PKG_SHA256="20f9bc8b170fd278a6f319fde0edf5698f2707a395ebaafa9b1de9327f5a0775"
|
||||
PKG_VERSION="8.2.2879"
|
||||
PKG_SHA256="b14d0cab60e1f0562e269a7ff80476b73fcf8ee357cd90d2839e0210bfb8d001"
|
||||
PKG_LICENSE="VIM"
|
||||
PKG_SITE="http://www.vim.org/"
|
||||
PKG_URL="https://github.com/vim/vim/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
115
|
||||
- libmediainfo: update to 21.03
|
||||
- libzen: update to 0.4.39
|
||||
- mediainfo: update to 21.03
|
||||
- mpg123: update to 1.27.2
|
||||
- mpv-drmprime: update to 0.33.1
|
||||
- squeezelite: update to 2021-05-13 (1.9.9.1386)
|
||||
|
||||
114
|
||||
- squeezelite: update to 2021-01-03 (1.9.8.1315)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="multimedia-tools"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="114"
|
||||
PKG_REV="115"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
109
|
||||
- irssi: update to 1.2.3
|
||||
- lftp: update to 4.9.2
|
||||
- rar2fs: update to 1.29.5
|
||||
|
||||
108
|
||||
- bwm-ng: update to 0.6.3
|
||||
- iftop: update to 2018-10-03
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="network-tools"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="108"
|
||||
PKG_REV="109"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
122
|
||||
- Added bottom (btm) (successor to ytop) - all arch except Generic
|
||||
- Update file to 5.40
|
||||
- Update mc to 4.8.26
|
||||
- Update mtpfs to 2021-05-14
|
||||
- Update oniguruma to 6.9.7.1
|
||||
- Update stress-ng to 0.12.09
|
||||
- Update unrar to 6.0.6
|
||||
- Update vim to 8.2.2879
|
||||
|
||||
|
||||
121
|
||||
- remove strace
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
PKG_NAME="system-tools"
|
||||
PKG_VERSION="1.0"
|
||||
PKG_REV="121"
|
||||
PKG_REV="122"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
@@ -11,7 +11,7 @@ PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="virtual"
|
||||
PKG_SHORTDESC="A bundle of system tools and programs"
|
||||
PKG_LONGDESC="This bundle currently includes autossh, diffutils, dstat, dtach, efibootmgr, encfs, evtest, fdupes, file, getscancodes, hddtemp, hd-idle, hid_mapper, htop, i2c-tools, inotify-tools, jq, lm_sensors, lshw, mc, mtpfs, nmon, p7zip, patch, pv, screen, smartmontools, stress-ng, unrar, usb-modeswitch and vim."
|
||||
PKG_LONGDESC="This bundle currently includes autossh, bottom, diffutils, dstat, dtach, efibootmgr, encfs, evtest, fdupes, file, getscancodes, hddtemp, hd-idle, hid_mapper, htop, i2c-tools, inotify-tools, jq, lm_sensors, lshw, mc, mtpfs, nmon, p7zip, patch, pv, screen, smartmontools, stress-ng, unrar, usb-modeswitch and vim."
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="System Tools"
|
||||
@@ -51,6 +51,8 @@ PKG_DEPENDS_TARGET="toolchain \
|
||||
|
||||
if [ "${TARGET_ARCH}" = "x86_64" ]; then
|
||||
PKG_DEPENDS_TARGET+=" efibootmgr st"
|
||||
else
|
||||
PKG_DEPENDS_TARGET+=" bottom"
|
||||
fi
|
||||
|
||||
addon() {
|
||||
@@ -59,6 +61,9 @@ addon() {
|
||||
# autossh
|
||||
cp -P $(get_install_dir autossh)/usr/bin/autossh ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
|
||||
# bottom
|
||||
cp -P $(get_install_dir bottom)/btm ${ADDON_BUILD}/${PKG_ADDON_ID}/bin 2>/dev/null || :
|
||||
|
||||
# diffutils
|
||||
cp -P $(get_install_dir diffutils)/usr/bin/{cmp,diff,diff3,sdiff} ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
|
||||
@@ -112,7 +117,7 @@ addon() {
|
||||
|
||||
# jq
|
||||
cp -P $(get_install_dir jq)/usr/bin/jq ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
cp -P $(get_install_dir oniguruma)/usr/lib/{libonig.so,libonig.so.5,libonig.so.5.1.0} ${ADDON_BUILD}/${PKG_ADDON_ID}/lib
|
||||
cp -P $(get_install_dir oniguruma)/usr/lib/{libonig.so,libonig.so.5,libonig.so.5.2.0} ${ADDON_BUILD}/${PKG_ADDON_ID}/lib
|
||||
|
||||
# lm_sensors
|
||||
cp -P $(get_install_dir lm_sensors)/usr/bin/sensors ${ADDON_BUILD}/${PKG_ADDON_ID}/bin 2>/dev/null || :
|
||||
|
||||
@@ -0,0 +1,348 @@
|
||||
From 6676e967dba405ca31d57b63e096becd13d4a200 Mon Sep 17 00:00:00 2001
|
||||
From: Rahul Chaudhry <rahulchaudhry@chromium.org>
|
||||
Date: Thu, 15 Mar 2018 14:30:17 -0700
|
||||
Subject: [PATCH 4/8] sys-libs/glibc: add support for SHT_RELR sections.
|
||||
|
||||
This patch adds experimental support for SHT_RELR sections, proposed
|
||||
here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
|
||||
|
||||
SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
|
||||
To enable them, pass '--experimental-use-relr' flag to gold.
|
||||
|
||||
Definitions for the new ELF section type and dynamic array tags, as well
|
||||
as the encoding used in the new section are all under discussion and are
|
||||
subject to change. We plan to send the patch upstream after the gABI has
|
||||
been updated to include the new definitions.
|
||||
|
||||
[Adrian: forward-ported to glibc 2.32]
|
||||
---
|
||||
elf/do-rel.h | 41 ++++++++++++++++++++++++++++++++++--
|
||||
elf/dynamic-link.h | 15 +++++++++++++
|
||||
elf/elf.h | 15 +++++++++++--
|
||||
elf/get-dynamic-info.h | 7 ++++++
|
||||
sysdeps/aarch64/dl-machine.h | 10 +++++++++
|
||||
sysdeps/arm/dl-machine.h | 10 +++++++++
|
||||
sysdeps/i386/dl-machine.h | 10 +++++++++
|
||||
sysdeps/x86_64/dl-machine.h | 10 +++++++++
|
||||
8 files changed, 114 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/elf/do-rel.h b/elf/do-rel.h
|
||||
index 1d0a1f2c5d..25babef6e1 100644
|
||||
--- a/elf/do-rel.h
|
||||
+++ b/elf/do-rel.h
|
||||
@@ -26,6 +26,12 @@
|
||||
# define elf_machine_rel_relative elf_machine_rela_relative
|
||||
#endif
|
||||
|
||||
+#ifdef DO_RELR
|
||||
+# define elf_dynamic_do_Rel elf_dynamic_do_Relr
|
||||
+# define Rel Relr
|
||||
+# define elf_machine_rel_relative elf_machine_relr_relative
|
||||
+#endif
|
||||
+
|
||||
#ifndef DO_ELF_MACHINE_REL_RELATIVE
|
||||
# define DO_ELF_MACHINE_REL_RELATIVE(map, l_addr, relative) \
|
||||
elf_machine_rel_relative (l_addr, relative, \
|
||||
@@ -46,12 +52,12 @@ elf_dynamic_do_Rel (struct link_map *map,
|
||||
const ElfW(Rel) *r = (const void *) reladdr;
|
||||
const ElfW(Rel) *end = (const void *) (reladdr + relsize);
|
||||
ElfW(Addr) l_addr = map->l_addr;
|
||||
-# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP
|
||||
+# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP && !defined DO_RELR
|
||||
const ElfW(Rel) *r2 = NULL;
|
||||
const ElfW(Rel) *end2 = NULL;
|
||||
# endif
|
||||
|
||||
-#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP
|
||||
+#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP && !defined DO_RELR
|
||||
/* We never bind lazily during ld.so bootstrap. Unfortunately gcc is
|
||||
not clever enough to see through all the function calls to realize
|
||||
that. */
|
||||
@@ -80,8 +86,10 @@ elf_dynamic_do_Rel (struct link_map *map,
|
||||
else
|
||||
#endif
|
||||
{
|
||||
+# if !defined DO_RELR
|
||||
const ElfW(Sym) *const symtab =
|
||||
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
|
||||
+# endif
|
||||
const ElfW(Rel) *relative = r;
|
||||
r += nrelative;
|
||||
|
||||
@@ -108,9 +116,36 @@ elf_dynamic_do_Rel (struct link_map *map,
|
||||
if (l_addr != 0 || ! map->l_info[VALIDX(DT_GNU_PRELINKED)])
|
||||
# endif
|
||||
#endif
|
||||
+
|
||||
+#ifdef DO_RELR
|
||||
+ {
|
||||
+ ElfW(Addr) base = 0;
|
||||
+ for (; relative < end; ++relative)
|
||||
+ {
|
||||
+ ElfW(Relr) entry = *relative;
|
||||
+ if ((entry&1) == 0)
|
||||
+ {
|
||||
+ elf_machine_relr_relative (l_addr, (void *) (l_addr + entry));
|
||||
+ base = entry + sizeof(ElfW(Addr));
|
||||
+ continue;
|
||||
+ }
|
||||
+ ElfW(Addr) offset = base;
|
||||
+ while (entry != 0)
|
||||
+ {
|
||||
+ entry >>= 1;
|
||||
+ if ((entry&1) != 0)
|
||||
+ elf_machine_relr_relative (l_addr, (void *) (l_addr + offset));
|
||||
+ offset += sizeof(ElfW(Addr));
|
||||
+ }
|
||||
+ base += (8*sizeof(ElfW(Addr)) - 1) * sizeof(ElfW(Addr));
|
||||
+ }
|
||||
+ }
|
||||
+#else
|
||||
for (; relative < r; ++relative)
|
||||
DO_ELF_MACHINE_REL_RELATIVE (map, l_addr, relative);
|
||||
+#endif
|
||||
|
||||
+#if !defined DO_RELR
|
||||
#ifdef RTLD_BOOTSTRAP
|
||||
/* The dynamic linker always uses versioning. */
|
||||
assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
|
||||
@@ -179,6 +214,7 @@ elf_dynamic_do_Rel (struct link_map *map,
|
||||
skip_ifunc);
|
||||
# endif
|
||||
}
|
||||
+#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -189,3 +225,4 @@ elf_dynamic_do_Rel (struct link_map *map,
|
||||
#undef elf_machine_rel_relative
|
||||
#undef DO_ELF_MACHINE_REL_RELATIVE
|
||||
#undef DO_RELA
|
||||
+#undef DO_RELR
|
||||
diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
|
||||
index 6727233e1a..4345df9949 100644
|
||||
--- a/elf/dynamic-link.h
|
||||
+++ b/elf/dynamic-link.h
|
||||
@@ -76,6 +76,11 @@ auto inline void __attribute__((always_inline))
|
||||
elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
void *const reloc_addr);
|
||||
# endif
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+auto inline void __attribute__((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr,
|
||||
+ void *const reloc_addr);
|
||||
+# endif
|
||||
# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
|
||||
auto inline void __attribute__((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map,
|
||||
@@ -190,6 +195,15 @@ elf_machine_lazy_rel (struct link_map *map,
|
||||
# define ELF_DYNAMIC_DO_RELA(map, lazy, skip_ifunc) /* Nothing to do. */
|
||||
# endif
|
||||
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+# define DO_RELR
|
||||
+# include "do-rel.h"
|
||||
+# define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) \
|
||||
+ _ELF_DYNAMIC_DO_RELOC (RELR, Relr, map, lazy, skip_ifunc, 1)
|
||||
+# else
|
||||
+# define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) /* Nothing to do. */
|
||||
+# endif
|
||||
+
|
||||
/* This can't just be an inline function because GCC is too dumb
|
||||
to inline functions containing inlines themselves. */
|
||||
# define ELF_DYNAMIC_RELOCATE(map, lazy, consider_profile, skip_ifunc) \
|
||||
@@ -198,6 +212,7 @@ elf_machine_lazy_rel (struct link_map *map,
|
||||
(consider_profile)); \
|
||||
ELF_DYNAMIC_DO_REL ((map), edr_lazy, skip_ifunc); \
|
||||
ELF_DYNAMIC_DO_RELA ((map), edr_lazy, skip_ifunc); \
|
||||
+ ELF_DYNAMIC_DO_RELR ((map), edr_lazy, skip_ifunc); \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
diff --git a/elf/elf.h b/elf/elf.h
|
||||
index 197b557d15..5b6da8e8ae 100644
|
||||
--- a/elf/elf.h
|
||||
+++ b/elf/elf.h
|
||||
@@ -446,7 +446,8 @@ typedef struct
|
||||
#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
|
||||
#define SHT_GROUP 17 /* Section group */
|
||||
#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */
|
||||
-#define SHT_NUM 19 /* Number of defined types. */
|
||||
+#define SHT_RELR 19 /* Relative relocation, only offsets */
|
||||
+#define SHT_NUM 20 /* Number of defined types. */
|
||||
#define SHT_LOOS 0x60000000 /* Start OS-specific. */
|
||||
#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes. */
|
||||
#define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table. */
|
||||
@@ -664,6 +665,12 @@ typedef struct
|
||||
Elf64_Sxword r_addend; /* Addend */
|
||||
} Elf64_Rela;
|
||||
|
||||
+/* Relocation table entry for relative (in section of type SHT_RELR). */
|
||||
+
|
||||
+typedef Elf32_Word Elf32_Relr; /* offset/bitmap for relative relocations */
|
||||
+
|
||||
+typedef Elf64_Xword Elf64_Relr; /* offset/bitmap for relative relocations */
|
||||
+
|
||||
/* How to extract and insert information held in the r_info field. */
|
||||
|
||||
#define ELF32_R_SYM(val) ((val) >> 8)
|
||||
@@ -885,7 +892,10 @@ typedef struct
|
||||
#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
|
||||
#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
|
||||
#define DT_SYMTAB_SHNDX 34 /* Address of SYMTAB_SHNDX section */
|
||||
-#define DT_NUM 35 /* Number used */
|
||||
+#define DT_RELRSZ 35
|
||||
+#define DT_RELR 36
|
||||
+#define DT_RELRENT 37
|
||||
+#define DT_NUM 38 /* Number used */
|
||||
#define DT_LOOS 0x6000000d /* Start of OS-specific */
|
||||
#define DT_HIOS 0x6ffff000 /* End of OS-specific */
|
||||
#define DT_LOPROC 0x70000000 /* Start of processor-specific */
|
||||
@@ -937,6 +947,7 @@ typedef struct
|
||||
GNU extension. */
|
||||
#define DT_VERSYM 0x6ffffff0
|
||||
|
||||
+#define DT_RELRCOUNT 0x6ffffff8
|
||||
#define DT_RELACOUNT 0x6ffffff9
|
||||
#define DT_RELCOUNT 0x6ffffffa
|
||||
|
||||
diff --git a/elf/get-dynamic-info.h b/elf/get-dynamic-info.h
|
||||
index 4f6a86ef37..79ff22f0c0 100644
|
||||
--- a/elf/get-dynamic-info.h
|
||||
+++ b/elf/get-dynamic-info.h
|
||||
@@ -108,6 +108,9 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
|
||||
# if ! ELF_MACHINE_NO_REL
|
||||
ADJUST_DYN_INFO (DT_REL);
|
||||
# endif
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+ ADJUST_DYN_INFO (DT_RELR);
|
||||
+#endif
|
||||
ADJUST_DYN_INFO (DT_JMPREL);
|
||||
ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
|
||||
ADJUST_DYN_INFO (ADDRIDX (DT_GNU_HASH));
|
||||
@@ -134,6 +137,10 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
|
||||
if (info[DT_REL] != NULL)
|
||||
assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
|
||||
#endif
|
||||
+#if ! ELF_MACHINE_NO_RELR
|
||||
+ if (info[DT_RELR] != NULL)
|
||||
+ assert (info[DT_RELRENT]->d_un.d_val == sizeof (ElfW(Relr)));
|
||||
+# endif
|
||||
#ifdef RTLD_BOOTSTRAP
|
||||
/* Only the bind now flags are allowed. */
|
||||
assert (info[VERSYMIDX (DT_FLAGS_1)] == NULL
|
||||
diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
|
||||
index fde7cfd9e2..eaff6dbc6d 100644
|
||||
--- a/sysdeps/aarch64/dl-machine.h
|
||||
+++ b/sysdeps/aarch64/dl-machine.h
|
||||
@@ -198,6 +198,7 @@ _dl_start_user: \n\
|
||||
/* AArch64 uses RELA not REL */
|
||||
#define ELF_MACHINE_NO_REL 1
|
||||
#define ELF_MACHINE_NO_RELA 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
#define DL_PLATFORM_INIT dl_platform_init ()
|
||||
|
||||
@@ -383,6 +384,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr,
|
||||
*reloc_addr = l_addr + reloc->r_addend;
|
||||
}
|
||||
|
||||
+inline void
|
||||
+__attribute__ ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr,
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
inline void
|
||||
__attribute__ ((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map,
|
||||
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
|
||||
index 90856779b1..c586232c9d 100644
|
||||
--- a/sysdeps/arm/dl-machine.h
|
||||
+++ b/sysdeps/arm/dl-machine.h
|
||||
@@ -296,6 +296,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
|
||||
#define ELF_MACHINE_NO_REL 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
/* Names of the architecture-specific auditing callback functions. */
|
||||
#define ARCH_LA_PLTENTER arm_gnu_pltenter
|
||||
@@ -637,6 +638,15 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
|
||||
*reloc_addr += l_addr;
|
||||
}
|
||||
|
||||
+auto inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr,
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
# ifndef RTLD_BOOTSTRAP
|
||||
auto inline void
|
||||
__attribute__ ((always_inline))
|
||||
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
|
||||
index 672d8f27ce..7c09608913 100644
|
||||
--- a/sysdeps/i386/dl-machine.h
|
||||
+++ b/sysdeps/i386/dl-machine.h
|
||||
@@ -286,6 +286,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
|
||||
#define ELF_MACHINE_NO_REL 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
#ifdef RESOLVE_MAP
|
||||
|
||||
@@ -658,6 +659,15 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
|
||||
*reloc_addr += l_addr;
|
||||
}
|
||||
|
||||
+auto inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr,
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
# ifndef RTLD_BOOTSTRAP
|
||||
auto inline void
|
||||
__attribute__ ((always_inline))
|
||||
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
|
||||
index 363a749cb2..10a200ba67 100644
|
||||
--- a/sysdeps/x86_64/dl-machine.h
|
||||
+++ b/sysdeps/x86_64/dl-machine.h
|
||||
@@ -214,6 +214,7 @@ _dl_start_user:\n\
|
||||
/* The x86-64 never uses Elf64_Rel/Elf32_Rel relocations. */
|
||||
#define ELF_MACHINE_NO_REL 1
|
||||
#define ELF_MACHINE_NO_RELA 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
/* We define an initialization function. This is called very early in
|
||||
_dl_sysdep_start. */
|
||||
@@ -549,6 +550,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
}
|
||||
}
|
||||
|
||||
+auto inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr,
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
auto inline void
|
||||
__attribute ((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map,
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 61b3b546450ae0a70cb4a57fbb0e0fc47b331370 Mon Sep 17 00:00:00 2001
|
||||
From: Portisch <hugo.portisch@yahoo.de>
|
||||
Date: Sat, 5 Jun 2021 19:41:25 +0200
|
||||
Subject: [PATCH] tls: libwidevinecdm.so: since 4.10.2252.0 has TLS with
|
||||
64-byte alignment Change the max_align to 64U instead 16 to make it possible
|
||||
to use dlopen again. Tests by changing TLS_TCB_ALIGN directly showed up some
|
||||
random crashes. Reverence: https://lkml.org/lkml/2020/7/3/754
|
||||
|
||||
---
|
||||
elf/dl-tls.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
|
||||
index 9fa62f5d..d8f2f740 100644
|
||||
--- a/elf/dl-tls.c
|
||||
+++ b/elf/dl-tls.c
|
||||
@@ -213,6 +213,11 @@ void
|
||||
_dl_determine_tlsoffset (void)
|
||||
{
|
||||
size_t max_align = TLS_TCB_ALIGN;
|
||||
+ /* libwidevinecdm.so: since 4.10.2252.0 has TLS with 64-byte alignment.
|
||||
+ Since TLS is initialized before audit modules are loaded and slotinfo
|
||||
+ information is available, this is not taken into account below in
|
||||
+ the audit case. */
|
||||
+ max_align = MAX (max_align, 64U);
|
||||
size_t freetop = 0;
|
||||
size_t freebottom = 0;
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="brcmfmac_sdio-firmware"
|
||||
PKG_VERSION="8fb22389f6d6adae1a53f37d1eb21b51eb9fda99"
|
||||
PKG_SHA256="9ebfb6354ad3d025b903639d2499431624600e7344365f3a3eb3754affdb1255"
|
||||
PKG_VERSION="3ddc301c272f081aa5513c1934f6d530bf80de4a"
|
||||
PKG_SHA256="a9c76315c6c64d2dea250f53b942ee2bd7d1a289db9f19e0604183e87180f5e8"
|
||||
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"
|
||||
|
||||
@@ -28,8 +28,8 @@ case "${LINUX}" in
|
||||
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="5.10.35"
|
||||
PKG_SHA256="ac37a19d45b77a87e58e3aae8b127a6e7eb85ed7467fc8e58474b387bfd498fd"
|
||||
PKG_VERSION="5.10.41"
|
||||
PKG_SHA256="f604759de80767c4f8bdc500eec730dc161bc914a48bd366b748c176701a6771"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v5.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="LibreELEC-settings"
|
||||
PKG_VERSION="a702c4d4c28e6fac1c2393b6f7661a846ebe9e17"
|
||||
PKG_SHA256="bd4c830b04d4f58adddd3821c13f451810a27eee6476d356a3302855a8f9496b"
|
||||
PKG_VERSION="caee341cb6ab69a8e864640c304fd980c9e5139f"
|
||||
PKG_SHA256="a2a126481f7ea50ea0584014e9b265cf895977af1c4191628ed7835b92460323"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://libreelec.tv"
|
||||
PKG_URL="https://github.com/LibreELEC/service.libreelec.settings/archive/${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="audiodecoder.2sf"
|
||||
PKG_VERSION="3.0.1-Matrix"
|
||||
PKG_SHA256="e771b046a9b4cfe4baaaead777aa6f699a3f5b6691ef9c1eba66bf30c5427ec6"
|
||||
PKG_REV="4"
|
||||
PKG_VERSION="19.0.0-Matrix"
|
||||
PKG_SHA256="c17dc3bdeab626584b2480d83e91cb5c3b21033fdc72e94dd455aeb47a5dfaee"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/audiodecoder.2sf"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="audiodecoder.asap"
|
||||
PKG_VERSION="3.0.1-Matrix"
|
||||
PKG_SHA256="9a4d8aa11380443c0bbf0b43ce0b4f5b3097e300daa247c322e6e585394a9d89"
|
||||
PKG_REV="4"
|
||||
PKG_VERSION="19.0.0-Matrix"
|
||||
PKG_SHA256="bebf8c962c32d2733ff17f09c43b6912668c460fd124309610501d01a856b309"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/audiodecoder.asap"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="audiodecoder.dumb"
|
||||
PKG_VERSION="3.0.1-Matrix"
|
||||
PKG_SHA256="3a22f8602e7a711d353bbb7d83c7af8bbd04bfd727db4014c6f362f34c11376b"
|
||||
PKG_REV="4"
|
||||
PKG_VERSION="19.0.0-Matrix"
|
||||
PKG_SHA256="1134080932affdee27e9f3d8350695aed096a2754b77f1a7b12eb595922caad9"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/audiodecoder.dumb"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="audiodecoder.gme"
|
||||
PKG_VERSION="3.0.0-Matrix"
|
||||
PKG_SHA256="17c34b28dec26f4cbe529d5f5537eec47f74f48f7cec1eb4fd54a067913c2939"
|
||||
PKG_REV="4"
|
||||
PKG_VERSION="19.0.0-Matrix"
|
||||
PKG_SHA256="36f3c4c88e2c017d7f9649c341704156454008e0bc177e5e457fa7c840a76774"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/audiodecoder.gme"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="inputstream.adaptive"
|
||||
PKG_VERSION="2.6.14-Matrix"
|
||||
PKG_SHA256="f1756932e8cc602ce66c5db3bc1d44a442c01197c193561ca9248a405bd8bd86"
|
||||
PKG_VERSION="2.6.16-Matrix"
|
||||
PKG_SHA256="49b9971973a8df16faa2a7a46d81156484a27c98930eae56dad12d466910db13"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="peripheral.joystick"
|
||||
PKG_VERSION="1.7.1-Matrix"
|
||||
PKG_SHA256="4dc63c6c5bdad25881eeba800765d97c53b2583addf28e71bbcd67775452ecdb"
|
||||
PKG_REV="4"
|
||||
PKG_VERSION="1.7.2-Matrix"
|
||||
PKG_SHA256="405acfbcc510f96a48244168362213955357f95cd8b1b92fe1ce483213045bfb"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/peripheral.joystick"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="pvr.mediaportal.tvserver"
|
||||
PKG_VERSION="8.1.2-Matrix"
|
||||
PKG_SHA256="cea87ccdceee834c96d6b6887b78213ccf79890fec97436cbef17c57b9cdac15"
|
||||
PKG_VERSION="8.2.0-Matrix"
|
||||
PKG_SHA256="0109daa45d7b6450954b40d0b09dbef28818c551e9f0fea9943cfd06f0a7ec40"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="kodi"
|
||||
PKG_VERSION="19.1-Matrix"
|
||||
PKG_SHA256="195a916a32057e259e6f42b49ba8f07cc6253460018851a52deb058ae938c58c"
|
||||
PKG_VERSION="f5c60511e64a4d12083ba2347678b2759ff4afee"
|
||||
PKG_SHA256="491d3d66c062447ffc8726214638b345f1ee27177709a167c4895f7cb657af8e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/xbmc/xbmc/archive/${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH 07/13] disable minimize
|
||||
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -4807,7 +4807,6 @@ bool CApplication::SwitchToFullScreen(bo
|
||||
@@ -4818,7 +4818,6 @@ bool CApplication::SwitchToFullScreen(bo
|
||||
|
||||
void CApplication::Minimize()
|
||||
{
|
||||
|
||||
@@ -54,7 +54,7 @@ so, when shutdown/reboot is requested:
|
||||
Stop(EXITCODE_RESTARTAPP);
|
||||
#endif
|
||||
break;
|
||||
@@ -2628,6 +2629,17 @@ bool CApplication::Cleanup()
|
||||
@@ -2635,6 +2636,17 @@ bool CApplication::Cleanup()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ so, when shutdown/reboot is requested:
|
||||
void CApplication::Stop(int exitCode)
|
||||
{
|
||||
CLog::Log(LOGINFO, "Stopping player");
|
||||
@@ -2654,7 +2666,7 @@ void CApplication::Stop(int exitCode)
|
||||
@@ -2661,7 +2673,7 @@ void CApplication::Stop(int exitCode)
|
||||
m_frameMoveGuard.unlock();
|
||||
|
||||
CVariant vExitCode(CVariant::VariantTypeObject);
|
||||
@@ -81,7 +81,7 @@ so, when shutdown/reboot is requested:
|
||||
CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::System, "OnQuit", vExitCode);
|
||||
|
||||
// Abort any active screensaver
|
||||
@@ -2686,7 +2698,6 @@ void CApplication::Stop(int exitCode)
|
||||
@@ -2693,7 +2705,6 @@ void CApplication::Stop(int exitCode)
|
||||
// Needs cleaning up
|
||||
CApplicationMessenger::GetInstance().Stop();
|
||||
m_AppFocused = false;
|
||||
@@ -89,7 +89,7 @@ so, when shutdown/reboot is requested:
|
||||
CLog::Log(LOGINFO, "Stopping all");
|
||||
|
||||
// cancel any jobs from the jobmanager
|
||||
@@ -4336,7 +4347,7 @@ void CApplication::ProcessSlow()
|
||||
@@ -4347,7 +4358,7 @@ void CApplication::ProcessSlow()
|
||||
if (CPlatformPosix::TestQuitFlag())
|
||||
{
|
||||
CLog::Log(LOGINFO, "Quitting due to POSIX signal");
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Date: Tue, 25 May 2021 19:32:28 +0200
|
||||
Subject: [PATCH] Remove "disable addon dialog at startup" for LibreELEC.
|
||||
|
||||
The feature is not only not needed for LE but as well does enable the DVB
|
||||
driver addons.
|
||||
|
||||
See https://github.com/LibreELEC/LibreELEC.tv/issues/5397 and
|
||||
https://github.com/xbmc/xbmc/pull/19091
|
||||
---
|
||||
xbmc/platform/linux/PlatformLinux.h | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/platform/linux/PlatformLinux.h b/xbmc/platform/linux/PlatformLinux.h
|
||||
index c45d41143a..9a872a5f55 100644
|
||||
--- a/xbmc/platform/linux/PlatformLinux.h
|
||||
+++ b/xbmc/platform/linux/PlatformLinux.h
|
||||
@@ -21,7 +21,6 @@ public:
|
||||
~CPlatformLinux() override = default;
|
||||
|
||||
bool Init() override;
|
||||
- bool IsConfigureAddonsAtStartupEnabled() override { return true; };
|
||||
|
||||
private:
|
||||
std::unique_ptr<OPTIONALS::CLircContainer, OPTIONALS::delete_CLircContainer> m_lirc;
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="samba"
|
||||
PKG_VERSION="4.13.8"
|
||||
PKG_SHA256="3347c0c62cc5b1df1fc92d802282e809c354bfb4941a33c91a7fda3795efbf7f"
|
||||
PKG_VERSION="4.13.9"
|
||||
PKG_SHA256="b97a773ed3b4dae6d5ebd3e09337c897ae898b65f38abad550f852b594d4e07f"
|
||||
PKG_LICENSE="GPLv3+"
|
||||
PKG_SITE="https://www.samba.org"
|
||||
PKG_URL="https://download.samba.org/pub/samba/stable/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -28,6 +28,7 @@ To control the build behaviour of your package, use variables in the top-down or
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_SOURCE_DIR | - | no | Force the folder name that application sources are unpacked to. Used when sources do not automatically unpack to a folder with the `PKG_NAME-PKG_VERSION` naming convention. |
|
||||
| PKG_TAR_STRIP_COMPONENTS | - | no | When this option is set the top level directory is not get stripped off while extracting an archive. |
|
||||
| PKG_SOURCE_NAME | - | no | Force the filename of the application sources. Used when the filename is not the basename of `PKG_URL` |
|
||||
| PKG_PATCH_DIRS | - | no | Patches in `./patches` are automatically applied after package unpack. Use this option to include patches from an additional folder, e.g. `./patches/$PKG_PATCH_DIRS` |
|
||||
| PKG_NEED_UNPACK | - | no | Space separated list of files or folders to include in package stamp calculation. If the stamp is invalidated through changes to package files or dependent files/folders the package is cleaned and rebuilt. e.g. `PKG_NEED_UNPACK="$(get_pkg_directory linux)"` will trigger clean/rebuild of a Linux kernel driver package when a change to the `linux` kernel package is detected. |
|
||||
|
||||
@@ -70,7 +70,7 @@ if [ -d "${OVERLAY_CONFIG_DIR}" ] ; then
|
||||
|
||||
if [ "yes" = "$GOT_MODULE_OVERLAY" ] ; then
|
||||
log "running depmod"
|
||||
/usr/sbin/depmod -a
|
||||
/usr/sbin/depmod -a >/dev/kmsg 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@ MACHINEID="$(cat /storage/.cache/systemd-machine-id 2>/dev/null)"
|
||||
[[ "${MACHINEID//[a-f0-9]/}" != "" ]] && MACHINEID=
|
||||
[ -z "${MACHINEID}" ] && MACHINEID=$(/usr/bin/dbus-uuidgen)
|
||||
|
||||
# For first boot detection systemd may have overmounted the file
|
||||
umount /storage/.cache/systemd-machine-id >/dev/null 2>&1
|
||||
|
||||
# persist uuid
|
||||
mkdir -p /storage/.cache
|
||||
echo "$MACHINEID" > /storage/.cache/systemd-machine-id
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[Unit]
|
||||
Description=Setup machine-id
|
||||
DefaultDependencies=no
|
||||
Before=systemd-journald.service systemd-tmpfiles-setup-dev.service
|
||||
Conflicts=shutdown.target
|
||||
Before=systemd-journald.service systemd-tmpfiles-setup-dev.service shutdown.target
|
||||
After=local-fs.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="crust"
|
||||
PKG_VERSION="58267556f1b3792b8e742328d693d23ee5ef72b7"
|
||||
PKG_SHA256="0da013866710ca85d90aca2f63d66d04a2878224e7fca83047768056e35d9242"
|
||||
PKG_VERSION="0.4"
|
||||
PKG_SHA256="68517674bcddd211499c162ad541e7d04c5da8e91e2b1d78b0e6ece5f3d8da3b"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="BSD-3c"
|
||||
PKG_SITE="https://github.com/crust-firmware/crust"
|
||||
PKG_URL="https://github.com/crust-firmware/crust/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_URL="https://github.com/crust-firmware/crust/archive/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="gcc-or1k-linux:host"
|
||||
PKG_LONGDESC="Crust: Libre SCP firmware for Allwinner sunxi SoCs"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
@@ -105,3 +105,84 @@ index a6f8c0cb51..9c4a9f47cf 100644
|
||||
CONFIG_MISC=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_I2C_EEPROM=y
|
||||
diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig
|
||||
index f0931266aa..af0ad7d5aa 100644
|
||||
--- a/configs/firefly-rk3399_defconfig
|
||||
+++ b/configs/firefly-rk3399_defconfig
|
||||
@@ -5,16 +5,15 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||
CONFIG_ROCKCHIP_RK3399=y
|
||||
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
|
||||
-CONFIG_RKIMG_BOOTLOADER=y
|
||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3399-firefly"
|
||||
CONFIG_DEBUG_UART=y
|
||||
-CONFIG_ANDROID_BOOTLOADER=y
|
||||
+# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_FIT=y
|
||||
+CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.py"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
-CONFIG_ANDROID_BOOTLOADER=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
|
||||
CONFIG_SPL_ATF=y
|
||||
@@ -25,20 +24,19 @@ CONFIG_FASTBOOT_FLASH=y
|
||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||
CONFIG_CMD_BOOTZ=y
|
||||
# CONFIG_CMD_IMLS is not set
|
||||
+CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_GPT=y
|
||||
-CONFIG_CMD_LOAD_ANDROID=y
|
||||
-CONFIG_CMD_BOOT_ANDROID=y
|
||||
-CONFIG_CMD_BOOT_ROCKCHIP=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_USB_MASS_STORAGE=y
|
||||
# CONFIG_CMD_SETEXPR is not set
|
||||
CONFIG_CMD_TIME=y
|
||||
-CONFIG_RKPARM_PARTITION=y
|
||||
+CONFIG_CMD_PMIC=y
|
||||
+CONFIG_CMD_REGULATOR=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||
-CONFIG_ENV_IS_IN_MMC=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_SPL_REGMAP=y
|
||||
CONFIG_SYSCON=y
|
||||
@@ -47,6 +45,7 @@ CONFIG_CLK=y
|
||||
CONFIG_SPL_CLK=y
|
||||
CONFIG_ROCKCHIP_GPIO=y
|
||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||
+CONFIG_DM_KEY=y
|
||||
CONFIG_MISC=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_MMC_DW=y
|
||||
@@ -77,14 +76,16 @@ CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_DWC3=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_GENERIC=y
|
||||
+CONFIG_USB_OHCI_HCD=y
|
||||
+CONFIG_USB_OHCI_GENERIC=y
|
||||
CONFIG_USB_DWC3=y
|
||||
CONFIG_USB_DWC3_GADGET=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_G_DNL_MANUFACTURER="Rockchip"
|
||||
-CONFIG_G_DNL_VENDOR_NUM=0x18d1
|
||||
-CONFIG_G_DNL_PRODUCT_NUM=0xd00d
|
||||
+CONFIG_G_DNL_VENDOR_NUM=0x2207
|
||||
+CONFIG_G_DNL_PRODUCT_NUM=0x330a
|
||||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_ASIX88179=y
|
||||
@@ -93,3 +94,5 @@ CONFIG_USB_ETHER_RTL8152=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
CONFIG_USE_TINY_PRINTF=y
|
||||
CONFIG_ERRNO_STR=y
|
||||
+CONFIG_BOOTDELAY=1
|
||||
+# CONFIG_EFI_LOADER is not set
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -11,13 +11,11 @@ diff --git a/configs/orangepi_pc2_defconfig b/configs/orangepi_pc2_defconfig
|
||||
index 3d65b87d33..1ffeeed6cd 100644
|
||||
--- a/configs/orangepi_pc2_defconfig
|
||||
+++ b/configs/orangepi_pc2_defconfig
|
||||
@@ -3,13 +3,15 @@ CONFIG_NR_DRAM_BANKS=1
|
||||
CONFIG_SPL=y
|
||||
@@ -3,12 +3,14 @@ CONFIG_SPL=y
|
||||
CONFIG_MACH_SUN50I_H5=y
|
||||
CONFIG_DRAM_CLK=672
|
||||
-CONFIG_DRAM_ZQ=3881977
|
||||
CONFIG_DRAM_ZQ=3881977
|
||||
-# CONFIG_DRAM_ODT_EN is not set
|
||||
+CONFIG_DRAM_ZQ=4145117
|
||||
CONFIG_MACPWR="PD6"
|
||||
CONFIG_SPL_SPI_SUNXI=y
|
||||
+CONFIG_SPL_I2C_SUPPORT=y
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
From ba918badf612c19b4e31a57b2ff4baa06e99d7d5 Mon Sep 17 00:00:00 2001
|
||||
From: heitbaum <rudi@heitbaum.com>
|
||||
Date: Sun, 23 May 2021 06:37:45 +0000
|
||||
Subject: [PATCH] Allwinner: linux: enable BT on Tanix TX6 and add wifi node for rtl8822cs (rtw88)
|
||||
|
||||
Add and enable dts nodes for both rtw88 (rtl8822cs sdio) and uart rtl8822cs bluetooth.
|
||||
|
||||
# udevadm info /sys/bus/sdio/devices/mmc1\:0001\:1/
|
||||
P: /devices/platform/soc/4021000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1
|
||||
L: 0
|
||||
E:
|
||||
DEVPATH=/devices/platform/soc/4021000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1
|
||||
E: OF_NAME=sdio-wifi
|
||||
E: OF_FULLNAME=/soc/mmc@4021000/sdio-wifi@1
|
||||
E: OF_COMPATIBLE_N=0
|
||||
E: SDIO_CLASS=07
|
||||
E: SDIO_ID=024C:C822
|
||||
E: SDIO_REVISION=0.0
|
||||
E: MODALIAS=sdio:c07v024CdC822
|
||||
E: SUBSYSTEM=sdio
|
||||
|
||||
# dmesg | grep hci0
|
||||
Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c subver=8822
|
||||
Bluetooth: hci0: RTL: rom_version status=0 version=3
|
||||
Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cs_fw.bin
|
||||
Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cs_config.bin
|
||||
|
||||
---
|
||||
.../dts/allwinner/sun50i-h6-tanix-tx6.dts | 32 +++++++++++++++++++
|
||||
1 file changed, 48 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
|
||||
index 5233ad1488..06e7820fd9 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
|
||||
@@ -47,12 +47,29 @@ reg_vcc3v3: vcc3v3 {
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-wifi-io";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc3v3>;
|
||||
+ };
|
||||
+
|
||||
reg_vdd_cpu_gpu: vdd-cpu-gpu {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd-cpu-gpu";
|
||||
regulator-min-microvolt = <1135000>;
|
||||
regulator-max-microvolt = <1135000>;
|
||||
};
|
||||
+
|
||||
+ wifi_pwrseq: wifi-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rtc 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
|
||||
+ };
|
||||
};
|
||||
|
||||
&ac200_pwm_clk {
|
||||
@@ -122,6 +139,22 @@ &mmc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&mmc1 {
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ vqmmc-supply = <®_vcc_wifi_io>;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ rtl8822cs: sdio-wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ interrupt-parent = <&r_pio>;
|
||||
+ interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */
|
||||
+ interrupt-names = "host-wake";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&mmc2 {
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
vqmmc-supply = <®_vcc1v8>;
|
||||
@@ -158,6 +191,21 @@ &uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
|
||||
+ uart-has-rtscts;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ //use 8822cs compatible to load hci_h5 and btrtl driver
|
||||
+ compatible = "realtek,rtl8822cs-bt";
|
||||
+ device-wake-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
|
||||
+ host-wake-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
|
||||
+ enable-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&usb2otg {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
--
|
||||
2.29.2
|
||||
|
||||
@@ -2326,7 +2326,7 @@ CONFIG_LDISC_AUTOLOAD=y
|
||||
CONFIG_SERIAL_EARLYCON=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
|
||||
CONFIG_SERIAL_8250_16550A_VARIANTS=y
|
||||
# CONFIG_SERIAL_8250_FINTEK is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_DMA=y
|
||||
|
||||
@@ -2099,7 +2099,7 @@ CONFIG_LDISC_AUTOLOAD=y
|
||||
CONFIG_SERIAL_EARLYCON=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
|
||||
CONFIG_SERIAL_8250_16550A_VARIANTS=y
|
||||
# CONFIG_SERIAL_8250_FINTEK is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_DMA=y
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 10 Apr 2021 18:55:09 +0200
|
||||
Subject: [PATCH] media: cedrus: Fix HEVC status macros
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
.../staging/media/sunxi/cedrus/cedrus_regs.h | 17 +++++++++--------
|
||||
1 file changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
index 6cb1c279790f..7ab3a2b0aa10 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
@@ -443,16 +443,17 @@
|
||||
#define VE_DEC_H265_STATUS_STCD_BUSY BIT(21)
|
||||
#define VE_DEC_H265_STATUS_WB_BUSY BIT(20)
|
||||
#define VE_DEC_H265_STATUS_BS_DMA_BUSY BIT(19)
|
||||
-#define VE_DEC_H265_STATUS_IQIT_BUSY BIT(18)
|
||||
+#define VE_DEC_H265_STATUS_IT_BUSY BIT(18)
|
||||
#define VE_DEC_H265_STATUS_INTER_BUSY BIT(17)
|
||||
#define VE_DEC_H265_STATUS_MORE_DATA BIT(16)
|
||||
-#define VE_DEC_H265_STATUS_VLD_BUSY BIT(14)
|
||||
-#define VE_DEC_H265_STATUS_DEBLOCKING_BUSY BIT(13)
|
||||
-#define VE_DEC_H265_STATUS_DEBLOCKING_DRAM_BUSY BIT(12)
|
||||
-#define VE_DEC_H265_STATUS_INTRA_BUSY BIT(11)
|
||||
-#define VE_DEC_H265_STATUS_SAO_BUSY BIT(10)
|
||||
-#define VE_DEC_H265_STATUS_MVP_BUSY BIT(9)
|
||||
-#define VE_DEC_H265_STATUS_SWDEC_BUSY BIT(8)
|
||||
+#define VE_DEC_H265_STATUS_DBLK_BUSY BIT(15)
|
||||
+#define VE_DEC_H265_STATUS_IREC_BUSY BIT(14)
|
||||
+#define VE_DEC_H265_STATUS_INTRA_BUSY BIT(13)
|
||||
+#define VE_DEC_H265_STATUS_MCRI_BUSY BIT(12)
|
||||
+#define VE_DEC_H265_STATUS_IQIT_BUSY BIT(11)
|
||||
+#define VE_DEC_H265_STATUS_MVP_BUSY BIT(10)
|
||||
+#define VE_DEC_H265_STATUS_IS_BUSY BIT(9)
|
||||
+#define VE_DEC_H265_STATUS_VLD_BUSY BIT(8)
|
||||
#define VE_DEC_H265_STATUS_OVER_TIME BIT(3)
|
||||
#define VE_DEC_H265_STATUS_VLD_DATA_REQ BIT(2)
|
||||
#define VE_DEC_H265_STATUS_ERROR BIT(1)
|
||||
@@ -0,0 +1,41 @@
|
||||
From b19d3479f25e8a0ff24df0b46c82e50ef0f900dd Mon Sep 17 00:00:00 2001
|
||||
From: Salvatore Bonaccorso <carnil@debian.org>
|
||||
Date: Mon, 24 May 2021 14:21:11 +0200
|
||||
Subject: [PATCH] ARM: dts: sun8i: h3: orangepi-plus: Fix ethernet phy-mode
|
||||
|
||||
Commit bbc4d71d6354 ("net: phy: realtek: fix rtl8211e rx/tx delay
|
||||
config") sets the RX/TX delay according to the phy-mode property in the
|
||||
device tree. For the Orange Pi Plus board this is "rgmii", which is the
|
||||
wrong setting.
|
||||
|
||||
Following the example of a900cac3750b ("ARM: dts: sun7i: a20: bananapro:
|
||||
Fix ethernet phy-mode") the phy-mode is changed to "rgmii-id" which gets
|
||||
the Ethernet working again on this board.
|
||||
|
||||
Fixes: bbc4d71d6354 ("net: phy: realtek: fix rtl8211e rx/tx delay config")
|
||||
Reported-by: "B.R. Oake" <broake@mailfence.com>
|
||||
Reported-by: Vagrant Cascadian <vagrant@reproducible-builds.org>
|
||||
Link: https://bugs.debian.org/988574
|
||||
Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://lore.kernel.org/r/20210524122111.416885-1-carnil@debian.org
|
||||
---
|
||||
arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
|
||||
index 97f497854e05..d05fa679dcd3 100644
|
||||
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
|
||||
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
|
||||
@@ -85,7 +85,7 @@ &emac {
|
||||
pinctrl-0 = <&emac_rgmii_pins>;
|
||||
phy-supply = <®_gmac_3v3>;
|
||||
phy-handle = <&ext_rgmii_phy>;
|
||||
- phy-mode = "rgmii";
|
||||
+ phy-mode = "rgmii-id";
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
From be7e8af98f3af729aa9f08b1053f9533a5cceb91 Mon Sep 17 00:00:00 2001
|
||||
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Date: Sat, 27 Mar 2021 12:27:40 +0100
|
||||
Subject: [PATCH] media: v4l2-ctrls.c: fix race condition in hdl->requests list
|
||||
|
||||
When a request is re-inited it will release all control handler
|
||||
objects that are still in the request. It does that by unbinding
|
||||
and putting all those objects. When the object is unbound the
|
||||
obj->req pointer is set to NULL, and the object's unbind op is
|
||||
called. When the object it put the object's release op is called
|
||||
to free the memory.
|
||||
|
||||
For a request object that contains a control handler that means
|
||||
that v4l2_ctrl_handler_free() is called in the release op.
|
||||
|
||||
A control handler used in a request has a pointer to the main
|
||||
control handler that is created by the driver and contains the
|
||||
current state of all controls. If the device is unbound (due to
|
||||
rmmod or a forced unbind), then that main handler is freed, again
|
||||
by calling v4l2_ctrl_handler_free(), and any outstanding request
|
||||
objects that refer to that main handler have to be unbound and put
|
||||
as well.
|
||||
|
||||
It does that by this test:
|
||||
|
||||
if (!hdl->req_obj.req && !list_empty(&hdl->requests)) {
|
||||
|
||||
I.e. the handler has no pointer to a request, so is the main
|
||||
handler, and one or more request objects refer to this main
|
||||
handler.
|
||||
|
||||
However, this test is wrong since hdl->req_obj.req is actually
|
||||
NULL when re-initing a request (the object unbind will set req to
|
||||
NULL), and the only reason this seemingly worked is that the
|
||||
requests list is typically empty since the request's unbind op
|
||||
will remove the handler from the requests list.
|
||||
|
||||
But if another thread is at the same time adding a new control
|
||||
to a request, then there is a race condition where one thread
|
||||
is removing a control handler object from the requests list and
|
||||
another thread is adding one. The result is that hdl->requests
|
||||
is no longer empty and the code thinks that a main handler is
|
||||
being freed instead of a control handler that is part of a request.
|
||||
|
||||
There are two bugs here: first the test for hdl->req_obj.req: this
|
||||
should be hdl->req_obj.ops since only the main control handler will
|
||||
have a NULL pointer there.
|
||||
|
||||
The second is that adding or deleting request objects from the
|
||||
requests list of the main handler isn't protected by taking the
|
||||
main handler's lock.
|
||||
|
||||
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Reported-by: John Cox <jc@kynesim.co.uk>
|
||||
Fixes: 6fa6f831f095 ("media: v4l2-ctrls: add core request support")
|
||||
Tested-by: John Cox <jc@kynesim.co.uk>
|
||||
Reported-by: John Cox <jc@kynesim.co.uk>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
---
|
||||
drivers/media/v4l2-core/v4l2-ctrls.c | 17 ++++++++++++++---
|
||||
1 file changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
index e7fcbaeec0ae..c7bcc5c25771 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
@@ -2650,7 +2650,15 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl)
|
||||
if (hdl == NULL || hdl->buckets == NULL)
|
||||
return;
|
||||
|
||||
- if (!hdl->req_obj.req && !list_empty(&hdl->requests)) {
|
||||
+ /*
|
||||
+ * If the main handler is freed and it is used by handler objects in
|
||||
+ * outstanding requests, then unbind and put those objects before
|
||||
+ * freeing the main handler.
|
||||
+ *
|
||||
+ * The main handler can be identified by having a NULL ops pointer in
|
||||
+ * the request object.
|
||||
+ */
|
||||
+ if (!hdl->req_obj.ops && !list_empty(&hdl->requests)) {
|
||||
struct v4l2_ctrl_handler *req, *next_req;
|
||||
|
||||
list_for_each_entry_safe(req, next_req, &hdl->requests, requests) {
|
||||
@@ -3730,8 +3738,8 @@ static void v4l2_ctrl_request_unbind(struct media_request_object *obj)
|
||||
container_of(obj, struct v4l2_ctrl_handler, req_obj);
|
||||
struct v4l2_ctrl_handler *main_hdl = obj->priv;
|
||||
|
||||
+ mutex_lock(main_hdl->lock);
|
||||
list_del_init(&hdl->requests);
|
||||
- mutex_lock(main_hdl->lock);
|
||||
if (hdl->request_is_queued) {
|
||||
list_del_init(&hdl->requests_queued);
|
||||
hdl->request_is_queued = false;
|
||||
@@ -3790,8 +3798,11 @@ static int v4l2_ctrl_request_bind(struct media_request *req,
|
||||
if (!ret) {
|
||||
ret = media_request_object_bind(req, &req_ops,
|
||||
from, false, &hdl->req_obj);
|
||||
- if (!ret)
|
||||
+ if (!ret) {
|
||||
+ mutex_lock(from->lock);
|
||||
list_add_tail(&hdl->requests, &from->requests);
|
||||
+ mutex_unlock(from->lock);
|
||||
+ }
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -1,332 +0,0 @@
|
||||
From ac34b79da14d67a9b494f6125186becbd067e225 Mon Sep 17 00:00:00 2001
|
||||
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Date: Mon, 12 Apr 2021 13:51:23 +0200
|
||||
Subject: [PATCH] media: v4l2-ctrls: fix reference to freed memory
|
||||
|
||||
When controls are used together with the Request API, then for
|
||||
each request a v4l2_ctrl_handler struct is allocated. This contains
|
||||
the controls that can be set in a request. If a control is *not* set in
|
||||
the request, then the value used in the most recent previous request
|
||||
must be used, or the current value if it is not found in any outstanding
|
||||
requests.
|
||||
|
||||
The framework tried to find such a previous request and it would set
|
||||
the 'req' pointer in struct v4l2_ctrl_ref to the v4l2_ctrl_ref of the
|
||||
control in such a previous request. So far, so good. However, when that
|
||||
previous request was applied to the hardware, returned to userspace, and
|
||||
then userspace would re-init or free that request, any 'ref' pointer in
|
||||
still-queued requests would suddenly point to freed memory.
|
||||
|
||||
This was not noticed before since the drivers that use this expected
|
||||
that each request would always have the controls set, so there was
|
||||
never any need to find a control in older requests. This requirement
|
||||
was relaxed, and now this bug surfaced.
|
||||
|
||||
It was also made worse by changeset
|
||||
2fae4d6aabc8 ("media: v4l2-ctrls: v4l2_ctrl_request_complete() should always set ref->req")
|
||||
which increased the chance of this happening.
|
||||
|
||||
The use of the 'req' pointer in v4l2_ctrl_ref was very fragile, so
|
||||
drop this entirely. Instead add a valid_p_req bool to indicate that
|
||||
p_req contains a valid value for this control. And if it is false,
|
||||
then just use the current value of the control.
|
||||
|
||||
Note that VIDIOC_G_EXT_CTRLS will always return -EACCES when attempting
|
||||
to get a control from a request until the request is completed. And in
|
||||
that case, all controls in the request will have the control value set
|
||||
(i.e. valid_p_req is true). This means that the whole 'find the most
|
||||
recent previous request containing a control' idea is pointless, and
|
||||
the code can be simplified considerably.
|
||||
|
||||
The v4l2_g_ext_ctrls_common() function was refactored a bit to make
|
||||
it more understandable. It also avoids updating volatile controls
|
||||
in a completed request since that was already done when the request
|
||||
was completed.
|
||||
|
||||
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Fixes: 2fae4d6aabc8 ("media: v4l2-ctrls: v4l2_ctrl_request_complete() should always set ref->req")
|
||||
Fixes: 6fa6f831f095 ("media: v4l2-ctrls: add core request support")
|
||||
Cc: <stable@vger.kernel.org> # for v5.9 and up
|
||||
Tested-by: Alexandre Courbot <acourbot@chromium.org>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||||
---
|
||||
drivers/media/v4l2-core/v4l2-ctrls.c | 137 ++++++++++++---------------
|
||||
include/media/v4l2-ctrls.h | 12 ++-
|
||||
2 files changed, 70 insertions(+), 79 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
index c7bcc5c25771..0d7fe1bd975a 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
@@ -2504,7 +2504,16 @@ static void new_to_req(struct v4l2_ctrl_ref *ref)
|
||||
if (!ref)
|
||||
return;
|
||||
ptr_to_ptr(ref->ctrl, ref->ctrl->p_new, ref->p_req);
|
||||
- ref->req = ref;
|
||||
+ ref->valid_p_req = true;
|
||||
+}
|
||||
+
|
||||
+/* Copy the current value to the request value */
|
||||
+static void cur_to_req(struct v4l2_ctrl_ref *ref)
|
||||
+{
|
||||
+ if (!ref)
|
||||
+ return;
|
||||
+ ptr_to_ptr(ref->ctrl, ref->ctrl->p_cur, ref->p_req);
|
||||
+ ref->valid_p_req = true;
|
||||
}
|
||||
|
||||
/* Copy the request value to the new value */
|
||||
@@ -2512,8 +2521,8 @@ static void req_to_new(struct v4l2_ctrl_ref *ref)
|
||||
{
|
||||
if (!ref)
|
||||
return;
|
||||
- if (ref->req)
|
||||
- ptr_to_ptr(ref->ctrl, ref->req->p_req, ref->ctrl->p_new);
|
||||
+ if (ref->valid_p_req)
|
||||
+ ptr_to_ptr(ref->ctrl, ref->p_req, ref->ctrl->p_new);
|
||||
else
|
||||
ptr_to_ptr(ref->ctrl, ref->ctrl->p_cur, ref->ctrl->p_new);
|
||||
}
|
||||
@@ -3694,39 +3703,8 @@ static void v4l2_ctrl_request_queue(struct media_request_object *obj)
|
||||
struct v4l2_ctrl_handler *hdl =
|
||||
container_of(obj, struct v4l2_ctrl_handler, req_obj);
|
||||
struct v4l2_ctrl_handler *main_hdl = obj->priv;
|
||||
- struct v4l2_ctrl_handler *prev_hdl = NULL;
|
||||
- struct v4l2_ctrl_ref *ref_ctrl, *ref_ctrl_prev = NULL;
|
||||
|
||||
mutex_lock(main_hdl->lock);
|
||||
- if (list_empty(&main_hdl->requests_queued))
|
||||
- goto queue;
|
||||
-
|
||||
- prev_hdl = list_last_entry(&main_hdl->requests_queued,
|
||||
- struct v4l2_ctrl_handler, requests_queued);
|
||||
- /*
|
||||
- * Note: prev_hdl and hdl must contain the same list of control
|
||||
- * references, so if any differences are detected then that is a
|
||||
- * driver bug and the WARN_ON is triggered.
|
||||
- */
|
||||
- mutex_lock(prev_hdl->lock);
|
||||
- ref_ctrl_prev = list_first_entry(&prev_hdl->ctrl_refs,
|
||||
- struct v4l2_ctrl_ref, node);
|
||||
- list_for_each_entry(ref_ctrl, &hdl->ctrl_refs, node) {
|
||||
- if (ref_ctrl->req)
|
||||
- continue;
|
||||
- while (ref_ctrl_prev->ctrl->id < ref_ctrl->ctrl->id) {
|
||||
- /* Should never happen, but just in case... */
|
||||
- if (list_is_last(&ref_ctrl_prev->node,
|
||||
- &prev_hdl->ctrl_refs))
|
||||
- break;
|
||||
- ref_ctrl_prev = list_next_entry(ref_ctrl_prev, node);
|
||||
- }
|
||||
- if (WARN_ON(ref_ctrl_prev->ctrl->id != ref_ctrl->ctrl->id))
|
||||
- break;
|
||||
- ref_ctrl->req = ref_ctrl_prev->req;
|
||||
- }
|
||||
- mutex_unlock(prev_hdl->lock);
|
||||
-queue:
|
||||
list_add_tail(&hdl->requests_queued, &main_hdl->requests_queued);
|
||||
hdl->request_is_queued = true;
|
||||
mutex_unlock(main_hdl->lock);
|
||||
@@ -3783,7 +3761,7 @@ v4l2_ctrl_request_hdl_ctrl_find(struct v4l2_ctrl_handler *hdl, u32 id)
|
||||
{
|
||||
struct v4l2_ctrl_ref *ref = find_ref_lock(hdl, id);
|
||||
|
||||
- return (ref && ref->req == ref) ? ref->ctrl : NULL;
|
||||
+ return (ref && ref->valid_p_req) ? ref->ctrl : NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(v4l2_ctrl_request_hdl_ctrl_find);
|
||||
|
||||
@@ -3972,7 +3950,13 @@ static int class_check(struct v4l2_ctrl_handler *hdl, u32 which)
|
||||
return find_ref_lock(hdl, which | 1) ? 0 : -EINVAL;
|
||||
}
|
||||
|
||||
-/* Get extended controls. Allocates the helpers array if needed. */
|
||||
+/*
|
||||
+ * Get extended controls. Allocates the helpers array if needed.
|
||||
+ *
|
||||
+ * Note that v4l2_g_ext_ctrls_common() with 'which' set to
|
||||
+ * V4L2_CTRL_WHICH_REQUEST_VAL is only called if the request was
|
||||
+ * completed, and in that case valid_p_req is true for all controls.
|
||||
+ */
|
||||
static int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl,
|
||||
struct v4l2_ext_controls *cs,
|
||||
struct video_device *vdev)
|
||||
@@ -3981,9 +3965,10 @@ static int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl,
|
||||
struct v4l2_ctrl_helper *helpers = helper;
|
||||
int ret;
|
||||
int i, j;
|
||||
- bool def_value;
|
||||
+ bool is_default, is_request;
|
||||
|
||||
- def_value = (cs->which == V4L2_CTRL_WHICH_DEF_VAL);
|
||||
+ is_default = (cs->which == V4L2_CTRL_WHICH_DEF_VAL);
|
||||
+ is_request = (cs->which == V4L2_CTRL_WHICH_REQUEST_VAL);
|
||||
|
||||
cs->error_idx = cs->count;
|
||||
cs->which = V4L2_CTRL_ID2WHICH(cs->which);
|
||||
@@ -4009,11 +3994,9 @@ static int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl,
|
||||
ret = -EACCES;
|
||||
|
||||
for (i = 0; !ret && i < cs->count; i++) {
|
||||
- int (*ctrl_to_user)(struct v4l2_ext_control *c,
|
||||
- struct v4l2_ctrl *ctrl);
|
||||
struct v4l2_ctrl *master;
|
||||
-
|
||||
- ctrl_to_user = def_value ? def_to_user : cur_to_user;
|
||||
+ bool is_volatile = false;
|
||||
+ u32 idx = i;
|
||||
|
||||
if (helpers[i].mref == NULL)
|
||||
continue;
|
||||
@@ -4023,31 +4006,48 @@ static int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl,
|
||||
|
||||
v4l2_ctrl_lock(master);
|
||||
|
||||
- /* g_volatile_ctrl will update the new control values */
|
||||
- if (!def_value &&
|
||||
+ /*
|
||||
+ * g_volatile_ctrl will update the new control values.
|
||||
+ * This makes no sense for V4L2_CTRL_WHICH_DEF_VAL and
|
||||
+ * V4L2_CTRL_WHICH_REQUEST_VAL. In the case of requests
|
||||
+ * it is v4l2_ctrl_request_complete() that copies the
|
||||
+ * volatile controls at the time of request completion
|
||||
+ * to the request, so you don't want to do that again.
|
||||
+ */
|
||||
+ if (!is_default && !is_request &&
|
||||
((master->flags & V4L2_CTRL_FLAG_VOLATILE) ||
|
||||
(master->has_volatiles && !is_cur_manual(master)))) {
|
||||
for (j = 0; j < master->ncontrols; j++)
|
||||
cur_to_new(master->cluster[j]);
|
||||
ret = call_op(master, g_volatile_ctrl);
|
||||
- ctrl_to_user = new_to_user;
|
||||
+ is_volatile = true;
|
||||
}
|
||||
- /* If OK, then copy the current (for non-volatile controls)
|
||||
- or the new (for volatile controls) control values to the
|
||||
- caller */
|
||||
- if (!ret) {
|
||||
- u32 idx = i;
|
||||
|
||||
- do {
|
||||
- if (helpers[idx].ref->req)
|
||||
- ret = req_to_user(cs->controls + idx,
|
||||
- helpers[idx].ref->req);
|
||||
- else
|
||||
- ret = ctrl_to_user(cs->controls + idx,
|
||||
- helpers[idx].ref->ctrl);
|
||||
- idx = helpers[idx].next;
|
||||
- } while (!ret && idx);
|
||||
+ if (ret) {
|
||||
+ v4l2_ctrl_unlock(master);
|
||||
+ break;
|
||||
}
|
||||
+
|
||||
+ /*
|
||||
+ * Copy the default value (if is_default is true), the
|
||||
+ * request value (if is_request is true and p_req is valid),
|
||||
+ * the new volatile value (if is_volatile is true) or the
|
||||
+ * current value.
|
||||
+ */
|
||||
+ do {
|
||||
+ struct v4l2_ctrl_ref *ref = helpers[idx].ref;
|
||||
+
|
||||
+ if (is_default)
|
||||
+ ret = def_to_user(cs->controls + idx, ref->ctrl);
|
||||
+ else if (is_request && ref->valid_p_req)
|
||||
+ ret = req_to_user(cs->controls + idx, ref);
|
||||
+ else if (is_volatile)
|
||||
+ ret = new_to_user(cs->controls + idx, ref->ctrl);
|
||||
+ else
|
||||
+ ret = cur_to_user(cs->controls + idx, ref->ctrl);
|
||||
+ idx = helpers[idx].next;
|
||||
+ } while (!ret && idx);
|
||||
+
|
||||
v4l2_ctrl_unlock(master);
|
||||
}
|
||||
|
||||
@@ -4690,8 +4690,6 @@ void v4l2_ctrl_request_complete(struct media_request *req,
|
||||
unsigned int i;
|
||||
|
||||
if (ctrl->flags & V4L2_CTRL_FLAG_VOLATILE) {
|
||||
- ref->req = ref;
|
||||
-
|
||||
v4l2_ctrl_lock(master);
|
||||
/* g_volatile_ctrl will update the current control values */
|
||||
for (i = 0; i < master->ncontrols; i++)
|
||||
@@ -4701,21 +4699,12 @@ void v4l2_ctrl_request_complete(struct media_request *req,
|
||||
v4l2_ctrl_unlock(master);
|
||||
continue;
|
||||
}
|
||||
- if (ref->req == ref)
|
||||
+ if (ref->valid_p_req)
|
||||
continue;
|
||||
|
||||
+ /* Copy the current control value into the request */
|
||||
v4l2_ctrl_lock(ctrl);
|
||||
- if (ref->req) {
|
||||
- ptr_to_ptr(ctrl, ref->req->p_req, ref->p_req);
|
||||
- } else {
|
||||
- ptr_to_ptr(ctrl, ctrl->p_cur, ref->p_req);
|
||||
- /*
|
||||
- * Set ref->req to ensure that when userspace wants to
|
||||
- * obtain the controls of this request it will take
|
||||
- * this value and not the current value of the control.
|
||||
- */
|
||||
- ref->req = ref;
|
||||
- }
|
||||
+ cur_to_req(ref);
|
||||
v4l2_ctrl_unlock(ctrl);
|
||||
}
|
||||
|
||||
@@ -4779,7 +4768,7 @@ int v4l2_ctrl_request_setup(struct media_request *req,
|
||||
struct v4l2_ctrl_ref *r =
|
||||
find_ref(hdl, master->cluster[i]->id);
|
||||
|
||||
- if (r->req && r == r->req) {
|
||||
+ if (r->valid_p_req) {
|
||||
have_new_data = true;
|
||||
break;
|
||||
}
|
||||
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
|
||||
index c1d20bd8f25f..a5953b812878 100644
|
||||
--- a/include/media/v4l2-ctrls.h
|
||||
+++ b/include/media/v4l2-ctrls.h
|
||||
@@ -304,12 +304,14 @@ struct v4l2_ctrl {
|
||||
* the control has been applied. This prevents applying controls
|
||||
* from a cluster with multiple controls twice (when the first
|
||||
* control of a cluster is applied, they all are).
|
||||
- * @req: If set, this refers to another request that sets this control.
|
||||
+ * @valid_p_req: If set, then p_req contains the control value for the request.
|
||||
* @p_req: If the control handler containing this control reference
|
||||
* is bound to a media request, then this points to the
|
||||
- * value of the control that should be applied when the request
|
||||
+ * value of the control that must be applied when the request
|
||||
* is executed, or to the value of the control at the time
|
||||
- * that the request was completed.
|
||||
+ * that the request was completed. If @valid_p_req is false,
|
||||
+ * then this control was never set for this request and the
|
||||
+ * control will not be updated when this request is applied.
|
||||
*
|
||||
* Each control handler has a list of these refs. The list_head is used to
|
||||
* keep a sorted-by-control-ID list of all controls, while the next pointer
|
||||
@@ -322,7 +324,7 @@ struct v4l2_ctrl_ref {
|
||||
struct v4l2_ctrl_helper *helper;
|
||||
bool from_other_dev;
|
||||
bool req_done;
|
||||
- struct v4l2_ctrl_ref *req;
|
||||
+ bool valid_p_req;
|
||||
union v4l2_ctrl_ptr p_req;
|
||||
};
|
||||
|
||||
@@ -349,7 +351,7 @@ struct v4l2_ctrl_ref {
|
||||
* @error: The error code of the first failed control addition.
|
||||
* @request_is_queued: True if the request was queued.
|
||||
* @requests: List to keep track of open control handler request objects.
|
||||
- * For the parent control handler (@req_obj.req == NULL) this
|
||||
+ * For the parent control handler (@req_obj.ops == NULL) this
|
||||
* is the list header. When the parent control handler is
|
||||
* removed, it has to unbind and put all these requests since
|
||||
* they refer to the parent.
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT=hard
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT=hard
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -23,6 +23,7 @@ This project is for Rockchip SoC devices
|
||||
* [Orange Pi RK3399](devices/RK3399)
|
||||
* [PINE64 RockPro64](devices/RK3399)
|
||||
* [Radxa ROCK Pi 4](devices/RK3399)
|
||||
* [Radxa ROCK Pi N10](devices/RK3399)
|
||||
* [ROC-RK3399-PC](devices/RK3399)
|
||||
* [Rockchip Sapphire Board](devices/RK3399)
|
||||
|
||||
|
||||
@@ -15,11 +15,7 @@ case "${PKG_SOC}" in
|
||||
PKG_LOAD_ADDR="0x0"
|
||||
;;
|
||||
rk3328)
|
||||
if [ "${UBOOT_SYSTEM}" = "roc-cc" -o "${UBOOT_SYSTEM}" = "box-trn9" ]; then
|
||||
PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3328_ddr_933MHz_v1.16.bin"
|
||||
else
|
||||
PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3328_ddr_786MHz_v1.16.bin"
|
||||
fi
|
||||
PKG_DATAFILE="${PKG_RKBIN}/rk33/rk3328_ddr_786MHz_v1.16.bin"
|
||||
PKG_LOADER="${PKG_RKBIN}/rk33/rk3328_miniloader_v2.50.bin"
|
||||
PKG_BL31="${PKG_RKBIN}/rk33/rk3328_bl31_v1.42.elf"
|
||||
PKG_BL31_ADDR="0x10000"
|
||||
|
||||
@@ -17,4 +17,4 @@ mkdir -p "${DSTDIR}"
|
||||
fi
|
||||
fi
|
||||
|
||||
cp -a "${SRCDIR}"/${DEVICE,,}-*.dtb "${DSTDIR}"
|
||||
cp -a "${SRCDIR}"/${DEVICE,,}*.dtb "${DSTDIR}"
|
||||
|
||||
@@ -31,7 +31,7 @@ fi
|
||||
new_dtb=rk3328-a1.dtb
|
||||
;;
|
||||
rk3399-rock-pi-4.dtb)
|
||||
new_dtb=rk3399-rock-pi-4a.dtb
|
||||
new_dtb=rk3399-rock-pi-4b.dtb
|
||||
;;
|
||||
*)
|
||||
new_dtb="${dtb}"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.10.35 Kernel Configuration
|
||||
# Linux/arm 5.10.41 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@@ -4831,7 +4831,6 @@ CONFIG_IIO_SW_TRIGGER=y
|
||||
# CONFIG_AD7923 is not set
|
||||
# CONFIG_AD7949 is not set
|
||||
# CONFIG_AD799X is not set
|
||||
# CONFIG_AD9467 is not set
|
||||
# CONFIG_ADI_AXI_ADC is not set
|
||||
# CONFIG_AXP20X_ADC is not set
|
||||
# CONFIG_AXP288_ADC is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 5.10.35 Kernel Configuration
|
||||
# Linux/arm64 5.10.41 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@@ -4837,7 +4837,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
# CONFIG_AD7923 is not set
|
||||
# CONFIG_AD7949 is not set
|
||||
# CONFIG_AD799X is not set
|
||||
# CONFIG_AD9467 is not set
|
||||
# CONFIG_ADI_AXI_ADC is not set
|
||||
# CONFIG_CC10001_ADC is not set
|
||||
# CONFIG_ENVELOPE_DETECTOR is not set
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -11,6 +11,7 @@ This is a SoC device for RK3399
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=orangepi make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock960 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-4 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock-pi-n10 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rockpro64 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=roc-pc make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=sapphire make image`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 5.10.35 Kernel Configuration
|
||||
# Linux/arm64 5.10.41 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@@ -5527,7 +5527,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
# CONFIG_AD7923 is not set
|
||||
# CONFIG_AD7949 is not set
|
||||
# CONFIG_AD799X is not set
|
||||
# CONFIG_AD9467 is not set
|
||||
# CONFIG_ADI_AXI_ADC is not set
|
||||
# CONFIG_CC10001_ADC is not set
|
||||
# CONFIG_ENVELOPE_DETECTOR is not set
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;;
|
||||
arm)
|
||||
TARGET_KERNEL_ARCH="arm64"
|
||||
TARGET_PATCH_ARCH="aarch64"
|
||||
TARGET_KERNEL_PATCH_ARCH="aarch64"
|
||||
TARGET_FLOAT="hard"
|
||||
TARGET_CPU="cortex-a72.cortex-a53"
|
||||
TARGET_CPU_FLAGS="+crc"
|
||||
|
||||
@@ -24,6 +24,12 @@
|
||||
<default>ALSA:hdmi:CARD=HDMI,DEV=0</default>
|
||||
</setting>
|
||||
</group>
|
||||
<group id="3">
|
||||
<visible>false</visible>
|
||||
<setting id="audiooutput.passthrough">
|
||||
<default>false</default>
|
||||
</setting>
|
||||
</group>
|
||||
</category>
|
||||
</section>
|
||||
</settings>
|
||||
|
||||
@@ -0,0 +1,318 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
Date: Wed, 21 Apr 2021 18:03:36 -0300
|
||||
Subject: [PATCH] dt-bindings: vendor-prefixes: Add Tang Cheng (TCS)
|
||||
|
||||
Shenzhen City Tang Cheng Technology (http://www.tctek.cn/)
|
||||
is a power management IC manufacturer.
|
||||
|
||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
index 259faf1b382c..0ec33479df3c 100644
|
||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
||||
@@ -1055,6 +1055,8 @@ patternProperties:
|
||||
description: Trusted Computing Group
|
||||
"^tcl,.*":
|
||||
description: Toby Churchill Ltd.
|
||||
+ "^tcs,.*":
|
||||
+ description: Shenzhen City Tang Cheng Technology Co., Ltd.
|
||||
"^technexion,.*":
|
||||
description: TechNexion
|
||||
"^technologic,.*":
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
Date: Wed, 21 Apr 2021 18:03:37 -0300
|
||||
Subject: [PATCH] dt-bindings: regulator: Add support for TCS4525
|
||||
|
||||
Add a compatible string to support TCS4525/TCS4526 devices,
|
||||
which are compatible with Fairchild FAN53555 regulators.
|
||||
|
||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
---
|
||||
Documentation/devicetree/bindings/regulator/fan53555.txt | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/regulator/fan53555.txt b/Documentation/devicetree/bindings/regulator/fan53555.txt
|
||||
index e7fc045281d1..013f096ac0aa 100644
|
||||
--- a/Documentation/devicetree/bindings/regulator/fan53555.txt
|
||||
+++ b/Documentation/devicetree/bindings/regulator/fan53555.txt
|
||||
@@ -1,8 +1,8 @@
|
||||
Binding for Fairchild FAN53555 regulators
|
||||
|
||||
Required properties:
|
||||
- - compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827" or
|
||||
- "silergy,syr828"
|
||||
+ - compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827",
|
||||
+ "silergy,syr828" or "tcs,tcs4525".
|
||||
- reg: I2C address
|
||||
|
||||
Optional properties:
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Joseph Chen <chenjh@rock-chips.com>
|
||||
Date: Wed, 21 Apr 2021 18:03:38 -0300
|
||||
Subject: [PATCH] regulator: fan53555: Add TCS4525 DCDC support
|
||||
|
||||
TCS4525 main features:
|
||||
|
||||
- 2.7V to 5.5V Input Voltage Range;
|
||||
- 3MHz Constant Switching Frequency;
|
||||
- 5A Available Load Current;
|
||||
- Programmable Output Voltage: 0.6V to 1.4V in 6.25mV Steps;
|
||||
- PFM/PWM Operation for Optimum Increased Efficiency;
|
||||
|
||||
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
|
||||
[Ezequiel: Forward port]
|
||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 136 +++++++++++++++++++++++++++++++----
|
||||
1 file changed, 122 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index aa426183b6a1..f3918f03aaf3 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -24,6 +24,12 @@
|
||||
/* Voltage setting */
|
||||
#define FAN53555_VSEL0 0x00
|
||||
#define FAN53555_VSEL1 0x01
|
||||
+
|
||||
+#define TCS4525_VSEL0 0x11
|
||||
+#define TCS4525_VSEL1 0x10
|
||||
+#define TCS4525_TIME 0x13
|
||||
+#define TCS4525_COMMAND 0x14
|
||||
+
|
||||
/* Control register */
|
||||
#define FAN53555_CONTROL 0x02
|
||||
/* IC Type */
|
||||
@@ -49,11 +55,20 @@
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
+#define TCS4525_NVOLTAGES 127 /* Numbers of voltages */
|
||||
+
|
||||
+#define TCS_VSEL_NSEL_MASK 0x7f
|
||||
+#define TCS_VSEL0_MODE (1 << 7)
|
||||
+#define TCS_VSEL1_MODE (1 << 6)
|
||||
+
|
||||
+#define TCS_SLEW_SHIFT 3
|
||||
+#define TCS_SLEW_MASK (0x3 < 3)
|
||||
|
||||
enum fan53555_vendor {
|
||||
FAN53526_VENDOR_FAIRCHILD = 0,
|
||||
FAN53555_VENDOR_FAIRCHILD,
|
||||
FAN53555_VENDOR_SILERGY,
|
||||
+ FAN53555_VENDOR_TCS,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -106,6 +121,11 @@ struct fan53555_device_info {
|
||||
unsigned int mode_mask;
|
||||
/* Sleep voltage cache */
|
||||
unsigned int sleep_vol_cache;
|
||||
+ /* Slew rate */
|
||||
+ unsigned int slew_reg;
|
||||
+ unsigned int slew_mask;
|
||||
+ unsigned int slew_shift;
|
||||
+ unsigned int slew_rate;
|
||||
};
|
||||
|
||||
static int fan53555_set_suspend_voltage(struct regulator_dev *rdev, int uV)
|
||||
@@ -189,13 +209,37 @@ static const int slew_rates[] = {
|
||||
500,
|
||||
};
|
||||
|
||||
+static const int tcs_slew_rates[] = {
|
||||
+ 18700,
|
||||
+ 9300,
|
||||
+ 4600,
|
||||
+ 2300,
|
||||
+};
|
||||
+
|
||||
static int fan53555_set_ramp(struct regulator_dev *rdev, int ramp)
|
||||
{
|
||||
struct fan53555_device_info *di = rdev_get_drvdata(rdev);
|
||||
int regval = -1, i;
|
||||
+ const int *slew_rate_t;
|
||||
+ int slew_rate_n;
|
||||
|
||||
- for (i = 0; i < ARRAY_SIZE(slew_rates); i++) {
|
||||
- if (ramp <= slew_rates[i])
|
||||
+ switch (di->vendor) {
|
||||
+ case FAN53526_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_SILERGY:
|
||||
+ slew_rate_t = slew_rates;
|
||||
+ slew_rate_n = ARRAY_SIZE(slew_rates);
|
||||
+ break;
|
||||
+ case FAN53555_VENDOR_TCS:
|
||||
+ slew_rate_t = tcs_slew_rates;
|
||||
+ slew_rate_n = ARRAY_SIZE(tcs_slew_rates);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < slew_rate_n; i++) {
|
||||
+ if (ramp <= slew_rate_t[i])
|
||||
regval = i;
|
||||
else
|
||||
break;
|
||||
@@ -206,8 +250,8 @@ static int fan53555_set_ramp(struct regulator_dev *rdev, int ramp)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- return regmap_update_bits(rdev->regmap, FAN53555_CONTROL,
|
||||
- CTL_SLEW_MASK, regval << CTL_SLEW_SHIFT);
|
||||
+ return regmap_update_bits(rdev->regmap, di->slew_reg,
|
||||
+ di->slew_mask, regval << di->slew_shift);
|
||||
}
|
||||
|
||||
static const struct regulator_ops fan53555_regulator_ops = {
|
||||
@@ -292,7 +336,9 @@ static int fan53555_voltages_setup_fairchild(struct fan53555_device_info *di)
|
||||
"Chip ID %d not supported!\n", di->chip_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
-
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->slew_shift = CTL_SLEW_SHIFT;
|
||||
di->vsel_count = FAN53555_NVOLTAGES;
|
||||
|
||||
return 0;
|
||||
@@ -312,12 +358,29 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
"Chip ID %d not supported!\n", di->chip_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
-
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_reg = FAN53555_CONTROL;
|
||||
+ di->slew_mask = CTL_SLEW_MASK;
|
||||
+ di->slew_shift = CTL_SLEW_SHIFT;
|
||||
di->vsel_count = FAN53555_NVOLTAGES;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int fan53555_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
+{
|
||||
+ di->slew_reg = TCS4525_TIME;
|
||||
+ di->slew_mask = TCS_SLEW_MASK;
|
||||
+ di->slew_shift = TCS_SLEW_MASK;
|
||||
+
|
||||
+ /* Init voltage range and step */
|
||||
+ di->vsel_min = 600000;
|
||||
+ di->vsel_step = 6250;
|
||||
+ di->vsel_count = TCS4525_NVOLTAGES;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* For 00,01,03,05 options:
|
||||
* VOUT = 0.60V + NSELx * 10mV, from 0.60 to 1.23V.
|
||||
* For 04 option:
|
||||
@@ -329,17 +392,41 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
int ret = 0;
|
||||
|
||||
/* Setup voltage control register */
|
||||
- switch (pdata->sleep_vsel_id) {
|
||||
- case FAN53555_VSEL_ID_0:
|
||||
- di->sleep_reg = FAN53555_VSEL0;
|
||||
- di->vol_reg = FAN53555_VSEL1;
|
||||
+ switch (di->vendor) {
|
||||
+ case FAN53526_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_FAIRCHILD:
|
||||
+ case FAN53555_VENDOR_SILERGY:
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->sleep_reg = FAN53555_VSEL0;
|
||||
+ di->vol_reg = FAN53555_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->sleep_reg = FAN53555_VSEL1;
|
||||
+ di->vol_reg = FAN53555_VSEL0;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
break;
|
||||
- case FAN53555_VSEL_ID_1:
|
||||
- di->sleep_reg = FAN53555_VSEL1;
|
||||
- di->vol_reg = FAN53555_VSEL0;
|
||||
+ case FAN53555_VENDOR_TCS:
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->sleep_reg = TCS4525_VSEL0;
|
||||
+ di->vol_reg = TCS4525_VSEL1;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->sleep_reg = TCS4525_VSEL1;
|
||||
+ di->vol_reg = TCS4525_VSEL0;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
break;
|
||||
default:
|
||||
- dev_err(di->dev, "Invalid VSEL ID!\n");
|
||||
+ dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -362,6 +449,18 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
di->mode_reg = di->vol_reg;
|
||||
di->mode_mask = VSEL_MODE;
|
||||
break;
|
||||
+ case FAN53555_VENDOR_TCS:
|
||||
+ di->mode_reg = TCS4525_COMMAND;
|
||||
+
|
||||
+ switch (pdata->sleep_vsel_id) {
|
||||
+ case FAN53555_VSEL_ID_0:
|
||||
+ di->mode_mask = TCS_VSEL1_MODE;
|
||||
+ break;
|
||||
+ case FAN53555_VSEL_ID_1:
|
||||
+ di->mode_mask = TCS_VSEL0_MODE;
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
default:
|
||||
dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
return -EINVAL;
|
||||
@@ -378,6 +477,9 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
ret = fan53555_voltages_setup_silergy(di);
|
||||
break;
|
||||
+ case FAN53555_VENDOR_TCS:
|
||||
+ ret = fan53555_voltages_setup_tcs(di);
|
||||
+ break;
|
||||
default:
|
||||
dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
return -EINVAL;
|
||||
@@ -449,6 +551,9 @@ static const struct of_device_id __maybe_unused fan53555_dt_ids[] = {
|
||||
}, {
|
||||
.compatible = "silergy,syr828",
|
||||
.data = (void *)FAN53555_VENDOR_SILERGY,
|
||||
+ }, {
|
||||
+ .compatible = "tcs,tcs4525",
|
||||
+ .data = (void *)FAN53555_VENDOR_TCS
|
||||
},
|
||||
{ }
|
||||
};
|
||||
@@ -554,6 +659,9 @@ static const struct i2c_device_id fan53555_id[] = {
|
||||
}, {
|
||||
.name = "syr828",
|
||||
.driver_data = FAN53555_VENDOR_SILERGY
|
||||
+ }, {
|
||||
+ .name = "tcs4525",
|
||||
+ .driver_data = FAN53555_VENDOR_TCS
|
||||
},
|
||||
{ },
|
||||
};
|
||||
@@ -0,0 +1,261 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Geis <pgwipeout@gmail.com>
|
||||
Date: Tue, 11 May 2021 17:13:33 -0400
|
||||
Subject: [PATCH] regulator: fan53555: fix TCS4525 voltage calulation
|
||||
|
||||
The TCS4525 has 128 voltage steps. With the calculation set to 127 the
|
||||
most significant bit is disregarded which leads to a miscalculation of
|
||||
the voltage by about 200mv.
|
||||
|
||||
Fix the calculation to end deadlock on the rk3566-quartz64 which uses
|
||||
this as the cpu regulator.
|
||||
|
||||
Fixes: 914df8faa7d6 ("regulator: fan53555: Add TCS4525 DCDC support")
|
||||
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20210511211335.2935163-2-pgwipeout@gmail.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index f3918f03aaf3..26f06f685b1b 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -55,7 +55,6 @@
|
||||
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
-#define TCS4525_NVOLTAGES 127 /* Numbers of voltages */
|
||||
|
||||
#define TCS_VSEL_NSEL_MASK 0x7f
|
||||
#define TCS_VSEL0_MODE (1 << 7)
|
||||
@@ -376,7 +375,7 @@ static int fan53555_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
/* Init voltage range and step */
|
||||
di->vsel_min = 600000;
|
||||
di->vsel_step = 6250;
|
||||
- di->vsel_count = TCS4525_NVOLTAGES;
|
||||
+ di->vsel_count = FAN53526_NVOLTAGES;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Geis <pgwipeout@gmail.com>
|
||||
Date: Tue, 11 May 2021 17:13:34 -0400
|
||||
Subject: [PATCH] regulator: fan53555: only bind tcs4525 to correct chip id
|
||||
|
||||
The tcs4525 regulator has a chip id of <12>.
|
||||
Only allow the driver to bind to the correct chip id for safety, in
|
||||
accordance with the other supported devices.
|
||||
|
||||
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20210511211335.2935163-3-pgwipeout@gmail.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 25 ++++++++++++++++++-------
|
||||
1 file changed, 18 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index 26f06f685b1b..16f28f9df6a1 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -89,6 +89,10 @@ enum {
|
||||
FAN53555_CHIP_ID_08 = 8,
|
||||
};
|
||||
|
||||
+enum {
|
||||
+ TCS4525_CHIP_ID_12 = 12,
|
||||
+};
|
||||
+
|
||||
/* IC mask revision */
|
||||
enum {
|
||||
FAN53555_CHIP_REV_00 = 0x3,
|
||||
@@ -368,14 +372,21 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
|
||||
static int fan53555_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
{
|
||||
- di->slew_reg = TCS4525_TIME;
|
||||
- di->slew_mask = TCS_SLEW_MASK;
|
||||
- di->slew_shift = TCS_SLEW_MASK;
|
||||
+ switch (di->chip_id) {
|
||||
+ case TCS4525_CHIP_ID_12:
|
||||
+ di->slew_reg = TCS4525_TIME;
|
||||
+ di->slew_mask = TCS_SLEW_MASK;
|
||||
+ di->slew_shift = TCS_SLEW_MASK;
|
||||
|
||||
- /* Init voltage range and step */
|
||||
- di->vsel_min = 600000;
|
||||
- di->vsel_step = 6250;
|
||||
- di->vsel_count = FAN53526_NVOLTAGES;
|
||||
+ /* Init voltage range and step */
|
||||
+ di->vsel_min = 600000;
|
||||
+ di->vsel_step = 6250;
|
||||
+ di->vsel_count = FAN53526_NVOLTAGES;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(di->dev, "Chip ID %d not supported!\n", di->chip_id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Geis <pgwipeout@gmail.com>
|
||||
Date: Tue, 11 May 2021 17:13:35 -0400
|
||||
Subject: [PATCH] regulator: fan53555: fix tcs4525 function names
|
||||
|
||||
The tcs4525 is based off the fan53526.
|
||||
Rename the tcs4525 functions to align with this.
|
||||
|
||||
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20210511211335.2935163-4-pgwipeout@gmail.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index 16f28f9df6a1..2695be617373 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -67,7 +67,7 @@ enum fan53555_vendor {
|
||||
FAN53526_VENDOR_FAIRCHILD = 0,
|
||||
FAN53555_VENDOR_FAIRCHILD,
|
||||
FAN53555_VENDOR_SILERGY,
|
||||
- FAN53555_VENDOR_TCS,
|
||||
+ FAN53526_VENDOR_TCS,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -233,7 +233,7 @@ static int fan53555_set_ramp(struct regulator_dev *rdev, int ramp)
|
||||
slew_rate_t = slew_rates;
|
||||
slew_rate_n = ARRAY_SIZE(slew_rates);
|
||||
break;
|
||||
- case FAN53555_VENDOR_TCS:
|
||||
+ case FAN53526_VENDOR_TCS:
|
||||
slew_rate_t = tcs_slew_rates;
|
||||
slew_rate_n = ARRAY_SIZE(tcs_slew_rates);
|
||||
break;
|
||||
@@ -370,7 +370,7 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int fan53555_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
+static int fan53526_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
{
|
||||
switch (di->chip_id) {
|
||||
case TCS4525_CHIP_ID_12:
|
||||
@@ -420,7 +420,7 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
- case FAN53555_VENDOR_TCS:
|
||||
+ case FAN53526_VENDOR_TCS:
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
case FAN53555_VSEL_ID_0:
|
||||
di->sleep_reg = TCS4525_VSEL0;
|
||||
@@ -459,7 +459,7 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
di->mode_reg = di->vol_reg;
|
||||
di->mode_mask = VSEL_MODE;
|
||||
break;
|
||||
- case FAN53555_VENDOR_TCS:
|
||||
+ case FAN53526_VENDOR_TCS:
|
||||
di->mode_reg = TCS4525_COMMAND;
|
||||
|
||||
switch (pdata->sleep_vsel_id) {
|
||||
@@ -487,8 +487,8 @@ static int fan53555_device_setup(struct fan53555_device_info *di,
|
||||
case FAN53555_VENDOR_SILERGY:
|
||||
ret = fan53555_voltages_setup_silergy(di);
|
||||
break;
|
||||
- case FAN53555_VENDOR_TCS:
|
||||
- ret = fan53555_voltages_setup_tcs(di);
|
||||
+ case FAN53526_VENDOR_TCS:
|
||||
+ ret = fan53526_voltages_setup_tcs(di);
|
||||
break;
|
||||
default:
|
||||
dev_err(di->dev, "vendor %d not supported!\n", di->vendor);
|
||||
@@ -563,7 +563,7 @@ static const struct of_device_id __maybe_unused fan53555_dt_ids[] = {
|
||||
.data = (void *)FAN53555_VENDOR_SILERGY,
|
||||
}, {
|
||||
.compatible = "tcs,tcs4525",
|
||||
- .data = (void *)FAN53555_VENDOR_TCS
|
||||
+ .data = (void *)FAN53526_VENDOR_TCS
|
||||
},
|
||||
{ }
|
||||
};
|
||||
@@ -671,7 +671,7 @@ static const struct i2c_device_id fan53555_id[] = {
|
||||
.driver_data = FAN53555_VENDOR_SILERGY
|
||||
}, {
|
||||
.name = "tcs4525",
|
||||
- .driver_data = FAN53555_VENDOR_TCS
|
||||
+ .driver_data = FAN53526_VENDOR_TCS
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Axel Lin <axel.lin@ingics.com>
|
||||
Date: Mon, 17 May 2021 09:03:17 +0800
|
||||
Subject: [PATCH] regulator: fan53555: Fix slew_shift setting for tcs4525
|
||||
|
||||
Fix trivial copy-paste mistake.
|
||||
|
||||
Signed-off-by: Axel Lin <axel.lin@ingics.com>
|
||||
Link: https://lore.kernel.org/r/20210517010318.1027949-1-axel.lin@ingics.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index 2695be617373..d582ef3a3aeb 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -376,7 +376,7 @@ static int fan53526_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
case TCS4525_CHIP_ID_12:
|
||||
di->slew_reg = TCS4525_TIME;
|
||||
di->slew_mask = TCS_SLEW_MASK;
|
||||
- di->slew_shift = TCS_SLEW_MASK;
|
||||
+ di->slew_shift = TCS_SLEW_SHIFT;
|
||||
|
||||
/* Init voltage range and step */
|
||||
di->vsel_min = 600000;
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Axel Lin <axel.lin@ingics.com>
|
||||
Date: Mon, 17 May 2021 09:03:18 +0800
|
||||
Subject: [PATCH] regulator: fan53555: Cleanup unused define and redundant
|
||||
assignment
|
||||
|
||||
TCS_VSEL_NSEL_MASK is not used so remove it.
|
||||
Also remove redundant assignment for di->slew_reg.
|
||||
|
||||
Signed-off-by: Axel Lin <axel.lin@ingics.com>
|
||||
Link: https://lore.kernel.org/r/20210517010318.1027949-2-axel.lin@ingics.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index d582ef3a3aeb..f3f49cf3731b 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -56,7 +56,6 @@
|
||||
#define FAN53555_NVOLTAGES 64 /* Numbers of voltages */
|
||||
#define FAN53526_NVOLTAGES 128
|
||||
|
||||
-#define TCS_VSEL_NSEL_MASK 0x7f
|
||||
#define TCS_VSEL0_MODE (1 << 7)
|
||||
#define TCS_VSEL1_MODE (1 << 6)
|
||||
|
||||
@@ -362,7 +361,6 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
|
||||
return -EINVAL;
|
||||
}
|
||||
di->slew_reg = FAN53555_CONTROL;
|
||||
- di->slew_reg = FAN53555_CONTROL;
|
||||
di->slew_mask = CTL_SLEW_MASK;
|
||||
di->slew_shift = CTL_SLEW_SHIFT;
|
||||
di->vsel_count = FAN53555_NVOLTAGES;
|
||||
@@ -1233,7 +1233,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index d42037f0f10d..019dc355509b 100644
|
||||
index eaf4810fe656..6f8ea06b187b 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1349,6 +1349,14 @@ void mmc_power_off(struct mmc_host *host)
|
||||
@@ -1251,3 +1251,74 @@ index d42037f0f10d..019dc355509b 100644
|
||||
mmc_pwrseq_power_off(host);
|
||||
|
||||
host->ios.clock = 0;
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rudi Heitbaum <rudi@heitbaum.com>
|
||||
Date: Fri, 28 May 2021 10:19:50 +0000
|
||||
Subject: [PATCH] regulator: fan53555: add tcs4526
|
||||
|
||||
For rk3399pro boards the tcs4526 regulator supports the vdd_gpu
|
||||
regulator. The tcs4526 regulator has a chip id of <0>.
|
||||
Add the compatibile tcs,tcs4526
|
||||
|
||||
without this patch, the dmesg output is:
|
||||
fan53555-regulator 0-0010: Chip ID 0 not supported!
|
||||
fan53555-regulator 0-0010: Failed to setup device!
|
||||
fan53555-regulator: probe of 0-0010 failed with error -22
|
||||
with this patch, the dmesg output is:
|
||||
vdd_gpu: supplied by vcc5v0_sys
|
||||
|
||||
The regulators are described as:
|
||||
- Dedicated power management IC TCS4525
|
||||
- Lithium battery protection chip TCS4526
|
||||
|
||||
This has been tested with a Radxa Rock Pi N10.
|
||||
|
||||
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
|
||||
---
|
||||
drivers/regulator/fan53555.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c
|
||||
index f3f49cf3731b..bc8242e1dd0f 100644
|
||||
--- a/drivers/regulator/fan53555.c
|
||||
+++ b/drivers/regulator/fan53555.c
|
||||
@@ -92,6 +92,10 @@ enum {
|
||||
TCS4525_CHIP_ID_12 = 12,
|
||||
};
|
||||
|
||||
+enum {
|
||||
+ TCS4526_CHIP_ID_00 = 0,
|
||||
+};
|
||||
+
|
||||
/* IC mask revision */
|
||||
enum {
|
||||
FAN53555_CHIP_REV_00 = 0x3,
|
||||
@@ -372,6 +376,7 @@ static int fan53526_voltages_setup_tcs(struct fan53555_device_info *di)
|
||||
{
|
||||
switch (di->chip_id) {
|
||||
case TCS4525_CHIP_ID_12:
|
||||
+ case TCS4526_CHIP_ID_00:
|
||||
di->slew_reg = TCS4525_TIME;
|
||||
di->slew_mask = TCS_SLEW_MASK;
|
||||
di->slew_shift = TCS_SLEW_SHIFT;
|
||||
@@ -562,6 +567,9 @@ static const struct of_device_id __maybe_unused fan53555_dt_ids[] = {
|
||||
}, {
|
||||
.compatible = "tcs,tcs4525",
|
||||
.data = (void *)FAN53526_VENDOR_TCS
|
||||
+ }, {
|
||||
+ .compatible = "tcs,tcs4526",
|
||||
+ .data = (void *)FAN53526_VENDOR_TCS
|
||||
},
|
||||
{ }
|
||||
};
|
||||
@@ -670,6 +678,9 @@ static const struct i2c_device_id fan53555_id[] = {
|
||||
}, {
|
||||
.name = "tcs4525",
|
||||
.driver_data = FAN53526_VENDOR_TCS
|
||||
+ }, {
|
||||
+ .name = "tcs4526",
|
||||
+ .driver_data = FAN53526_VENDOR_TCS
|
||||
},
|
||||
{ },
|
||||
};
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index d25c4a37e2af..b3e067031c83 100644
|
||||
index 1263991de76f..71a6b7b0b057 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -223,6 +223,8 @@ static int rkvdec_try_capture_fmt(struct file *file, void *priv,
|
||||
@@ -98,7 +98,7 @@ index 054d2e3eed67..d46424ba88e8 100644
|
||||
FRAME_MBS_ONLY_FLAG);
|
||||
WRITE_PPS(!!(sps->flags & V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD),
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index b3e067031c83..06fc58440cd3 100644
|
||||
index 71a6b7b0b057..f405dd72ad93 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -29,8 +29,11 @@
|
||||
@@ -682,7 +682,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 15 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 06fc58440cd3..dc16bf8d57a9 100644
|
||||
index f405dd72ad93..c81ca5c7e979 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -27,6 +27,17 @@
|
||||
@@ -754,7 +754,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 55 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index dc16bf8d57a9..6b2a2f4164b2 100644
|
||||
index c81ca5c7e979..a11474214bde 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -38,6 +38,16 @@ static void rkvdec_fill_decoded_pixfmt(struct rkvdec_ctx *ctx,
|
||||
@@ -947,7 +947,7 @@ index 6f2d41b2e076..c115cd362a7f 100644
|
||||
.stop = rkvdec_h264_stop,
|
||||
.run = rkvdec_h264_run,
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 6b2a2f4164b2..bd8ec2915fe9 100644
|
||||
index a11474214bde..b57a39ce4f48 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -31,7 +31,7 @@ static void rkvdec_fill_decoded_pixfmt(struct rkvdec_ctx *ctx,
|
||||
@@ -1014,7 +1014,7 @@ Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index bd8ec2915fe9..87987a782d75 100644
|
||||
index b57a39ce4f48..9492822c12ae 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -132,6 +132,19 @@ static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
|
||||
|
||||
@@ -451,94 +451,6 @@ index db6ea48e21f9..1e2a4de941aa 100644
|
||||
|
||||
ktime_t busy_time;
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Fri, 5 Feb 2021 12:17:55 +0100
|
||||
Subject: [PATCH] drm/panfrost: Clear MMU irqs before handling the fault
|
||||
|
||||
When a fault is handled it will unblock the GPU which will continue
|
||||
executing its shader and might fault almost immediately on a different
|
||||
page. If we clear interrupts after handling the fault we might miss new
|
||||
faults, so clear them before.
|
||||
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Fixes: 187d2929206e ("drm/panfrost: Add support for GPU heap allocations")
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Reviewed-by: Steven Price <steven.price@arm.com>
|
||||
---
|
||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
index be8d68fb0e11..e5f7f647430f 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
@@ -600,6 +600,8 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
||||
access_type = (fault_status >> 8) & 0x3;
|
||||
source_id = (fault_status >> 16);
|
||||
|
||||
+ mmu_write(pfdev, MMU_INT_CLEAR, mask);
|
||||
+
|
||||
/* Page fault only */
|
||||
ret = -1;
|
||||
if ((status & mask) == BIT(i) && (exception_type & 0xF8) == 0xC0)
|
||||
@@ -623,8 +625,6 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, void *data)
|
||||
access_type, access_type_name(pfdev, fault_status),
|
||||
source_id);
|
||||
|
||||
- mmu_write(pfdev, MMU_INT_CLEAR, mask);
|
||||
-
|
||||
status &= ~mask;
|
||||
}
|
||||
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Fri, 5 Feb 2021 12:17:56 +0100
|
||||
Subject: [PATCH] drm/panfrost: Don't try to map pages that are already mapped
|
||||
|
||||
We allocate 2MB chunks at a time, so it might appear that a page fault
|
||||
has already been handled by a previous page fault when we reach
|
||||
panfrost_mmu_map_fault_addr(). Bail out in that case to avoid mapping the
|
||||
same area twice.
|
||||
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Fixes: 187d2929206e ("drm/panfrost: Add support for GPU heap allocations")
|
||||
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Reviewed-by: Steven Price <steven.price@arm.com>
|
||||
---
|
||||
drivers/gpu/drm/panfrost/panfrost_mmu.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
index e5f7f647430f..198686216317 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
|
||||
@@ -495,8 +495,14 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
|
||||
}
|
||||
bo->base.pages = pages;
|
||||
bo->base.pages_use_count = 1;
|
||||
- } else
|
||||
+ } else {
|
||||
pages = bo->base.pages;
|
||||
+ if (pages[page_offset]) {
|
||||
+ /* Pages are already mapped, bail out. */
|
||||
+ mutex_unlock(&bo->base.pages_lock);
|
||||
+ goto out;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
mapping = bo->base.base.filp->f_mapping;
|
||||
mapping_set_unevictable(mapping);
|
||||
@@ -529,6 +535,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
|
||||
|
||||
dev_dbg(pfdev->dev, "mapped page fault @ AS%d %llx", as, addr);
|
||||
|
||||
+out:
|
||||
panfrost_gem_mapping_put(bomapping);
|
||||
|
||||
return 0;
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Fri, 5 Feb 2021 12:17:57 +0100
|
||||
|
||||
@@ -3421,6 +3421,7 @@ index 3719309ad0d0..00025dcd3bb9 100644
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Algea Cao <algea.cao@rock-chips.com>
|
||||
Date: Wed, 6 Jun 2018 15:47:12 +0800
|
||||
@@ -3456,3 +3457,48 @@ index 3340aef73d8d..d798846579f5 100644
|
||||
|
||||
switch (hdmi_bus_fmt_color_depth(hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
case 8:
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Tue, 1 Jun 2021 19:24:37 +0200
|
||||
Subject: [PATCH] drm/rockchip: allow 4096px with modes
|
||||
|
||||
There is no reason to limit to modes up to 3840.
|
||||
Also drop the limitation from dw_hdmi_rockchip_mode_valid, since
|
||||
the max dimenstions of the actual vop version is validated in
|
||||
vop_crtc_mode_valid anyways.
|
||||
|
||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 2 +-
|
||||
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
index a612bf3da9ee..e4cfa6adbd87 100644
|
||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
@@ -329,7 +329,7 @@ dw_hdmi_rockchip_mode_valid(struct dw_hdmi *hdmi, void *data,
|
||||
return MODE_CLOCK_HIGH;
|
||||
}
|
||||
|
||||
- return drm_mode_validate_size(mode, 3840, 2160);
|
||||
+ return MODE_OK;
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||
index 5622ffd1b587..a0d27a9a9675 100644
|
||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
||||
@@ -401,8 +401,8 @@ static void scl_vop_cal_scl_fac(struct vop *vop, const struct vop_win_data *win,
|
||||
if (info->is_yuv)
|
||||
is_yuv = true;
|
||||
|
||||
- if (dst_w > 3840) {
|
||||
- DRM_DEV_ERROR(vop->dev, "Maximum dst width (3840) exceeded\n");
|
||||
+ if (dst_w > 4096) {
|
||||
+ DRM_DEV_ERROR(vop->dev, "Maximum dst width (4096) exceeded\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 87987a782d75..a1c33905970d 100644
|
||||
index 9492822c12ae..b49541f8ecf5 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -1024,7 +1024,8 @@ static irqreturn_t rkvdec_irq_handler(int irq, void *priv)
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index a1c33905970d..8c2ff05e01f7 100644
|
||||
index b49541f8ecf5..51e257a0233d 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -1145,9 +1145,9 @@ static int rkvdec_remove(struct platform_device *pdev)
|
||||
@@ -712,7 +712,7 @@ index 15b9bee92016..3acc914888f6 100644
|
||||
#define RKVDEC_REG_SYSCTRL 0x008
|
||||
#define RKVDEC_IN_ENDIAN BIT(0)
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 8c2ff05e01f7..bd0297239c6a 100644
|
||||
index 51e257a0233d..c05ba31ed656 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -10,12 +10,15 @@
|
||||
@@ -1008,7 +1008,7 @@ Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index bd0297239c6a..8aa946f8f7ad 100644
|
||||
index c05ba31ed656..4111155d62f4 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -1134,10 +1134,12 @@ static int rkvdec_probe(struct platform_device *pdev)
|
||||
|
||||
@@ -828,3 +828,187 @@ index fb7599f07af4..155f22b53103 100644
|
||||
mmc-hs400-1_8v;
|
||||
mmc-hs400-enhanced-strobe;
|
||||
non-removable;
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Tue, 1 Jun 2021 19:37:07 +0200
|
||||
Subject: [PATCH] arm64: dts: rockchip: re-add regulator-always-on for vdd_vpu
|
||||
|
||||
Seems to be required by panfrost.
|
||||
|
||||
Fixes: ec7d731d81e7 ("arm64: dts: rockchip: Add node for gpu on rk3399-roc-pc")
|
||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
index 20309076dbac..e4345e5bdfb6 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
@@ -488,6 +488,8 @@ vdd_gpu: regulator@41 {
|
||||
regulator-min-microvolt = <712500>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-ramp-delay = <1000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
vin-supply = <&vcc3v3_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Rudi Heitbaum <rudi@heitbaum.com>
|
||||
Date: Tue, 1 Jun 2021 19:42:31 +0200
|
||||
Subject: [PATCH] arm64: dts: rockchip: dts additions for Rock Pi N10
|
||||
|
||||
---
|
||||
.../dts/rockchip/rk3399pro-rock-pi-n10.dts | 4 +
|
||||
.../dts/rockchip/rk3399pro-vmarc-som.dtsi | 83 +++++++++++++++++++
|
||||
2 files changed, 87 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-rock-pi-n10.dts b/arch/arm64/boot/dts/rockchip/rk3399pro-rock-pi-n10.dts
|
||||
index 369de5dc0ebd..48ac0cfa93c0 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399pro-rock-pi-n10.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399pro-rock-pi-n10.dts
|
||||
@@ -20,3 +20,7 @@ chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
};
|
||||
+
|
||||
+&uart2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
|
||||
index 7257494d2831..9e2994e27d05 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi
|
||||
@@ -57,6 +57,22 @@ &hdmi {
|
||||
pinctrl-0 = <&hdmi_cec>;
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_gpu>;
|
||||
+ assigned-clocks = <&cru ACLK_GPU>;
|
||||
+ assigned-clock-rates = <200000000>;
|
||||
+ status = "okay";
|
||||
+ /delete-property/ operating-points-v2;
|
||||
+};
|
||||
+
|
||||
+&vopl {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
&i2c0 {
|
||||
clock-frequency = <400000>;
|
||||
i2c-scl-falling-time-ns = <30>;
|
||||
@@ -280,6 +296,50 @@ regulator-state-mem {
|
||||
};
|
||||
};
|
||||
};
|
||||
+
|
||||
+ vdd_cpu_b: tcs4525@1c {
|
||||
+ compatible = "tcs,tcs4525";
|
||||
+ reg = <0x1c>;
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
+ regulator-compatible = "fan53555-reg";
|
||||
+ pinctrl-0 = <&vsel1_gpio>;
|
||||
+ vsel-gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
+ regulator-name = "vdd_cpu_b";
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ regulator-ramp-delay = <2300>;
|
||||
+ fcs,suspend-voltage-selector = <1>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-state = <3>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu: tcs4526@10 {
|
||||
+ compatible = "tcs,tcs4526";
|
||||
+ reg = <0x10>;
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
+ regulator-compatible = "fan53555-reg";
|
||||
+ pinctrl-0 = <&vsel2_gpio>;
|
||||
+ vsel-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
+ regulator-name = "vdd_gpu";
|
||||
+ regulator-min-microvolt = <735000>;
|
||||
+ regulator-max-microvolt = <1400000>;
|
||||
+ regulator-ramp-delay = <1000>;
|
||||
+ fcs,suspend-voltage-selector = <1>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-state = <3>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2s2 {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
@@ -351,6 +411,29 @@ pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <1 RK_PC2 0 &pcfg_pull_up>;
|
||||
};
|
||||
+ vsel1_gpio: vsel1-gpio {
|
||||
+ rockchip,pins =
|
||||
+ <1 RK_PC1 0 &pcfg_pull_down>;
|
||||
+ };
|
||||
+ vsel2_gpio: vsel2-gpio {
|
||||
+ rockchip,pins =
|
||||
+ <1 RK_PB6 0 &pcfg_pull_down>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_gpio: soc-slppin-gpio {
|
||||
+ rockchip,pins =
|
||||
+ <1 RK_PA5 0 &pcfg_output_low>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_slp: soc-slppin-slp {
|
||||
+ rockchip,pins =
|
||||
+ <1 RK_PA5 1 &pcfg_pull_down>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_rst: soc-slppin-rst {
|
||||
+ rockchip,pins =
|
||||
+ <1 RK_PA5 2 &pcfg_pull_none>;
|
||||
+ };
|
||||
};
|
||||
|
||||
sdio-pwrseq {
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Bee <knaerzche@gmail.com>
|
||||
Date: Fri, 4 Jun 2021 22:19:32 +0200
|
||||
Subject: [PATCH] arm64: dts: rockchip: Re-add regulator-always-on property for
|
||||
vcc_sdio for RK3399-ROC-PC
|
||||
|
||||
Otherwise the board is not able to reboot.
|
||||
|
||||
Fixes: 04a0077fdb19 ("arm64: dts: rockchip: Remove always-on properties from regulator nodes on rk3399-roc-pc.")
|
||||
Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
index e4345e5bdfb6..03f2dcff8490 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
@@ -385,6 +385,7 @@ regulator-state-mem {
|
||||
vcc_sdio: LDO_REG4 {
|
||||
regulator-name = "vcc_sdio";
|
||||
regulator-boot-on;
|
||||
+ regulator-always-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-state-mem {
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 8aa946f8f7ad..6768fffe4d94 100644
|
||||
index 4111155d62f4..c4e0ec16c285 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -546,7 +546,15 @@ static int rkvdec_buf_prepare(struct vb2_buffer *vb)
|
||||
@@ -637,7 +637,7 @@ index ce728c757eaf..456488f2b5ca 100644
|
||||
|
||||
\normalsize
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
index cfe422d9f439..1666a7ec873a 100644
|
||||
index 41f8410d08d6..7ed11f296008 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
@@ -971,6 +971,11 @@ const char *v4l2_ctrl_get_name(u32 id)
|
||||
@@ -901,7 +901,7 @@ index cfe422d9f439..1666a7ec873a 100644
|
||||
case V4L2_CTRL_TYPE_HEVC_SPS:
|
||||
p_hevc_sps = p;
|
||||
|
||||
@@ -2618,6 +2851,12 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
||||
@@ -2635,6 +2868,12 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
||||
case V4L2_CTRL_TYPE_VP8_FRAME_HEADER:
|
||||
elem_size = sizeof(struct v4l2_ctrl_vp8_frame_header);
|
||||
break;
|
||||
@@ -927,7 +927,7 @@ index 1ff68c1bf14a..783733bef2da 100644
|
||||
case V4L2_PIX_FMT_HEVC_SLICE: descr = "HEVC Parsed Slice Data"; break;
|
||||
case V4L2_PIX_FMT_FWHT: descr = "FWHT"; break; /* used in vicodec */
|
||||
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
|
||||
index cb25f345e9ad..fb299d83df6b 100644
|
||||
index 9ecbb98908f0..ebcb34759ad8 100644
|
||||
--- a/include/media/v4l2-ctrls.h
|
||||
+++ b/include/media/v4l2-ctrls.h
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -3061,7 +3061,7 @@ index 000000000000..8b443ed511c9
|
||||
+ .done = rkvdec_vp9_done,
|
||||
+};
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 6768fffe4d94..f3cb15dc60ca 100644
|
||||
index c4e0ec16c285..f3578c5ea902 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -162,6 +162,40 @@ static const u32 rkvdec_h264_decoded_fmts[] = {
|
||||
|
||||
@@ -78,7 +78,7 @@ index d585909bc4e2..f817c643761b 100644
|
||||
Buffers associated with this pixel format must contain the appropriate
|
||||
number of macroblocks to decode a full corresponding frame.
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
index 1666a7ec873a..92bbfb81610d 100644
|
||||
index 7ed11f296008..a2609de88d26 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
@@ -1026,6 +1026,7 @@ const char *v4l2_ctrl_get_name(u32 id)
|
||||
@@ -109,7 +109,7 @@ index 1666a7ec873a..92bbfb81610d 100644
|
||||
case V4L2_CTRL_TYPE_AREA:
|
||||
area = p;
|
||||
if (!area->width || !area->height)
|
||||
@@ -2866,6 +2873,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
||||
@@ -2883,6 +2890,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
||||
case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS:
|
||||
elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params);
|
||||
break;
|
||||
@@ -2898,7 +2898,7 @@ index 3acc914888f6..4addfaefdfb4 100644
|
||||
#define RKVDEC_MODE_VP9 2
|
||||
#define RKVDEC_RPS_MODE BIT(24)
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index f3cb15dc60ca..fa53bbce95f2 100644
|
||||
index f3578c5ea902..a44db1aa161e 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -162,6 +162,61 @@ static const u32 rkvdec_h264_decoded_fmts[] = {
|
||||
@@ -3038,7 +3038,7 @@ index 03ba848411c6..b8ad7fc2271c 100644
|
||||
.stop = rkvdec_hevc_stop,
|
||||
.run = rkvdec_hevc_run,
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index fa53bbce95f2..8c8c075635a1 100644
|
||||
index a44db1aa161e..7419ae7027ab 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -79,6 +79,26 @@ static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
|
||||
@@ -3243,7 +3243,7 @@ Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
2 files changed, 84 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 8c8c075635a1..6c19b535f468 100644
|
||||
index 7419ae7027ab..ab8b42f4f98c 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -14,6 +14,7 @@
|
||||
@@ -3515,7 +3515,7 @@ Signed-off-by: Alex Bee <knaerzche@gmail.com>
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
index 6c19b535f468..c3fbf9c94a11 100644
|
||||
index ab8b42f4f98c..162623567a1d 100644
|
||||
--- a/drivers/staging/media/rkvdec/rkvdec.c
|
||||
+++ b/drivers/staging/media/rkvdec/rkvdec.c
|
||||
@@ -1285,11 +1285,19 @@ static const struct rkvdec_variant rk3399_rkvdec_variant = {
|
||||
|
||||
@@ -36,11 +36,13 @@ fi
|
||||
# If PKG_SOURCE_DIR is set don't apply any directory mangling
|
||||
# so advanced renaming (eg stripping more than one directory level)
|
||||
# can be performed by scripts/unpack.
|
||||
# If the archive does not contain a top level folder the strip components
|
||||
# can be disabled by PKG_TAR_STRIP_COMPONENTS="no" in package.mk
|
||||
TAR_OPTS=""
|
||||
if [ -z "${PKG_SOURCE_DIR}" ]; then
|
||||
TAR_OPTS="--strip-components=1"
|
||||
[ -z ${PKG_TAR_STRIP_COMPONENTS} ] && TAR_OPTS="--strip-components=1" || :
|
||||
DESTDIR="${2}/${PKG_NAME}-${PKG_VERSION}"
|
||||
else
|
||||
TAR_OPTS=""
|
||||
DESTDIR="${2}"
|
||||
fi
|
||||
|
||||
|
||||
@@ -289,7 +289,11 @@ devices = \
|
||||
'config': 'evb-rk3399_defconfig'
|
||||
},
|
||||
'rock-pi-4': {
|
||||
'dtb': 'rk3399-rock-pi-4a.dtb',
|
||||
'dtb': 'rk3399-rock-pi-4b.dtb',
|
||||
'config': 'evb-rk3399_defconfig'
|
||||
},
|
||||
'rock-pi-n10': {
|
||||
'dtb': 'rk3399pro-rock-pi-n10.dtb',
|
||||
'config': 'evb-rk3399_defconfig'
|
||||
},
|
||||
'rockpro64': {
|
||||
@@ -297,8 +301,8 @@ devices = \
|
||||
'config': 'evb-rk3399_defconfig'
|
||||
},
|
||||
'roc-pc': {
|
||||
'dtb': 'rk3399-roc-pc.dtb',
|
||||
'config': 'evb-rk3399_defconfig'
|
||||
'dtb': 'rk3399-roc-pc-mezzanine.dtb',
|
||||
'config': 'firefly-rk3399_defconfig'
|
||||
},
|
||||
'sapphire': {
|
||||
'dtb': 'rk3399-sapphire.dtb',
|
||||
|
||||
@@ -126,6 +126,8 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists
|
||||
|
||||
if [ "${TARGET_ARCH}" = "x86_64" ]; then
|
||||
PATCH_ARCH="x86"
|
||||
elif [ "${PKG_IS_KERNEL_PKG}" = "yes" ]; then
|
||||
PATCH_ARCH="${TARGET_KERNEL_PATCH_ARCH:-${TARGET_ARCH}}"
|
||||
else
|
||||
PATCH_ARCH="${TARGET_PATCH_ARCH:-${TARGET_ARCH}}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user