Re: [PATCH v2 2/2] IIO: st_accel_i2c.c: Use probe_new() instead of probe()

From: Nikolaus Voss
Date: Wed Jul 04 2018 - 05:10:05 EST

On Wed, 4 Jul 2018, Andy Shevchenko wrote:
On Wed, Jul 4, 2018 at 9:37 AM, Nikolaus Voss
<nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx> wrote:
On Wed, 4 Jul 2018, Andy Shevchenko wrote:

On Tue, Jul 3, 2018 at 9:06 AM, Nikolaus Voss
<nikolaus.voss@xxxxxxxxxxxxxxxxxxxxx> wrote:

struct i2c_device_id argument of probe() is not used, so use probe_new()

This makes...

MODULE_DEVICE_TABLE(i2c, st_accel_id_table);

...this table obsolete IIUC. At least that's what I did when switched
to ->probe_new() in some drivers.

If I'm mistaken (again? :-) ) I would hear from someone to point me
how it can be used after a switch.

It is still used by the i2c-core in i2c_device_match() if DT and ACPI
matching fails.

And it is used to create the corresponding modaliases for
driver loading.

My question is "How?!"
I don't really see any points to match against it after switching to

Could you point me to the code path in i2c (or OF?) core for that?

As written above in i2c-core-base.c: i2c_device_match() -> i2c_match_id(driver->id_table,...

This is used for driver matching before probe() or probe_new() of the device driver can be called. probe_new() actually is a function signature change only.