summarylogtreecommitdiffstats
path: root/udev.sh
diff options
context:
space:
mode:
authorfrancoism902022-01-08 13:59:36 +0100
committerfrancoism902022-01-08 13:59:36 +0100
commita8c096c76310b0cf7a85c397f79f2d22bfd68359 (patch)
tree8b12f359b20fc25914e899f6c037c20c4233d722 /udev.sh
downloadaur-a8c096c76310b0cf7a85c397f79f2d22bfd68359.tar.gz
Initial commit
Diffstat (limited to 'udev.sh')
-rw-r--r--udev.sh79
1 files changed, 79 insertions, 0 deletions
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
+