Re: [PATCH 2/3] i2c: slave-mqueue: add a slave backend to receive and queue messages
From: Andy Shevchenko <hidden>
Date: 2019-06-05 15:59:06
Also in:
linux-i2c, lkml
On Wed, Jun 5, 2019 at 6:31 PM Eduardo Valentin [off-list ref] wrote:
On Wed, Jun 05, 2019 at 06:20:37PM +0300, Andy Shevchenko wrote:quoted
On Wed, Jun 5, 2019 at 5:32 PM Eduardo Valentin [off-list ref] wrote:quoted
On Wed, Jun 05, 2019 at 11:25:39AM +0300, Andy Shevchenko wrote:quoted
On Wed, Jun 5, 2019 at 6:30 AM Eduardo Valentin [off-list ref] wrote:
quoted
quoted
quoted
quoted
quoted
quoted
+ .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..quoted
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...quoted
Wouldn't be better to have depends on OF || COMPILE_TESTWell, 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