mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge pull request #3596 from HiassofT/le92-rpi4
add support for Raspberry Pi 4
This commit is contained in:
commit
fc72e5d751
@ -107,7 +107,7 @@ get_graphicdrivers() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then
|
if listcontains "${GRAPHIC_DRIVERS}" "vc4"; then
|
||||||
GALLIUM_DRIVERS+=" vc4"
|
GALLIUM_DRIVERS+=" vc4 v3d kmsro"
|
||||||
V4L2_SUPPORT="yes"
|
V4L2_SUPPORT="yes"
|
||||||
VAAPI_SUPPORT="no"
|
VAAPI_SUPPORT="no"
|
||||||
VDPAU_SUPPORT="no"
|
VDPAU_SUPPORT="no"
|
||||||
|
@ -19,7 +19,7 @@ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \
|
|||||||
-DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \
|
-DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \
|
||||||
-DHAVE_GIT_BIN=0"
|
-DHAVE_GIT_BIN=0"
|
||||||
|
|
||||||
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
|
if [ "$PROJECT" = "RPi" ]; then
|
||||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
|
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ if [ "$CEC_FRAMEWORK_SUPPORT" = "yes" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
pre_configure_target() {
|
pre_configure_target() {
|
||||||
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
|
if [ "$PROJECT" = "RPi" ]; then
|
||||||
# detecting RPi support fails without -lvchiq_arm
|
# detecting RPi support fails without -lvchiq_arm
|
||||||
export LDFLAGS="$LDFLAGS -lvchiq_arm"
|
export LDFLAGS="$LDFLAGS -lvchiq_arm"
|
||||||
fi
|
fi
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="bcm2835-driver"
|
PKG_NAME="bcm2835-driver"
|
||||||
PKG_VERSION="fd15e0700e45d9b7db83e30696aba299b9f2f31d"
|
PKG_VERSION="2b7c80a066c9d72dd0703f574ab2f27b3c1c3c3d"
|
||||||
PKG_SHA256="6324b4638b7b3f906469a1d2b94902f608436279749f167ade70e68c5c4c79a7"
|
PKG_SHA256="3cc783f4acffbcf52b8c303fbf497ed681c1c82210cdd005ccc383742fc07bbc"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
PKG_SITE="http://www.broadcom.com"
|
PKG_SITE="http://www.broadcom.com"
|
||||||
PKG_URL="${DISTRO_SRC}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
PKG_URL="${DISTRO_SRC}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||||
@ -22,15 +22,31 @@ fi
|
|||||||
make_target() {
|
make_target() {
|
||||||
# Install vendor header files
|
# Install vendor header files
|
||||||
mkdir -p ${SYSROOT_PREFIX}/usr/include
|
mkdir -p ${SYSROOT_PREFIX}/usr/include
|
||||||
cp -PRv ${PKG_FLOAT}/opt/vc/include/* ${SYSROOT_PREFIX}/usr/include
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/include/* ${SYSROOT_PREFIX}/usr/include
|
||||||
|
else
|
||||||
|
for f in $(cd ${PKG_FLOAT}/opt/vc/include; ls | grep -v "GL"); do
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/include/$f ${SYSROOT_PREFIX}/usr/include
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# Install EGL, OpenGL ES, Open VG, etc. vendor libs & pkgconfigs
|
# Install EGL, OpenGL ES, Open VG, etc. vendor libs & pkgconfigs
|
||||||
mkdir -p ${SYSROOT_PREFIX}/usr/lib
|
mkdir -p ${SYSROOT_PREFIX}/usr/lib
|
||||||
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${SYSROOT_PREFIX}/usr/lib
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
||||||
ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmEGL.so ${SYSROOT_PREFIX}/usr/lib/libEGL.so
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${SYSROOT_PREFIX}/usr/lib
|
||||||
ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmGLESv2.so ${SYSROOT_PREFIX}/usr/lib/libGLESv2.so
|
ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmEGL.so ${SYSROOT_PREFIX}/usr/lib/libEGL.so
|
||||||
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.a ${SYSROOT_PREFIX}/usr/lib
|
ln -sf ${SYSROOT_PREFIX}/usr/lib/libbrcmGLESv2.so ${SYSROOT_PREFIX}/usr/lib/libGLESv2.so
|
||||||
cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig ${SYSROOT_PREFIX}/usr/lib
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.a ${SYSROOT_PREFIX}/usr/lib
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig ${SYSROOT_PREFIX}/usr/lib
|
||||||
|
else
|
||||||
|
for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so *.a | grep -Ev "^lib(EGL|GL)"); do
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${SYSROOT_PREFIX}/usr/lib
|
||||||
|
done
|
||||||
|
mkdir -p ${SYSROOT_PREFIX}/usr/lib/pkgconfig
|
||||||
|
for f in $(cd ${PKG_FLOAT}/opt/vc/lib/pkgconfig; ls | grep -v "gl"); do
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/pkgconfig/$f ${SYSROOT_PREFIX}/usr/lib/pkgconfig
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# Update prefix in vendor pkgconfig files
|
# Update prefix in vendor pkgconfig files
|
||||||
for PKG_CONFIGS in $(find "${SYSROOT_PREFIX}/usr/lib" -type f -name "*.pc" 2>/dev/null); do
|
for PKG_CONFIGS in $(find "${SYSROOT_PREFIX}/usr/lib" -type f -name "*.pc" 2>/dev/null); do
|
||||||
@ -46,11 +62,17 @@ make_target() {
|
|||||||
makeinstall_target() {
|
makeinstall_target() {
|
||||||
# Install EGL, OpenGL ES and other vendor libs
|
# Install EGL, OpenGL ES and other vendor libs
|
||||||
mkdir -p ${INSTALL}/usr/lib
|
mkdir -p ${INSTALL}/usr/lib
|
||||||
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${INSTALL}/usr/lib
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
||||||
ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/*.so ${INSTALL}/usr/lib
|
||||||
ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so.1
|
ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so
|
||||||
ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so
|
ln -sf /usr/lib/libbrcmEGL.so ${INSTALL}/usr/lib/libEGL.so.1
|
||||||
ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so.2
|
ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so
|
||||||
|
ln -sf /usr/lib/libbrcmGLESv2.so ${INSTALL}/usr/lib/libGLESv2.so.2
|
||||||
|
else
|
||||||
|
for f in $(cd ${PKG_FLOAT}/opt/vc/lib; ls *.so | grep -Ev "^lib(EGL|GL)"); do
|
||||||
|
cp -PRv ${PKG_FLOAT}/opt/vc/lib/$f ${INSTALL}/usr/lib
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# Install useful tools
|
# Install useful tools
|
||||||
mkdir -p ${INSTALL}/usr/bin
|
mkdir -p ${INSTALL}/usr/bin
|
||||||
@ -68,5 +90,7 @@ makeinstall_target() {
|
|||||||
|
|
||||||
post_install() {
|
post_install() {
|
||||||
# unbind Framebuffer console
|
# unbind Framebuffer console
|
||||||
enable_service unbind-console.service
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
||||||
|
enable_service unbind-console.service
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
diff -ru brcmfmac_sdio-firmware-rpi.orig/firmware/brcm/brcmfmac43455-sdio.txt brcmfmac_sdio-firmware-rpi/firmware/brcm/brcmfmac43455-sdio.txt
|
||||||
|
--- brcmfmac_sdio-firmware-rpi.orig/firmware/brcm/brcmfmac43455-sdio.txt 2019-01-28 20:44:58.000000000 +0100
|
||||||
|
+++ brcmfmac_sdio-firmware-rpi/firmware/brcm/brcmfmac43455-sdio.txt 2019-06-11 13:09:30.388579306 +0200
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
# bit1 for btcoex
|
||||||
|
boardflags=0x00480201
|
||||||
|
boardflags2=0x40800000
|
||||||
|
-boardflags3=0x48200100
|
||||||
|
+boardflags3=0x44200100
|
||||||
|
phycal_tempdelta=15
|
||||||
|
rxchain=1
|
||||||
|
txchain=1
|
||||||
|
@@ -91,7 +91,7 @@
|
||||||
|
cbfilttype=1
|
||||||
|
fdsslevel_ch11=6
|
||||||
|
|
||||||
|
-# Experimental Bluetooth coexistence parameters from Cypress
|
||||||
|
+# Improved Bluetooth coexistence parameters from Cypress
|
||||||
|
btc_mode=1
|
||||||
|
btc_params8=0x4e20
|
||||||
|
btc_params1=0x7530
|
@ -23,8 +23,8 @@ case "$LINUX" in
|
|||||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||||
;;
|
;;
|
||||||
raspberrypi)
|
raspberrypi)
|
||||||
PKG_VERSION="5040b4b78e4cb74a6364d9a7c6cca0385e2dffd8" # 4.19.50
|
PKG_VERSION="71d47f4c4bd7fd395b87c474498187b2f9be8751"
|
||||||
PKG_SHA256="134a9821db00c3c826dfeb86be9439a4d0c5b10796f7173a2e5d5728ef2fc979"
|
PKG_SHA256="d1ef4b20f0e0435ed1792eccee99d430b06404ba114dbe3f17e0af616a9b748d"
|
||||||
PKG_URL="https://github.com/raspberrypi/linux/archive/$PKG_VERSION.tar.gz"
|
PKG_URL="https://github.com/raspberrypi/linux/archive/$PKG_VERSION.tar.gz"
|
||||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||||
;;
|
;;
|
||||||
|
@ -31,6 +31,10 @@ case $KODI_VENDOR in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [ "$PROJECT" = "RPi" ]; then
|
||||||
|
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
|
||||||
|
fi
|
||||||
|
|
||||||
configure_package() {
|
configure_package() {
|
||||||
# Single threaded LTO is very slow so rely on Kodi for parallel LTO support
|
# Single threaded LTO is very slow so rely on Kodi for parallel LTO support
|
||||||
if [ "$LTO_SUPPORT" = "yes" ] && ! build_with_debug; then
|
if [ "$LTO_SUPPORT" = "yes" ] && ! build_with_debug; then
|
||||||
|
@ -57,7 +57,7 @@ else
|
|||||||
PKG_FFMPEG_DEBUG="--disable-debug --enable-stripping"
|
PKG_FFMPEG_DEBUG="--disable-debug --enable-stripping"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
|
if [ "$PROJECT" = "RPi" ]; then
|
||||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
|
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ pre_configure_target() {
|
|||||||
cd $PKG_BUILD
|
cd $PKG_BUILD
|
||||||
rm -rf .$TARGET_NAME
|
rm -rf .$TARGET_NAME
|
||||||
|
|
||||||
if [ "$KODIPLAYER_DRIVER" = "bcm2835-driver" ]; then
|
if [ "$PROJECT" = "RPi" ]; then
|
||||||
PKG_FFMPEG_LIBS="-lbcm_host -lvcos -lvchiq_arm -lmmal -lmmal_core -lmmal_util -lvcsm"
|
PKG_FFMPEG_LIBS="-lbcm_host -lvcos -lvchiq_arm -lmmal -lmmal_core -lmmal_util -lvcsm"
|
||||||
PKG_FFMPEG_RPI="--enable-rpi"
|
PKG_FFMPEG_RPI="--enable-rpi"
|
||||||
else
|
else
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="bcm2835-bootloader"
|
PKG_NAME="bcm2835-bootloader"
|
||||||
PKG_VERSION="fd15e0700e45d9b7db83e30696aba299b9f2f31d"
|
PKG_VERSION="2b7c80a066c9d72dd0703f574ab2f27b3c1c3c3d"
|
||||||
PKG_SHA256="c9d32c2355ce4116206b3deae3e340545f345441c0c93ba2347971784fd327ff"
|
PKG_SHA256="76acf720350bac0458689f563947a51988617f4eb2e83334f5ef1565faa4e350"
|
||||||
PKG_ARCH="arm"
|
PKG_ARCH="arm"
|
||||||
PKG_LICENSE="nonfree"
|
PKG_LICENSE="nonfree"
|
||||||
PKG_SITE="http://www.broadcom.com"
|
PKG_SITE="http://www.broadcom.com"
|
||||||
@ -17,8 +17,13 @@ makeinstall_target() {
|
|||||||
mkdir -p $INSTALL/usr/share/bootloader
|
mkdir -p $INSTALL/usr/share/bootloader
|
||||||
cp -PRv LICENCE* $INSTALL/usr/share/bootloader
|
cp -PRv LICENCE* $INSTALL/usr/share/bootloader
|
||||||
cp -PRv bootcode.bin $INSTALL/usr/share/bootloader
|
cp -PRv bootcode.bin $INSTALL/usr/share/bootloader
|
||||||
cp -PRv fixup_x.dat $INSTALL/usr/share/bootloader/fixup.dat
|
if [ "$DEVICE" = "RPi4" ]; then
|
||||||
cp -PRv start_x.elf $INSTALL/usr/share/bootloader/start.elf
|
cp -PRv fixup4x.dat $INSTALL/usr/share/bootloader/fixup.dat
|
||||||
|
cp -PRv start4x.elf $INSTALL/usr/share/bootloader/start.elf
|
||||||
|
else
|
||||||
|
cp -PRv fixup_x.dat $INSTALL/usr/share/bootloader/fixup.dat
|
||||||
|
cp -PRv start_x.elf $INSTALL/usr/share/bootloader/start.elf
|
||||||
|
fi
|
||||||
|
|
||||||
find_file_path config/dt-blob.bin && cp -PRv $FOUND_PATH $INSTALL/usr/share/bootloader
|
find_file_path config/dt-blob.bin && cp -PRv $FOUND_PATH $INSTALL/usr/share/bootloader
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
mkdir -p $RELEASE_DIR/3rdparty/bootloader
|
mkdir -p $RELEASE_DIR/3rdparty/bootloader
|
||||||
cp -PR $BUILD/bcm2835-bootloader-*/LICENCE* $RELEASE_DIR/3rdparty/bootloader/
|
cp -PR $INSTALL/usr/share/bootloader/LICENCE* $RELEASE_DIR/3rdparty/bootloader/
|
||||||
cp -PR $BUILD/bcm2835-bootloader-*/bootcode.bin $RELEASE_DIR/3rdparty/bootloader/
|
cp -PR $INSTALL/usr/share/bootloader/bootcode.bin $RELEASE_DIR/3rdparty/bootloader/
|
||||||
cp -PR $BUILD/bcm2835-bootloader-*/fixup_x.dat $RELEASE_DIR/3rdparty/bootloader/fixup.dat
|
cp -PR $INSTALL/usr/share/bootloader/fixup.dat $RELEASE_DIR/3rdparty/bootloader/
|
||||||
cp -PR $BUILD/bcm2835-bootloader-*/start_x.elf $RELEASE_DIR/3rdparty/bootloader/start.elf
|
cp -PR $INSTALL/usr/share/bootloader/start.elf $RELEASE_DIR/3rdparty/bootloader/
|
||||||
if [ -f $(get_build_dir slice-firmware)/dt-blob.bin ]; then
|
if [ -f $(get_build_dir slice-firmware)/dt-blob.bin ]; then
|
||||||
cp -PR $(get_build_dir slice-firmware)/dt-blob.bin $RELEASE_DIR/3rdparty/bootloader/
|
cp -PR $(get_build_dir slice-firmware)/dt-blob.bin $RELEASE_DIR/3rdparty/bootloader/
|
||||||
fi
|
fi
|
||||||
|
@ -0,0 +1,400 @@
|
|||||||
|
From c13ba8541ba6701dc4a851ea0940884e2e6020f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||||
|
Date: Fri, 1 Mar 2019 15:58:44 +0000
|
||||||
|
Subject: [PATCH 1/5] add rpi4
|
||||||
|
|
||||||
|
---
|
||||||
|
bcmstat.sh | 32 ++++++++++++++++++--------------
|
||||||
|
1 file changed, 18 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bcmstat.sh b/bcmstat.sh
|
||||||
|
index fa8ee7e..b90392e 100755
|
||||||
|
--- a/bcmstat.sh
|
||||||
|
+++ b/bcmstat.sh
|
||||||
|
@@ -44,7 +44,7 @@ else:
|
||||||
|
|
||||||
|
GITHUB = "https://raw.github.com/MilhouseVH/bcmstat/master"
|
||||||
|
ANALYTICS = "http://goo.gl/edu1jG"
|
||||||
|
-VERSION = "0.5.1"
|
||||||
|
+VERSION = "0.5.2"
|
||||||
|
|
||||||
|
VCGENCMD = None
|
||||||
|
VCDBGCMD = None
|
||||||
|
@@ -60,7 +60,7 @@ SYSINFO = {}
|
||||||
|
# NEW 23: will be 1 for the new scheme, 0 for the old scheme
|
||||||
|
# MEMSIZE 20: 0=256M 1=512M 2=1G
|
||||||
|
# MANUFACTURER 16: 0=SONY 1=EGOMAN 2=EMBEST 3=SONY JAPAN 4=EMBEST
|
||||||
|
-# PROCESSOR 12: 0=2835 1=2836 2=2837
|
||||||
|
+# PROCESSOR 12: 0=2835 1=2836 2=2837, 3=2838
|
||||||
|
# TYPE 04: 0=MODELA 1=MODELB 2=MODELA+ 3=MODELB+ 4=Pi2 MODELB 5=ALPHA 6=CM 8=Pi3 9=Pi0 10=CM3 12=Pi0W
|
||||||
|
# REV 00: 0=REV0 1=REV1 2=REV2 3=REV3
|
||||||
|
|
||||||
|
@@ -84,10 +84,10 @@ class RPIHardware():
|
||||||
|
|
||||||
|
# Note: Some of these memory sizes and processors are fictional and relate to unannounced products - logic would
|
||||||
|
# dictate such products may exist at some point in the future, but it's only guesswork.
|
||||||
|
- self.memsizes = ["256MB", "512MB", "1GB", "2GB", "4GB"]
|
||||||
|
+ self.memsizes = ["256MB", "512MB", "1GB", "2GB", "4GB", "8GB"]
|
||||||
|
self.manufacturers = ["Sony UK", "Egoman", "Embest", "Sony Japan", "Embest", "Stadium"]
|
||||||
|
self.processors = ["2835", "2836", "2837", "2838", "2839", "2840"]
|
||||||
|
- self.models = ["Model A", "Model B", "Model A+", "Model B+", "Pi2 Model B", "Alpha", "CM1", "Unknown", "Pi3", "Pi0", "CM3", "Unknown", "Pi0 W", "Pi3 Model B+"]
|
||||||
|
+ self.models = ["Model A", "Model B", "Model A+", "Model B+", "Pi2 Model B", "Alpha", "CM1", "Unknown", "Pi3", "Pi0", "CM3", "Unknown", "Pi0 W", "Pi3 Model B+", "Pi3 Model A+", "Unknown", "CM3+", "Pi4 Model B"]
|
||||||
|
self.pcbs = ["Unknown", "Pi3 Rev1.0", "Pi3 Rev1.2", "Pi2 2837 Rev1.1", "Pi2 2836", "Pi1 B+ Rev 1.1", "Pi0", "Pi1 B Rev2.0", "Pi2 (2837) Rev1.0", "Pi0 W", "Pi2 (2837) Rev1.2", "Pi3 B+"]
|
||||||
|
|
||||||
|
self.set_rev_code(rev_code)
|
||||||
|
@@ -909,8 +909,8 @@ def ShowHeadings(display_flags, sysinfo):
|
||||||
|
HDR1 = "%s RX kB/s TX kB/s" % HDR1
|
||||||
|
HDR2 = "%s ======= =======" % HDR2
|
||||||
|
else:
|
||||||
|
- HDR1 = "%s RX B/s TX B/s" % HDR1
|
||||||
|
- HDR2 = "%s ========== ==========" % HDR2
|
||||||
|
+ HDR1 = "%s RX B/s TX B/s" % HDR1
|
||||||
|
+ HDR2 = "%s =========== ===========" % HDR2
|
||||||
|
|
||||||
|
if display_flags["utilisation"]:
|
||||||
|
HDR1 = "%s %%user %%nice %%sys %%idle %%iowt %%irq %%s/irq %%total" % HDR1
|
||||||
|
@@ -937,8 +937,12 @@ def ShowHeadings(display_flags, sysinfo):
|
||||||
|
HDR2 = "%s ===========" % HDR2
|
||||||
|
|
||||||
|
if display_flags["cpu_mem"]:
|
||||||
|
- HDR1 = "%s Mem Free / %%used" % HDR1
|
||||||
|
- HDR2 = "%s ================" % HDR2
|
||||||
|
+ if display_flags["human_readable"]:
|
||||||
|
+ HDR1 = "%s MemFreeMB / %%used" % HDR1
|
||||||
|
+ HDR2 = "%s =================" % HDR2
|
||||||
|
+ else:
|
||||||
|
+ HDR1 = "%s MemFreeKB / %%used" % HDR1
|
||||||
|
+ HDR2 = "%s =================" % HDR2
|
||||||
|
if display_flags["swap"]:
|
||||||
|
HDR1 = "%s(SwUse)" % HDR1
|
||||||
|
HDR2 = "%s=======" % HDR2
|
||||||
|
@@ -1025,8 +1029,8 @@ def ShowStats(display_flags, sysinfo, threshold, bcm2385, irq, network, cpuload,
|
||||||
|
else:
|
||||||
|
LINE = "%s %s %s" % \
|
||||||
|
(LINE,
|
||||||
|
- colourise(network[0], "%10s", 0.5e6, 2.5e6, 5.0e6, True),
|
||||||
|
- colourise(network[1], "%10s", 0.5e6, 2.5e6, 5.0e6, True))
|
||||||
|
+ colourise(network[0], "%11s", 0.5e6, 2.5e6, 5.0e6, True),
|
||||||
|
+ colourise(network[1], "%11s", 0.5e6, 2.5e6, 5.0e6, True))
|
||||||
|
|
||||||
|
if display_flags["utilisation"]:
|
||||||
|
LINE = "%s %s %s %s %s %s %s %s %s" % \
|
||||||
|
@@ -1071,12 +1075,12 @@ def ShowStats(display_flags, sysinfo, threshold, bcm2385, irq, network, cpuload,
|
||||||
|
if display_flags["human_readable"]:
|
||||||
|
LINE = "%s %s / %s" % \
|
||||||
|
(LINE,
|
||||||
|
- colourise(memory[1]/1024, "%5s MB", 60, 75, 85, True, compare=memory[2]),
|
||||||
|
- colourise(memory[2], "%4.1f%%", 60, 75, 85, False, compare=memory[2]))
|
||||||
|
+ colourise(memory[1]/1024, "%9s", 60, 75, 85, True, compare=memory[2]),
|
||||||
|
+ colourise(memory[2], "%4.1f%%", 60, 75, 85, False, compare=memory[2]))
|
||||||
|
else :
|
||||||
|
- LINE = "%s %s/%s" % \
|
||||||
|
+ LINE = "%s %s / %s" % \
|
||||||
|
(LINE,
|
||||||
|
- colourise(memory[1], "%7s kB", 60, 75, 85, True, compare=memory[2]),
|
||||||
|
+ colourise(memory[1], "%9s", 60, 75, 85, True, compare=memory[2]),
|
||||||
|
colourise(memory[2], "%4.1f%%", 60, 75, 85, False, compare=memory[2]))
|
||||||
|
|
||||||
|
# Swap memory
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
||||||
|
|
||||||
|
From 390cc573319fd918dc23ee78e4ab914b30965304 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||||
|
Date: Wed, 6 Mar 2019 11:44:40 +0000
|
||||||
|
Subject: [PATCH 2/5] irqs: don't fail if missing
|
||||||
|
|
||||||
|
---
|
||||||
|
bcmstat.sh | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/bcmstat.sh b/bcmstat.sh
|
||||||
|
index b90392e..3e13c97 100755
|
||||||
|
--- a/bcmstat.sh
|
||||||
|
+++ b/bcmstat.sh
|
||||||
|
@@ -452,7 +452,8 @@ def getIRQ(storage):
|
||||||
|
|
||||||
|
irq = 0
|
||||||
|
for i in grep("dwc", readfile("/proc/interrupts"), 1).split("\n"):
|
||||||
|
- irq += int(i)
|
||||||
|
+ if i:
|
||||||
|
+ irq += int(i)
|
||||||
|
|
||||||
|
storage[1] = (time.time(), irq)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
||||||
|
|
||||||
|
From 28ffb2a403af013ad2408dd6cfad485f01a9240b Mon Sep 17 00:00:00 2001
|
||||||
|
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||||
|
Date: Wed, 6 Mar 2019 12:29:29 +0000
|
||||||
|
Subject: [PATCH 3/5] irqs: accumulate all of them
|
||||||
|
|
||||||
|
---
|
||||||
|
bcmstat.sh | 18 ++++++++++++------
|
||||||
|
1 file changed, 12 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bcmstat.sh b/bcmstat.sh
|
||||||
|
index 3e13c97..1db3df4 100755
|
||||||
|
--- a/bcmstat.sh
|
||||||
|
+++ b/bcmstat.sh
|
||||||
|
@@ -447,13 +447,19 @@ def colourise(display, nformat, green, yellow, red, withcomma, compare=None, add
|
||||||
|
|
||||||
|
return nformat % cnum
|
||||||
|
|
||||||
|
-def getIRQ(storage):
|
||||||
|
+def getIRQ(storage, sysinfo):
|
||||||
|
storage[2] = storage[1]
|
||||||
|
|
||||||
|
+ nproc = sysinfo["nproc"]
|
||||||
|
irq = 0
|
||||||
|
- for i in grep("dwc", readfile("/proc/interrupts"), 1).split("\n"):
|
||||||
|
- if i:
|
||||||
|
- irq += int(i)
|
||||||
|
+ for line in grep(":", readfile("/proc/interrupts")).split("\n"):
|
||||||
|
+ fields = line.split(" ")
|
||||||
|
+ if fields[0] == "FIQ:":
|
||||||
|
+ continue
|
||||||
|
+ if fields[0] == "Err:":
|
||||||
|
+ break
|
||||||
|
+ for n in range(1, nproc + 1):
|
||||||
|
+ irq += int(fields[n])
|
||||||
|
|
||||||
|
storage[1] = (time.time(), irq)
|
||||||
|
|
||||||
|
@@ -1600,7 +1606,7 @@ def main(args):
|
||||||
|
HARDWARE.GetThresholdValues(UFT, STATS_THRESHOLD_CLEAR)
|
||||||
|
|
||||||
|
getBCM283X(BCM, STATS_WITH_VOLTS)
|
||||||
|
- getIRQ(IRQ)
|
||||||
|
+ getIRQ(IRQ, sysinfo)
|
||||||
|
getNetwork(NET, INTERFACE)
|
||||||
|
|
||||||
|
STATS_NETWORK = (NET[1][1] != "")
|
||||||
|
@@ -1655,7 +1661,7 @@ def main(args):
|
||||||
|
HARDWARE.GetThresholdValues(UFT, STATS_THRESHOLD_CLEAR)
|
||||||
|
|
||||||
|
getBCM283X(BCM, STATS_WITH_VOLTS)
|
||||||
|
- getIRQ(IRQ)
|
||||||
|
+ getIRQ(IRQ, sysinfo)
|
||||||
|
|
||||||
|
if STATS_NETWORK:
|
||||||
|
getNetwork(NET, INTERFACE)
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
||||||
|
|
||||||
|
From 19097fd9d91dd69ce05fe10957dfb72a2c470fcb Mon Sep 17 00:00:00 2001
|
||||||
|
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||||
|
Date: Fri, 26 Apr 2019 18:30:49 +0100
|
||||||
|
Subject: [PATCH 4/5] pmic: measure temp with option t
|
||||||
|
|
||||||
|
---
|
||||||
|
bcmstat.sh | 74 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
|
||||||
|
1 file changed, 58 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bcmstat.sh b/bcmstat.sh
|
||||||
|
index 1db3df4..50fa11c 100755
|
||||||
|
--- a/bcmstat.sh
|
||||||
|
+++ b/bcmstat.sh
|
||||||
|
@@ -51,7 +51,8 @@ VCDBGCMD = None
|
||||||
|
GPU_ALLOCATED_R = None
|
||||||
|
GPU_ALLOCATED_M = None
|
||||||
|
SUDO = ""
|
||||||
|
-TMAX = 0.0
|
||||||
|
+TCMAX = 0.0
|
||||||
|
+TPMAX = 0.0
|
||||||
|
LIMIT_TEMP = True
|
||||||
|
COLOUR = False
|
||||||
|
SYSINFO = {}
|
||||||
|
@@ -570,15 +571,27 @@ def getNetwork(storage, interface):
|
||||||
|
dTX = cTX - pTX
|
||||||
|
storage[0] = (dTime, [int(dRX/dTime), int(dTX/dTime), dRX, dTX])
|
||||||
|
|
||||||
|
-def getBCM283X(storage, STATS_WITH_VOLTS):
|
||||||
|
- global TMAX, LIMIT_TEMP
|
||||||
|
+def getBCM283X(storage, STATS_WITH_VOLTS, STATS_WITH_PMIC_TEMP):
|
||||||
|
+ global TCMAX, LIMIT_TEMP, TPMAX
|
||||||
|
#Grab temp - ignore temps of 85C as this seems to be an occasional aberration in the reading
|
||||||
|
tCore = float(readfile("/sys/class/thermal/thermal_zone0/temp"))
|
||||||
|
tCore = 0 if tCore < 0 else tCore
|
||||||
|
if LIMIT_TEMP:
|
||||||
|
- TMAX = tCore if (tCore > TMAX and tCore < 85000) else TMAX
|
||||||
|
+ TCMAX = tCore if (tCore > TCMAX and tCore < 85000) else TCMAX
|
||||||
|
else:
|
||||||
|
- TMAX = tCore if tCore > TMAX else TMAX
|
||||||
|
+ TCMAX = tCore if tCore > TCMAX else TCMAX
|
||||||
|
+
|
||||||
|
+ if STATS_WITH_PMIC_TEMP:
|
||||||
|
+ tPMIC = vcgencmd("measure_temp pmic", split=False)
|
||||||
|
+ if tPMIC.find("error") != -1:
|
||||||
|
+ tPMIC = None
|
||||||
|
+ tPMIC_MAX = None
|
||||||
|
+ else:
|
||||||
|
+ tPMIC = float(tPMIC.split("=")[1].replace("'C",""))
|
||||||
|
+ TPMAX = tPMIC if tPMIC > TPMAX else TPMAX
|
||||||
|
+ else:
|
||||||
|
+ tPMIC = None
|
||||||
|
+ tPMIC_MAX = None
|
||||||
|
|
||||||
|
if STATS_WITH_VOLTS:
|
||||||
|
volts = vcgencmd("measure_volts core")
|
||||||
|
@@ -594,8 +607,8 @@ def getBCM283X(storage, STATS_WITH_VOLTS):
|
||||||
|
[int(vcgencmd("measure_clock arm")) + 500000,
|
||||||
|
int(vcgencmd("measure_clock core")) + 500000,
|
||||||
|
int(vcgencmd("measure_clock h264")) + 500000,
|
||||||
|
- tCore,
|
||||||
|
- TMAX,
|
||||||
|
+ tCore, TCMAX,
|
||||||
|
+ tPMIC, TPMAX,
|
||||||
|
volts])
|
||||||
|
|
||||||
|
if storage[2][0] != 0:
|
||||||
|
@@ -908,8 +921,15 @@ def ShowHeadings(display_flags, sysinfo):
|
||||||
|
HDR1 = "%s Vcore " % HDR1
|
||||||
|
HDR2 = "%s ======" % HDR2
|
||||||
|
|
||||||
|
- HDR1 = "%s ARM Core H264 Core Temp (Max) IRQ/s" % HDR1
|
||||||
|
- HDR2 = "%s ======= ======= ======= =============== ======" % HDR2
|
||||||
|
+ HDR1 = "%s ARM Core H264 Core Temp (Max)" % HDR1
|
||||||
|
+ HDR2 = "%s ======= ======= ======= ===============" % HDR2
|
||||||
|
+
|
||||||
|
+ if display_flags["temp_pmic"]:
|
||||||
|
+ HDR1 = "%s PMIC Temp (Max)" % HDR1
|
||||||
|
+ HDR2 = "%s ===============" % HDR2
|
||||||
|
+
|
||||||
|
+ HDR1 = "%s IRQ/s" % HDR1
|
||||||
|
+ HDR2 = "%s ======" % HDR2
|
||||||
|
|
||||||
|
if display_flags["network"]:
|
||||||
|
if display_flags["human_readable"]:
|
||||||
|
@@ -1016,15 +1036,26 @@ def ShowStats(display_flags, sysinfo, threshold, bcm2385, irq, network, cpuload,
|
||||||
|
fTM = "%5.2fC" if bcm2385[4] < 100000 else "%5.1fC"
|
||||||
|
|
||||||
|
if display_flags["core_volts"]:
|
||||||
|
- LINE = "%s %s" % (LINE, bcm2385[5])
|
||||||
|
+ LINE = "%s %s" % (LINE, bcm2385[7])
|
||||||
|
|
||||||
|
- LINE = "%s %s %s %s %s (%s) %s" % \
|
||||||
|
+ LINE = "%s %s %s %s %s (%s)" % \
|
||||||
|
(LINE,
|
||||||
|
colourise(bcm2385[0]/1000000, "%4dMhz", arm_min, None, arm_max, False),
|
||||||
|
colourise(bcm2385[1]/1000000, "%4dMhz",core_min, None, core_max, False),
|
||||||
|
colourise(bcm2385[2]/1000000, "%4dMhz", 0, h264_min, h264_max, False),
|
||||||
|
colourise(bcm2385[3]/1000, fTC, 50.0, 70.0, 80.0, False),
|
||||||
|
- colourise(bcm2385[4]/1000, fTM, 50.0, 70.0, 80.0, False),
|
||||||
|
+ colourise(bcm2385[4]/1000, fTM, 50.0, 70.0, 80.0, False))
|
||||||
|
+
|
||||||
|
+ if display_flags["temp_pmic"]:
|
||||||
|
+ fTC = "%5.2fC" if bcm2385[5] < 100000 else "%5.1fC"
|
||||||
|
+ fTM = "%5.2fC" if bcm2385[6] < 100000 else "%5.1fC"
|
||||||
|
+ LINE = "%s %s (%s)" % \
|
||||||
|
+ (LINE,
|
||||||
|
+ colourise(bcm2385[5], fTC, 50.0, 70.0, 80.0, False),
|
||||||
|
+ colourise(bcm2385[6], fTM, 50.0, 70.0, 80.0, False))
|
||||||
|
+
|
||||||
|
+ LINE = "%s %s" % \
|
||||||
|
+ (LINE,
|
||||||
|
colourise(irq[0], "%6s", 500, 2500, 5000, True))
|
||||||
|
|
||||||
|
if display_flags["network"]:
|
||||||
|
@@ -1145,7 +1176,7 @@ def ShowStats(display_flags, sysinfo, threshold, bcm2385, irq, network, cpuload,
|
||||||
|
printn("\n%s" % LINE)
|
||||||
|
|
||||||
|
def ShowHelp():
|
||||||
|
- print("Usage: %s [c|m] [d#] [H#] [i <iface>] [k] [L|N|M] [y|Y] [x|X|r|R] [p|P] [T] [g|G] [f|F] [D][A] [s|S] [q|Q] [V|U|W|C] [Z] [h]" % os.path.basename(__file__))
|
||||||
|
+ print("Usage: %s [c|m] [d#] [H#] [i <iface>] [k] [L|N|M] [y|Y] [x|X|r|R] [p|P] [T] [t] [g|G] [f|F] [D][A] [s|S] [q|Q] [V|U|W|C] [Z] [h]" % os.path.basename(__file__))
|
||||||
|
print()
|
||||||
|
print("c Colourise output (white: minimal load or usage, then ascending through green, amber and red).")
|
||||||
|
print("m Monochrome output (no colourise)")
|
||||||
|
@@ -1168,6 +1199,7 @@ def ShowHelp():
|
||||||
|
print("D Show delta memory - negative: memory allocated, positive: memory freed")
|
||||||
|
print("A Show accumulated delta memory - negative: memory allocated, positive: memory freed")
|
||||||
|
print("T Maximum temperature is normally capped at 85C - use this option to disable temperature cap")
|
||||||
|
+ print("t Show PMIC temperature (if available, ignore if not)")
|
||||||
|
print()
|
||||||
|
print("V Check version")
|
||||||
|
print("U Update to latest version if an update is available")
|
||||||
|
@@ -1365,6 +1397,7 @@ def main(args):
|
||||||
|
STATS_THRESHOLD = False
|
||||||
|
STATS_THRESHOLD_CLEAR = False
|
||||||
|
STATS_WITH_VOLTS = False
|
||||||
|
+ STATS_WITH_PMIC_TEMP = False
|
||||||
|
STATS_CPU_MEM = False
|
||||||
|
STATS_UTILISATION = False
|
||||||
|
SIMPLE_UTILISATION = False
|
||||||
|
@@ -1495,6 +1528,9 @@ def main(args):
|
||||||
|
elif a1 == "T":
|
||||||
|
LIMIT_TEMP = False
|
||||||
|
|
||||||
|
+ elif a1 == "t":
|
||||||
|
+ STATS_WITH_PMIC_TEMP = True
|
||||||
|
+
|
||||||
|
elif a1 == "D":
|
||||||
|
STATS_DELTAS = True
|
||||||
|
|
||||||
|
@@ -1605,8 +1641,12 @@ def main(args):
|
||||||
|
if STATS_THRESHOLD:
|
||||||
|
HARDWARE.GetThresholdValues(UFT, STATS_THRESHOLD_CLEAR)
|
||||||
|
|
||||||
|
- getBCM283X(BCM, STATS_WITH_VOLTS)
|
||||||
|
+ getBCM283X(BCM, STATS_WITH_VOLTS, STATS_WITH_PMIC_TEMP)
|
||||||
|
+ if BCM[1][1][5] == None:
|
||||||
|
+ STATS_WITH_PMIC_TEMP = False
|
||||||
|
+
|
||||||
|
getIRQ(IRQ, sysinfo)
|
||||||
|
+
|
||||||
|
getNetwork(NET, INTERFACE)
|
||||||
|
|
||||||
|
STATS_NETWORK = (NET[1][1] != "")
|
||||||
|
@@ -1642,7 +1682,8 @@ def main(args):
|
||||||
|
"gpu_malloc": STATS_GPU_M,
|
||||||
|
"swap": (SWAP_ENABLED and INCLUDE_SWAP),
|
||||||
|
"deltas": STATS_DELTAS,
|
||||||
|
- "accumulated": STATS_ACCUMULATED}
|
||||||
|
+ "accumulated": STATS_ACCUMULATED,
|
||||||
|
+ "temp_pmic": STATS_WITH_PMIC_TEMP}
|
||||||
|
|
||||||
|
#Store peak values
|
||||||
|
PEAKVALUES = {"01#IRQ":0, "02#RX":0, "03#TX":0}
|
||||||
|
@@ -1660,7 +1701,8 @@ def main(args):
|
||||||
|
if STATS_THRESHOLD:
|
||||||
|
HARDWARE.GetThresholdValues(UFT, STATS_THRESHOLD_CLEAR)
|
||||||
|
|
||||||
|
- getBCM283X(BCM, STATS_WITH_VOLTS)
|
||||||
|
+ getBCM283X(BCM, STATS_WITH_VOLTS, STATS_WITH_PMIC_TEMP)
|
||||||
|
+
|
||||||
|
getIRQ(IRQ, sysinfo)
|
||||||
|
|
||||||
|
if STATS_NETWORK:
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
||||||
|
|
||||||
|
From 987ad9c3dd102df5c7f027f8fb0cbc6d7e989d79 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||||
|
Date: Tue, 11 Jun 2019 02:31:07 +0100
|
||||||
|
Subject: [PATCH 5/5] memory: treat SReclaimable as free mem
|
||||||
|
|
||||||
|
---
|
||||||
|
bcmstat.sh | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/bcmstat.sh b/bcmstat.sh
|
||||||
|
index 50fa11c..6a2a549 100755
|
||||||
|
--- a/bcmstat.sh
|
||||||
|
+++ b/bcmstat.sh
|
||||||
|
@@ -629,7 +629,7 @@ def getMemory(storage, include_swap):
|
||||||
|
|
||||||
|
for line in readfile("/proc/meminfo").split("\n"):
|
||||||
|
field_groups = re.search("^(.*):[ ]*([0-9]*) .*$", line)
|
||||||
|
- if field_groups.group(1) in ["MemFree", "Buffers", "Cached"]:
|
||||||
|
+ if field_groups.group(1) in ["MemFree", "Buffers", "Cached", "SReclaimable"]:
|
||||||
|
MEMFREE += int(field_groups.group(2))
|
||||||
|
elif field_groups.group(1) == "MemTotal":
|
||||||
|
MEMTOTAL = int(field_groups.group(2))
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch
|
38
projects/RPi/devices/RPi4/config/config.txt
Normal file
38
projects/RPi/devices/RPi4/config/config.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||||
|
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
################################################################################
|
||||||
|
# Bootloader configuration - config.txt
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Memory (System/GPU configuration )
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Default GPU memory split - at least 288M is needed for some 4k HEVC files
|
||||||
|
gpu_mem=320
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# For overclocking and various other settings, see:
|
||||||
|
# https://www.raspberrypi.org/documentation/configuration/config-txt.md
|
||||||
|
################################################################################
|
||||||
|
# Set 'force_turbo=1' to disable dynamic overclocking and enable overclocking always.
|
||||||
|
force_turbo=0
|
||||||
|
|
||||||
|
# Force HDMI even if unplugged or powered off
|
||||||
|
# hdmi_force_hotplug=1
|
||||||
|
|
||||||
|
# Doesn't sent initial active source message.
|
||||||
|
# Avoids bringing CEC (enabled TV) out of standby and channel switch when
|
||||||
|
# rebooting.
|
||||||
|
hdmi_ignore_cec_init=1
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# End of default configuration
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Include distribution specific config file if it exists.
|
||||||
|
################################################################################
|
||||||
|
[all]
|
||||||
|
include distroconfig.txt
|
6
projects/RPi/devices/RPi4/config/distroconfig.txt
Normal file
6
projects/RPi/devices/RPi4/config/distroconfig.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
# WARNING: DO NOT EDIT THIS FILE - IT WILL BE OVERWRITTEN WHEN UPGRADING!
|
||||||
|
dtoverlay=vc4-fkms-v3d
|
||||||
|
disable_overscan=1
|
14
projects/RPi/devices/RPi4/kodi/appliance.xml
Normal file
14
projects/RPi/devices/RPi4/kodi/appliance.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<settings version="1">
|
||||||
|
<section id="system">
|
||||||
|
<category id="display">
|
||||||
|
<group id="1">
|
||||||
|
<setting id="videoscreen.limitguisize">
|
||||||
|
<visible>true</visible>
|
||||||
|
<default>3</default>
|
||||||
|
</setting>
|
||||||
|
</group>
|
||||||
|
</category>
|
||||||
|
</section>
|
||||||
|
</settings>
|
||||||
|
|
5422
projects/RPi/devices/RPi4/linux/linux.arm.conf
Normal file
5422
projects/RPi/devices/RPi4/linux/linux.arm.conf
Normal file
File diff suppressed because it is too large
Load Diff
14
projects/RPi/devices/RPi4/options
Normal file
14
projects/RPi/devices/RPi4/options
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
################################################################################
|
||||||
|
# Device defaults
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# NOOBS supported hex versions (legacy)
|
||||||
|
NOOBS_HEX="1040,1041,2082"
|
||||||
|
|
||||||
|
# NOOBS supported model versions
|
||||||
|
NOOBS_SUPPORTED_MODELS='"Pi 4"'
|
||||||
|
|
||||||
|
OPENGLES="mesa"
|
||||||
|
GRAPHIC_DRIVERS="vc4"
|
||||||
|
KODIPLAYER_DRIVER="mesa"
|
||||||
|
unset KODI_VENDOR
|
File diff suppressed because it is too large
Load Diff
5273
projects/RPi/devices/RPi4/patches/kodi/kodi-001-hack-in-mmal.patch
Normal file
5273
projects/RPi/devices/RPi4/patches/kodi/kodi-001-hack-in-mmal.patch
Normal file
File diff suppressed because it is too large
Load Diff
206
projects/RPi/devices/RPi4/patches/kodi/kodi-002-add-pisink.patch
Normal file
206
projects/RPi/devices/RPi4/patches/kodi/kodi-002-add-pisink.patch
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
From 8f0d283542fa8c55f2a9cdd520271b0b471e3393 Mon Sep 17 00:00:00 2001
|
||||||
|
From: popcornmix <popcornmix@gmail.com>
|
||||||
|
Date: Mon, 10 Jun 2019 22:07:55 +0100
|
||||||
|
Subject: [PATCH] RBP: add PiSink
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/AudioEngine/CMakeLists.txt | 3 +++
|
||||||
|
xbmc/platform/linux/CMakeLists.txt | 10 +++++-----
|
||||||
|
xbmc/platform/linux/RBP.cpp | 24 ++++++++++++------------
|
||||||
|
xbmc/platform/linux/RBP.h | 22 +++++++++++-----------
|
||||||
|
xbmc/windowing/gbm/WinSystemGbm.cpp | 2 ++
|
||||||
|
5 files changed, 33 insertions(+), 28 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/AudioEngine/CMakeLists.txt b/xbmc/cores/AudioEngine/CMakeLists.txt
|
||||||
|
index 060c6a960d..e5b80cf54a 100644
|
||||||
|
--- a/xbmc/cores/AudioEngine/CMakeLists.txt
|
||||||
|
+++ b/xbmc/cores/AudioEngine/CMakeLists.txt
|
||||||
|
@@ -101,6 +101,9 @@ if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
|
||||||
|
Sinks/AESinkPi.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+ list(APPEND SOURCES Sinks/AESinkPi.cpp)
|
||||||
|
+ list(APPEND HEADERS Sinks/AESinkPi.h)
|
||||||
|
+
|
||||||
|
if(CORE_SYSTEM_NAME STREQUAL osx)
|
||||||
|
list(APPEND SOURCES Sinks/AESinkDARWINOSX.cpp
|
||||||
|
Sinks/osx/AEDeviceEnumerationOSX.cpp
|
||||||
|
diff --git a/xbmc/platform/linux/CMakeLists.txt b/xbmc/platform/linux/CMakeLists.txt
|
||||||
|
index 88076c3d5a..16cdd478be 100644
|
||||||
|
--- a/xbmc/platform/linux/CMakeLists.txt
|
||||||
|
+++ b/xbmc/platform/linux/CMakeLists.txt
|
||||||
|
@@ -39,7 +39,7 @@ if(DBUS_FOUND)
|
||||||
|
DBusUtil.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
|
||||||
|
+#if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
|
||||||
|
list(APPEND SOURCES RBP.cpp
|
||||||
|
OMXClock.cpp
|
||||||
|
OMXCore.cpp)
|
||||||
|
@@ -48,10 +48,10 @@ if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
|
||||||
|
DllOMX.h
|
||||||
|
OMXClock.h
|
||||||
|
OMXCore.h)
|
||||||
|
-else()
|
||||||
|
- list(APPEND SOURCES RBP.cpp)
|
||||||
|
- list(APPEND HEADERS RBP.h)
|
||||||
|
-endif()
|
||||||
|
+#else()
|
||||||
|
+# list(APPEND SOURCES RBP.cpp)
|
||||||
|
+# list(APPEND HEADERS RBP.h)
|
||||||
|
+#endif()
|
||||||
|
|
||||||
|
if(HAVE_SSE4_1)
|
||||||
|
add_subdirectory(sse4)
|
||||||
|
diff --git a/xbmc/platform/linux/RBP.cpp b/xbmc/platform/linux/RBP.cpp
|
||||||
|
index 6c045e9674..9ff4ed4e6f 100644
|
||||||
|
--- a/xbmc/platform/linux/RBP.cpp
|
||||||
|
+++ b/xbmc/platform/linux/RBP.cpp
|
||||||
|
@@ -68,13 +68,13 @@ typedef int vc_image_t_size_check[(sizeof(VC_IMAGE_T) == 64) * 2 - 1];
|
||||||
|
CRBP::CRBP()
|
||||||
|
{
|
||||||
|
m_initialized = false;
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
m_omx_initialized = false;
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
m_DllBcmHost = new DllBcmHost();
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
m_OMX = new COMXCore();
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
m_display = DISPMANX_NO_HANDLE;
|
||||||
|
m_mb = mbox_open();
|
||||||
|
vcsm_init();
|
||||||
|
@@ -103,11 +103,11 @@ bool CRBP::Initialize()
|
||||||
|
|
||||||
|
m_DllBcmHost->bcm_host_init();
|
||||||
|
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
m_omx_initialized = m_OMX->Initialize();
|
||||||
|
if(!m_omx_initialized)
|
||||||
|
return false;
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
|
||||||
|
char response[80] = "";
|
||||||
|
m_arm_mem = 0;
|
||||||
|
@@ -278,13 +278,13 @@ uint32_t CRBP::LastVsync()
|
||||||
|
|
||||||
|
void CRBP::Deinitialize()
|
||||||
|
{
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
- if (m_omx_image_init)
|
||||||
|
- g_OMXImage.Deinitialize();
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+// if (m_omx_image_init)
|
||||||
|
+// g_OMXImage.Deinitialize();
|
||||||
|
|
||||||
|
if(m_omx_initialized)
|
||||||
|
m_OMX->Deinitialize();
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
|
||||||
|
m_DllBcmHost->bcm_host_deinit();
|
||||||
|
|
||||||
|
@@ -295,9 +295,9 @@ void CRBP::Deinitialize()
|
||||||
|
m_omx_image_init = false;
|
||||||
|
#endif
|
||||||
|
m_initialized = false;
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
m_omx_initialized = false;
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
if (m_mb)
|
||||||
|
mbox_close(m_mb);
|
||||||
|
m_mb = 0;
|
||||||
|
diff --git a/xbmc/platform/linux/RBP.h b/xbmc/platform/linux/RBP.h
|
||||||
|
index 63e02a1826..d3f46d34a1 100644
|
||||||
|
--- a/xbmc/platform/linux/RBP.h
|
||||||
|
+++ b/xbmc/platform/linux/RBP.h
|
||||||
|
@@ -19,9 +19,9 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "DllBCM.h"
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
#include "OMXCore.h"
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
#include "xbmc/utils/CPUInfo.h"
|
||||||
|
#include "threads/CriticalSection.h"
|
||||||
|
#include "threads/Event.h"
|
||||||
|
@@ -97,9 +97,9 @@ public:
|
||||||
|
int GetGUIResolutionLimit() { return m_gui_resolution_limit; }
|
||||||
|
// stride can be null for packed output
|
||||||
|
unsigned char *CaptureDisplay(int width, int height, int *stride, bool swap_red_blue, bool video_only = true);
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
DllOMX *GetDllOMX() { return m_OMX ? m_OMX->GetDll() : NULL; }
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
uint32_t LastVsync(int64_t &time);
|
||||||
|
uint32_t LastVsync();
|
||||||
|
uint32_t WaitVsync(uint32_t target = ~0U);
|
||||||
|
@@ -110,26 +110,26 @@ public:
|
||||||
|
private:
|
||||||
|
DllBcmHost *m_DllBcmHost;
|
||||||
|
bool m_initialized;
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
bool m_omx_initialized;
|
||||||
|
- bool m_omx_image_init;
|
||||||
|
-#endif
|
||||||
|
+ //bool m_omx_image_init;
|
||||||
|
+//#endif
|
||||||
|
int m_arm_mem;
|
||||||
|
int m_gpu_mem;
|
||||||
|
int m_gui_resolution_limit;
|
||||||
|
bool m_codec_mpg2_enabled;
|
||||||
|
bool m_codec_wvc1_enabled;
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
COMXCore *m_OMX;
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
DISPMANX_DISPLAY_HANDLE_T m_display;
|
||||||
|
CCriticalSection m_vsync_lock;
|
||||||
|
XbmcThreads::ConditionVariable m_vsync_cond;
|
||||||
|
uint32_t m_vsync_count;
|
||||||
|
int64_t m_vsync_time;
|
||||||
|
-#ifdef TARGET_RASPBERRY_PI
|
||||||
|
+//#ifdef TARGET_RASPBERRY_PI
|
||||||
|
class DllLibOMXCore;
|
||||||
|
-#endif
|
||||||
|
+//#endif
|
||||||
|
CCriticalSection m_critSection;
|
||||||
|
|
||||||
|
int m_mb;
|
||||||
|
diff --git a/xbmc/windowing/gbm/WinSystemGbm.cpp b/xbmc/windowing/gbm/WinSystemGbm.cpp
|
||||||
|
index 9ad1f2daf1..418e0cf8b1 100644
|
||||||
|
--- a/xbmc/windowing/gbm/WinSystemGbm.cpp
|
||||||
|
+++ b/xbmc/windowing/gbm/WinSystemGbm.cpp
|
||||||
|
@@ -25,6 +25,7 @@
|
||||||
|
#include "DRMLegacy.h"
|
||||||
|
#include "OffScreenModeSetting.h"
|
||||||
|
#include "messaging/ApplicationMessenger.h"
|
||||||
|
+#include "cores/AudioEngine/Sinks/AESinkPi.h"
|
||||||
|
|
||||||
|
using namespace KODI::WINDOWING::GBM;
|
||||||
|
|
||||||
|
@@ -33,6 +34,7 @@ CWinSystemGbm::CWinSystemGbm() :
|
||||||
|
m_GBM(new CGBMUtils),
|
||||||
|
m_libinput(new CLibInputHandler)
|
||||||
|
{
|
||||||
|
+ CAESinkPi::Register();
|
||||||
|
OPTIONALS::ALSARegister();
|
||||||
|
OPTIONALS::PulseAudioRegister();
|
||||||
|
|
||||||
|
--
|
||||||
|
2.20.1
|
||||||
|
|
@ -0,0 +1,150 @@
|
|||||||
|
From b2ad605c9ae4b3e8bf5447562aea095fa094e66a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonas Karlman <jonas@kwiboo.se>
|
||||||
|
Date: Thu, 30 May 2019 21:36:32 +0000
|
||||||
|
Subject: [PATCH] windowing/gbm: add option to limit gui size
|
||||||
|
|
||||||
|
---
|
||||||
|
.../resources/strings.po | 44 ++++++++++++++++++-
|
||||||
|
system/settings/gbm.xml | 15 +++++++
|
||||||
|
xbmc/windowing/gbm/DRMUtils.cpp | 33 +++++++++++++-
|
||||||
|
3 files changed, 90 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
index 9c9161a99323..11cdf4aba26c 100644
|
||||||
|
--- a/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
+++ b/addons/resource.language.en_gb/resources/strings.po
|
||||||
|
@@ -7266,7 +7266,49 @@ msgctxt "#13465"
|
||||||
|
msgid "EGL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
-#empty strings from id 13466 to 13504
|
||||||
|
+#. Option for setting Limit GUI Size
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13466"
|
||||||
|
+msgid "Limit GUI Size"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. Description of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13467"
|
||||||
|
+msgid "This option limits GUI size for screen resolutions above 1080p. Requires restart."
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. String for options 1 of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13468"
|
||||||
|
+msgid "No limit"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. String for options 2 of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13469"
|
||||||
|
+msgid "720p"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. String for options 3 of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13470"
|
||||||
|
+msgid "1080p / 720p (>30hz)"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. String for options 4 of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13471"
|
||||||
|
+msgid "1080p"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#. String for options 5 of setting with label #13466 "Limit GUI Size"
|
||||||
|
+#: system/settings/gbm.xml
|
||||||
|
+msgctxt "#13472"
|
||||||
|
+msgid "No limit / 1080p (>30hz)"
|
||||||
|
+msgstr ""
|
||||||
|
+
|
||||||
|
+#empty strings from id 13473 to 13504
|
||||||
|
|
||||||
|
#: system/settings/settings.xml
|
||||||
|
msgctxt "#13505"
|
||||||
|
diff --git a/system/settings/gbm.xml b/system/settings/gbm.xml
|
||||||
|
index c5e4d98e0bef..6492b08ef5f2 100644
|
||||||
|
--- a/system/settings/gbm.xml
|
||||||
|
+++ b/system/settings/gbm.xml
|
||||||
|
@@ -41,6 +41,21 @@
|
||||||
|
<setting id="videoscreen.screen">
|
||||||
|
<visible>false</visible>
|
||||||
|
</setting>
|
||||||
|
+ <setting id="videoscreen.limitguisize" type="integer" label="13466" help="13467">
|
||||||
|
+ <visible>false</visible>
|
||||||
|
+ <level>3</level>
|
||||||
|
+ <default>0</default>
|
||||||
|
+ <constraints>
|
||||||
|
+ <options>
|
||||||
|
+ <option label="13468">0</option> <!-- No limit -->
|
||||||
|
+ <option label="13469">1</option> <!-- 720p -->
|
||||||
|
+ <option label="13470">2</option> <!-- 1080p / 720p (>30hz) -->
|
||||||
|
+ <option label="13471">3</option> <!-- 1080p -->
|
||||||
|
+ <option label="13472">4</option> <!-- No limit / 1080p (>30hz) -->
|
||||||
|
+ </options>
|
||||||
|
+ </constraints>
|
||||||
|
+ <control type="list" format="string" />
|
||||||
|
+ </setting>
|
||||||
|
<setting id="videoscreen.limitedrange" type="boolean" label="36042" help="36359">
|
||||||
|
<level>3</level>
|
||||||
|
<default>false</default>
|
||||||
|
diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp
|
||||||
|
index 48f0bc40bcf9..c6031bf67c41 100644
|
||||||
|
--- a/xbmc/windowing/gbm/DRMUtils.cpp
|
||||||
|
+++ b/xbmc/windowing/gbm/DRMUtils.cpp
|
||||||
|
@@ -17,14 +17,21 @@
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "platform/linux/XTimeUtils.h"
|
||||||
|
-#include "utils/log.h"
|
||||||
|
+#include "settings/Settings.h"
|
||||||
|
+#include "settings/SettingsComponent.h"
|
||||||
|
#include "utils/StringUtils.h"
|
||||||
|
+#include "utils/log.h"
|
||||||
|
#include "windowing/GraphicContext.h"
|
||||||
|
|
||||||
|
#include "DRMUtils.h"
|
||||||
|
|
||||||
|
using namespace KODI::WINDOWING::GBM;
|
||||||
|
|
||||||
|
+namespace
|
||||||
|
+{
|
||||||
|
+const std::string SETTING_VIDEOSCREEN_LIMITGUISIZE = "videoscreen.limitguisize";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
CDRMUtils::CDRMUtils()
|
||||||
|
: m_connector(new connector)
|
||||||
|
, m_encoder(new encoder)
|
||||||
|
@@ -762,6 +769,30 @@ RESOLUTION_INFO CDRMUtils::GetResolutionInfo(drmModeModeInfoPtr mode)
|
||||||
|
res.iWidth = res.iScreenWidth;
|
||||||
|
res.iHeight = res.iScreenHeight;
|
||||||
|
|
||||||
|
+ int limit = CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(SETTING_VIDEOSCREEN_LIMITGUISIZE);
|
||||||
|
+ if (limit > 0 && res.iScreenWidth > 1920 && res.iScreenHeight > 1080)
|
||||||
|
+ {
|
||||||
|
+ switch (limit)
|
||||||
|
+ {
|
||||||
|
+ case 1: // 720p
|
||||||
|
+ res.iWidth = 1280;
|
||||||
|
+ res.iHeight = 720;
|
||||||
|
+ break;
|
||||||
|
+ case 2: // 1080p / 720p (>30hz)
|
||||||
|
+ res.iWidth = mode->vrefresh > 30 ? 1280 : 1920;
|
||||||
|
+ res.iHeight = mode->vrefresh > 30 ? 720 : 1080;
|
||||||
|
+ break;
|
||||||
|
+ case 3: // 1080p
|
||||||
|
+ res.iWidth = 1920;
|
||||||
|
+ res.iHeight = 1080;
|
||||||
|
+ break;
|
||||||
|
+ case 4: // No limit / 1080p (>30hz)
|
||||||
|
+ res.iWidth = mode->vrefresh > 30 ? 1920 : res.iScreenWidth;
|
||||||
|
+ res.iHeight = mode->vrefresh > 30 ? 1080 : res.iScreenHeight;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (mode->clock % 5 != 0)
|
||||||
|
res.fRefreshRate = static_cast<float>(mode->vrefresh) * (1000.0f/1001.0f);
|
||||||
|
else
|
@ -0,0 +1 @@
|
|||||||
|
../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch
|
@ -0,0 +1 @@
|
|||||||
|
../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch
|
@ -0,0 +1,37 @@
|
|||||||
|
<confdir:pcm/iec958.conf>
|
||||||
|
bcm2835_alsa.pcm.iec958.0 {
|
||||||
|
@args [ CARD AES0 AES1 AES2 AES3 ]
|
||||||
|
@args.CARD {
|
||||||
|
type string
|
||||||
|
}
|
||||||
|
@args.AES0 {
|
||||||
|
type integer
|
||||||
|
}
|
||||||
|
@args.AES1 {
|
||||||
|
type integer
|
||||||
|
}
|
||||||
|
@args.AES2 {
|
||||||
|
type integer
|
||||||
|
}
|
||||||
|
@args.AES3 {
|
||||||
|
type integer
|
||||||
|
}
|
||||||
|
type hooks
|
||||||
|
slave.pcm {
|
||||||
|
type hw
|
||||||
|
card $CARD
|
||||||
|
device 1
|
||||||
|
}
|
||||||
|
hooks.0 {
|
||||||
|
type ctl_elems
|
||||||
|
hook_args [
|
||||||
|
{
|
||||||
|
interface PCM
|
||||||
|
name "IEC958 Playback Default"
|
||||||
|
lock true
|
||||||
|
preserve true
|
||||||
|
value [ $AES0 $AES1 $AES2 $AES3 ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -12,6 +12,9 @@
|
|||||||
TARGET_CPU="arm1176jzf-s"
|
TARGET_CPU="arm1176jzf-s"
|
||||||
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
|
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
|
||||||
TARGET_CPU="cortex-a7"
|
TARGET_CPU="cortex-a7"
|
||||||
|
elif [ "$DEVICE" = "RPi4" ]; then
|
||||||
|
TARGET_CPU="cortex-a53"
|
||||||
|
TARGET_CPU_FLAGS="+crc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TARGET_FLOAT:
|
# TARGET_FLOAT:
|
||||||
@ -27,6 +30,8 @@
|
|||||||
TARGET_FPU="vfp"
|
TARGET_FPU="vfp"
|
||||||
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
|
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
|
||||||
TARGET_FPU="neon-vfpv4"
|
TARGET_FPU="neon-vfpv4"
|
||||||
|
elif [ "$DEVICE" = "RPi4" ]; then
|
||||||
|
TARGET_FPU="neon-fp-armv8"
|
||||||
fi
|
fi
|
||||||
TARGET_FEATURES="32bit"
|
TARGET_FEATURES="32bit"
|
||||||
;;
|
;;
|
||||||
@ -116,7 +121,7 @@
|
|||||||
# for a list of additional drivers see packages/linux-drivers
|
# for a list of additional drivers see packages/linux-drivers
|
||||||
# Space separated list is supported,
|
# Space separated list is supported,
|
||||||
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
|
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
|
||||||
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS rpi-cirrus-config"
|
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS rpi-cirrus-config bcm2835-driver"
|
||||||
|
|
||||||
# build and install driver addons (yes / no)
|
# build and install driver addons (yes / no)
|
||||||
DRIVER_ADDONS_SUPPORT="yes"
|
DRIVER_ADDONS_SUPPORT="yes"
|
||||||
|
@ -389,11 +389,11 @@ if [ "${1}" = "release" -o "${1}" = "mkimage" -o "${1}" = "noobs" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy Bootloader
|
# Copy Bootloader
|
||||||
cp -PR ${BUILD}/bcm2835-bootloader-*/LICENCE* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
cp -PR ${INSTALL}/usr/share/bootloader/LICENCE* ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
||||||
cp -PR ${BUILD}/bcm2835-bootloader-*/bootcode.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
cp -PR ${INSTALL}/usr/share/bootloader/bootcode.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
||||||
cp -PR ${BUILD}/bcm2835-bootloader-*/fixup_x.dat ${RELEASE_DIR}/${NOOBS_DISTRO}/System/fixup.dat
|
cp -PR ${INSTALL}/usr/share/bootloader/fixup.dat ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
||||||
cp -PR ${BUILD}/bcm2835-bootloader-*/start_x.elf ${RELEASE_DIR}/${NOOBS_DISTRO}/System/start.elf
|
cp -PR ${INSTALL}/usr/share/bootloader/start.elf ${RELEASE_DIR}/${NOOBS_DISTRO}/System/
|
||||||
[ -f ${BUILD}/bcm2835-bootloader-*/dt-blob.bin ] && cp -PR ${BUILD}/bcm2835-bootloader-*/dt-blob.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/dt-blob.bin
|
[ -f ${INSTALL}/usr/share/bootloader/dt-blob.bin ] && cp -PR ${INSTALL}/usr/share/bootloader/dt-blob.bin ${RELEASE_DIR}/${NOOBS_DISTRO}/System/dt-blob.bin
|
||||||
|
|
||||||
# Copy system files
|
# Copy system files
|
||||||
cp ${TARGET_IMG}/${IMAGE_NAME}.system ${RELEASE_DIR}/${NOOBS_DISTRO}/System/SYSTEM
|
cp ${TARGET_IMG}/${IMAGE_NAME}.system ${RELEASE_DIR}/${NOOBS_DISTRO}/System/SYSTEM
|
||||||
|
Loading…
x
Reference in New Issue
Block a user