aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-core/udev
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-core/udev')
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf/60-drm-hotplug-mode.rules1
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-auto.sh12
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-h.sh16
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-extended-v.sh16
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf/hotplug-display-mirrored.sh16
-rw-r--r--meta-amd-bsp/recipes-core/udev/udev-extraconf_%.bbappend26
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)}"