docs: i2c: reference simple probes
authorStephen Kitt <steve@sk2.org>
Fri, 25 Mar 2022 16:19:10 +0000 (17:19 +0100)
committerWolfram Sang <wsa@kernel.org>
Wed, 4 May 2022 20:35:19 +0000 (22:35 +0200)
Instead of documenting old-style probes, reference "simple probes" and
document the i2c_match_id function. This might help reduce the use of
two-argument probes in new code.

Signed-off-by: Stephen Kitt <steve@sk2.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Documentation/i2c/writing-clients.rst

index 978cc8210bf3b13a0ba04ab2074d59be5d56d774..e3b126cf4a3bb5045c5e9b53ec707d52c978240c 100644 (file)
@@ -46,7 +46,7 @@ driver model device node, and its I2C address.
        },
 
        .id_table       = foo_idtable,
-       .probe          = foo_probe,
+       .probe_new      = foo_probe,
        .remove         = foo_remove,
        /* if device autodetection is needed: */
        .class          = I2C_CLASS_SOMETHING,
@@ -155,8 +155,7 @@ those devices, and a remove() method to unbind.
 
 ::
 
-       static int foo_probe(struct i2c_client *client,
-                            const struct i2c_device_id *id);
+       static int foo_probe(struct i2c_client *client);
        static int foo_remove(struct i2c_client *client);
 
 Remember that the i2c_driver does not create those client handles.  The
@@ -165,8 +164,12 @@ handle may be used during foo_probe().  If foo_probe() reports success
 foo_remove() returns.  That binding model is used by most Linux drivers.
 
 The probe function is called when an entry in the id_table name field
-matches the device's name. It is passed the entry that was matched so
-the driver knows which one in the table matched.
+matches the device's name. If the probe function needs that entry, it
+can retrieve it using
+
+::
+
+       const struct i2c_device_id *id = i2c_match_id(foo_idtable, client);
 
 
 Device Creation