On Wed, Jun 5, 2019 at 6:31 PM Eduardo Valentin <eduval@xxxxxxxxxx> wrote: > On Wed, Jun 05, 2019 at 06:20:37PM +0300, Andy Shevchenko wrote: > > On Wed, Jun 5, 2019 at 5:32 PM Eduardo Valentin <eduval@xxxxxxxxxx> wrote: > > > On Wed, Jun 05, 2019 at 11:25:39AM +0300, Andy Shevchenko wrote: > > > > On Wed, Jun 5, 2019 at 6:30 AM Eduardo Valentin <eduval@xxxxxxxxxx> wrote: > > > > > > > + .of_match_table = of_match_ptr(i2c_slave_mqueue_of_match), > > > > > > > > > > > > Wouldn't compiler warn you due to unused data? > > > > > > Perhaps drop of_match_ptr() for good... > > > > > > > > > > Not sure what you meant here. I dont see any compiler warning. > > > > > Also, of_match_ptr seams to be well spread in the kernel. > > > > > > > > If this will be compiled with CONFIG_OF=n... > > > > > > I see.. I obviously did not test with that config.. > > > > > > > Though I didn't check all dependencies to see if it even possible. In > > > > any case of_match_ptr() is redundant in both cases here. > > > > Either you need to protect i2c_slave_mqueue_of_match with #ifdef > > > > CONFIG_OF, or drop the macro use. > > > > > > I will wrap it into CONFIG_OF.. > > > > Would be this expected to work in the case of CONFIG_OF=n? > > If no, why to introduce ugly #ifdef:s and additional macros? > > I do hate those too... > > > Wouldn't be better to have > > depends on OF || COMPILE_TEST > > Well, technically, the original author had a case for using this > without CONFIG_OF. That is why I did not force here to be a strong > dependency on CONFIG_OF. So, I guess in this case the driver will > work properly in both cases if we: > > +#ifdef CONFIG_OF > +static const struct of_device_id i2c_slave_mqueue_of_match[] = { > + { > + .compatible = "i2c-slave-mqueue", > + }, > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, i2c_slave_mqueue_of_match); > +#endif > + > +static struct i2c_driver i2c_slave_mqueue_driver = { > + .driver = { > + .name = "i2c-slave-mqueue", > + .of_match_table = of_match_ptr(i2c_slave_mqueue_of_match), > + }, > + .probe = i2c_slave_mqueue_probe, > + .remove = i2c_slave_mqueue_remove, > + .id_table = i2c_slave_mqueue_id, > +}; > > The above is a well stablish pattern across the drivers. My point here that you may achieve the same by simple dropping of_match_ptr(). P.S. Many of the drivers just old enough and not being simplified due to pointless churn there, but for new drivers we may avoid it. -- With Best Regards, Andy Shevchenko