summaryrefslogtreecommitdiff
path: root/recipes-graphics
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2023-01-19 10:19:43 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2023-01-25 16:21:24 +0100
commit10f18204aab6ceeee00e3307b8dfe20dfd129f20 (patch)
treee8c22227bea7e14b9eac637cd897ac046835c519 /recipes-graphics
parent8e91c3531a990e94aacdfb2257df96be2778c857 (diff)
weston.init: import from meta-arago
- Move the am62xx specific files into their own directory so that they do not clash with files of the same name used by other architectures. - Additionally explicitely set the weston backend to drm. - Additionally set the idle timeout to 0 in weston.ini, i.e. disable that functionality. - Start weston through a systemd service. Related-to: ELB-4978 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Diffstat (limited to 'recipes-graphics')
-rw-r--r--recipes-graphics/wayland/weston-init.bbappend22
-rw-r--r--recipes-graphics/wayland/weston-init/am62xx/init129
-rw-r--r--recipes-graphics/wayland/weston-init/am62xx/runWeston39
-rw-r--r--recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh12
-rw-r--r--recipes-graphics/wayland/weston-init/am62xx/weston.ini12
5 files changed, 214 insertions, 0 deletions
diff --git a/recipes-graphics/wayland/weston-init.bbappend b/recipes-graphics/wayland/weston-init.bbappend
new file mode 100644
index 0000000..8c6ab12
--- /dev/null
+++ b/recipes-graphics/wayland/weston-init.bbappend
@@ -0,0 +1,22 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+PR:append:am62xx = ".arago12"
+
+PACKAGECONFIG:append:am62xx:tdx = " no-idle-timeout"
+
+SRC_URI:append:am62xx = " \
+ file://runWeston \
+ file://wayland_env.sh \
+ file://weston.ini \
+"
+
+do_install:append:am62xx () {
+ install -d ${D}${bindir}
+ install -m 755 ${WORKDIR}/runWeston ${D}${bindir}
+
+ install -d ${D}${sysconfdir}/profile.d
+ install -m 0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/wayland_env.sh ${D}${sysconfdir}/profile.d/
+}
+
+FILES:${PN}:append:am62xx = "${sysconfdir}/profile.d/* ${sysconfdir}/weston.ini"
diff --git a/recipes-graphics/wayland/weston-init/am62xx/init b/recipes-graphics/wayland/weston-init/am62xx/init
new file mode 100644
index 0000000..fa3f037
--- /dev/null
+++ b/recipes-graphics/wayland/weston-init/am62xx/init
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+### BEGIN INIT INFO
+# Provides: weston
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+killproc() {
+ all_pids=`/bin/pidof $1`
+
+ # busybox pidof doesn't ommit the current pid
+ # as this script is called weston on the target
+ # in thinlinux with a busybox based utility load
+ # later killproc operations end up killing this
+ # script.
+ for pid in $all_pids
+ do
+ if [ "$pid" != "$$" ]; then
+ kill_pids+=$pid
+ fi
+ done
+
+ [ "$kill_pids" != "" ] && kill $kill_pids
+}
+
+read CMDLINE < /proc/cmdline
+for x in $CMDLINE; do
+ case $x in
+ weston=false)
+ echo "Weston disabled"
+ exit 0;
+ ;;
+ esac
+done
+
+case "$1" in
+ start)
+ . /etc/profile
+
+ # Weston for some reason dies if these environment variables are set
+ unset WAYLAND_DISPLAY
+
+ # This is all a nasty hack
+ if test -z "$XDG_RUNTIME_DIR"; then
+ export XDG_RUNTIME_DIR=/run/user/root
+ fi
+
+ if [ ! -d "$XDG_RUNTIME_DIR" ] ; then
+ mkdir --parents $XDG_RUNTIME_DIR
+ chmod 0700 $XDG_RUNTIME_DIR
+ fi
+
+ echo "Starting Weston"
+
+ if [ ! -d "/dev/input" ]; then
+ echo "Waiting for input device..."
+ killproc weston
+ sleep 3
+ fi
+
+ openvt -c 4 -f runWeston
+
+ # If there's no touchscreen device available, done
+ if [ ! -e /dev/input/touchscreen0 ] ; then
+ exit 0
+ fi
+
+ # If it was already calibrated, done
+ if [ -f "$WS_CALUDEV_FILE" ] ; then
+ exit 0
+ fi
+
+ # Check if SD card is mounted
+ mount | grep /run/media/mmcblk0p1 | grep vfat > /dev/null 2>&1
+ if [ "$?" = "0" ] ; then
+ SD_MOUNTED="1"
+ else
+ SD_MOUNTED="0"
+ fi
+
+ # Check if SD card has a calibration rules file
+ SD_CALUDEV_FILE=/run/media/mmcblk0p1/ws-calibrate.rules
+ if [ "$SD_MOUNTED" = "1" -a -f "$SD_CALUDEV_FILE" ] ; then
+ # Copy it over to udev location
+ cp "$SD_CALUDEV_FILE" "$WS_CALUDEV_FILE"
+ else
+ # Run a calibration app and save output to udev rules
+ echo "Calibrating touchscreen (first time only)"
+ echo
+ echo "*** To continue, please complete the touchscreen calibration"
+ echo -n "*** by touching the crosshairs on the LCD screen"
+ sleep 2
+ CAL_VALUES=`weston-calibrator|cut -c21-`
+ echo 'SUBSYSTEM=="input", ENV{WL_CALIBRATION}="'$CAL_VALUES'"' > $WS_CALUDEV_FILE
+ echo "."
+ # Copy it back to SD
+ if [ "$SD_MOUNTED" = "1" ] ; then
+ cp "$WS_CALUDEV_FILE" "$SD_CALUDEV_FILE"
+ fi
+ fi
+
+ # Reload and re-run udev rules and restart weston
+ udevadm control --reload
+ udevadm trigger
+ killproc weston
+ sleep 2
+ openvt -c 4 -f runWeston
+ ;;
+
+ stop)
+ echo "Stopping Weston"
+ killproc weston
+ ;;
+
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 { start | stop | restart }"
+ ;;
+esac
+
+exit 0
diff --git a/recipes-graphics/wayland/weston-init/am62xx/runWeston b/recipes-graphics/wayland/weston-init/am62xx/runWeston
new file mode 100644
index 0000000..2751352
--- /dev/null
+++ b/recipes-graphics/wayland/weston-init/am62xx/runWeston
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+clear
+cat << EOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please wait...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EOF
+
+weston --idle-time=0 --backend=drm-backend.so >> /var/log/weston.log 2>&1
diff --git a/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh b/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh
new file mode 100644
index 0000000..50979b3
--- /dev/null
+++ b/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+### Wayland Environment Variables ###
+
+export XDG_CONFIG_HOME=/etc/
+export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir
+export WS_CALUDEV_FILE=/etc/udev/rules.d/ws-calibrate.rules
+
+if ! test -d "${XDG_RUNTIME_DIR}"; then
+ mkdir -p "${XDG_RUNTIME_DIR}"
+ chmod 0700 "${XDG_RUNTIME_DIR}"
+fi
diff --git a/recipes-graphics/wayland/weston-init/am62xx/weston.ini b/recipes-graphics/wayland/weston-init/am62xx/weston.ini
new file mode 100644
index 0000000..c0ae9f9
--- /dev/null
+++ b/recipes-graphics/wayland/weston-init/am62xx/weston.ini
@@ -0,0 +1,12 @@
+[core]
+require-input=false
+
+[shell]
+locking=false
+animation=zoom
+panel-position=top
+startup-animation=fade
+
+[screensaver]
+# Uncomment path to disable screensaver
+#path=@libexecdir@/weston-screensaver