summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorPlusMinus02016-09-21 11:10:26 +0200
committerPlusMinus02016-09-21 11:10:26 +0200
commit6191d81c3614284fb47493752d7bd907b8368937 (patch)
treee3b255772dbd8d0c898e9adcd601b04cf554b6f8
parentc24dd22790a8438ca999a404a11a727e2416d12f (diff)
downloadaur-6191d81c3614284fb47493752d7bd907b8368937.tar.gz
Modified udev and service to match upstream.
-rw-r--r--.SRCINFO10
-rw-r--r--99-displaylink.rules6
-rw-r--r--PKGBUILD9
-rw-r--r--displaylink-sleep.sh14
-rw-r--r--udev.sh79
5 files changed, 104 insertions, 14 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ff50b9650463..9c3806198ed7 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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}"
diff --git a/PKGBUILD b/PKGBUILD
index 469652c9a7b7..f75500734b9b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
+