mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 14:16:40 +00:00
busybox: add script to modify edid override with RPi bootloader
The script supports two operations: "set" enables initramfs cpio in config.txt and adds edid and video override kernel options for the specified connectors to cmdline.txt "delete" removes edid.cpio initramfs loading in config.txt and removes all edid override and video options from cmdline.txt Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
parent
a02a2e8b51
commit
f962a4b2b6
@ -128,6 +128,9 @@ makeinstall_target() {
|
||||
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
|
||||
fi
|
||||
cp ${PKG_DIR}/scripts/createlog ${INSTALL}/usr/bin/
|
||||
cp ${PKG_DIR}/scripts/dthelper ${INSTALL}/usr/bin
|
||||
ln -sf dthelper ${INSTALL}/usr/bin/dtfile
|
||||
|
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