linux/drivers/base
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
..
power [PATCH] PM: use kobject_name() to access kobject names 2007-04-11 15:39:39 -07:00
attribute_container.c [PATCH] Driver Core: remove unused exports 2006-06-21 12:40:48 -07:00
base.h devres: device resource management 2007-02-09 17:39:36 -05:00
bus.c Driver core: udev triggered device-<>driver binding 2007-04-27 10:57:28 -07:00
class.c driver core: fix namespace issue with devices assigned to classes 2007-04-27 10:57:28 -07:00
core.c dev_printk and new-style class devices 2007-04-27 10:57:28 -07:00
cpu.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
dd.c devres: device resource management 2007-02-09 17:39:36 -05:00
devres.c devres: device resource management 2007-02-09 17:39:36 -05:00
dma-mapping.c devres: device resource management 2007-02-09 17:39:36 -05:00
dmapool.c devres: device resource management 2007-02-09 17:39:36 -05:00
driver.c driver core: do not wait unnecessarily in driver_unregister() 2007-04-01 10:54:13 -07:00
firmware_class.c Driver Core: Increase the default timeout value of the firmware subsystem 2007-02-07 10:37:14 -08:00
firmware.c [PATCH] drivers/base - fix sparse warnings 2005-10-28 09:52:55 -07:00
hypervisor.c [S390] hypfs comment cleanup. 2006-09-20 15:58:44 +02:00
init.c [PATCH] Driver Core: Add /sys/hypervisor when needed 2006-06-21 12:40:48 -07:00
isa.c [PATCH] Driver model: add ISA bus 2006-06-21 12:40:49 -07:00
Kconfig devres: device resource management 2007-02-09 17:39:36 -05:00
Makefile devres: device resource management 2007-02-09 17:39:36 -05:00
map.c [PATCH] kobj_map semaphore to mutex conversion 2006-03-20 13:42:58 -08:00
memory.c [PATCH] driver/base/memory.c: handle errors properly 2006-12-07 08:39:36 -08:00
node.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
platform.c driver core fixes: device_register() retval check in platform.c 2007-02-07 10:37:12 -08:00
sys.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
topology.c [PATCH] hotplug CPU: clean up hotcpu_notifier() use 2006-12-07 08:39:39 -08:00
transport_class.c [SCSI] fix transport class corner case after rework 2005-08-28 11:14:06 -05:00