Hi, On 2/21/23 15:51, Andy Shevchenko wrote: > On Tue, Feb 21, 2023 at 03:43:54PM +0100, Henning Schild wrote: >> Am Tue, 21 Feb 2023 15:51:03 +0200 >> schrieb Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>: >>> On Tue, Feb 21, 2023 at 01:24:13PM +0100, Henning Schild wrote: >>>> In order to clearly describe the dependencies between the gpio > > ... > >>>> +#ifndef __DRIVERS_LEDS_SIMPLE_SIMATIC_IPC_LEDS_GPIO >>>> +#define __DRIVERS_LEDS_SIMPLE_SIMATIC_IPC_LEDS_GPIO >>> >>>> +#endif /* __DRIVERS_LEDS_SIMPLE_SIMATIC_IPC_LEDS_GPIO */ >>> >>> This header doesn't look right. >>> >>> Have you run `make W=1 ...` against your patches? >> >> No reports. >> >>> Even if it doesn't show defined but unused errors >>> the idea is that this should be a C-file, called, >>> let's say, ...-core.c. >> >> When i started i kind of had a -common.c in mind as well. But then the >> header idea came and i gave it a try, expecting questions in the review. >> >> It might be a bit unconventional but it seems to do the trick pretty >> well. Do you see a concrete problem or a violation of a rule? > > Exactly as described above. The header approach means that *all* static > definitions must be used by each user of that file. Otherwise you will > get "defined but not used" compiler warning. > > And approach itself is considered (at least by me) as a hackish way to > achieve what usually should be done via C-file. > > So, if maintainers are okay, I wouldn't have objections, but again > I do not think it's a correct approach. I agree with Andy here, please add a -common.o file with a shared probe() helper which gets the 2 different gpiod_lookup_table-s as parameter and then put the actual probe() function calling the helper inside the 2 different .c files. And all the: +static struct platform_driver simatic_ipc_led_gpio_driver = { + .probe = simatic_ipc_leds_gpio_probe, + .remove = simatic_ipc_leds_gpio_remove, + .driver = { + .name = KBUILD_MODNAME, + }, +}; + +module_platform_driver(simatic_ipc_led_gpio_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" KBUILD_MODNAME); bits should then also go into the 2 different .c file files. Really putting something like module_platform_driver() or MODULE_LICENSE() / MODULE_ALIAS() inside a .h file is just wrong IMHO. Regards, Hans