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 $@
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"