summaryrefslogtreecommitdiffstats
path: root/system/displaylink/udev.sh
diff options
context:
space:
mode:
author Andre Barboza2017-09-15 14:35:51 +0200
committer Willy Sudiarto Raharjo2017-09-15 14:37:57 +0200
commit5a41962c792ee521928d3be2e0b985f8e1a42125 (patch)
tree1d58c748d3da74f512df99392910231f46aeef04 /system/displaylink/udev.sh
parentb819c52d4da97ec188e923e87701bd904f7b930a (diff)
downloadslackbuilds-5a41962c792ee521928d3be2e0b985f8e1a42125.tar.gz
system/displaylink: Added (driver for DisplayLink devices).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/displaylink/udev.sh')
-rw-r--r--system/displaylink/udev.sh78
1 files changed, 78 insertions, 0 deletions
diff --git a/system/displaylink/udev.sh b/system/displaylink/udev.sh
new file mode 100644
index 0000000000..521b7ef2ef
--- /dev/null
+++ b/system/displaylink/udev.sh
@@ -0,0 +1,78 @@
+#!/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()
+{
+ sh /etc/rc.d/rc.displaylink start &
+}
+
+stop_service()
+{
+ sh /etc/rc.d/rc.displaylink stop &
+}
+
+
+main $1 $2