brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · b08b6da Raw
56 lines · plain
1================================================================2I2C device driver binding control from user-space in old kernels3================================================================4 5.. NOTE::6   Note: this section is only relevant if you are handling some old code7   found in kernel 2.6. If you work with more recent kernels, you can8   safely skip this section.9 10Up to kernel 2.6.32, many I2C drivers used helper macros provided by11<linux/i2c.h> which created standard module parameters to let the user12control how the driver would probe I2C buses and attach to devices. These13parameters were known as ``probe`` (to let the driver probe for an extra14address), ``force`` (to forcibly attach the driver to a given device) and15``ignore`` (to prevent a driver from probing a given address).16 17With the conversion of the I2C subsystem to the standard device driver18binding model, it became clear that these per-module parameters were no19longer needed, and that a centralized implementation was possible. The new,20sysfs-based interface is described in21Documentation/i2c/instantiating-devices.rst, section22"Method 4: Instantiate from user-space".23 24Below is a mapping from the old module parameters to the new interface.25 26Attaching a driver to an I2C device27-----------------------------------28 29Old method (module parameters)::30 31  # modprobe <driver> probe=1,0x2d32  # modprobe <driver> force=1,0x2d33  # modprobe <driver> force_<device>=1,0x2d34 35New method (sysfs interface)::36 37  # echo <device> 0x2d > /sys/bus/i2c/devices/i2c-1/new_device38 39Preventing a driver from attaching to an I2C device40---------------------------------------------------41 42Old method (module parameters)::43 44  # modprobe <driver> ignore=1,0x2f45 46New method (sysfs interface)::47 48  # echo dummy 0x2f > /sys/bus/i2c/devices/i2c-1/new_device49  # modprobe <driver>50 51Of course, it is important to instantiate the ``dummy`` device before loading52the driver. The dummy device will be handled by i2c-core itself, preventing53other drivers from binding to it later on. If there is a real device at the54problematic address, and you want another driver to bind to it, then simply55pass the name of the device in question instead of ``dummy``.56