On Sun, Oct 23, 2022 at 10:06:11PM +0300, Andy Shevchenko wrote: > On Sun, Oct 23, 2022 at 03:22:49PM +0200, Uwe Kleine-König wrote: > > .probe_new() doesn't get the i2c_device_id * parameter, so determine > > that explicitly in .probe(). The device_id array has to move up for that > > to work. > > ... > > > +static const struct i2c_device_id kxcjk1013_id[] = { > > + {"kxcjk1013", KXCJK1013}, > > + {"kxcj91008", KXCJ91008}, > > + {"kxtj21009", KXTJ21009}, > > + {"kxtf9", KXTF9}, > > + {"kx023-1025", KX0231025}, > > + {"SMO8500", KXCJ91008}, > > + {} > > +}; > > +MODULE_DEVICE_TABLE(i2c, kxcjk1013_id); > > I don't like this part. Can we, please, find a way how to dereference this > table via struct i2c_client, please? It would be possible to do (on top of my patch here as PoC): diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c index e043dd698747..00269b25af99 100644 --- a/drivers/iio/accel/kxcjk-1013.c +++ b/drivers/iio/accel/kxcjk-1013.c @@ -1445,7 +1445,7 @@ MODULE_DEVICE_TABLE(i2c, kxcjk1013_id); static int kxcjk1013_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_match_id(kxcjk1013_id, client); + const struct i2c_device_id *id = i2c_match_id(to_i2c_driver(client->dev.driver)->id_table, client); struct kxcjk1013_data *data; struct iio_dev *indio_dev; struct kxcjk_1013_platform_data *pdata; (only compile tested), you could even create a function or macro to make this a bit prettier on the source level. For the compiler loading the address from a local symbol instead of from two pointer dereferences is (I guess) a bit more effective and IMHO more natural. *shrug*, I don't care much, but I don't like to have to rework this series just because you don't like this part. You even didn't give a rationale, I can imagine several different ones: [ ] it makes the patch bigger [ ] it results in an unnatural order of symbols in the driver [ ] it's some kind of duplication [ ] something else please elaborate: ________________________________ Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature