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/files/udev.sh | 77 ++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 x11-drivers/displaylink-driver/files/udev.sh (limited to 'x11-drivers/displaylink-driver/files/udev.sh') 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" -- cgit v1.2.3