From ab53910278f76fd9e3e3127708360a42c59fc512 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 5 Jul 2019 12:17:54 +0100 Subject: 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 --- x11-drivers/displaylink-driver/Manifest | 11 +++ .../displaylink-driver-5.1.26.ebuild | 89 ++++++++++++++++++++++ .../displaylink-driver/files/99-displaylink.rules | 6 ++ .../displaylink-driver/files/displaylink.service | 13 ++++ x11-drivers/displaylink-driver/files/dlm.service | 14 ++++ .../displaylink-driver/files/pm-displaylink | 37 +++++++++ .../files/pm-systemd-displaylink | 31 ++++++++ .../displaylink-driver/files/rc-displaylink | 18 +++++ .../displaylink-driver/files/rc-displaylink-1.2 | 19 +++++ .../displaylink-driver/files/rc-displaylink-1.3 | 19 +++++ x11-drivers/displaylink-driver/files/udev.sh | 77 +++++++++++++++++++ x11-drivers/evdi/Manifest | 2 + x11-drivers/evdi/evdi-1.6.1.ebuild | 39 ++++++++++ 13 files changed, 375 insertions(+) create mode 100644 x11-drivers/displaylink-driver/Manifest create mode 100644 x11-drivers/displaylink-driver/displaylink-driver-5.1.26.ebuild create mode 100644 x11-drivers/displaylink-driver/files/99-displaylink.rules create mode 100644 x11-drivers/displaylink-driver/files/displaylink.service create mode 100644 x11-drivers/displaylink-driver/files/dlm.service create mode 100644 x11-drivers/displaylink-driver/files/pm-displaylink create mode 100644 x11-drivers/displaylink-driver/files/pm-systemd-displaylink create mode 100644 x11-drivers/displaylink-driver/files/rc-displaylink create mode 100644 x11-drivers/displaylink-driver/files/rc-displaylink-1.2 create mode 100644 x11-drivers/displaylink-driver/files/rc-displaylink-1.3 create mode 100644 x11-drivers/displaylink-driver/files/udev.sh create mode 100644 x11-drivers/evdi/Manifest create mode 100644 x11-drivers/evdi/evdi-1.6.1.ebuild diff --git a/x11-drivers/displaylink-driver/Manifest b/x11-drivers/displaylink-driver/Manifest new file mode 100644 index 0000000..53da1c3 --- /dev/null +++ b/x11-drivers/displaylink-driver/Manifest @@ -0,0 +1,11 @@ +AUX 99-displaylink.rules 512 BLAKE2B 5d581c300ecbf22360f5ae0455e1857fae8a8dc9f2b97a99c31fb5f53b084e4c99db48d5592b49d7ab084db89d4dc5f981a288896b42ef059ab11b28f963cbc7 SHA512 156133ef4e73977b395ff05499a4e242d100c705211c6d3a9f99655e7692cf9102cd00b69004818e18224402200f23d6d897dddcd2714f56845bb943673692bf +AUX displaylink.service 270 BLAKE2B 642be7a7e1753957df364ae97a24e7af6d2c7ea702efd1335f120f64d3d7d5746dbdd6e09cf29d0533cfc8329f0cbf5aec4d429ff7ee7c56476ac9c5b8f092aa SHA512 4fe7ca88c3758b91cb3e3bb7eeb6170d19d64c5380bba7002c073fd93e0b8b74c1179002bc489829d15c33d3a8bd29bc49bcbb695d4b0b4802d279cc38ff9077 +AUX dlm.service 295 BLAKE2B 196b9f50ab48e554e30d9dd841080fce9ed98c322aae63eb13c2373aa606251d2f58197eed8170d5c03e7b1efb81ffa65019022877618126adef57702babba1a SHA512 a6c8128d92cbc8b14d8bb3f492e601f3f9d8635469be1cc7afaa669d0af48e2db84d8453910c1144e6e72a42afc61ecfbb7cead543a2483ffb3f6cfde73d6f75 +AUX pm-displaylink 649 BLAKE2B 687e5b7d5269adee2a28b9f9ad7ae2912972279caf6a05049a2822c4ed6628aea4a3a3421b4f44e74659f6bee87faa69ad565bb4adb1d1a60c950d5a8b0e300d SHA512 03b4d9cf192f172aae1528807781033f2d1af57cf5a97be1dcda55af2331886558897ab6a1035db7471939448995b92ec93c72e587c76a6025da8b989f60c9b5 +AUX pm-systemd-displaylink 584 BLAKE2B 7a805659eab55287e1cca018d00cbf637fa75adc945b1afd568ffc92a9e3b3745b4f0f8e400cd7c618685b74f7edd969268ab78a4bba78b2bd633ddbc096efc0 SHA512 b3bb81bf00f2a086087e48322de2da4d50217bd89991d95c61beb7be512db510582c64e88eb39ed5f0fece48ddc4f7baefeb6a4b60f34349d589d6930a117b78 +AUX rc-displaylink 419 BLAKE2B bb5f6766cb7a5f3d796f90b36501cefbd06979fbd6893fdc616758d30cb880520014af2a38407892c419ee0e446f68596492696a7130eb6ec1ffa55a1a891df8 SHA512 3bd5c9d191d83dbc76213eac0be71b68b81418c5dfb73743a5d6ef71abd8cb960c7d1a30c43560d511b2a5e869ff6d4df50757fe936a9282c81b5fda6c1e6fd8 +AUX rc-displaylink-1.2 429 BLAKE2B 5ccd1369b1357add657e8f9c64bdc4472644833391dbd4f7ea4673af868c5161cbb8b3acd06994719374c5ad165b7c2202956fa8ed0cbc765d162fa8a4a2df8b SHA512 cf88a282de57e646c42fa855dd14c371ba03db0be1f5167803cb6a8539d04548b8722fd8353da8a4e2a4958bf92e887aff2c28edafb0483591ac55a18c9c3099 +AUX rc-displaylink-1.3 430 BLAKE2B afb7a6a8e13b985652ce2f1ca7da67b86b35d909e8363a01d9062d2633b4e9c197d6484c60900f0ff73e10c4be260260f3b5cf4be1abf29ebc1ef8849e7f87d2 SHA512 dff38b6c388de8f2bf5c2bb155a2d115edc6b4a941aa2184b9ece5e2575ff1eab6d3594325579375458dfcc8031e89ef323da225245de07b6fb4b98de15443ee +AUX udev.sh 1316 BLAKE2B 6e2b948a04ccb60d0a50d9a968fd1dd75f4ee03539b3794c28e407138bc263b753da46c8c2897e4ae910f10fc77a699c1a5c933318e9eefd16e6740aac37567e SHA512 8c5ee28669caa49ff384e09e1a12e07200f5891a35d427dbbaa088f86700dda8059d3a091048e41c3fdf2caaac0660e804037d6ade8d10676cc0ec5a86ad7962 +DIST displaylink-driver-5.1.26.zip 12102697 BLAKE2B c72dff83890cd1e36577d85c6753a4001ae2b9c4d790a044dafdcf823dcc5e7570837bfe84f5d422eae50051effbb11224dfde3aaab93dc1980b8621f3ed7f00 SHA512 f555d4db864c8dbe7b734223c4e9d054cc3975d0d107778c0928ea2fa20471acd210a0d827cd5b664688f0fe1aed22fcb3290d03f2d21039ca63f16771a54981 +EBUILD displaylink-driver-5.1.26.ebuild 2459 BLAKE2B 9b31a98dde5c9b416559e4034e27f27414f34aaa3946705c031a9e5d84007cba5cb5d936dba3872162dd4176cf448a60b4e9ab352065db8fd9fc9665ccd3f266 SHA512 a2518f190ff24a681397f80c851d5f57656e28ea85643657b8e234cb4db3326a79d97be591f819cf4479120d7f6edaf36373858a9d628ffe109ab54482322469 diff --git a/x11-drivers/displaylink-driver/displaylink-driver-5.1.26.ebuild b/x11-drivers/displaylink-driver/displaylink-driver-5.1.26.ebuild new file mode 100644 index 0000000..160cad1 --- /dev/null +++ b/x11-drivers/displaylink-driver/displaylink-driver-5.1.26.ebuild @@ -0,0 +1,89 @@ +# from https://git.hossie.de/projects/GEN/repos/gentoo-overlay/browse/x11-drivers/displaylink-driver +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit eutils systemd udev unpacker + +DESCRIPTION="DisplayLink USB Graphics Software" +HOMEPAGE="http://www.displaylink.com/downloads/ubuntu" +SRC_URI="${P}.zip" + +LICENSE="DisplayLink" +SLOT="0" +KEYWORDS="~x86 ~amd64" +IUSE="systemd" + +QA_PREBUILT="/opt/displaylink/DisplayLinkManager" +RESTRICT="fetch" + +DEPEND="app-admin/chrpath" +RDEPEND=">=sys-devel/gcc-4.8.3 + =x11-drivers/evdi-1.6* + virtual/libusb:1 + || ( x11-drivers/xf86-video-modesetting >=x11-base/xorg-server-1.17.0 ) + !systemd? ( sys-power/pm-utils )" + +pkg_nofetch() { + einfo "Please download DisplayLink USB Graphics Software for Ubuntu 5.1.zip from" + einfo "http://www.displaylink.com/downloads/ubuntu" + einfo "and rename it to ${P}.zip" +} + +src_unpack() { + default + sh ./"${PN}"-"${PV}".run --noexec --nox11 --target "${P}" +} + +src_install() { + if [[ ( $(gcc-major-version) -eq 5 && $(gcc-minor-version) -ge 1 ) || $(gcc-major-version) -gt 5 ]]; then + MY_UBUNTU_VERSION=1604 + else + MY_UBUNTU_VERSION=1404 + fi + + einfo "Using package for Ubuntu ${MY_UBUNTU_VERSION} based on your gcc version: $(gcc-version)" + + case "${ARCH}" in + amd64) MY_ARCH="x64" ;; + *) MY_ARCH="${ARCH}" ;; + esac + + DLM="${S}/${MY_ARCH}-ubuntu-${MY_UBUNTU_VERSION}/DisplayLinkManager" + + dodir /opt/displaylink + keepdir /var/log/displaylink + + exeinto /opt/displaylink + chrpath -d "${DLM}" + doexe "${DLM}" + + insinto /opt/displaylink + doins *.spkg + + udev_dorules "${FILESDIR}/99-displaylink.rules" + + insinto /opt/displaylink + insopts -m0755 + newins "${FILESDIR}/udev.sh" udev.sh + if use systemd; then + newins "${FILESDIR}/pm-systemd-displaylink" suspend.sh + dosym /opt/displaylink/suspend.sh /lib/systemd/system-sleep/displaylink.sh + systemd_dounit "${FILESDIR}/dlm.service" + else + newins "${FILESDIR}/pm-displaylink" suspend.sh + dosym /opt/displaylink/suspend.sh /etc/pm/sleep.d/displaylink.sh + newinitd "${FILESDIR}/rc-displaylink-1.3" dlm + fi +} + +pkg_postinst() { + einfo "The DisplayLinkManager Init is now called dlm" + einfo "" + einfo "You should be able to use xrandr as follows:" + einfo "xrandr --setprovideroutputsource 1 0" + einfo "Repeat for more screens, like:" + einfo "xrandr --setprovideroutputsource 2 0" + einfo "Then, you can use xrandr or GUI tools like arandr to configure the screens, e.g." + einfo "xrandr --output DVI-1-0 --auto" +} 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" diff --git a/x11-drivers/evdi/Manifest b/x11-drivers/evdi/Manifest new file mode 100644 index 0000000..53b8238 --- /dev/null +++ b/x11-drivers/evdi/Manifest @@ -0,0 +1,2 @@ +DIST evdi-1.6.1.tar.gz 57445 BLAKE2B ee0f29f938a31d8a5ddb3812efa2ef13c2c65e8af6d8d9cd41d8e56bebd49d46c10e78a338e03ec270dbe06b9423d84db9f267b6a2e33c6e4ccb8046fbb37de7 SHA512 22dbe8f8fc68552165558d89abb1fe975d419cfceafd3761205a29d1fee3cb28f69a97c2a656bb867659a43b3d23aaa3d69f7d705e4f28c1f4dc562ca0cad787 +EBUILD evdi-1.6.1.ebuild 750 BLAKE2B b5d282ca4ce4726dbb8d386a641c49898b0a9ec960d0d34e48d5ec1736e394df5de303355f37a5ef2b682189f8fc9e4e60e1d487178f8df422c47949b859bb51 SHA512 2334fe35b50a364e540a7ffb6c12eba9d15321c1b173f38821665dba8b2ee1b91d293ed5fde98a3d4e5dfd8e8c6641c5a99ca7e7197b72e6b819b995f46fbbe0 diff --git a/x11-drivers/evdi/evdi-1.6.1.ebuild b/x11-drivers/evdi/evdi-1.6.1.ebuild new file mode 100644 index 0000000..fec9b01 --- /dev/null +++ b/x11-drivers/evdi/evdi-1.6.1.ebuild @@ -0,0 +1,39 @@ +# from https://git.hossie.de/projects/GEN/repos/gentoo-overlay/browse/x11-drivers/evdi +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit linux-mod + +DESCRIPTION="Extensible Virtual Display Interface" +HOMEPAGE="https://github.com/DisplayLink/evdi" +SRC_URI="https://github.com/DisplayLink/evdi/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~x86 ~amd64" + +RDEPEND="x11-libs/libdrm" +DEPEND="${RDEPEND} + sys-kernel/linux-headers" + +MODULE_NAMES="evdi(video:${S}/module)" + +CONFIG_CHECK="~FB_VIRTUAL ~!INTEL_IOMMU" + +pkg_setup() { + linux-mod_pkg_setup +} + +src_compile() { + linux-mod_src_compile + cd "${S}/library" + default + mv libevdi.so libevdi.so.0 +} + +src_install() { + linux-mod_src_install + dolib.so library/libevdi.so.0 + dosym libevdi.so.0 "/usr/$(get_libdir)/libevdi.so" +} -- cgit v1.2.3