Am Wed, 1 Mar 2023 15:53:04 +0100 schrieb Hans de Goede <hdegoede@xxxxxxxxxx>: > 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. Thanks for getting back, after Andys review i happen to have just that already prepared for v2 as "likely needed". Will send that v2 soon. Henning > Regards, > > Hans >