Files
kernel/include/linux
Kay Sievers b8c5cec23d Driver core: udev triggered device-<>driver binding
We get two per-bus sysfs files:
  ls-l /sys/subsystem/usb
  drwxr-xr-x 2 root root    0 2007-02-16 16:42 devices
  drwxr-xr-x 7 root root    0 2007-02-16 14:55 drivers
  -rw-r--r-- 1 root root 4096 2007-02-16 16:42 drivers_autoprobe
  --w------- 1 root root 4096 2007-02-16 16:42 drivers_probe

The flag "drivers_autoprobe" controls the behavior of the bus to bind
devices by default, or just initialize the device and leave it alone.

The command "drivers_probe" accepts a bus_id and the bus tries to bind a
driver to this device.

Systems who want to control the driver binding with udev, switch off the
bus initiated probing:
  echo 0 > /sys/subsystem/usb/drivers_autoprobe
  echo 0 > /sys/subsystem/pcmcia/drivers_autoprobe
  ...

and initiate the probing with udev rules like:
  ACTION=="add", SUBSYSTEM=="usb", ATTR{subsystem/drivers_probe}="$kernel"
  ACTION=="add", SUBSYSTEM=="pcmcia", ATTR{subsystem/drivers_probe}="$kernel"
  ...

Custom driver binding can happen in earlier rules by something like:
  ACTION=="add", SUBSYSTEM=="usb", \
  ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678" \
  ATTR{subsystem/drivers/<custom-driver>/bind}="$kernel"

This is intended to solve the modprobe.conf mess with "install-rules", custom
bind/unbind-scripts and all the weird things people invented over the years.
It should also provide the functionality "libusual" was supposed to do.

With udev, one can just write a udev rule to drive all USB-disks at the
third port of USB-hub by the "ub" driver, and everything else by
usb-storage. One can also instruct udev to bind different wireless
drivers to identical cards - just selected by the pcmcia slot-number, and
whatever ...

To use the mentioned rules, it needs udev version 106, to be able to
write ATTR{}="$kernel" to sysfs files.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-04-27 10:57:28 -07:00
..
2007-02-20 17:10:15 -08:00
2007-01-30 08:26:45 -08:00
2007-02-20 17:10:14 -08:00
2007-02-16 15:19:17 -08:00
2007-02-09 17:39:36 -05:00
2007-02-11 11:18:07 -08:00
2007-02-01 16:17:06 -08:00
2007-03-27 09:05:15 -07:00
2007-01-08 19:49:54 +00:00
2007-04-07 10:03:43 -07:00
2007-02-13 22:09:01 +01:00
2006-12-10 21:21:29 +01:00
2007-04-25 22:30:01 -07:00
2007-04-25 22:29:10 -07:00
2007-04-25 22:24:41 -07:00
2007-04-25 22:29:10 -07:00
2007-02-09 17:39:36 -05:00
2007-03-01 14:53:38 -08:00
2007-04-25 22:25:52 -07:00
2007-02-16 14:37:06 +00:00
2007-04-25 22:29:49 -07:00
2007-03-04 11:12:42 +02:00
2007-02-17 19:17:37 +01:00
2007-03-01 14:53:35 -08:00
2007-03-12 16:31:50 -07:00
2007-01-23 00:34:54 -05:00
2007-03-16 19:25:05 -07:00
2007-02-09 08:06:14 -08:00
2007-03-12 16:31:50 -07:00
2007-03-27 08:55:47 +02:00
2007-04-17 16:36:26 -07:00
2007-02-11 10:51:28 -08:00
2007-01-11 18:18:21 -08:00
2007-02-11 10:51:28 -08:00
2006-12-22 08:55:49 -08:00
2007-03-05 07:57:51 -08:00
2007-02-17 19:07:33 +01:00
2007-04-25 22:29:45 -07:00
2006-12-13 09:05:49 -08:00
2007-02-20 17:10:14 -08:00
2007-02-20 17:10:14 -08:00
2007-02-12 09:48:41 -08:00
2007-02-11 10:51:18 -08:00
2007-02-20 17:10:13 -08:00
2007-02-07 14:03:19 +11:00
2007-02-16 08:13:57 -08:00
2007-02-16 08:13:56 -08:00
2007-03-05 07:57:51 -08:00
2006-12-15 08:47:51 -08:00
2007-02-11 10:51:25 -08:00
2007-02-11 11:18:05 -08:00
2007-04-26 00:10:29 -07:00