Hi Biju, On Mon, May 22, 2023 at 12:42 PM Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote: > Add i2c_get_match_data() similar to of_device_get_match_data(), > so that we can optimize the driver code that uses both I2C and > DT-based matching. > > Suggested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Thanks for your patch! > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -99,8 +99,8 @@ const char *i2c_freq_mode_string(u32 bus_freq_hz) > } > EXPORT_SYMBOL_GPL(i2c_freq_mode_string); > > -const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id, > - const struct i2c_client *client) > +static const struct i2c_device_id *i2c_match_device_id(const struct i2c_device_id *id, > + const struct i2c_client *client) > { > if (!(id && client)) > return NULL; > @@ -110,10 +110,30 @@ const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id, > return id; > id++; > } > + > return NULL; > } > + > +const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id, > + const struct i2c_client *client) > +{ > + return i2c_match_device_id(id, client); > +} > EXPORT_SYMBOL_GPL(i2c_match_id); Is there any reason why you're adding a new intermediate? > > +const void *i2c_get_match_data(const struct i2c_device_id *id, > + const struct i2c_client *client) I think this should take the id table from the i2c_driver, as pointed to by client->dev.driver, instead of from an explicitly passed parameter. > +{ > + const struct i2c_device_id *match; > + > + match = i2c_match_device_id(id, client); > + if (!match) > + return NULL; > + > + return (const void *)match->driver_data; One can discuss about the returned type: personally, I won't mind "const void *" for consistency with other subsystems (e.g. DT), but as i2c_device_id.driver_data has type "kernel_ulong_t", other people might prefer the latter. > +} > +EXPORT_SYMBOL(i2c_get_match_data); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds