On Wed, Oct 12, 2022 at 4:25 PM Stephen Kitt <steve@xxxxxxx> wrote: > > All these drivers have an i2c probe function which doesn't use the > "struct i2c_device_id *id" parameter, so they can trivially be > converted to the "probe_new" style of probe with a single argument. > > This is part of an ongoing transition to single-argument i2c probe > functions. Old-style probe functions involve a call to i2c_match_id: > in drivers/i2c/i2c-core-base.c, > > /* > * When there are no more users of probe(), > * rename probe_new to probe. > */ > if (driver->probe_new) > status = driver->probe_new(client); > else if (driver->probe) > status = driver->probe(client, > i2c_match_id(driver->id_table, client)); > else > status = -EINVAL; > > Drivers which don't need the second parameter can be declared using > probe_new instead, avoiding the call to i2c_match_id. Drivers which do > can still be converted to probe_new-style, calling i2c_match_id > themselves (as is done currently for of_match_id). > > This change was done using the following Coccinelle script, and fixed > up for whitespace changes: > > @ rule1 @ > identifier fn; > identifier client, id; > @@ > > - static int fn(struct i2c_client *client, const struct i2c_device_id *id) > + static int fn(struct i2c_client *client) > { > ...when != id > } > > @ rule2 depends on rule1 @ > identifier rule1.fn; > identifier driver; > @@ > > struct i2c_driver driver = { > - .probe > + .probe_new > = > ( > fn > | > - &fn > + fn > ) > , > }; > > Signed-off-by: Stephen Kitt <steve@xxxxxxx> > --- Applied, thanks! Bart