diff options
author | PlusMinus0 | 2016-09-21 11:10:26 +0200 |
---|---|---|
committer | PlusMinus0 | 2016-09-21 11:10:26 +0200 |
commit | 6191d81c3614284fb47493752d7bd907b8368937 (patch) | |
tree | e3b255772dbd8d0c898e9adcd601b04cf554b6f8 | |
parent | c24dd22790a8438ca999a404a11a727e2416d12f (diff) | |
download | aur-6191d81c3614284fb47493752d7bd907b8368937.tar.gz |
Modified udev and service to match upstream.
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | 99-displaylink.rules | 6 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | displaylink-sleep.sh | 14 | ||||
-rw-r--r-- | udev.sh | 79 |
5 files changed, 104 insertions, 14 deletions
@@ -1,9 +1,9 @@ # Generated by mksrcinfo v8 -# Mon Sep 19 10:53:49 UTC 2016 +# Wed Sep 21 09:02:46 UTC 2016 pkgbase = displaylink pkgdesc = Linux driver for DL-5xxx, DL-41xx and DL-3x00 pkgver = 1.2.58 - pkgrel = 1 + pkgrel = 2 url = http://www.displaylink.com/downloads/ubuntu.php changelog = release-note.txt arch = i686 @@ -16,13 +16,15 @@ pkgbase = displaylink depends = evdi depends = libusb>=1.0.0 source = displaylink-driver-1.2.58.zip::http://www.displaylink.com/downloads/file?id=701 + source = udev.sh source = 99-displaylink.rules source = displaylink.service source = displaylink-sleep.sh md5sums = a69ffdbcd6157c9a5511d9e4a16597a2 - md5sums = 37e076a16be49985f1d6800f960d16b4 + md5sums = d5de775e41af06edbd8073adc490139d + md5sums = 20495d81c7d2540910ef86dc437b7fac md5sums = c141a15e973481c7d961f8e135627ca4 - md5sums = 4185b016cd64c6069302239515afadff + md5sums = 7cbd9ab2ac79ba66e8297689c6e5483e pkgname = displaylink diff --git a/99-displaylink.rules b/99-displaylink.rules index 3bdf94cc0ac2..3d2cc078917f 100644 --- a/99-displaylink.rules +++ b/99-displaylink.rules @@ -1 +1,5 @@ -ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{bNumInterfaces}=="*5", TAG+="uaccess" +# 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}" @@ -3,7 +3,7 @@ pkgname=displaylink pkgver=1.2.58 -pkgrel=1 +pkgrel=2 pkgdesc="Linux driver for DL-5xxx, DL-41xx and DL-3x00" arch=('i686' 'x86_64') url="http://www.displaylink.com/downloads/ubuntu.php" @@ -13,19 +13,22 @@ makedepends=('grep' 'gawk') install= changelog="release-note.txt" source=(displaylink-driver-$pkgver.zip::http://www.displaylink.com/downloads/file\?id\=701 + udev.sh 99-displaylink.rules displaylink.service displaylink-sleep.sh) # Update with > updpkgsums md5sums=('a69ffdbcd6157c9a5511d9e4a16597a2' - '37e076a16be49985f1d6800f960d16b4' + 'd5de775e41af06edbd8073adc490139d' + '20495d81c7d2540910ef86dc437b7fac' 'c141a15e973481c7d961f8e135627ca4' - '4185b016cd64c6069302239515afadff') + '7cbd9ab2ac79ba66e8297689c6e5483e') package() { echo "Adding udev rule for DisplayLink DL-3xxx/5xxx devices" install -D -m644 99-displaylink.rules "$pkgdir/etc/udev/rules.d/99-displaylink.rules" + install -D -m755 udev.sh "$pkgdir/opt/displaylink/udev.sh" echo "Installing DLM systemd service" install -D -m644 displaylink.service "$pkgdir/usr/lib/systemd/system/displaylink.service" diff --git a/displaylink-sleep.sh b/displaylink-sleep.sh index bc26362e2f10..b47d5fd2d45d 100644 --- a/displaylink-sleep.sh +++ b/displaylink-sleep.sh @@ -1,22 +1,24 @@ #!/bin/bash -# Copyright (c) 2015 DisplayLink (UK) Ltd. +# Copyright (c) 2015 - 2016 DisplayLink (UK) Ltd. suspend_dlm() { #flush any bytes in pipe - while read -n 1 -t 1 SUSPEND_RESULT < /usr/lib/displaylink/PmMessagesPort_out; do : ; done; + while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done; #suspend DisplayLinkManager - echo "S" > /usr/lib/displaylink/PmMessagesPort_in + echo "S" > /tmp/PmMessagesPort_in - #wait until suspend of DisplayLinkManager finish - read -n 1 -t 10 SUSPEND_RESULT < /usr/lib/displaylink/PmMessagesPort_out + 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" > /usr/lib/displaylink/PmMessagesPort_in + echo "R" > /tmp/PmMessagesPort_in } case "\$1/\$2" in diff --git a/udev.sh b/udev.sh new file mode 100644 index 000000000000..41869bee9ce1 --- /dev/null +++ b/udev.sh @@ -0,0 +1,79 @@ +#!/bin/sh +# Copyright (c) 2016 DisplayLink (UK) Ltd. +# File autogenerated by udev-installer.sh script + +get_evdi_dev_count() +{ + if [ "$(ls -l /sys/devices/platform/* | grep evdi | wc -l)" = "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() +{ + systemctl start displaylink.service +} + +stop_service() +{ + systemctl stop displaylink.service +} + + +main $1 $2 + |