diff options
author | dakkar <dakkar@thenautilus.net> | 2019-07-05 12:17:54 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2019-07-05 12:17:54 +0100 |
commit | ab53910278f76fd9e3e3127708360a42c59fc512 (patch) | |
tree | 32c92d4cf9e5a9a87c02b33804ee6c7a7fafd203 /x11-drivers/displaylink-driver/files | |
parent | litehtml is not ready in released versions (diff) | |
download | gentoo-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')
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" |