Subject: i2c: Document i2c_new_device() Document the new i2c_new_device(), i2c_new_probed_device() and i2c_unregister_device() functions. Signed-off-by: Jean Delvare --- Documentation/i2c/writing-clients | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) --- linux-2.6.21-rc4.orig/Documentation/i2c/writing-clients 2007-03-22 08:51:41.000000000 +0100 +++ linux-2.6.21-rc4/Documentation/i2c/writing-clients 2007-03-22 09:54:01.000000000 +0100 @@ -200,6 +200,41 @@ device typing support in the hardware. match, so hotplug/coldplug mechanisms will modprobe the driver. +Device Creation (Standard driver model) +--------------------------------------- + +If you know for a fact that an I2C device is connected to a given I2C bus, +you can instantiate that device by simply filling an i2c_board_info +structure with the device address and driver name, and calling +i2c_new_device(). This will create the device, then the driver core will +take care of finding the right driver and will call its probe() method. +If a driver supports different device types, you can specify the type you +want using the type field. + +Sometimes you know that a device is connected to a given I2C bus, but you +don't know the exact address it uses. This happens on TV adapters for +example, where the same driver supports dozens of slightly different +models, and I2C device addresses change from one model to the next. In +that case, you can use the i2c_new_probed_device() variant, which is +similar to i2c_new_device(), except that it takes an additional list of +possible I2C addresses to probe. A device is created for the first +responsive address in the list. + +In both cases, the I2C device creation typically happens in the I2C bus +driver. You may want to save the returned i2c_client reference for later +use. + + +Device Deletion (Standard driver model) +--------------------------------------- + +Each I2C device which has been created using i2c_new_device() or +i2c_new_probed_device() can be unregistered by calling +i2c_unregister_device(). If you don't call it explicitly, it will be +called automatically before the underlying I2C bus itself is removed, as a +device can't survive its parent in the device driver model. + + Legacy Driver Binding Model ---------------------------