commit 4ad811f1d486af4393e6257e5f1197b3e48e4a7e
Author: Jan Palus <[email protected]>
Date:   Tue Sep 20 02:18:28 2022 +0200

    usbkbd: find usb controllers attached to any bus
    
    fallback to pci-exclusive method if none were found

 functions     |  6 +++++-
 mod-usbkbd.sh | 19 ++++++++++++++++---
 2 files changed, 21 insertions(+), 4 deletions(-)
---
diff --git a/functions b/functions
index 186b967..5f38115 100644
--- a/functions
+++ b/functions
@@ -186,11 +186,15 @@ dm_node() {
        printf "/dev/mapper/%s" $(dm_name "$node")
 }
 
+is_kmod() {
+       modprobe --version | grep -q "^kmod"
+}
+
 # find modules by class
 # find_modules_by_class 0106 - finds modules for SATA devices in the system
 # find_modules_by_class 0c03 - finds modules for USB controllers
 find_modules_by_class() {
-       if modprobe --version | grep -q "^kmod"; then
+       if is_kmod; then
                find_modules_by_class_kmod $@
        else
                find_modules_by_class_mit $@
diff --git a/mod-usbkbd.sh b/mod-usbkbd.sh
index dd2ab95..4857bd4 100644
--- a/mod-usbkbd.sh
+++ b/mod-usbkbd.sh
@@ -57,9 +57,22 @@ find_modules_usbkbd() {
 
        if [ -n "$modules" ]; then
                # usb controllers
-               for m in $(find_modules_by_class "0c03"); do
-                       find_module "$m"
-               done
+               if is_kmod; then
+                       # find parent devices of usb hubs
+                       for hub_dc in `grep -l 09 
/sys/bus/usb/devices/*/bDeviceClass`; do
+                               ctrl=$(dirname $(dirname $(readlink -f 
$hub_dc)))
+                               if [ -f "$ctrl/modalias" ]; then
+                                       find_module $(cat "$ctrl/modalias")
+                                       usb_ctrl_found=1
+                               fi
+                       done
+               fi
+               if [ -z "$usb_ctrl_found" ]; then
+                       # fallback to old pci only method
+                       for m in $(find_modules_by_class "0c03"); do
+                               find_module "$m"
+                       done
+               fi
 
                # always add hid-generic
                find_module "-hid-generic"
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/geninitrd.git/commitdiff/4ad811f1d486af4393e6257e5f1197b3e48e4a7e

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to