Hi,
the are are currently 3 kind of maps for device drivers
/lib/modules/*/modules.usbmap for the running kernel (and the "sane" drivers)
/etc/hotplug/usb.handmap for some hid devices that do not trigger events
/etc/hotplug/usb.distmap for the old 2.2 kernel
and /etc/hotplug/usb.usermap which is empty. All have a 'complicated'
syntax.
We should have a way to simply use this syntax:
module 0x$vendor ox$product
script 0x$vendor ox$product
The attached patch fixes also some devices that do not like the
usbmodules --device /proc/bus/usb/x/y call.
It fills $DRIVERS and LISTER is not called if the devices is listed in a
*.simple_usermap
--- etc/hotplug-beta/hotplug.functions 2003-06-07 19:30:03.000000000 +0200
+++ etc/hotplug-beta/hotplug.functions 2003-06-08 18:47:59.000000000 +0200
@@ -73,7 +73,6 @@ MODPROBE="/sbin/modprobe -s"
load_drivers ()
{
local LOADED TYPE FILENAME DESCRIPTION LISTER
- DRIVERS=""
# make this routine more readable
TYPE=$1
@@ -100,7 +99,8 @@ load_drivers ()
# ... doesn't handle comment syntax either
if [ "$DEVICE" = "" -o ! -f "$DEVICE" ]; then
LISTER=
- else
+ # DRIVERS could be set via usb.simple_usermap, skip usbmodules in this case
+ elif [ "$DRIVERS" = "" ] ; then
DRIVERS=`$LISTER --mapfile $FILENAME --device $DEVICE`
fi ;;
--- etc/hotplug-beta/usb.agent 2003-06-07 19:30:03.000000000 +0200
+++ etc/hotplug-beta/usb.agent 2003-06-08 21:55:03.000000000 +0200
@@ -105,6 +105,8 @@ MAP_HANDMAP=$HOTPLUG_DIR/usb.handmap
#
MAP_USERMAP=$HOTPLUG_DIR/usb.usermap
+# same as above, but with simpler syntax
+MAP_SIMPLEUSERMAP=$HOTPLUG_DIR/usb.simple_usermap
# accumulates list of modules we may care about
DRIVERS=""
@@ -235,6 +237,51 @@ declare -i USB_MATCH_INT_SUBCLASS=0x0100
declare -i USB_MATCH_INT_PROTOCOL=0x0200
#
+# stdin is "modules.simple_usermap" syntax
+# on return, all matching modules were added to $DRIVERS
+#
+usb_map_simple_usermodules ()
+{
+ # convert the usb_device_id fields to integers as we read them
+ local line module
+ declare -i idVendor idProduct
+
+ # look at each usb_device_id entry
+ # collect all matches in $DRIVERS
+
+ while read line
+ do
+ # comments are lines that start with "#" ...
+ # be careful, they still get parsed by bash!
+ case "$line" in
+ \#*) continue ;;
+ esac
+
+ set $line
+
+ module=$1
+
+ idVendor=$2
+ idProduct=$3
+
+ : checkmatch $module
+
+ : idVendor $idVendor $usb_idVendor
+ if [ $idVendor -ne $usb_idVendor ]; then
+ continue
+ fi
+
+ : idProduct $idProduct $usb_idProduct
+ if [ $idProduct -ne $usb_idProduct ]; then
+ continue
+ fi
+
+ # It was a match!
+ DRIVERS="$module $DRIVERS"
+ : drivers $DRIVERS
+ done
+}
+#
# stdin is "modules.usbmap" syntax
# on return, all matching modules were added to $DRIVERS
#
@@ -386,6 +458,21 @@ add)
rm -f "$REMOVER"
fi
+ # some devices have user-mode drivers (no kernel module, but config)
+ # or specialized user-mode setup helpers,
+ # they will be triggered via load_drivers
+ # some devices do not like the usbmodules --device poking
+ # a non-empty $DRIVERS will skip the usbmodules call
+ for MAP in $MAP_SIMPLEUSERMAP $HOTPLUG_DIR/usb/*.simple_usermap
+ do
+ if [ -r $MAP ]; then
+ usb_map_simple_usermodules < $MAP
+ if [ "$DRIVERS" != "" ]; then
+ FOUND=true
+ fi
+ fi
+ done
+
# on 2.4 systems, modutils 2.4.2+ maintains MAP_CURRENT
# ... otherwise we can't rely on it (sigh)
case "$KERNEL" in
--- etc/hotplug-beta/usb.simple_usermap 2003-06-08 21:45:58.000000000 +0200
+++ etc/hotplug-beta/usb.simple_usermap 2003-06-08 21:45:42.000000000 +0200
@@ -0,0 +1,10 @@
+# syntax of this file:
+# lines starting with # are ignored
+# driver matching (values in hex):
+# usb_module idVendor idProduct
+# or
+# usb/helperscript idVendor idProduct
+#
+# U.S. Robotics (3Com) 0082 OfficeConnect Analog Modem
+# does not like the usbmodules --device /proc/bus/usb/x/y
+acm 0x04c1 0x0082
--
USB is for mice, FireWire is for men!
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel