One last thing I meant to mention but forgot... On Wed, 15 Apr 2020 07:16:19 +0200, Sascha Hauer wrote: > static int i2c_imx_reg_slave(struct i2c_client *client) > { > if (!IS_ENABLED(CONFIG_I2C_SLAVE)) > return -ESOMETHING; > ... > } > > The code is gone without CONFIG_I2C_SLAVE enabled, yet the compile coverage > is there. Compile coverage is nice but it comes at a cost. With the approach above, the code will be built, then discarded. When the code is #ifdef'd out, it isn't built at all. This means that your approach, although it has advantages, increases the build time. And don't tell me "you only build once", we live at the time of continuous integration so we keep building kernels. As a support engineer, I build kernels daily, and even though I have access to a powerful build farm for that purpose, it still takes 30 to 60 minutes to get my kernel built each time. Obviously most of that time isn't spent on the i2c-imx driver ;-) but if every piece of code does the same, build time will inevitably increase. -- Jean Delvare SUSE L3 Support