From 5cd976210679f7e13a6dc523835332479c735e2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Romain=20Bron=C3=A8s?=
 <romain.broucquart@synchrotron-soleil.fr>
Date: Tue, 12 Mar 2024 10:23:52 +0100
Subject: [PATCH] feat: Replace manual uio symlink by udev rule

---
 recipes-app/fofb-init/files/fofb-init.sh      | 23 -------------------
 recipes-conf/uio-udev/files/70-uio.rules      |  5 ++++
 .../uio-udev/uio-users-udev-rule.bbappend     |  3 +++
 3 files changed, 8 insertions(+), 23 deletions(-)
 create mode 100644 recipes-conf/uio-udev/files/70-uio.rules
 create mode 100644 recipes-conf/uio-udev/uio-users-udev-rule.bbappend

diff --git a/recipes-app/fofb-init/files/fofb-init.sh b/recipes-app/fofb-init/files/fofb-init.sh
index 9e9cae5..b515a79 100755
--- a/recipes-app/fofb-init/files/fofb-init.sh
+++ b/recipes-app/fofb-init/files/fofb-init.sh
@@ -21,28 +21,6 @@ if [ ! -f ${CFG_FILE} ]; then
 fi
 source ${CFG_FILE}
 
-########################################################################
-# Look for UIO devices, make special symbolic link for axiapp and ddr4
-link_uio_dev() {
-    for uio in /sys/class/uio/*
-    do
-        name=$(cat ${uio}/name)
-        uiobn=$(basename $uio)
-        case $name in
-            axiapp)
-                log "Installing link /dev/$name -> /dev/$uiobn"
-                ln -sf /dev/$uiobn /dev/$name
-                ;;
-            ddr4)
-                log "Installing link /dev/$name -> /dev/$uiobn"
-                ln -sf /dev/$uiobn /dev/$name
-                ;;
-            *)
-                ;;
-        esac
-    done
-}
-
 ########################################################################
 # Link the proper FPGA bitstream depending on the configuration variable FOFB_APP
 link_fpga_bitstream() {
@@ -144,7 +122,6 @@ start() {
 
     log "FOFB application: linking configuration"
 
-    link_uio_dev
     link_fpga_bitstream
     link_mapt
     link_configuration
diff --git a/recipes-conf/uio-udev/files/70-uio.rules b/recipes-conf/uio-udev/files/70-uio.rules
new file mode 100644
index 0000000..a9b01f4
--- /dev/null
+++ b/recipes-conf/uio-udev/files/70-uio.rules
@@ -0,0 +1,5 @@
+SUBSYSTEM=="uio", GROUP="uio_users", MODE="0660"
+
+SUBSYSTEM=="uio", ATTRS{name}=="axiapp", SYMLINK+="axiapp"
+SUBSYSTEM=="uio", ATTRS{name}=="ddrpl", SYMLINK+="ddrpl"
+
diff --git a/recipes-conf/uio-udev/uio-users-udev-rule.bbappend b/recipes-conf/uio-udev/uio-users-udev-rule.bbappend
new file mode 100644
index 0000000..b0ea619
--- /dev/null
+++ b/recipes-conf/uio-udev/uio-users-udev-rule.bbappend
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+
-- 
GitLab