summaryrefslogtreecommitdiff
path: root/x11-drivers/displaylink-driver/files
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2019-07-05 12:17:54 +0100
committerdakkar <dakkar@thenautilus.net>2019-07-05 12:17:54 +0100
commitab53910278f76fd9e3e3127708360a42c59fc512 (patch)
tree32c92d4cf9e5a9a87c02b33804ee6c7a7fafd203 /x11-drivers/displaylink-driver/files
parentlitehtml is not ready in released versions (diff)
downloadgentoo-overlay-ab53910278f76fd9e3e3127708360a42c59fc512.tar.gz
gentoo-overlay-ab53910278f76fd9e3e3127708360a42c59fc512.tar.bz2
gentoo-overlay-ab53910278f76fd9e3e3127708360a42c59fc512.zip
probably-working displaylink driver
upgraded from https://git.hossie.de/projects/GEN/repos/gentoo-overlay/browse/x11-drivers/ which was inspired by https://aur.archlinux.org/cgit/aur.git/tree/?h=displaylink
Diffstat (limited to 'x11-drivers/displaylink-driver/files')
-rw-r--r--x11-drivers/displaylink-driver/files/99-displaylink.rules6
-rw-r--r--x11-drivers/displaylink-driver/files/displaylink.service13
-rw-r--r--x11-drivers/displaylink-driver/files/dlm.service14
-rw-r--r--x11-drivers/displaylink-driver/files/pm-displaylink37
-rw-r--r--x11-drivers/displaylink-driver/files/pm-systemd-displaylink31
-rw-r--r--x11-drivers/displaylink-driver/files/rc-displaylink18
-rw-r--r--x11-drivers/displaylink-driver/files/rc-displaylink-1.219
-rw-r--r--x11-drivers/displaylink-driver/files/rc-displaylink-1.319
-rw-r--r--x11-drivers/displaylink-driver/files/udev.sh77
9 files changed, 234 insertions, 0 deletions
diff --git a/x11-drivers/displaylink-driver/files/99-displaylink.rules b/x11-drivers/displaylink-driver/files/99-displaylink.rules
new file mode 100644
index 0000000..8c5b033
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/99-displaylink.rules
@@ -0,0 +1,6 @@
+# Copyright (c) 2016 DisplayLink (UK) Ltd.
+# File autogenerated by udev-installer.sh script
+
+ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="17e9", ATTR{bInterfaceClass}=="ff", ATTR{bInterfaceProtocol}=="03", ENV{ID_DISPLAYLINK_DEVICE}="1", RUN+="/opt/displaylink/udev.sh START"
+ACTION=="remove", ENV{ID_DISPLAYLINK_DEVICE}=="1", RUN+="/opt/displaylink/udev.sh STOP $env{DEVPATH}"
+ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="179", ATTR{bNumInterfaces}=="*5", GROUP="plugdev", MODE="0660" \ No newline at end of file
diff --git a/x11-drivers/displaylink-driver/files/displaylink.service b/x11-drivers/displaylink-driver/files/displaylink.service
new file mode 100644
index 0000000..2ede6c2
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/displaylink.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=DisplayLink Manager Service
+After=display-manager.service
+Conflicts=getty@tty7.service
+
+[Service]
+ExecStart=/usr/lib/displaylink/DisplayLinkManager
+Restart=always
+WorkingDirectory=/usr/lib/displaylink
+RestartSec=5
+
+[Install]
+WantedBy=graphical.target
diff --git a/x11-drivers/displaylink-driver/files/dlm.service b/x11-drivers/displaylink-driver/files/dlm.service
new file mode 100644
index 0000000..62d7b94
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/dlm.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=DisplayLink Manager Service
+After=display-manager.service
+Conflicts=getty@tty7.service
+
+[Service]
+ExecStartPre=/sbin/modprobe evdi
+ExecStart=/opt/displaylink/DisplayLinkManager
+Restart=always
+WorkingDirectory=/opt/displaylink
+RestartSec=5
+
+[Install]
+WantedBy=graphical.target
diff --git a/x11-drivers/displaylink-driver/files/pm-displaylink b/x11-drivers/displaylink-driver/files/pm-displaylink
new file mode 100644
index 0000000..a31bfc0
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/pm-displaylink
@@ -0,0 +1,37 @@
+#!/bin/bash
+# Copyright (c) 2015 - 2016 DisplayLink (UK) Ltd.
+
+suspend_dlm()
+{
+ #flush any bytes in pipe
+ while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done;
+
+ #suspend DisplayLinkManager
+ echo "S" > /tmp/PmMessagesPort_in
+
+ if [ -f /tmp/PmMessagesPort_out ]; then
+ #wait until suspend of DisplayLinkManager finish
+ read -n 1 -t 10 SUSPEND_RESULT < /tmp/PmMessagesPort_out
+ fi
+}
+
+resume_dlm()
+{
+ #resume DisplayLinkManager
+ echo "R" > /tmp/PmMessagesPort_in
+}
+
+case "$1" in
+ thaw)
+ resume_dlm
+ ;;
+ hibernate)
+ suspend_dlm
+ ;;
+ suspend)
+ suspend_dlm
+ ;;
+ resume)
+ resume_dlm
+ ;;
+esac
diff --git a/x11-drivers/displaylink-driver/files/pm-systemd-displaylink b/x11-drivers/displaylink-driver/files/pm-systemd-displaylink
new file mode 100644
index 0000000..4705b7f
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/pm-systemd-displaylink
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Copyright (c) 2015 - 2016 DisplayLink (UK) Ltd.
+
+suspend_dlm()
+{
+ #flush any bytes in pipe
+ while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done;
+
+ #suspend DisplayLinkManager
+ echo "S" > /tmp/PmMessagesPort_in
+
+ if [ -f /tmp/PmMessagesPort_out ]; then
+ #wait until suspend of DisplayLinkManager finish
+ read -n 1 -t 10 SUSPEND_RESULT < /tmp/PmMessagesPort_out
+ fi
+}
+
+resume_dlm()
+{
+ #resume DisplayLinkManager
+ echo "R" > /tmp/PmMessagesPort_in
+}
+
+case "$1/$2" in
+ pre/*)
+ suspend_dlm
+ ;;
+ post/*)
+ resume_dlm
+ ;;
+esac
diff --git a/x11-drivers/displaylink-driver/files/rc-displaylink b/x11-drivers/displaylink-driver/files/rc-displaylink
new file mode 100644
index 0000000..ee541d4
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/rc-displaylink
@@ -0,0 +1,18 @@
+#!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+depend() {
+ after xdm
+}
+
+start() {
+ start-stop-daemon --start --background --chdir /usr/lib/displaylink --make-pidfile --pidfile /run/displaylink.pid --exec /usr/lib/displaylink/DisplayLinkManager
+ eend $?
+}
+
+stop() {
+ start-stop-daemon --stop --pidfile /run/displaylink.pid
+ eend $?
+}
diff --git a/x11-drivers/displaylink-driver/files/rc-displaylink-1.2 b/x11-drivers/displaylink-driver/files/rc-displaylink-1.2
new file mode 100644
index 0000000..fd5c0b6
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/rc-displaylink-1.2
@@ -0,0 +1,19 @@
+#!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+depend() {
+ after xdm
+}
+
+start() {
+ modprobe -q evdi
+ start-stop-daemon --start --background --chdir /opt/displaylink --make-pidfile --pidfile /run/displaylink.pid --exec /opt/displaylink/DisplayLinkManager
+ eend $?
+}
+
+stop() {
+ start-stop-daemon --stop --pidfile /run/displaylink.pid
+ eend $?
+}
diff --git a/x11-drivers/displaylink-driver/files/rc-displaylink-1.3 b/x11-drivers/displaylink-driver/files/rc-displaylink-1.3
new file mode 100644
index 0000000..1db2def
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/rc-displaylink-1.3
@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+depend() {
+ after xdm
+}
+
+start() {
+ modprobe -q evdi
+ start-stop-daemon --start --background --chdir /opt/displaylink --make-pidfile --pidfile /run/displaylink.pid --exec /opt/displaylink/DisplayLinkManager
+ eend $?
+}
+
+stop() {
+ start-stop-daemon --stop --pidfile /run/displaylink.pid
+ eend $?
+}
diff --git a/x11-drivers/displaylink-driver/files/udev.sh b/x11-drivers/displaylink-driver/files/udev.sh
new file mode 100644
index 0000000..8570bd1
--- /dev/null
+++ b/x11-drivers/displaylink-driver/files/udev.sh
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Copyright (c) 2016 DisplayLink (UK) Ltd.
+# File autogenerated by udev-installer.sh script
+# modified by dakkar
+
+get_evdi_dev_count()
+{
+ if [ "$(ls -ld /sys/devices/platform/* | grep -c evdi)" = "0" ]; then
+ echo "0"
+ return
+ fi
+
+ cat /sys/devices/platform/evdi.*/drm/card*/card*/status | grep "^connected$" | wc -l
+}
+
+get_displaylink_dev_count()
+{
+ cat /sys/bus/usb/devices/*/idVendor | grep 17e9 | wc -l
+}
+
+start_displaylink()
+{
+ if [ "$(get_displaylink_dev_count)" != "0" ]; then
+ start_service
+ fi
+}
+
+try_stop_displaylink()
+{
+ if [ "$(get_evdi_dev_count)" = "0" ]; then
+ parent_dev_path="$1"
+ if [ -d "$parent_dev_path" ]; then
+ echo "1"
+ return
+ fi
+
+ if [ "$(get_displaylink_dev_count)" = "0" ]; then
+ stop_service
+ echo "0"
+ return
+ fi
+ fi
+ echo "1"
+}
+
+stop_displaylink()
+{
+ parent_devpath="$(dirname "/sys$1")"
+ retry_num="50" # 5s
+ while [ "$(try_stop_displaylink "$parent_devpath")" != "0" ] && [ "$retry_num" != "0" ];
+ do
+ sleep 0.1
+ retry_num=$((retry_num-1))
+ done
+}
+
+main()
+{
+ op=$1
+ devpath=$2
+ if [ "$op" = "START" ]; then
+ start_displaylink
+ elif [ "$op" = "STOP" ]; then
+ stop_displaylink "$devpath"
+ fi
+}
+
+start_service()
+{
+ rc-service dlm start
+}
+
+stop_service()
+{
+ rc-service dlm stop
+}
+main "$1" "$2"