On Wed, Jul 15, 2020 at 4:44 AM Anson Huang <anson.huang@xxxxxxx> wrote: > > Subject: RE: [PATCH 1/3] gpio: mxc: Support module build > > > > Hi, Linus > > > > > Subject: Re: [PATCH 1/3] gpio: mxc: Support module build > > > > > > On Wed, Jul 8, 2020 at 1:28 AM Anson Huang <Anson.Huang@xxxxxxx> > > > wrote: > > > > > > > subsys_initcall(gpio_mxc_init); > > > > + > > > > +MODULE_AUTHOR("Shawn Guo <shawn.guo@xxxxxxxxxx>"); > > > > +MODULE_DESCRIPTION("i.MX GPIO Driver"); MODULE_LICENSE("GPL"); > > > > > > You are making this modualrizable but keeping the subsys_initcall(), > > > which doesn't make very much sense. It is obviously not necessary to > > > do this probe at subsys_initcall() time, right? > > > > > > > If building it as module, the subsys_initcall() will be equal to module_init(), I > > keep it unchanged is because I try to make it identical when built-in, since > > most of the config will still have it built-in, except the Android GKI support. > > Does it make sense? > > > > > Take this opportunity to convert the driver to use > > > module_platform_driver() as well. > > > > If you think it has to be or it is better to use module_platform_driver(), I will do > > it in V2. > > I tried to replace the subsys_initcall() with module_platform_driver(), but met issue > about " register_syscore_ops(&mxc_gpio_syscore_ops);" which is called in gpio_mxc_init() > function, this function should be called ONLY once, moving it to .probe function is NOT > working, so we may need to keep the gpio_mxc_init(), that is another reason that we may > need to keep subsys_initcall()? This looks a bit dangerous to keep like this while allowing this code to be used from a module. What happens if you insmod and rmmod this a few times, really? How is this tested? This is not really modularized if that isn't working, just that modprobing once works isn't real modularization IMO, it seems more like a quick and dirty way to get Androids GKI somewhat working with the module while not properly making the module a module. You need input from the driver maintainers on how to handle this. Yours, Linus Walleij