diff options
Diffstat (limited to 'meta-amd-bsp/recipes-core/udev')
6 files changed, 87 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf/60-drm-hotplug-mode.rules b/meta-amd-bsp/recipes-core/udev/udev-extraconf/60-drm-hotplug-mode.rules new file mode 100644 index 00000000..9eaa12ba --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf/60-drm-hotplug-mode.rules @@ -0,0 +1 @@ +ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", ENV{DISPLAY}=":0", RUN+="/etc/udev/scripts/hotplug-display-@MULTIDISPLAYMODE.sh" diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-auto.sh b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-auto.sh new file mode 100644 index 00000000..9e1864da --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-auto.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +connectedPorts=$(xrandr | grep " connected" | sed 's/ connected.*//') +for port in $connectedPorts ; do + xrandr --output $port --auto +done + +disconnectedPorts=$(xrandr | grep " disconnected" | sed 's/ disconnected.*//') +for port in $disconnectedPorts ; do + xrandr --output $port --off +done + diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-h.sh b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-h.sh new file mode 100644 index 00000000..6adab773 --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-h.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +declare -a connectedPorts=($(xrandr | grep " connected" | sed 's/ connected.*//')) +for i in "${!connectedPorts[@]}"; do + if [ $i -eq 0 ]; then + xrandr --output ${connectedPorts[i]} --auto + fi + if [ -n "${connectedPorts[i+1]}" ]; then + xrandr --output ${connectedPorts[i+1]} --auto --right-of ${connectedPorts[i]} + fi +done + +disconnectedPorts=$(xrandr | grep " disconnected" | sed 's/ disconnected.*//') +for port in $disconnectedPorts ; do + xrandr --output $port --off +done diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-v.sh b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-v.sh new file mode 100644 index 00000000..5b16969c --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-v.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +declare -a connectedPorts=($(xrandr | grep " connected" | sed 's/ connected.*//')) +for i in "${!connectedPorts[@]}"; do + if [ $i -eq 0 ]; then + xrandr --output ${connectedPorts[i]} --auto + fi + if [ -n "${connectedPorts[i+1]}" ]; then + xrandr --output ${connectedPorts[i+1]} --auto --below ${connectedPorts[i]} + fi +done + +disconnectedPorts=$(xrandr | grep " disconnected" | sed 's/ disconnected.*//') +for port in $disconnectedPorts ; do + xrandr --output $port --off +done diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-mirrored.sh b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-mirrored.sh new file mode 100644 index 00000000..1c0ae61a --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-mirrored.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +declare -a connectedPorts=($(xrandr | grep " connected" | sed 's/ connected.*//')) +for i in "${!connectedPorts[@]}"; do + if [ $i -eq 0 ]; then + xrandr --output ${connectedPorts[i]} --auto + fi + if [ -n "${connectedPorts[i+1]}" ]; then + xrandr --output ${connectedPorts[i+1]} --auto --same-as ${connectedPorts[0]} + fi +done + +disconnectedPorts=$(xrandr | grep " disconnected" | sed 's/ disconnected.*//') +for port in $disconnectedPorts ; do + xrandr --output $port --off +done diff --git a/meta-amd-bsp/recipes-core/udev/udev-extraconf_%.bbappend b/meta-amd-bsp/recipes-core/udev/udev-extraconf_%.bbappend new file mode 100644 index 00000000..28e5e30f --- /dev/null +++ b/meta-amd-bsp/recipes-core/udev/udev-extraconf_%.bbappend @@ -0,0 +1,26 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += " \ + file://60-drm-hotplug-mode.rules \ + file://hotplug-display-auto.sh \ + file://hotplug-display-mirrored.sh \ + file://hotplug-display-extended-h.sh \ + file://hotplug-display-extended-v.sh \ +" +# Allowed options for MULTI_DISPLAY_MODE: auto | mirrored | extended-h | extended-v +MULTI_DISPLAY_MODE ?= "auto" + +do_install_append() { + sed -i 's/@MULTIDISPLAYMODE/${MULTI_DISPLAY_MODE}/' ${WORKDIR}/60-drm-hotplug-mode.rules + + install -d ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${WORKDIR}/60-drm-hotplug-mode.rules ${D}${sysconfdir}/udev/rules.d/60-drm-hotplug-mode.rules + + install -d ${D}${sysconfdir}/udev/scripts/ + install -m 0755 ${WORKDIR}/hotplug-display-auto.sh ${D}${sysconfdir}/udev/scripts/hotplug-display-auto.sh + install -m 0755 ${WORKDIR}/hotplug-display-mirrored.sh ${D}${sysconfdir}/udev/scripts/hotplug-display-mirrored.sh + install -m 0755 ${WORKDIR}/hotplug-display-extended-h.sh ${D}${sysconfdir}/udev/scripts/hotplug-display-extended-h.sh + install -m 0755 ${WORKDIR}/hotplug-display-extended-v.sh ${D}${sysconfdir}/udev/scripts/hotplug-display-extended-v.sh +} + +RDEPENDS_${PN} += "${@bb.utils.contains('IMAGE_FEATURES', 'x11-base', 'xrandr', '', d)}" |