mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 21:56:42 +00:00
Merge pull request #5264 from HiassofT/le10-edid-cpio
busybox: add getedid script for RPi
This commit is contained in:
commit
51e371ee01
@ -122,7 +122,16 @@ makeinstall_host() {
|
|||||||
|
|
||||||
makeinstall_target() {
|
makeinstall_target() {
|
||||||
mkdir -p ${INSTALL}/usr/bin
|
mkdir -p ${INSTALL}/usr/bin
|
||||||
[ ${TARGET_ARCH} = x86_64 ] && cp ${PKG_DIR}/scripts/getedid ${INSTALL}/usr/bin
|
if [ ${TARGET_ARCH} = x86_64 ]; then
|
||||||
|
cp ${PKG_DIR}/scripts/getedid ${INSTALL}/usr/bin
|
||||||
|
else
|
||||||
|
cp ${PKG_DIR}/scripts/dump-active-edids-drm ${INSTALL}/usr/bin/dump-active-edids
|
||||||
|
fi
|
||||||
|
cp ${PKG_DIR}/scripts/create-edid-cpio ${INSTALL}/usr/bin/
|
||||||
|
if [ "${PROJECT}" = "RPi" ]; then
|
||||||
|
cp ${PKG_DIR}/scripts/update-bootloader-edid-rpi ${INSTALL}/usr/bin/update-bootloader-edid
|
||||||
|
cp ${PKG_DIR}/scripts/getedid-drm ${INSTALL}/usr/bin/getedid
|
||||||
|
fi
|
||||||
cp ${PKG_DIR}/scripts/createlog ${INSTALL}/usr/bin/
|
cp ${PKG_DIR}/scripts/createlog ${INSTALL}/usr/bin/
|
||||||
cp ${PKG_DIR}/scripts/dthelper ${INSTALL}/usr/bin
|
cp ${PKG_DIR}/scripts/dthelper ${INSTALL}/usr/bin
|
||||||
ln -sf dthelper ${INSTALL}/usr/bin/dtfile
|
ln -sf dthelper ${INSTALL}/usr/bin/dtfile
|
||||||
|
36
packages/sysutils/busybox/scripts/create-edid-cpio
Executable file
36
packages/sysutils/busybox/scripts/create-edid-cpio
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
EDID_DIR="/storage/.config/firmware/edid"
|
||||||
|
EDID_CPIO="/flash/edid.cpio"
|
||||||
|
TMPDIR="/tmp/edid-cpio"
|
||||||
|
|
||||||
|
if [ "$1" = "-q" ]; then
|
||||||
|
VERBOSE=0
|
||||||
|
else
|
||||||
|
VERBOSE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "${EDID_DIR}" ]; then
|
||||||
|
echo "error: ${EDID_DIR} does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
rm -rf "${TMPDIR}"
|
||||||
|
mkdir -p "${TMPDIR}/usr/lib/firmware"
|
||||||
|
cp -r "${EDID_DIR}" "${TMPDIR}/usr/lib/firmware"
|
||||||
|
cd "${TMPDIR}"
|
||||||
|
mount -o remount,rw /flash
|
||||||
|
find usr -print | cpio -ov -H newc > "${EDID_CPIO}"
|
||||||
|
sync
|
||||||
|
mount -o remount,ro /flash
|
||||||
|
cd /storage
|
||||||
|
rm -rf "${TMPDIR}"
|
||||||
|
|
||||||
|
if [ "${VERBOSE}" = "1" ]; then
|
||||||
|
echo "successfully created ${EDID_CPIO}"
|
||||||
|
fi
|
42
packages/sysutils/busybox/scripts/dump-active-edids-drm
Executable file
42
packages/sysutils/busybox/scripts/dump-active-edids-drm
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
EDID_DIR="/storage/.config/firmware/edid"
|
||||||
|
CONNECTORS=""
|
||||||
|
|
||||||
|
if [ "$1" = "-q" ]; then
|
||||||
|
VERBOSE=0
|
||||||
|
else
|
||||||
|
VERBOSE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
info() {
|
||||||
|
[ "${VERBOSE}" = "1" ] && echo "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p "${EDID_DIR}"
|
||||||
|
|
||||||
|
for c in /sys/class/drm/card?-* ; do
|
||||||
|
[ ! -d "$c" ] && continue
|
||||||
|
[ ! -e "$c/status" ] && continue
|
||||||
|
|
||||||
|
if [ $(cat $c/status 2>/dev/null) = "connected" ]; then
|
||||||
|
CONNECTOR=$(basename $c | cut -c 7-)
|
||||||
|
EDID_NAME="edid-${CONNECTOR}.bin"
|
||||||
|
cat $c/edid > "${EDID_DIR}/${EDID_NAME}" 2>/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
[ -n "${CONNECTORS}" ] && CONNECTORS="${CONNECTORS} "
|
||||||
|
CONNECTORS="${CONNECTORS}${CONNECTOR}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${CONNECTORS}" ]; then
|
||||||
|
info "error: no active connectors found"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
info "found active connector(s) ${CONNECTORS}"
|
||||||
|
[ "${VERBOSE}" = "0" ] && echo "${CONNECTORS}"
|
||||||
|
fi
|
55
packages/sysutils/busybox/scripts/getedid-drm
Executable file
55
packages/sysutils/busybox/scripts/getedid-drm
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "$0 create|delete|help"
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_edid() {
|
||||||
|
update-bootloader-edid delete
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "successfully removed edid override"
|
||||||
|
else
|
||||||
|
echo "error removing bootloader edid-override options"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_edid() {
|
||||||
|
CONNECTORS=$(dump-active-edids -q)
|
||||||
|
if [ $? -ne 0 -o -z "${CONNECTORS}" ]; then
|
||||||
|
echo "error: cannot detemine active connectors"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
create-edid-cpio -q
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "error creating edid.cpio"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
update-bootloader-edid set ${CONNECTORS}
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "successfully installed edid override for ${CONNECTORS}"
|
||||||
|
else
|
||||||
|
echo "error setting bootloader edid-override options"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
create)
|
||||||
|
shift
|
||||||
|
create_edid "$@"
|
||||||
|
;;
|
||||||
|
delete)
|
||||||
|
delete_edid
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
95
packages/sysutils/busybox/scripts/update-bootloader-edid-rpi
Executable file
95
packages/sysutils/busybox/scripts/update-bootloader-edid-rpi
Executable file
@ -0,0 +1,95 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
|
EDID_DIR="/storage/.config/firmware/edid"
|
||||||
|
EDID_CPIO="/flash/edid.cpio"
|
||||||
|
CONFIG_TXT="/flash/config.txt"
|
||||||
|
CMDLINE_TXT="/flash/cmdline.txt"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "$0 set CONNECTOR... | delete | help"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_args() {
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "error: no connector(s) specified!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -f "${EDID_CPIO}" ]; then
|
||||||
|
echo "error: ${EDID_CPIO} not present"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
for conn in "$@"; do
|
||||||
|
if [ ! -f "${EDID_DIR}/edid-${conn}.bin" ]; then
|
||||||
|
echo "error: ${EDID_DIR}/edid-${conn}.bin not present"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup_config_txt() {
|
||||||
|
sed -i "/^initramfs edid\.cpio/d" ${CONFIG_TXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cleaned_cmdline_txt() {
|
||||||
|
sed \
|
||||||
|
-e 's| drm\.edid_firmware=[^ ]*||g' \
|
||||||
|
-e 's| video=[^ ]*||g' \
|
||||||
|
${CMDLINE_TXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_initramfs() {
|
||||||
|
# make sure config.txt ends with a newline
|
||||||
|
if [ "$(tail -c 1 ${CONFIG_TXT} | tr -c -d '\n' | tr '\n' 'X')" != "X" ]; then
|
||||||
|
echo "" >> ${CONFIG_TXT}
|
||||||
|
fi
|
||||||
|
echo "initramfs edid.cpio" >> ${CONFIG_TXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_cmdline() {
|
||||||
|
CMDLINE=$(get_cleaned_cmdline_txt)
|
||||||
|
FIRMWARE=""
|
||||||
|
VIDEO=""
|
||||||
|
for conn in "$@"; do
|
||||||
|
VIDEO="${VIDEO} video=${conn}:D"
|
||||||
|
[ -n "${FIRMWARE}" ] && FIRMWARE="${FIRMWARE},"
|
||||||
|
FIRMWARE="${FIRMWARE}${conn}:edid/edid-${conn}.bin"
|
||||||
|
done
|
||||||
|
echo "${CMDLINE} drm.edid_firmware=${FIRMWARE}${VIDEO}" > ${CMDLINE_TXT}
|
||||||
|
}
|
||||||
|
|
||||||
|
set_edids() {
|
||||||
|
check_args "$@"
|
||||||
|
mount -o remount,rw /flash
|
||||||
|
cleanup_config_txt
|
||||||
|
add_initramfs
|
||||||
|
add_cmdline "$@"
|
||||||
|
mount -o remount,ro /flash
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_edids() {
|
||||||
|
mount -o remount,rw /flash
|
||||||
|
cleanup_config_txt
|
||||||
|
CMDLINE=$(get_cleaned_cmdline_txt)
|
||||||
|
echo "${CMDLINE}" > ${CMDLINE_TXT}
|
||||||
|
mount -o remount,ro /flash
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
set)
|
||||||
|
shift
|
||||||
|
set_edids "$@"
|
||||||
|
;;
|
||||||
|
delete)
|
||||||
|
delete_edids
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
x
Reference in New Issue
Block a user